@xviewer.js/core 1.0.0-alpha.25 → 1.0.0-alpha.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sources":["../src/base/EventEmitter.ts","../src/base/Logger.ts","../src/base/mixin.ts","../src/base/getClassInstance.ts","../src/tween/tween.js","../src/tween/TweenChain.ts","../src/tween/TweenManager.ts","../src/asset/aLoader.ts","../src/loaders/aEXRLoader.ts","../src/loaders/aFBXLoader.ts","../src/loaders/aGLTFLoader.ts","../src/loaders/aHDRLoader.ts","../src/loaders/aJSONLoader.ts","../src/loaders/aTextureLoader.ts","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../src/PropertyManager.ts","../src/cinestation/CinestationBlendDefinition.ts","../src/ObjectInstance.ts","../src/Component.ts","../src/cinestation/CinestationBrain.ts","../src/cinestation/VirtualCamera.ts","../src/Pressability.ts","../src/DeviceInput.ts","../src/DetectUA.ts","../src/SystemInfo.ts","../src/math/Damp.ts","../src/math/Constant.ts","../src/math/Interpolation.ts","../src/math/AnimationCurve.ts","../src/math/Perlin.ts","../src/cinestation/FreelookVirtualCamera.ts","../src/primitive/Box.ts","../src/primitive/Sphere.ts","../src/primitive/Plane.ts","../src/objects/Reflector.ts","../src/materials/glsl/fullscreen.glsl.ts","../src/materials/glsl/boxfilterblur.glsl.ts","../src/materials/glsl/panorama.glsl.ts","../src/materials/getShaderMaterial.ts","../src/materials/ReflectorMaterial.ts","../src/Plugin.ts","../src/plugins/DebugPlugin.ts","../src/passes/cubeuv/utils.ts","../src/Scheduler.ts","../src/ComponentScheduler.ts","../src/ComponentManager.ts","../src/TaskManager.ts","../src/WebGL.ts","../src/enums/Orientation.ts","../src/asset/ResourceManager.ts","../src/Utils.ts","../src/PluginManager.ts","../src/Viewer.ts","../src/passes/cubeuv/MergeReflectPass.ts","../src/passes/mipGaussianBlendWeight.ts","../src/passes/cubeuv/MergeBlurPass.ts","../src/plugins/EnvironmentPlugin.ts","../src/plugins/BoxProjectionPlugin.ts"],"sourcesContent":["interface EventHandler {\n name: string;\n callback: (...args: any[]) => any;\n target?: Object;\n once?: boolean;\n}\n\ninterface Listener {\n name: string, callback: (...args: any[]) => any;\n}\n\nexport class EventEmitter {\n\n protected _events: { [k: string]: EventHandler[] } = {};\n protected _removeEvent(list: EventHandler[], index: number, name: string) {\n if (index > -1) {\n list.splice(index, 1);\n if (list.length === 0) {\n delete this._events[name];\n }\n }\n return this;\n }\n\n clear() {\n this._events = {};\n return this;\n }\n\n has(name: string) {\n return !!this._events[name];\n }\n\n on(name: string, callback: (...args: any[]) => any, target?: Object, once: boolean = false) {\n let list = this._events[name];\n if (list == null) {\n list = this._events[name] = [];\n }\n\n let index = list.findIndex(v => v.callback === callback && (!target || v.target === target));\n if (index > -1) {\n console.warn(`event: ${name} duplicate registered`);\n return;\n }\n\n list.push({ name, callback, target, once });\n return this;\n }\n\n off(name: string, callback: (...args: any[]) => any, target?: Object) {\n let list = this._events[name];\n if (list) {\n let index = list.findIndex(a => (a.callback === callback) && (!target || a.target === target));\n this._removeEvent(list, index, name);\n }\n return this;\n }\n\n onof(name: string, callback: (...args: any[]) => any, container: Object & { _listeners?: Listener[] }) {\n if (container._listeners === undefined) {\n container._listeners = [];\n }\n container._listeners.push({ name, callback });\n this.on(name, callback);\n return this;\n }\n\n offof(container: Object & { _listeners?: Listener[] }) {\n for (let v of container._listeners) {\n this.off(v.name, v.callback);\n }\n return this;\n }\n\n targetOff(target: Object) {\n for (let name in this._events) {\n let list = this._events[name];\n for (let i = list.length; i--;) {\n let v = list[i];\n if (v.target === target) {\n this._removeEvent(list, i, name);\n }\n }\n }\n return this;\n }\n\n emit(name: string, ...args: any[]) {\n let list = this._events[name];\n if (list) {\n for (let i = list.length; i--;) {\n let v = list[i];\n if (v) { //callback可能会删除list元素\n if (v.once) this._removeEvent(list, i, name);\n if (v.target) v.callback.apply(v.target, args);\n else v.callback(...args);\n }\n }\n }\n return this;\n }\n}\n","/**\n * @class\n * @private\n */\n/* tslint:disable */\nconst noop = (message?: any, ...optionalParams: any[]) => {};\nconst debug = console.log.bind(console);\nconst info = console.info.bind(console);\nconst warn = console.warn.bind(console);\nconst error = console.error.bind(console);\n\nexport const Logger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n isEnabled: false,\n\n /** Turn on log */\n enable() {\n this.debug = debug;\n this.info = info;\n this.warn = warn;\n this.error = error;\n this.isEnabled = true;\n },\n\n /** Turn off log */\n disable() {\n this.debug = noop;\n this.info = noop;\n this.warn = noop;\n this.error = noop;\n this.isEnabled = false;\n }\n};\n","export function mixin(derivedCtor: any, baseCtors: any[]): void {\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n Object.defineProperty(\n derivedCtor.prototype,\n name,\n Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null)\n );\n });\n });\n}","export function getClassInstance(constructor: any, args: any[] = []) {\n return typeof constructor === \"function\" ? new constructor(...args) : constructor;\n}","/**\n * The Ease class provides a collection of easing functions for use with tween.js.\n */\nvar Easing = {\n Linear: {\n None: function (amount) {\n return amount;\n },\n },\n Quadratic: {\n In: function (amount) {\n return amount * amount;\n },\n Out: function (amount) {\n return amount * (2 - amount);\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount;\n }\n return -0.5 * (--amount * (amount - 2) - 1);\n },\n },\n Cubic: {\n In: function (amount) {\n return amount * amount * amount;\n },\n Out: function (amount) {\n return --amount * amount * amount + 1;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount;\n }\n return 0.5 * ((amount -= 2) * amount * amount + 2);\n },\n },\n Quartic: {\n In: function (amount) {\n return amount * amount * amount * amount;\n },\n Out: function (amount) {\n return 1 - --amount * amount * amount * amount;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount * amount;\n }\n return -0.5 * ((amount -= 2) * amount * amount * amount - 2);\n },\n },\n Quintic: {\n In: function (amount) {\n return amount * amount * amount * amount * amount;\n },\n Out: function (amount) {\n return --amount * amount * amount * amount * amount + 1;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount * amount * amount;\n }\n return 0.5 * ((amount -= 2) * amount * amount * amount * amount + 2);\n },\n },\n Sinusoidal: {\n In: function (amount) {\n return 1 - Math.cos((amount * Math.PI) / 2);\n },\n Out: function (amount) {\n return Math.sin((amount * Math.PI) / 2);\n },\n InOut: function (amount) {\n return 0.5 * (1 - Math.cos(Math.PI * amount));\n },\n },\n Exponential: {\n In: function (amount) {\n return amount === 0 ? 0 : Math.pow(1024, amount - 1);\n },\n Out: function (amount) {\n return amount === 1 ? 1 : 1 - Math.pow(2, -10 * amount);\n },\n InOut: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n if ((amount *= 2) < 1) {\n return 0.5 * Math.pow(1024, amount - 1);\n }\n return 0.5 * (-Math.pow(2, -10 * (amount - 1)) + 2);\n },\n },\n Circular: {\n In: function (amount) {\n return 1 - Math.sqrt(1 - amount * amount);\n },\n Out: function (amount) {\n return Math.sqrt(1 - --amount * amount);\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - amount * amount) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (amount -= 2) * amount) + 1);\n },\n },\n Elastic: {\n In: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n return -Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);\n },\n Out: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n return Math.pow(2, -10 * amount) * Math.sin((amount - 0.1) * 5 * Math.PI) + 1;\n },\n InOut: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n amount *= 2;\n if (amount < 1) {\n return -0.5 * Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);\n }\n return 0.5 * Math.pow(2, -10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI) + 1;\n },\n },\n Back: {\n In: function (amount) {\n var s = 1.70158;\n return amount * amount * ((s + 1) * amount - s);\n },\n Out: function (amount) {\n var s = 1.70158;\n return --amount * amount * ((s + 1) * amount + s) + 1;\n },\n InOut: function (amount) {\n var s = 1.70158 * 1.525;\n if ((amount *= 2) < 1) {\n return 0.5 * (amount * amount * ((s + 1) * amount - s));\n }\n return 0.5 * ((amount -= 2) * amount * ((s + 1) * amount + s) + 2);\n },\n },\n Bounce: {\n In: function (amount) {\n return 1 - Easing.Bounce.Out(1 - amount);\n },\n Out: function (amount) {\n if (amount < 1 / 2.75) {\n return 7.5625 * amount * amount;\n }\n else if (amount < 2 / 2.75) {\n return 7.5625 * (amount -= 1.5 / 2.75) * amount + 0.75;\n }\n else if (amount < 2.5 / 2.75) {\n return 7.5625 * (amount -= 2.25 / 2.75) * amount + 0.9375;\n }\n else {\n return 7.5625 * (amount -= 2.625 / 2.75) * amount + 0.984375;\n }\n },\n InOut: function (amount) {\n if (amount < 0.5) {\n return Easing.Bounce.In(amount * 2) * 0.5;\n }\n return Easing.Bounce.Out(amount * 2 - 1) * 0.5 + 0.5;\n },\n },\n};\n\nvar now;\n// Include a performance.now polyfill.\n// In node.js, use process.hrtime.\n// eslint-disable-next-line\n// @ts-ignore\nif (typeof self === 'undefined' && typeof process !== 'undefined' && process.hrtime) {\n now = function () {\n // eslint-disable-next-line\n // @ts-ignore\n var time = process.hrtime();\n // Convert [seconds, nanoseconds] to milliseconds.\n return time[0] * 1000 + time[1] / 1000000;\n };\n}\n// In a browser, use self.performance.now if it is available.\nelse if (typeof self !== 'undefined' && self.performance !== undefined && self.performance.now !== undefined) {\n // This must be bound, because directly assigning this function\n // leads to an invocation exception in Chrome.\n now = self.performance.now.bind(self.performance);\n}\n// Use Date.now if it is available.\nelse if (Date.now !== undefined) {\n now = Date.now;\n}\n// Otherwise, use 'new Date().getTime()'.\nelse {\n now = function () {\n return new Date().getTime();\n };\n}\n\nfunction now$1() {\n return now() * 0.001;\n};\n\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tween\n */\nvar Group = /** @class */ (function () {\n function Group() {\n this._tweens = {};\n this._tweensAddedDuringUpdate = {};\n }\n Group.prototype.getAll = function () {\n var _this = this;\n return Object.keys(this._tweens).map(function (tweenId) {\n return _this._tweens[tweenId];\n });\n };\n Group.prototype.removeAll = function () {\n this._tweens = {};\n };\n Group.prototype.add = function (tween) {\n this._tweens[tween.getId()] = tween;\n this._tweensAddedDuringUpdate[tween.getId()] = tween;\n };\n Group.prototype.remove = function (tween) {\n delete this._tweens[tween.getId()];\n delete this._tweensAddedDuringUpdate[tween.getId()];\n };\n Group.prototype.update = function (time, preserve) {\n if (time === void 0) { time = now$1(); }\n if (preserve === void 0) { preserve = false; }\n var tweenIds = Object.keys(this._tweens);\n if (tweenIds.length === 0) {\n return false;\n }\n // Tweens are updated in \"batches\". If you add a new tween during an\n // update, then the new tween will be updated in the next batch.\n // If you remove a tween during an update, it may or may not be updated.\n // However, if the removed tween was added during the current batch,\n // then it will not be updated.\n while (tweenIds.length > 0) {\n this._tweensAddedDuringUpdate = {};\n for (var i = 0; i < tweenIds.length; i++) {\n var tween = this._tweens[tweenIds[i]];\n var autoStart = !preserve;\n if (tween && tween.update(time, autoStart) === false && !preserve) {\n delete this._tweens[tweenIds[i]];\n }\n }\n tweenIds = Object.keys(this._tweensAddedDuringUpdate);\n }\n return true;\n };\n return Group;\n}());\n\n/**\n *\n */\nvar Interpolation = {\n Linear: function (v, k) {\n var m = v.length - 1;\n var f = m * k;\n var i = Math.floor(f);\n var fn = Interpolation.Utils.Linear;\n if (k < 0) {\n return fn(v[0], v[1], f);\n }\n if (k > 1) {\n return fn(v[m], v[m - 1], m - f);\n }\n return fn(v[i], v[i + 1 > m ? m : i + 1], f - i);\n },\n Bezier: function (v, k) {\n var b = 0;\n var n = v.length - 1;\n var pw = Math.pow;\n var bn = Interpolation.Utils.Bernstein;\n for (var i = 0; i <= n; i++) {\n b += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i);\n }\n return b;\n },\n CatmullRom: function (v, k) {\n var m = v.length - 1;\n var f = m * k;\n var i = Math.floor(f);\n var fn = Interpolation.Utils.CatmullRom;\n if (v[0] === v[m]) {\n if (k < 0) {\n i = Math.floor((f = m * (1 + k)));\n }\n return fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i);\n }\n else {\n if (k < 0) {\n return v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]);\n }\n if (k > 1) {\n return v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]);\n }\n return fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i);\n }\n },\n Utils: {\n Linear: function (p0, p1, t) {\n return (p1 - p0) * t + p0;\n },\n Bernstein: function (n, i) {\n var fc = Interpolation.Utils.Factorial;\n return fc(n) / fc(i) / fc(n - i);\n },\n Factorial: (function () {\n var a = [1];\n return function (n) {\n var s = 1;\n if (a[n]) {\n return a[n];\n }\n for (var i = n; i > 1; i--) {\n s *= i;\n }\n a[n] = s;\n return s;\n };\n })(),\n CatmullRom: function (p0, p1, p2, p3, t) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n var t2 = t * t;\n var t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n },\n },\n};\n\n/**\n * Utils\n */\nvar Sequence = /** @class */ (function () {\n function Sequence() {\n }\n Sequence.nextId = function () {\n return Sequence._nextId++;\n };\n Sequence._nextId = 0;\n return Sequence;\n}());\n\nvar mainGroup = new Group();\n\n/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\nvar Tween = /** @class */ (function () {\n function Tween(_object, _group) {\n if (_group === void 0) { _group = mainGroup; }\n this._object = _object;\n this._group = _group;\n this._isPaused = false;\n this._pauseStart = 0;\n this._valuesStart = {};\n this._valuesEnd = {};\n this._valuesStartRepeat = {};\n this._duration = 0;\n this._initialRepeat = 0;\n this._repeat = 0;\n this._yoyo = false;\n this._isPlaying = false;\n this._reversed = false;\n this._delayTime = 0;\n this._startTime = 0;\n this._easingFunction = Easing.Linear.None;\n this._interpolationFunction = Interpolation.Linear;\n this._chainedTweens = [];\n this._onStartCallbackFired = false;\n this._id = Sequence.nextId();\n this._isChainStopped = false;\n this._goToEnd = false;\n this._headTween = null;\n this._tailTween = null;\n this._headStart = false;\n }\n Tween.prototype.getId = function () {\n return this._id;\n };\n Tween.prototype.isPlaying = function () {\n return this._isPlaying;\n };\n Tween.prototype.isPaused = function () {\n return this._isPaused;\n };\n Tween.prototype.duration = function (d) {\n this._duration = d;\n return this;\n };\n Tween.prototype.start = function (time) {\n if (this._isPlaying) {\n return this;\n }\n // eslint-disable-next-line\n this._group && this._group.add(this);\n this._repeat = this._initialRepeat;\n if (this._reversed) {\n // If we were reversed (f.e. using the yoyo feature) then we need to\n // flip the tween direction back to forward.\n this._reversed = false;\n for (var property in this._valuesStartRepeat) {\n this._swapEndStartRepeatValues(property);\n this._valuesStart[property] = this._valuesStartRepeat[property];\n }\n }\n this._isPlaying = true;\n this._isPaused = false;\n this._onStartCallbackFired = false;\n this._isChainStopped = false;\n this._startTime = time !== undefined ? (typeof time === 'string' ? now$1() + parseFloat(time) : time) : now$1();\n this._startTime += this._delayTime;\n this._setupProperties(this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat);\n return this;\n };\n Tween.prototype._setupProperties = function (_object, _valuesStart, _valuesEnd, _valuesStartRepeat) {\n for (var property in _valuesEnd) {\n var startValue = _object[property];\n var startValueIsArray = Array.isArray(startValue);\n var propType = startValueIsArray ? 'array' : typeof startValue;\n var isInterpolationList = !startValueIsArray && Array.isArray(_valuesEnd[property]);\n // If `to()` specifies a property that doesn't exist in the source object,\n // we should not set that property in the object\n if (propType === 'undefined' || propType === 'function') {\n continue;\n }\n // Check if an Array was provided as property value\n if (isInterpolationList) {\n var endValues = _valuesEnd[property];\n if (endValues.length === 0) {\n continue;\n }\n // handle an array of relative values\n endValues = endValues.map(this._handleRelativeValue.bind(this, startValue));\n // Create a local copy of the Array with the start value at the front\n _valuesEnd[property] = [startValue].concat(endValues);\n }\n // handle the deepness of the values\n if ((propType === 'object' || startValueIsArray) && startValue && !isInterpolationList) {\n _valuesStart[property] = startValueIsArray ? [] : {};\n // eslint-disable-next-line\n for (var prop in startValue) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStart[property][prop] = startValue[prop];\n }\n _valuesStartRepeat[property] = startValueIsArray ? [] : {}; // TODO? repeat nested values? And yoyo? And array values?\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._setupProperties(startValue, _valuesStart[property], _valuesEnd[property], _valuesStartRepeat[property]);\n }\n else {\n // Save the starting value, but only once.\n if (typeof _valuesStart[property] === 'undefined') {\n _valuesStart[property] = startValue;\n }\n if (!startValueIsArray) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings\n }\n if (isInterpolationList) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStartRepeat[property] = _valuesEnd[property].slice().reverse();\n }\n else {\n _valuesStartRepeat[property] = _valuesStart[property] || 0;\n }\n }\n }\n };\n Tween.prototype.stop = function () {\n if (!this._isChainStopped) {\n this._isChainStopped = true;\n this.stopChainedTweens();\n }\n if (!this._isPlaying) {\n return this;\n }\n // eslint-disable-next-line\n this._group && this._group.remove(this);\n this._isPlaying = false;\n this._isPaused = false;\n if (this._onStopCallback) {\n this._onStopCallback(this._object);\n }\n return this;\n };\n Tween.prototype.end = function () {\n this._goToEnd = true;\n this.update(Infinity);\n return this;\n };\n Tween.prototype.pause = function (time) {\n if (time === void 0) { time = now$1(); }\n if (this._isPaused || !this._isPlaying) {\n return this;\n }\n this._isPaused = true;\n this._pauseStart = time;\n // eslint-disable-next-line\n this._group && this._group.remove(this);\n return this;\n };\n Tween.prototype.resume = function (time) {\n if (time === void 0) { time = now$1(); }\n if (!this._isPaused || !this._isPlaying) {\n return this;\n }\n this._isPaused = false;\n this._startTime += time - this._pauseStart;\n this._pauseStart = 0;\n // eslint-disable-next-line\n this._group && this._group.add(this);\n return this;\n };\n Tween.prototype.stopChainedTweens = function () {\n for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n this._chainedTweens[i].stop();\n }\n this._chainedTweens = [];\n return this;\n };\n Tween.prototype.group = function (group) {\n this._group = group;\n return this;\n };\n Tween.prototype.call = function (callback) {\n this._onFinishCallback = callback;\n return this;\n };\n Tween.prototype.from = function (properties) {\n this._valuesStart = Object.create(properties);\n return this;\n };\n Tween.prototype.to = function (properties, duration) {\n // TODO? restore this, then update the 07_dynamic_to example to set fox\n // tween's to on each update. That way the behavior is opt-in (there's\n // currently no opt-out).\n // for (const prop in properties) this._valuesEnd[prop] = properties[prop]\n this._valuesEnd = Object.create(properties);\n if (duration !== undefined) {\n this._duration = duration;\n }\n this._chainedTween = this;\n return this;\n };\n Tween.prototype.delay = function (amount) {\n this._delayTime = amount;\n return this;\n };\n Tween.prototype.union = function (headTween, tailTween) {\n this._headTween = headTween;\n this._tailTween = tailTween.chain(this);\n this._headStart = true;\n return this;\n };\n Tween.prototype.repeat = function (times) {\n this._initialRepeat = times;\n this._repeat = times;\n return this;\n };\n Tween.prototype.repeatDelay = function (amount) {\n this._repeatDelayTime = amount;\n return this;\n };\n Tween.prototype.yoyo = function (yoyo) {\n this._yoyo = yoyo;\n return this;\n };\n Tween.prototype.easing = function (easingFunction) {\n this._easingFunction = easingFunction;\n return this;\n };\n Tween.prototype.interpolation = function (interpolationFunction) {\n this._interpolationFunction = interpolationFunction;\n return this;\n };\n Tween.prototype.chain = function () {\n var tweens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tweens[_i] = arguments[_i];\n }\n this._chainedTweens = tweens;\n return this;\n };\n Tween.prototype.unchain = function () {\n for (var _i = 0; _i < arguments.length; _i++) {\n let index = this._chainedTweens.findIndex(v => v == arguments[_i]);\n if (index > -1) {\n this._chainedTweens.splice(index, 1);\n }\n }\n return this;\n };\n Tween.prototype.onStart = function (callback) {\n this._onStartCallback = callback;\n return this;\n };\n Tween.prototype.onUpdate = function (callback) {\n this._onUpdateCallback = callback;\n return this;\n };\n Tween.prototype.onRepeat = function (callback) {\n this._onRepeatCallback = callback;\n return this;\n };\n Tween.prototype.onComplete = function (callback) {\n this._onCompleteCallback = callback;\n return this;\n };\n Tween.prototype.onStop = function (callback) {\n this._onStopCallback = callback;\n return this;\n };\n /**\n * @returns true if the tween is still playing after the update, false\n * otherwise (calling update on a paused tween still returns true because\n * it is still playing, just paused).\n */\n Tween.prototype.update = function (time, autoStart) {\n if (time === void 0) { time = now$1(); }\n if (autoStart === void 0) { autoStart = true; }\n if (this._isPaused)\n return true;\n var property;\n var elapsed;\n var endTime = this._startTime + this._duration;\n if (!this._goToEnd && !this._isPlaying) {\n if (time > endTime)\n return false;\n if (autoStart)\n this.start(time);\n }\n this._goToEnd = false;\n if (time < this._startTime) {\n return true;\n }\n if (this._onStartCallbackFired === false) {\n if (this._onStartCallback) {\n this._onStartCallback(this._object);\n }\n this._onStartCallbackFired = true;\n }\n elapsed = (time - this._startTime) / this._duration;\n elapsed = this._duration === 0 || elapsed > 1 ? 1 : elapsed;\n var value = this._easingFunction(elapsed);\n // properties transformations\n this._updateProperties(this._object, this._valuesStart, this._valuesEnd, value);\n if (this._onUpdateCallback) {\n this._onUpdateCallback(this._object, elapsed);\n }\n if (elapsed === 1) {\n if (this._onFinishCallback) {\n this._onFinishCallback(this._object);\n }\n if (this._headTween && this._headStart) {\n this._headTween.start(this._startTime + this._duration);\n this._headStart = false;\n this._isPlaying = false;\n return false;\n }\n if (this._repeat > 0) {\n if (isFinite(this._repeat)) {\n this._repeat--;\n }\n // Reassign starting values, restart by making startTime = now\n for (property in this._valuesStartRepeat) {\n if (!this._yoyo && typeof this._valuesEnd[property] === 'string') {\n this._valuesStartRepeat[property] =\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._valuesStartRepeat[property] + parseFloat(this._valuesEnd[property]);\n }\n if (this._yoyo) {\n this._swapEndStartRepeatValues(property);\n }\n this._valuesStart[property] = this._valuesStartRepeat[property];\n }\n if (this._yoyo) {\n this._reversed = !this._reversed;\n }\n if (this._repeatDelayTime !== undefined) {\n this._startTime = time + this._repeatDelayTime;\n }\n else {\n this._startTime = time + this._delayTime;\n }\n if (this._onRepeatCallback) {\n this._onRepeatCallback(this._object);\n }\n if (this._headTween) {\n this._headStart = true;\n this._initialRepeat = this._repeat;\n }\n return true;\n }\n else {\n if (this._tailTween) {\n this._tailTween.unchain(this);\n }\n if (this._onCompleteCallback) {\n this._onCompleteCallback(this._object);\n }\n for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n // Make the chained tweens start exactly at the time they should,\n // even if the `update()` method was called way past the duration of the tween\n this._chainedTweens[i].start(this._startTime + this._duration);\n }\n this._isPlaying = false;\n return false;\n }\n }\n return true;\n };\n Tween.prototype._updateProperties = function (_object, _valuesStart, _valuesEnd, value) {\n for (var property in _valuesEnd) {\n // Don't update properties that do not exist in the source object\n if (_valuesStart[property] === undefined) {\n continue;\n }\n var start = _valuesStart[property] || 0;\n var end = _valuesEnd[property];\n var startIsArray = Array.isArray(_object[property]);\n var endIsArray = Array.isArray(end);\n var isInterpolationList = !startIsArray && endIsArray;\n if (isInterpolationList) {\n _object[property] = this._interpolationFunction(end, value);\n }\n else if (typeof end === 'object' && end) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._updateProperties(_object[property], start, end, value);\n let des = Object.getOwnPropertyDescriptor(_object, property);\n if (des && des.set) {\n _object[property] = _object[property];\n }\n }\n else {\n // Parses relative end values with start as base (e.g.: +10, -3)\n end = this._handleRelativeValue(start, end);\n // Protect against non numeric properties.\n if (typeof end === 'number') {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _object[property] = start + (end - start) * value;\n }\n }\n }\n };\n Tween.prototype._handleRelativeValue = function (start, end) {\n if (typeof end !== 'string') {\n return end;\n }\n if (end.charAt(0) === '+' || end.charAt(0) === '-') {\n return start + parseFloat(end);\n }\n else {\n return parseFloat(end);\n }\n };\n Tween.prototype._swapEndStartRepeatValues = function (property) {\n var tmp = this._valuesStartRepeat[property];\n var endValue = this._valuesEnd[property];\n if (typeof endValue === 'string') {\n this._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(endValue);\n }\n else {\n this._valuesStartRepeat[property] = this._valuesEnd[property];\n }\n this._valuesEnd[property] = tmp;\n };\n return Tween;\n}());\n\nvar VERSION = '18.6.4';\n\n/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\nvar nextId = Sequence.nextId;\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tweens.\n */\nvar TWEEN = mainGroup;\n// This is the best way to export things in a way that's compatible with both ES\n// Modules and CommonJS, without build hacks, and so as not to break the\n// existing API.\n// https://github.com/rollup/rollup/issues/1961#issuecomment-423037881\n\n// var getAll = TWEEN.getAll.bind(TWEEN);\n// var removeAll = TWEEN.removeAll.bind(TWEEN);\n// var add = TWEEN.add.bind(TWEEN);\n// var remove = TWEEN.remove.bind(TWEEN);\n// var update = TWEEN.update.bind(TWEEN);\n\nexport {\n Easing,\n Group,\n Interpolation,\n Tween,\n VERSION,\n nextId,\n};","import { Group, Tween } from \"./tween\";\n\nexport class TweenChain {\n private _object: Object;\n private _tween: Tween<Object>;\n private _chainedTween: Tween<Object>;\n\n constructor(object: Object, group?: Group) {\n this._object = object;\n this._tween = new Tween(object, group);\n }\n\n start() {\n this._tween.start();\n return this;\n }\n\n stop() {\n this._tween.stop();\n return this;\n }\n\n repeat(times: number) {\n this._chainedTween.repeat(times);\n return this;\n }\n\n union() {\n this._chainedTween = this._tween = new Tween(this._object).union(this._tween, this._chainedTween);\n return this;\n }\n\n call(callback: (object: Object) => void) {\n this._chainTween().call(callback);\n return this;\n }\n\n delay(amount: number) {\n this._chainTween().delay(amount);\n return this;\n }\n\n to(properties: Record<string, any>, duration?: number, props?: {\n from?: Record<string, any>,\n easing?: (amount: number) => number,\n onStart?: (object: Object) => void,\n onStop?: (object: Object) => void,\n onComplete?: (object: Object) => void,\n onUpdate?: (object: Object, elapsed: number) => void,\n onRepeat?: (object: Object) => void\n }) {\n let tween = this._chainTween().to(properties, duration);\n if (props) {\n if (props.from) tween.from(props.from);\n if (props.easing) tween.easing(props.easing);\n if (props.onStart) tween.onStart(props.onStart);\n if (props.onStop) tween.onStop(props.onStop);\n if (props.onComplete) tween.onComplete(props.onComplete);\n if (props.onUpdate) tween.onUpdate(props.onUpdate);\n if (props.onRepeat) tween.onRepeat(props.onRepeat);\n }\n return this;\n }\n\n _chainTween() {\n let tween = this._tween;\n if (this._chainedTween) {\n tween = new Tween(this._object);\n this._chainedTween.chain(tween);\n }\n this._chainedTween = tween;\n return tween;\n }\n}","import { TweenChain } from \"./TweenChain\";\nimport { Group, Tween } from \"./tween\";\n\nexport class TweenManager {\n private _group: Group = new Group();\n\n destroy() {\n this._group.removeAll();\n }\n\n update(time: number) {\n this._group.update(time);\n }\n\n tween(target: Object) {\n return new Tween(target, this._group);\n }\n\n timeline(target: Object) {\n return new TweenChain(target, this._group);\n }\n\n killTweensOf(target: Object) {\n this._group.getAll().forEach((tween: any) => tween._object === target && this._group.remove(tween));\n }\n}","import { Object3D } from \"three\";\nimport { ResourceManager } from \"./ResourceManager\";\nimport { TextureSettings } from \"../TextureSettings\";\n\nexport interface LoadProperties {\n url: string,\n texSettings?: TextureSettings,\n onLoad: (asset: any) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (event: ErrorEvent) => void,\n}\n\nexport abstract class aLoader {\n static _texKeys = [\n \"alphaMap\", \"aoMap\", \"bumpMap\", \"displacementMap\", \"emissiveMap\",\n \"envMap\", \"lightMap\", \"metalnessMap\", \"normalMap\", \"roughnessMap\", \"specularMap\"\n ]\n static _setMeshData(node: Object3D) {\n const keys = aLoader._texKeys;\n\n const meshes = [];\n const textures = {};\n const materials = {};\n const queue = [node];\n\n while (queue.length !== 0) {\n let object = queue.shift() as any;\n if (object.isMesh) {\n meshes.push(object);\n\n const mat = object.material;\n if (Array.isArray(mat)) mat.forEach(v => materials[v.name] = v)\n else materials[mat.name] = mat;\n\n keys.forEach(k => {\n let tex = mat[k];\n if (tex) {\n textures[tex.uuid] = tex;\n }\n });\n }\n object.children.forEach(v => queue.push(v));\n }\n\n node.userData.meshData = { meshes, materials, textures };\n\n return node;\n }\n\n constructor(public manager: ResourceManager) { };\n abstract extension: string[];\n abstract load(props: LoadProperties): void;\n\n}","import { LoadProperties, aLoader } from \"../asset/aLoader\";\nimport { EXRLoader } from \"three/examples/jsm/loaders/EXRLoader.js\";\n\nexport class aEXRLoader extends aLoader {\n extension: string[] = [\"exr\"];\n\n load({ url, onLoad, onProgress, onError, texSettings }: LoadProperties) {\n const loader = new EXRLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, (tex) => onLoad(Object.assign(tex, texSettings)), onProgress, onError);\n }\n}","import { Object3D } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nimport { FBXLoader } from \"three/examples/jsm/loaders/FBXLoader.js\";\n\nexport class aFBXLoader extends aLoader {\n extension: string[] = [\"fbx\"];\n\n load({ url, onLoad, onProgress, onError }: LoadProperties) {\n const loadCallback = (node: Object3D) => {\n onLoad(aLoader._setMeshData(node));\n }\n const loader = new FBXLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, loadCallback, onProgress, onError);\n }\n}","import { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nimport { GLTF, GLTFLoader } from \"three/examples/jsm/loaders/GLTFLoader.js\";\nimport { DRACOLoader } from \"three/examples/jsm/loaders/DRACOLoader.js\";\nimport { MeshoptDecoder } from \"three/examples/jsm/libs/meshopt_decoder.module.js\";\n\nexport class aGLTFLoader extends aLoader {\n extension: string[] = [\"gltf\", \"glb\"];\n\n load({ url, onLoad, onProgress, onError }: LoadProperties) {\n const loadCallback = (gltf: GLTF) => {\n const node = gltf.scene;\n if (gltf.animations) node.animations = gltf.animations;\n onLoad(aLoader._setMeshData(node));\n }\n let gltfLoader = new GLTFLoader(this.manager.loadingManager);\n gltfLoader.setPath(this.manager.path);\n gltfLoader.setResourcePath(this.manager.resourcePath);\n\n let dracoLoader = new DRACOLoader(this.manager.loadingManager);\n dracoLoader.setDecoderPath(this.manager.dracoPath);\n gltfLoader.setDRACOLoader(dracoLoader);\n\n gltfLoader.setMeshoptDecoder(MeshoptDecoder);\n gltfLoader.load(url, loadCallback, onProgress, onError);\n }\n}","import { EquirectangularReflectionMapping } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nimport { RGBELoader } from \"three/examples/jsm/loaders/RGBELoader.js\";\n\nexport class aHDRLoader extends aLoader {\n extension: string[] = [\"hdr\"];\n\n load({ url, onLoad, onProgress, onError, texSettings }: LoadProperties): void {\n texSettings = Object.assign({ mapping: EquirectangularReflectionMapping }, texSettings);\n const loader = new RGBELoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, tex => onLoad(Object.assign(tex, texSettings)), onProgress, onError);\n }\n\n}","import { FileLoader } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nexport class aJSONLoader extends aLoader {\n extension: string[] = [\"json\"];\n\n load({ url, onLoad, onProgress, onError }: LoadProperties) {\n const loader = new FileLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, (file: string) => onLoad(JSON.parse(file)), onProgress, onError);\n }\n}","import { SRGBColorSpace, TextureLoader } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nexport class aTextureLoader extends aLoader {\n extension: string[] = [\"png\", \"jpg\", \"webp\", \"avif\"];\n\n load({ url, onLoad, onProgress, onError, texSettings }: LoadProperties): void {\n const loadCallback = (tex) => {\n tex.colorSpace = SRGBColorSpace;\n onLoad(Object.assign(tex, texSettings));\n }\n const loader = new TextureLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, loadCallback, onProgress, onError);\n }\n\n}","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","\nclass ClassProperties {\n private _properties: Object = Object.create(null);\n constructor(public clsName: string) { }\n property(propertyKey: string, options: Object = {}) {\n this._properties[propertyKey] = options;\n return this;\n }\n applyProperties(target: object) {\n Object.assign(target, this._properties);\n return target;\n }\n}\n\nexport class PropertyManager {\n static _classMap = new Map<String, ClassProperties>();\n static _propertyMap = new Map<Object, Object>();\n\n static _hasProperties(constructor: Function) {\n return PropertyManager._propertyMap.has(constructor);\n }\n static _getProperties(constructor: Function, autoAdd: boolean = true) {\n let props = PropertyManager._propertyMap.get(constructor);\n if (props === undefined && autoAdd) {\n props = Object.create(null);\n PropertyManager._propertyMap.set(constructor, props);\n }\n return props;\n }\n static _getMergedProperties(constructor: Function) {\n let props = null;\n while (constructor !== Object.constructor.prototype) {\n let values = PropertyManager._getProperties(constructor, false);\n if (values) {\n if (props === null) {\n props = Object.create(null);\n }\n Object.assign(props, values);\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n return props;\n }\n static _getClassProperties(clsName: string, autoAdd: boolean = true) {\n let props = PropertyManager._classMap.get(clsName);\n if (props === undefined && autoAdd) {\n props = new ClassProperties(clsName);\n PropertyManager._classMap.set(clsName, props);\n }\n return props;\n }\n static _applyClassProperties(clsName: string, constructor: Function) {\n let cls = PropertyManager._getClassProperties(clsName, false);\n if (cls) {\n return cls.applyProperties(PropertyManager._getProperties(constructor));\n }\n else {\n return PropertyManager._getProperties(constructor, false);\n }\n }\n}\n\nexport interface IPropertyOptions {\n dir?: string;\n parent?: string;\n max?: number;\n min?: number;\n step?: number;\n value?: any;\n name?: string;\n}\n\ntype PropertyDecorator = (target: Object, propertyKey: string) => void;\nexport function property(options?: IPropertyOptions): PropertyDecorator;\nexport function property(...args: Parameters<PropertyDecorator>): void;\nexport function property(target?: Object, propertyKey?: string) {\n let options: IPropertyOptions | Function | string = null;\n function normalized(target: Object, propertyKey: string) {\n PropertyManager._getProperties(target.constructor)[propertyKey] = options;\n }\n if (target === undefined) { //@property()\n return property({});\n }\n else if (typeof propertyKey === \"undefined\") { // @property(options)\n options = target;\n return normalized;\n }\n else { // @property\n options = {};\n normalized(target, propertyKey);\n }\n}","import { property } from \"../PropertyManager\";\nimport { Easing } from \"../tween/tween\";\n\nexport const CinestationBlendStyle = {\n Linear: Easing.Linear.None,\n QuadraticIn: Easing.Quadratic.In,\n QuadraticOut: Easing.Quadratic.Out,\n QuadraticInOut: Easing.Quadratic.InOut,\n}\n\nexport type CinestationBlendStyle = typeof CinestationBlendStyle[keyof typeof CinestationBlendStyle];\n\nexport class CinestationBlendDefinition {\n\n @property({ value: CinestationBlendStyle })\n style: CinestationBlendStyle = CinestationBlendStyle.QuadraticInOut;\n\n @property\n time: number = 4;\n\n}","import { MathUtils } from \"three\";\n\nexport class ObjectInstance {\n static _instanceCount: number = 0;\n instanceId: number = ObjectInstance._instanceCount++;\n uuid: string = MathUtils.generateUUID();\n name: string = \"\";\n type: string = \"ObjectInstance\";\n}","import { Object3D } from \"three\";\nimport { Viewer } from \"./Viewer\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { ObjectInstance } from \"./ObjectInstance\";\n\nexport class Component<T extends Object3D = Object3D> extends ObjectInstance{\n\n get enabled() {\n return this._enabled;\n }\n set enabled(v: boolean) {\n if (this._enabled !== v) {\n this._enabled = v;\n this.manager.componentScheduler.enableComponent(this, v);\n }\n }\n private _enabled: boolean = true;\n\n node: T;\n viewer: Viewer;\n manager: ComponentManager;\n type: string = \"Component\";\n\n onLoad?(): void;\n onEnable?(): void;\n onDisable?(): void;\n onDestroy?(): void;\n start?(): void;\n update?(dt: number): void;\n lastUpdate?(dt: number): void;\n\n flags: {\n Destroyed?: boolean;\n OnLoadCalled?: boolean;\n OnEnableCalled?: boolean;\n StartCalled?: boolean;\n Deactivating?: boolean;\n IsStartCalled?: boolean;\n } = {};\n\n protected _onPreDestroy() {\n this.unscheduleAll();\n this.manager.removeComponent(this.node, this);\n\n if (this._enabled) {\n this.manager.componentScheduler.enableComponent(this, false);\n }\n if (this.onDestroy && this.flags.OnLoadCalled) {\n this.onDestroy();\n }\n }\n\n schedule(callback: Function, interval: number, repeat: number = -1) {\n this.manager.scheduler.schedule(this, callback, interval, repeat);\n }\n\n unshedule(callback: Function) {\n this.manager.scheduler.unshedule(this, callback);\n }\n\n unscheduleAll() {\n this.manager.scheduler.unscheduleAll(this);\n }\n\n destroy() {\n if (this.flags.Destroyed) {\n return false;\n }\n this.destroyImmediate();\n return true;\n }\n\n destroyImmediate() {\n if (this._onPreDestroy) {\n this._onPreDestroy();\n }\n this.flags.Destroyed = true;\n }\n}","import { MathUtils, PerspectiveCamera } from \"three\";\nimport { CinestationBlendDefinition } from \"./CinestationBlendDefinition\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { Component } from \"../Component\";\nimport { property } from \"../PropertyManager\";\n\nconst { clamp, lerp } = MathUtils;\n\nexport class CinestationBrain extends Component<PerspectiveCamera> {\n private _vcam: VirtualCamera | null = null;\n private _vcamSolo: VirtualCamera | null = null;\n private _vcams: VirtualCamera[] = [];\n private _lerpTime: number = 0;\n private _isChanged: boolean = false;\n\n @property\n brainBlend: CinestationBlendDefinition = new CinestationBlendDefinition();\n\n onChanged: (v: boolean) => void = null;\n\n get vcam() {\n return this._vcam;\n }\n\n get vcams() {\n return this._vcams\n }\n\n lastUpdate(dt: number) {\n let vcam = this.getActiveCamera();\n if (vcam == null) return;\n\n this._vcams.forEach(v => v.enabled = v === vcam);\n\n if (this._lerpTime < this.brainBlend.time) {\n this._lerpTime += dt;\n let t = clamp(this._lerpTime / this.brainBlend.time, 0, 1);\n this._lerpToMainCamera(vcam, this.brainBlend.style(t));\n }\n else {\n this._lerpToMainCamera(vcam, 1);\n }\n }\n\n activeCamera(vcam: VirtualCamera, time: number = 4) {\n if (this._vcamSolo !== vcam) {\n this._vcamSolo = vcam;\n this._lerpTime = 0;\n this.brainBlend.time = time;\n }\n }\n\n addCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index === -1) {\n this._vcams.push(vcam);\n }\n }\n\n removeCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index !== -1) {\n this._vcams.splice(index, 1);\n }\n }\n\n getActiveCamera() {\n return this._vcamSolo || this._vcams.filter(v => v.enabled).sort((a, b) => b.priority - a.priority)[0];\n }\n\n private _lerpToMainCamera(vcam: VirtualCamera, t: number) {\n const from = this.node, to = vcam;\n const { fov, near, far, finalPosition, finalRotation } = to;\n\n const isLensChanged = from.fov != fov || from.near != near || from.far != far;\n const isTransformChanged = !from.position.equals(finalPosition) || !from.quaternion.equals(finalRotation);\n const isChanged = isLensChanged || isTransformChanged;\n\n from.position.lerp(finalPosition, t);\n from.quaternion.slerp(finalRotation, t);\n from.fov = lerp(from.fov, fov, t);\n from.near = lerp(from.near, near, t);\n from.far = lerp(from.far, far, t);\n\n if (isLensChanged) {\n from.updateProjectionMatrix();\n }\n\n if (this._isChanged !== isChanged) {\n this._isChanged = isChanged;\n this.onChanged && this.onChanged(isChanged);\n }\n }\n}","import { Object3D, Quaternion, Vector3 } from \"three\";\nimport { Component } from \"../Component\";\nimport { CinestationBrain } from \"./CinestationBrain\";\nimport { property } from \"../PropertyManager\";\n\nexport class VirtualCamera extends Component<Object3D & { isCamera?: boolean }> {\n private _finalPosition: Vector3 = new Vector3();\n private _finalRotation: Quaternion = new Quaternion();\n\n priority: number = 10;\n lookAt: Object3D | null = null;\n follow: Object3D | null = null;\n\n @property({dir: \"lens\"})\n fov: number = 45;\n @property({dir: \"lens\"})\n near: number = 0.1;\n @property({dir: \"lens\"})\n far: number = 1000;\n\n correctPosition: Vector3 = new Vector3();\n correctRotation: Quaternion = new Quaternion();\n lookaheadPosition: Vector3 = new Vector3();\n trackedObjectOffset: Vector3 = new Vector3();\n brain!: CinestationBrain;\n\n get finalPosition() {\n return this._finalPosition.copy(this.node.position).add(this.correctPosition);\n }\n\n get finalRotation() {\n return this._finalRotation.copy(this.node.quaternion).multiply(this.correctRotation);\n }\n\n onLoad() {\n this.node.isCamera = true;\n\n const camera = this.viewer.camera;\n this.fov = camera.fov;\n this.near = camera.near;\n this.far = camera.far;\n this.node.position.set(0, 0, 4);\n \n this.brain = this.viewer.getComponent(camera, CinestationBrain, true);\n this.brain.addCamera(this);\n }\n\n onDestroy() {\n this.brain.removeCamera(this);\n }\n\n update(dt: number) {\n if (this.lookAt) {\n this.node.lookAt(this.lookAt.position);\n }\n }\n}","import { Camera, Intersection, Object3D, Raycaster, Vector2 } from \"three\";\n\nconst PressState = {\n NONE: 1 << 0,\n SELECTED: 1 << 1,\n IN: 1 << 2,\n}\ntype PressState = typeof PressState[keyof typeof PressState];\n\nexport interface ConnTarget {\n node: Object3D;\n emit(name: string, e: { intersects: Intersection[] }): void;\n has(name: string): boolean;\n}\n\nexport class Pressability {\n private _raycaster: Raycaster = new Raycaster();\n private _connectors: { target: ConnTarget, state: number }[] = [];\n\n public connect(target: ConnTarget) {\n let connector = this._connectors.find(v => v.target === target);\n if (connector === undefined) {\n connector = { target, state: PressState.NONE };\n this._connectors.push(connector);\n }\n }\n\n public disconnect(target: ConnTarget) {\n let index = this._connectors.findIndex(v => v.target === target);\n if (index !== -1) {\n this._connectors.splice(index, 1);\n }\n }\n\n public pointerDown(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerdown\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n conn.state |= PressState.SELECTED;\n conn.target.emit(\"pointerdown\", { intersects });\n }\n }\n }\n }\n\n public pointerUp(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerup\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (conn.state & PressState.SELECTED) {\n conn.state &= ~PressState.SELECTED;\n conn.target.emit(\"click\", { intersects });\n }\n conn.target.emit(\"pointerup\", { intersects });\n }\n }\n }\n }\n\n public pointerMove(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"pointerover\") || conn.target.has(\"pointerout\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (!(conn.state & PressState.IN)) {\n conn.state |= PressState.IN;\n conn.target.emit(\"pointerover\", { intersects });\n }\n }\n else {\n if (conn.state & PressState.IN) {\n conn.state &= ~PressState.IN;\n conn.target.emit(\"pointerout\", { intersects });\n }\n }\n }\n }\n }\n\n}\n","import { Vector2 } from \"three\";\nimport { ConnTarget, Pressability } from \"./Pressability\";\nimport { Viewer } from \"./Viewer\";\n\ninterface InputTarget {\n on?(event: string, cb: (...args: any[]) => void, target: Object, once?: boolean);\n off?(event: string, cb: (...args: any[]) => void, target: Object);\n removeEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n addEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n}\n\nexport class DeviceInput {\n static readonly CLICK = \"click\";\n static readonly MOUSE_WHEEL = \"mousewheel\";\n static readonly TOUCH_START = \"touchstart\";\n static readonly TOUCH_END = \"touchend\";\n static readonly TOUCH_MOVE = \"touchmove\";\n static readonly POINTER_DOWN = \"pointerdown\";\n static readonly POINTER_UP = \"pointerup\";\n static readonly POINTER_MOVE = \"pointermove\";\n static readonly POINTER_OVER = \"pointerover\";\n static readonly POINTER_OUT = \"pointerout\";\n static readonly KEYDOWN = \"keydown\";\n static readonly KEYPRESS = \"keypress\";\n static readonly KEYUP = \"keyup\";\n static readonly RESIZE = \"resize\";\n\n private _listeners: { target: InputTarget, type: string, callback: any }[] = [];\n private _mouseWheel: number = 0;\n private _touches: { id: number, position: Vector2 }[] = [];\n private _touchCount: number = 0;\n private _pointerButton: number = -1;\n private _pointerPosition: Vector2 = new Vector2();\n private _pointer: Vector2 = new Vector2();\n private _keys: { [k: string]: boolean } = {};\n private _pressability: Pressability = new Pressability();\n\n get pointerButton() {\n return this._pointerButton;\n }\n\n get pointer() {\n return this._pointer;\n }\n\n get pointerPosition() {\n return this._pointerPosition;\n }\n\n get mouseWheel() {\n return this._mouseWheel;\n }\n\n get touchCount() {\n return this._touchCount;\n }\n\n get touches() {\n return this._touches;\n }\n\n get keys() {\n return this._keys;\n }\n\n constructor(public viewer: Viewer) { }\n\n addEventListeners() {\n const domElement = this.viewer.canvas; domElement.style.touchAction = 'none';\n this._addEventListener(domElement, 'contextmenu', e => e.preventDefault());\n this._addEventListener(domElement, \"pointerdown\", e => this._onPointerDown(e), { passive: false });\n this._addEventListener(domElement, \"pointerup\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointercancel\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointerout\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointermove\", e => this._onPointerMove(e), { passive: true });\n this._addEventListener(domElement, \"wheel\", e => this._onMouseWheel(e), { passive: false });\n this._addEventListener(domElement, \"touchstart\", e => this._onTouchStart(e), { passive: true });\n this._addEventListener(domElement, \"touchend\", e => this._onTouchEnd(e), { passive: true });\n this._addEventListener(domElement, \"touchmove\", e => this._onTouchMove(e), { passive: true });\n //监听了pointer事件之后,key事件失效,改成window解决\n this._addEventListener(window, \"keydown\", e => this._onKeyDown(e), { passive: false });\n this._addEventListener(window, \"keypress\", e => this._onKeyPress(e), { passive: false });\n this._addEventListener(window, \"keyup\", e => this._onKeyUp(e), { passive: false });\n }\n\n removeAllListeners() {\n for (let { target, type, callback } of this._listeners) {\n if (target.removeEventListener) target.removeEventListener(type, callback);\n else if (target.off) target.off(type, callback, target);\n }\n this._listeners = [];\n }\n\n connect(target: ConnTarget, event: string) {\n switch (event) {\n case DeviceInput.CLICK:\n case DeviceInput.POINTER_DOWN:\n case DeviceInput.POINTER_UP:\n case DeviceInput.POINTER_OVER:\n case DeviceInput.POINTER_OUT:\n this._pressability.connect(target);\n break;\n }\n }\n\n disconnect(target: ConnTarget) {\n this._pressability.disconnect(target);\n }\n\n private _addEventListener<K extends keyof HTMLElementEventMap>(\n target: InputTarget,\n type: K | string,\n callback: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) {\n if (target.addEventListener) target.addEventListener(type, callback, options);\n else if (target.on) target.on(type, callback, target);\n this._listeners.push({ target, type, callback });\n }\n\n private _remapPointer(e: PointerEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n button: e.button,\n buttons: e.buttons,\n clientX: e.clientY,\n clientY: width - e.clientX,\n offsetX: e.offsetY,\n offsetY: width - e.offsetX,\n pageX: e.pageY,\n pageY: width - e.pageX,\n screenX: e.screenY,\n screenY: width - e.screenX,\n movementX: e.movementY,\n movementY: e.movementX,\n } as any : e;\n }\n\n private _remapTouch(e: TouchEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n touches: Array.from(e.touches).map(v => {\n return {\n identifier: v.identifier,\n clientX: v.clientY,\n clientY: width - v.clientX,\n pageX: v.pageY,\n pageY: width - v.pageX,\n screenX: v.screenY,\n screenY: width - v.screenX,\n }\n })\n } as any : e;\n }\n\n private _computePointer(e: PointerEvent) {\n this._pointer.x = e.offsetX / this.viewer.width * 2 - 1;\n this._pointer.y = 1 - e.offsetY / this.viewer.height * 2;\n this._pointerPosition.set(e.offsetX, e.offsetY);\n }\n\n private _onPointerDown(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = e.button;\n this._computePointer(e);\n this._pressability.pointerDown(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_DOWN, e);\n }\n\n private _onPointerUp(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = -1;\n this._computePointer(e);\n this._pressability.pointerUp(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_UP, e);\n }\n\n private _onPointerMove(e: PointerEvent) {\n e = this._remapPointer(e);\n this._computePointer(e);\n this._pressability.pointerMove(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_MOVE, e);\n }\n\n private _onMouseWheel(e: WheelEvent & { wheelDelta?: number }) {\n e.preventDefault();\n this._mouseWheel = e.deltaY || e.wheelDelta;\n this.viewer.emit(DeviceInput.MOUSE_WHEEL, e);\n }\n\n private _onTouchStart(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_START, e);\n }\n\n private _onTouchEnd(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_END, e);\n }\n\n private _onTouchMove(e: TouchEvent) {\n e = this._remapTouch(e);\n let touches = e.touches;\n let touchesTo = this._touches;\n for (let i = touches.length; i--;) {\n if (touchesTo[i] == undefined) {\n touchesTo[i] = { id: -1, position: new Vector2() };\n }\n const touch = touches[i];\n touchesTo[i].id = touch.identifier;\n touchesTo[i].position.set(touch.pageX, touch.pageY);\n }\n this._touchCount = touches.length;\n this.viewer.emit(DeviceInput.TOUCH_MOVE, e);\n }\n\n private _onKeyDown(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYDOWN, e);\n }\n\n private _onKeyPress(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYPRESS, e);\n }\n\n private _onKeyUp(e: KeyboardEvent) {\n this._keys[e.key] = false;\n this.viewer.emit(DeviceInput.KEYUP, e);\n }\n}","const isSSR = typeof window === 'undefined';\n\nexport interface IDeviceResult {\n version: string;\n}\n\nexport interface IBrowserResult {\n name: string;\n version: string;\n}\n\nexport class DetectUA {\n public userAgent: string;\n\n // Internal variables, prevents multiple lookups\n private isAndroidDevice: boolean;\n private iOSDevice: string;\n\n /**\n * Detect a users browser, browser version and whether it is a mobile-, tablet- or desktop device\n *\n * @param forceUserAgent Force a user agent string (useful for testing)\n */\n constructor(forceUserAgent?: string) {\n this.userAgent = forceUserAgent\n ? forceUserAgent\n : !isSSR && window.navigator\n ? window.navigator.userAgent\n : '';\n\n this.isAndroidDevice = !/like android/i.test(this.userAgent) && /android/i.test(this.userAgent);\n this.iOSDevice = this.match(1, /(iphone|ipod|ipad)/i).toLowerCase();\n\n // Workaround for ipadOS, force detection as tablet\n // SEE: https://github.com/lancedikson/bowser/issues/329\n // SEE: https://stackoverflow.com/questions/58019463/how-to-detect-device-name-in-safari-on-ios-13-while-it-doesnt-show-the-correct\n if (\n !isSSR &&\n navigator.platform === 'MacIntel' &&\n navigator.maxTouchPoints > 2 &&\n !(window as any).MSStream\n ) {\n this.iOSDevice = 'ipad';\n }\n }\n\n /**\n * Match entry based on position found in the user-agent string\n *\n * @param pattern regular expression pattern\n */\n private match(position: number, pattern: RegExp): string {\n const match = this.userAgent.match(pattern);\n\n return (match && match.length > 1 && match[position]) || '';\n }\n\n /**\n * Returns if the device is a mobile device\n */\n get isMobile(): boolean {\n return (\n // Default mobile\n !this.isTablet &&\n (/[^-]mobi/i.test(this.userAgent) ||\n // iPhone / iPod\n this.iOSDevice === 'iphone' ||\n this.iOSDevice === 'ipod' ||\n // Android\n this.isAndroidDevice ||\n // Nexus mobile\n /nexus\\s*[0-6]\\s*/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a tablet device\n */\n get isTablet(): boolean {\n return (\n // Default tablet\n (/tablet/i.test(this.userAgent) && !/tablet pc/i.test(this.userAgent)) ||\n // iPad\n this.iOSDevice === 'ipad' ||\n // Android\n (this.isAndroidDevice && !/[^-]mobi/i.test(this.userAgent)) ||\n // Nexus tablet\n (!/nexus\\s*[0-6]\\s*/i.test(this.userAgent) && /nexus\\s*[0-9]+/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a desktop device\n */\n get isDesktop(): boolean {\n return !this.isMobile && !this.isTablet;\n }\n\n /**\n * Returns if the device is running MacOS (and if so which version)\n *\n * '5' => Leopard'\n * '6' => Snow Leopard'\n * '7' => Lion'\n * '8' => Mountain Lion'\n * '9' => Mavericks'\n * '10' => Yosemite'\n * '11' => El Capitan'\n * '12' => Sierra'\n * '13' => High Sierra'\n * '14' => Mojave'\n * '15' => Catalina'\n */\n get isMacOS(): IDeviceResult | boolean {\n return (\n /macintosh/i.test(this.userAgent) && {\n version: this.match(1, /mac os x (\\d+(\\.?_?\\d+)+)/i)\n .replace(/[_\\s]/g, '.')\n .split('.')\n .map((versionNumber: string): string => versionNumber)[1],\n }\n );\n }\n\n /**\n * Returns if the device is running Windows (and if so which version)\n *\n * 'NT' => 'NT'\n * 'XP' => 'XP'\n * 'NT 5.0' => '2000'\n * 'NT 5.1' => 'XP'\n * 'NT 5.2' => '2003'\n * 'NT 6.0' => 'Vista'\n * 'NT 6.1' => '7'\n * 'NT 6.2' => '8'\n * 'NT 6.3' => '8.1'\n * 'NT 10.0' => '10'\n */\n get isWindows(): IDeviceResult | boolean {\n return (\n /windows /i.test(this.userAgent) && {\n version: this.match(1, /Windows ((NT|XP)( \\d\\d?.\\d)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an iOS device (and if so which version)\n */\n get isiOS(): IDeviceResult | boolean {\n return (\n !!this.iOSDevice && {\n version:\n this.match(1, /os (\\d+([_\\s]\\d+)*) like mac os x/i).replace(/[_\\s]/g, '.') ||\n this.match(1, /version\\/(\\d+(\\.\\d+)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an Android device (and if so which version)\n */\n get isAndroid(): IDeviceResult | boolean {\n return (\n this.isAndroidDevice && {\n version: this.match(1, /android[ \\/-](\\d+(\\.\\d+)*)/i),\n }\n );\n }\n\n /**\n * Returns the browser name and version\n */\n get browser(): IBrowserResult | boolean {\n const versionIdentifier = this.match(1, /version\\/(\\d+(\\.\\d+)?)/i);\n\n if (/opera/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: versionIdentifier || this.match(1, /(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/opr\\/|opios/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: this.match(1, /(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/SamsungBrowser/i.test(this.userAgent)) {\n // Samsung Browser\n return {\n name: 'Samsung Internet for Android',\n version: versionIdentifier || this.match(1, /(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/yabrowser/i.test(this.userAgent)) {\n // Yandex Browser\n return {\n name: 'Yandex Browser',\n version: versionIdentifier || this.match(1, /(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/ucbrowser/i.test(this.userAgent)) {\n // UC Browser\n return {\n name: 'UC Browser',\n version: this.match(1, /(?:ucbrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/msie|trident/i.test(this.userAgent)) {\n // Internet Explorer\n return {\n name: 'Internet Explorer',\n version: this.match(1, /(?:msie |rv:)(\\d+(\\.\\d+)?)/i),\n };\n } else if (/(edge|edgios|edga|edg)/i.test(this.userAgent)) {\n // Edge\n return {\n name: 'Microsoft Edge',\n version: this.match(2, /(edge|edgios|edga|edg)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/firefox|iceweasel|fxios/i.test(this.userAgent)) {\n // Firefox\n return {\n name: 'Firefox',\n version: this.match(1, /(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/chromium/i.test(this.userAgent)) {\n // Chromium\n return {\n name: 'Chromium',\n version: this.match(1, /(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/chrome|crios|crmo/i.test(this.userAgent)) {\n // Chrome\n return {\n name: 'Chrome',\n version: this.match(1, /(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/safari|applewebkit/i.test(this.userAgent)) {\n // Safari\n return {\n name: 'Safari',\n version: versionIdentifier,\n };\n } else {\n // Everything else\n return {\n name: this.match(1, /^(.*)\\/(.*) /),\n version: this.match(2, /^(.*)\\/(.*) /),\n };\n }\n }\n}","import { DetectUA } from \"./DetectUA\";\n\nconst detectUA = new DetectUA();\nconst userAgent = (navigator.userAgent || navigator.vendor).toLowerCase();\nconst browserName = typeof detectUA.browser === \"boolean\" ? \"\" : detectUA.browser.name\nconst audioElem = document.createElement(\"audio\");\n\nexport class SystemInfo {\n static isMobile = detectUA.isMobile || detectUA.isTablet;\n static isDesktop = detectUA.isDesktop;\n static device = SystemInfo.isMobile ? \"mobile\" : \"desktop\";\n static isAndroid = !!detectUA.isAndroid;\n static isIOS = !!detectUA.isiOS;\n static isMacOS = !!detectUA.isMacOS;\n static isWindows = typeof detectUA.isWindows === \"boolean\" ? detectUA.isWindows : detectUA.isWindows.version !== null;\n static isLinux = userAgent.indexOf(\"linux\") != -1;\n static ua = userAgent;\n static isEdge = browserName === \"Microsoft Edge\";\n static isIE = browserName === \"Internet Explorer\";\n static isFirefox = browserName === \"Firefox\";\n static isChrome = browserName === \"Chrome\";\n static isOpera = browserName === \"Opera\";\n static isSafari = browserName === \"Safari\";\n static isSupportMSAA = !userAgent.match(\"version/15.4 \");\n static isSupportOgg = !!audioElem.canPlayType(\"audio/ogg\");\n static isRetina = window.devicePixelRatio && window.devicePixelRatio >= 1.5;\n static devicePixelRatio = window.devicePixelRatio || 1;\n static cpuCoreCount = navigator.hardwareConcurrency || 1;\n static baseUrl = document.location.origin;\n static isIFrame = window.self !== window.top;\n}","import { MathUtils, Quaternion, Vector3 } from \"three\";\n\nconst { clamp } = MathUtils;\nconst { min, max, exp } = Math;\n\nconst kNegligibleResidual = 0.01;\nconst kLogNegligibleResidual = Math.log(kNegligibleResidual)// -4.605170186;\n\nexport function exponentialDamp(current: number, target: number, dampTime: number, deltaTime: number) {\n let k = -kLogNegligibleResidual / dampTime;\n return current + (target - current) * (1 - exp(-k * deltaTime));\n}\n\n// cuve like exponentialDecay but cost less\nexport function quarticDamp(current: number, target: number, dampTime: number, deltaTime: number) {\n let t = (1 - min(deltaTime, dampTime) / dampTime);\n let tt = t * t;\n return current + (target - current) * (1 - tt * tt);\n}\n\nexport function smoothDamp(\n state: Object & { _velocity?: number },\n current: number,\n target: number,\n smoothTime: number,\n maxSpeed: number,\n deltaTime: number\n) {\n if (state._velocity === undefined) {\n state._velocity = 0;\n }\n smoothTime = max(0.0001, smoothTime);\n let num = 2 / smoothTime;\n let num2 = num * deltaTime;\n let num3 = 1 / (1 + num2 + 0.48 * num2 * num2 + 0.235 * num2 * num2 * num2);\n let num4 = current - target;\n let num5 = target;\n let num6 = maxSpeed * smoothTime;\n num4 = clamp(num4, -num6, num6);\n target = current - num4;\n let num7 = (state._velocity + num * num4) * deltaTime;\n state._velocity = (state._velocity - num * num7) * num3;\n let num8 = target + (num4 + num7) * num3;\n if (num5 - current > 0 == num8 > num5) {\n num8 = num5;\n state._velocity = (num8 - num5) / deltaTime;\n }\n return num8;\n}\n\nexport function Quat_exponentialDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, exponentialDamp(0, 1, dampTime, deltaTime));\n}\n\nexport function Quat_quarticDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, quarticDamp(0, 1, dampTime, deltaTime));\n}\n\nexport function Quat_smoothDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, smoothDamp(out, 0, 1, dampTime, Infinity, deltaTime));\n}\n\nexport function Vec3_smoothDamp(current: Vector3, target: Vector3, dampTime: number, deltaTime: number, out: Vector3 = current) {\n return out.copy(current).lerp(target, smoothDamp(out, 0, 1, dampTime, Infinity, deltaTime));\n}","import { Vector3 } from \"three\";\n\nexport const Vector3_UNIT_X = Object.freeze(new Vector3(1, 0, 0));\nexport const Vector3_UNIT_Y = Object.freeze(new Vector3(0, 1, 0));\nexport const Vector3_UNIT_Z = Object.freeze(new Vector3(0, 0, 1));\nexport const Vector3_RIGHT = Object.freeze(new Vector3(1, 0, 0));\nexport const Vector3_UP = Object.freeze(new Vector3(0, 1, 0));\nexport const Vector3_ZERO = Object.freeze(new Vector3(0, 0, 0));\nexport const Vector3_ONE = Object.freeze(new Vector3(1, 1, 1));\nexport const Vector3_NEG_ONE = Object.freeze(new Vector3(-1, -1, -1));","import { MathUtils, Quaternion, Vector3 } from \"three\";\n\nconst { clamp } = MathUtils;\nconst { max, abs, acos } = Math;\n\nconst EPSILON = 1.e-6;\nconst __delta = new Vector3();\n\nexport function VInterpTo(current, target, deltaTime, speed, out = current) {\n if (speed <= 0) {\n return out.copy(target);\n }\n let dist = __delta.copy(target).sub(current);\n if (dist.lengthSq() < EPSILON) {\n return out.copy(target);\n }\n return out.copy(current).add(dist.multiplyScalar(clamp(deltaTime * speed, 0, 1)));\n}\n\nexport function VInterpConstantTo(current, target, deltaTime, speed, out = current) {\n let delta = __delta.copy(target).sub(current);\n let deltaM = delta.length();\n let maxStep = speed * deltaTime;\n if (deltaM > maxStep) {\n if (maxStep > 0) {\n let deltaN = delta.multiplyScalar(1 / deltaM);\n return out.copy(current).add(deltaN);\n }\n else {\n return out.copy(current);\n }\n }\n return out.copy(target);\n}\n\nexport function Quat_Equals(a: Quaternion, b: Quaternion, epsilon: number = EPSILON) {\n return abs(a.x - b.x) <= epsilon * max(1., abs(a.x), abs(b.x)) &&\n abs(a.y - b.y) <= epsilon * max(1., abs(a.y), abs(b.y)) &&\n abs(a.z - b.z) <= epsilon * max(1., abs(a.z), abs(b.z)) &&\n abs(a.w - b.w) <= epsilon * max(1., abs(a.w), abs(b.w));\n}\n\nexport function Quat_AngularDistance(a: Quaternion, b: Quaternion) {\n let innerProd = a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;\n return acos(2 * innerProd * innerProd - 1);\n}\n\nexport function QInterpTo(current: Quaternion, target: Quaternion, deltaTime: number, speed: number) {\n if (speed <= 0) {\n return target;\n }\n if (Quat_Equals(current, target)) {\n return target;\n }\n return current.slerp(target, clamp(speed * deltaTime, 0, 1));\n}\n\nexport function QInterpConstantTo(current, target, deltaTime, speed, out = current) {\n if (speed <= 0) {\n return out.copy(target);\n }\n if (Quat_Equals(current, target)) {\n return out.copy(target);\n }\n let deltaSpeed = clamp(speed * deltaTime, 0, 1);\n let angularDist = max(Quat_AngularDistance(current, target), EPSILON);\n return out.copy(current).slerp(target, clamp(deltaSpeed / angularDist, 0, 1))\n}\n\n//非线性\nexport function FInterpTo(current, target, deltaTime, speed) {\n if (speed <= 0) {\n return target;\n }\n let dist = target - current;\n if (abs(dist) < EPSILON) {\n return target;\n }\n return current + dist * clamp(speed * deltaTime, 0, 1);\n}\n\n//线性插值\nexport function FInterpConstantTo(current, target, deltaTime, speed) {\n let dist = target - current;\n if (abs(dist) < EPSILON) {\n return target;\n }\n let step = speed * deltaTime;\n return current + clamp(dist, -step, step);\n}","import { LinearInterpolant, MathUtils } from \"three\";\n\nconst { lerp, clamp } = MathUtils;\n\nfunction catmullRom(t: number, p0: number, p1: number, p2: number, p3: number) {\n const v0 = (p2 - p0) * 0.5;\n const v1 = (p3 - p1) * 0.5;\n const t2 = t * t;\n const t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (- 3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\nclass CurvePoint {\n\n constructor(\n public x: number = 0,\n public y: number = 0,\n public mode: number = 0) { }\n\n set(x: number, y: number) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n lerp(p: CurvePoint, t: number, out: CurvePoint = this) {\n out.x = lerp(this.x, p.x, t);\n out.y = lerp(this.y, p.y, t);\n return out;\n }\n}\n\nexport class AnimationCurve {\n needsUpdate: boolean = true;\n isAnimationCurve: boolean = true;\n\n private _samples: number = 100;\n private _interpolant: LinearInterpolant = new LinearInterpolant(\n new Float32Array(100), new Float32Array(100), 1, new Float32Array(100)\n );\n\n constructor(\n public name: string = \"\",\n public points: CurvePoint[] = [new CurvePoint(0, 0), new CurvePoint(1, 1)]\n ) { }\n\n private _getInterpolant(samples: number) {\n if (this._samples !== samples) {\n this._samples = samples;\n this._interpolant = new LinearInterpolant(\n new Float32Array(samples), new Float32Array(samples), 1, new Float32Array(samples)\n );\n }\n return this._interpolant;\n }\n\n createCurvePoint(x?: number, y?: number, mode?: number) {\n return new CurvePoint(x, y, mode);\n }\n\n resample(samples: number = 100) {\n const step = 1 / (samples - 1);\n const interpolant = this._getInterpolant(samples);\n const times = interpolant.parameterPositions;\n const values = interpolant.sampleValues;\n const point = this.createCurvePoint();\n\n for (let i = 0; i < samples; i++) {\n this.getPoint(i * step, point);\n times[i] = point.x;\n values[i] = point.y;\n }\n }\n\n evaluate(t: number) {\n if (this.needsUpdate) {\n this.needsUpdate = false;\n this.resample();\n }\n return this._interpolant.evaluate(t)[0];\n }\n\n getPoint(t: number, out: CurvePoint) {\n const points = this.points;\n\n if (t <= 0) {\n return out.set(t, points[0].y);\n }\n if (t >= 1) {\n return out.set(t, points[points.length - 1].y);\n }\n\n const p = (points.length - 1) * t;\n\n const intPoint = Math.floor(p);\n const weight = p - intPoint;\n\n const p0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n const p1 = points[intPoint];\n const p2 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n const p3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n\n if ((p1.mode === 1) || (p0 === p1 && p2.mode === 1)) {\n return p1.lerp(p2, weight, out);\n }\n return out.set(\n clamp(catmullRom(weight, p0.x, p1.x, p2.x, p3.x), 0, 1),\n clamp(catmullRom(weight, p0.y, p1.y, p2.y, p3.y), 0, 1)\n )\n }\n\n}","const { floor } = Math;\n\n// Copyright (C) 2016 Keijiro Takahashi\n// https://mrl.cs.nyu.edu/~perlin/noise/\nexport class Perlin {\n public static Noise(x: number): number;\n public static Noise(x: number, y: number): number;\n public static Noise(x: number, y: number, z: number): number;\n public static Noise(x: number, y?: number, z?: number) {\n let fade = Perlin._Fade;\n let grad = Perlin._Grad;\n let lerp = Perlin._Lerp;\n let p = Perlin._Permutation;\n\n if (y !== undefined && z !== undefined) {\n let xi = floor(x);\n let yi = floor(y);\n let zi = floor(z);\n let X = xi & 0xff; // FIND UNIT CUBE THAT\n let Y = yi & 0xff; // CONTAINS POINT.\n let Z = zi & 0xff;\n x -= xi; // FIND RELATIVE X,Y,Z\n y -= yi; // OF POINT IN CUBE.\n z -= zi;\n let u = fade(x); // COMPUTE FADE CURVES\n let v = fade(y); // FOR EACH OF X,Y,Z.\n let w = fade(z);\n let A = p[X] + Y, AA = p[A] + Z, AB = p[A + 1] + Z; // HASH COORDINATES OF\n let B = p[X + 1] + Y, BA = p[B] + Z, BB = p[B + 1] + Z; // THE 8 CUBE CORNERS,\n\n return lerp(w, lerp(v, lerp(u, grad(p[AA], x, y, z), // AND ADD\n grad(p[BA], x - 1, y, z)), // BLENDED\n lerp(u, grad(p[AB], x, y - 1, z), // RESULTS\n grad(p[BB], x - 1, y - 1, z))), // FROM 8\n lerp(v, lerp(u, grad(p[AA + 1], x, y, z - 1), // CORNERS\n grad(p[BA + 1], x - 1, y, z - 1)), // OF CUBE\n lerp(u, grad(p[AB + 1], x, y - 1, z - 1),\n grad(p[BB + 1], x - 1, y - 1, z - 1))));\n }\n else if (y !== undefined) {\n let xi = floor(x);\n let yi = floor(y);\n let X = xi & 0xff;\n let Y = yi & 0xff;\n x -= xi;\n y -= yi;\n let u = fade(x);\n let v = fade(y);\n let A = (p[X] + Y) & 0xff;\n let B = (p[X + 1] + Y) & 0xff;\n return lerp(v, lerp(u, grad(p[A], x, y),\n grad(p[B], x - 1, y)),\n lerp(u, grad(p[A + 1], x, y - 1),\n grad(p[B + 1], x - 1, y - 1)));\n }\n else {\n let xi = floor(x);\n let X = xi & 0xff;\n x -= xi;\n let u = fade(x);\n return lerp(u, grad(p[X], x),\n grad(p[X + 1], x - 1));\n }\n }\n\n public static Fbm(octave: number, x: number): number;\n public static Fbm(octave: number, x: number, y: number): number;\n public static Fbm(octave: number, x: number, y: number, z: number): number;\n public static Fbm(octave: number, x: number, y?: number, z?: number) {\n let f = 0;\n let w = 0.5;\n let noise = Perlin.Noise;\n if (y !== undefined && z !== undefined) {\n for (let i = 0; i < octave; i++) {\n f += w * noise(x, y, z);\n x *= 2.0;\n y *= 2.0;\n z *= 2.0;\n w *= 0.5;\n }\n }\n else if (y !== undefined) {\n for (let i = 0; i < octave; i++) {\n f += w * noise(x, y);\n x *= 2.0;\n y *= 2.0;\n w *= 0.5;\n }\n }\n else {\n for (let i = 0; i < octave; i++) {\n f += w * noise(x);\n x *= 2.0;\n w *= 0.5;\n }\n }\n return f;\n }\n\n private static _Fade(t: number) {\n return t * t * t * (t * (t * 6 - 15) + 10);\n }\n\n private static _Lerp(t: number, a: number, b: number) {\n return a + t * (b - a);\n }\n\n private static _Grad(hash: number, x: number): number;\n private static _Grad(hash: number, x: number, y: number): number;\n private static _Grad(hash: number, x: number, y: number, z: number): number\n private static _Grad(hash: number, x: number, y?: number, z?: number) {\n if (y !== undefined && z !== undefined) {\n let h = hash & 15; // CONVERT LO 4 BITS OF HASH CODE\n let u = h < 8 ? x : y, // INTO 12 GRADIENT DIRECTIONS.\n v = h < 4 ? y : (h == 12 || h == 14 ? x : z);\n return ((h & 1) == 0 ? u : -u) + ((h & 2) == 0 ? v : -v);\n }\n else if (y !== undefined) {\n return ((hash & 1) == 0 ? x : -x) + ((hash & 2) == 0 ? y : -y);\n }\n else {\n return (hash & 1) == 0 ? x : -x;\n }\n }\n\n private static _Permutation = [\n 151, 160, 137, 91, 90, 15,\n 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23,\n 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33,\n 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166,\n 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244,\n 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196,\n 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123,\n 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42,\n 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9,\n 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228,\n 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107,\n 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254,\n 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180,\n 151\n ]\n}\n","import { MathUtils, Object3D, Quaternion, Spherical, Vector2, Vector3 } from \"three\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { DeviceInput } from \"../DeviceInput\";\nimport { Easing } from \"../tween/tween\";\nimport { SystemInfo } from \"../SystemInfo\";\nimport { property } from \"../PropertyManager\";\nimport { Vector3_ZERO, quarticDamp } from \"../math\";\n\nconst { clamp, degToRad } = MathUtils;\nconst { abs, tan } = Math;\n\nexport const VCamFreeLookMode = {\n FREE: 0,\n TRANSLATE: 1,\n}\nexport type VCamFreeLookMode = typeof VCamFreeLookMode[keyof typeof VCamFreeLookMode];\n\nexport class FreelookVirtualCamera extends VirtualCamera {\n static __loc0 = new Vector2();\n static __loc1 = new Vector2();\n static __center = new Vector2();\n static __preCenter = new Vector2();\n static __moveDelta = new Vector2();\n static __worldPos = new Vector3();\n static __posDelta = new Vector3();\n static __posOffset = new Vector3();\n static __xAxis = new Vector3();\n static __yAxis = new Vector3();\n static __quat = new Quaternion();\n static __spherical = new Spherical();\n\n private _button: number = -1;\n private _touchID: number = -1;\n private _distanceDelta: number = 0;\n private _preLoc0: Vector2 = new Vector2();\n private _preLoc1: Vector2 = new Vector2();\n private _rotateDelta: Vector2 = new Vector2();\n private _panDelta: Vector2 = new Vector2();\n\n @property({ value: VCamFreeLookMode })\n mode: VCamFreeLookMode = VCamFreeLookMode.FREE;\n @property({ dir: \"set\" })\n forbidX: boolean = false;\n @property({ dir: \"set\" })\n forbidY: boolean = false;\n @property({ dir: \"set\" })\n forbidZ: boolean = false;\n @property({ dir: \"set\" })\n forbidPanX: boolean = false;\n @property({ dir: \"set\" })\n forbidPanY: boolean = false;\n @property({ dir: \"set\" })\n forbitPanOffsetY: boolean = false;\n\n rotateSpeed: number = 2;\n rotateSmoothing: number = 0.5;\n panSpeed: number = 2;\n panSmoothing: number = 0.5;\n panScale: Vector3 = new Vector3(1, 1, 1);\n phiMin: number = 0.001;\n phiMax: number = Math.PI - 0.001;\n thetaMin: number = -Infinity;\n thetaMax: number = Infinity;\n distanceMin: number = 0.001;\n distanceMax: number = Infinity;\n rotateTouchID: number = 0;\n lookAt = new Object3D();\n\n onEnable() {\n this.viewer.on(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.on(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.on(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.on(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.on(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.on(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n this.reset();\n }\n\n onDisable() {\n this.viewer.off(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.off(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.off(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.off(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.off(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.off(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n }\n\n reset() {\n this._button = -1;\n this._touchID = -1;\n this._rotateDelta.set(0, 0);\n this._panDelta.set(0, 0);\n this._distanceDelta = 0;\n }\n\n private _tweenPOI = {\n get position() { return this.node.position; },\n set position(v: Vector3) { this.node.position.copy(v); },\n get lookAt() { return this.lookAt.position; },\n set lookAt(v: Vector3) { this.lookAt.position.copy(v); },\n get trackedObjectOffset() { return this.trackedObjectOffset; },\n set trackedObjectOffset(v: Vector3) { this.trackedObjectOffset.copy(v); }\n }\n\n gotoPOI(\n position: Vector3,\n lookAt: Vector3,\n duration: number = 1,\n easing: (amount: number) => number = Easing.Quadratic.InOut\n ) {\n this.viewer.killTweensOf(this._tweenPOI);\n this.viewer.tween(this._tweenPOI).to({ position, lookAt, trackedObjectOffset: Vector3_ZERO }, duration).easing(easing).start();\n }\n\n private _onPointerDown(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = e.button;\n this._preLoc0.set(e.pageX, e.pageY);\n }\n\n private _onPointerUp(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = -1;\n }\n\n private _onPointerMove(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n FreelookVirtualCamera.__loc0.set(e.pageX, e.pageY);\n switch (this._button) {\n case 0: this._rotateDelta.add(this._calculateRotateDelta(FreelookVirtualCamera.__moveDelta, this._preLoc0, FreelookVirtualCamera.__loc0)); break;\n case 1:\n case 2:\n this._panDelta.add(this._calculatePanDelta(FreelookVirtualCamera.__moveDelta, this._preLoc0, FreelookVirtualCamera.__loc0)); break;\n }\n this._preLoc0.copy(FreelookVirtualCamera.__loc0);\n }\n\n private _onMouseWheel(e: WheelEvent) {\n if (this.lookAt) {\n let dist = FreelookVirtualCamera.__worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset).distanceTo(this.node.position);\n let distNew = dist + this._distanceDelta;\n if (e.deltaY > 0) {\n distNew *= this._calculateDistanceScale(1 / 0.85);\n }\n else if (e.deltaY < 0) {\n distNew *= this._calculateDistanceScale(0.85);\n }\n this._distanceDelta = distNew - dist;\n }\n }\n\n private _onTouchStart(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n let touches = e.touches;\n let rotateTouchID = this.rotateTouchID;\n if (touches.length > rotateTouchID + 1) {\n this._preLoc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n this._preLoc1.set(touches[rotateTouchID + 1].pageX, touches[rotateTouchID + 1].pageY);\n }\n else if (touches.length > rotateTouchID) {\n this._touchID = touches[rotateTouchID].identifier;\n this._preLoc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n }\n }\n\n private _onTouchMove(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n const { __loc0, __loc1, __worldPos, __moveDelta, __preCenter, __center } = FreelookVirtualCamera;\n\n let touches = e.touches;\n let rotateTouchID = this.rotateTouchID;\n if (touches.length > rotateTouchID + 1) {\n __loc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n __loc1.set(touches[rotateTouchID + 1].pageX, touches[rotateTouchID + 1].pageY);\n if (this.lookAt) {\n let dist = __worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset).distanceTo(this.node.position);\n let distNew = (dist + this._distanceDelta) * this._calculateDistanceScale(this._preLoc0.distanceTo(this._preLoc1) / __loc0.distanceTo(__loc1))\n this._distanceDelta = distNew - dist;\n }\n this._panDelta.add(this._calculatePanDelta(__moveDelta, __preCenter.copy(this._preLoc0).add(this._preLoc1).multiplyScalar(0.5), __center.copy(__loc0).add(__loc1).multiplyScalar(0.5)));\n this._preLoc0.copy(__loc0);\n this._preLoc1.copy(__loc1);\n }\n else if (touches.length > rotateTouchID) {\n if (this._touchID === touches[rotateTouchID].identifier) {\n __loc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n this._rotateDelta.add(this._calculateRotateDelta(__moveDelta, this._preLoc0, __loc0));\n this._preLoc0.copy(__loc0);\n }\n }\n }\n\n private _calculateDistanceScale(scale: number) {\n if (this.forbidZ) {\n scale = 1;\n }\n return scale;\n }\n\n private _calculateRotateDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n const domElement = this.viewer.canvas;\n out.copy(loc1).sub(loc0).multiplyScalar(this.rotateSpeed * 2 * Math.PI / domElement.height);\n out.y = -out.y;\n if (this.forbidX) {\n out.x = 0;\n }\n if (this.forbidY) {\n out.y = 0;\n }\n return out;\n }\n\n private _calculatePanDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n const domElement = this.viewer.canvas;\n out.copy(loc1).sub(loc0).multiplyScalar(this.panSpeed / domElement.height);\n if (this.forbidPanX) {\n out.x = 0;\n }\n if (this.forbidPanY) {\n out.y = 0;\n }\n return out;\n }\n\n update(dt: number) {\n if (!this.lookAt) return;\n\n const { __posDelta, __posOffset, __worldPos, __quat, __spherical, __xAxis, __yAxis } = FreelookVirtualCamera;\n\n __worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset);\n\n switch (this.mode) {\n case VCamFreeLookMode.FREE:\n if ((abs(this._rotateDelta.x) + abs(this._rotateDelta.y) + abs(this._distanceDelta)) > 0.001) {\n const { __posDelta, __posOffset, __worldPos } = FreelookVirtualCamera;\n __quat.setFromUnitVectors(this.node.up, Object3D.DEFAULT_UP);\n __posDelta.copy(this.node.position).sub(__worldPos);\n __posDelta.applyQuaternion(__quat);\n __spherical.setFromVector3(__posDelta);\n\n let dampFactor = quarticDamp(1, 0, this.rotateSmoothing, dt);\n this._rotateDelta.x = __spherical.theta - clamp(__spherical.theta - this._rotateDelta.x, this.thetaMin, this.thetaMax);\n __spherical.theta = __spherical.theta - this._rotateDelta.x * (1 - dampFactor);\n\n this._rotateDelta.y = clamp(__spherical.phi + this._rotateDelta.y, this.phiMin, this.phiMax) - __spherical.phi;\n __spherical.phi = clamp(__spherical.phi + this._rotateDelta.y * (1 - dampFactor), 0.001, Math.PI - 0.001);\n\n this._distanceDelta = clamp(__spherical.radius + this._distanceDelta, this.distanceMin, this.distanceMax) - __spherical.radius;\n __spherical.radius = __spherical.radius + this._distanceDelta * (1 - dampFactor);\n\n this._rotateDelta.multiplyScalar(dampFactor);\n this._distanceDelta *= dampFactor;\n\n __posDelta.setFromSpherical(__spherical);\n __posDelta.applyQuaternion(__quat.invert());\n\n this.node.position.copy(__posDelta.add(__worldPos));\n }\n break;\n case VCamFreeLookMode.TRANSLATE:\n if (abs(this._distanceDelta) > 0.001) {\n __posDelta.copy(this.node.position).sub(this.lookAt.position);\n\n let dampFactor = quarticDamp(1, 0, this.rotateSmoothing, dt);\n let dist0 = __posDelta.length();\n this._distanceDelta = clamp(dist0 + this._distanceDelta, this.distanceMin, this.distanceMax) - dist0;\n let dist = dist0 + this._distanceDelta * (1 - dampFactor);\n this._distanceDelta *= dampFactor;\n\n let pos = __posDelta.normalize().multiplyScalar(dist).add(this.lookAt.position);\n __posOffset.copy(pos).sub(this.node.position);\n this.trackedObjectOffset.add(__posOffset);\n this.node.position.copy(pos);\n\n __worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset);\n }\n break;\n }\n\n if (abs(this._panDelta.x) + abs(this._panDelta.y) > 0.001) {\n __posDelta.copy(this.node.position).sub(__worldPos);\n\n __xAxis.setFromMatrixColumn(this.node.matrix, 0);\n __yAxis.setFromMatrixColumn(this.node.matrix, 1);\n\n if (this.forbitPanOffsetY) {\n __yAxis.y = 0;\n __yAxis.normalize();\n }\n\n let length = __posDelta.length() * 2 * tan(degToRad(this.fov * 0.5));\n\n let dampFactor = quarticDamp(1, 0, this.panSmoothing, dt);\n\n let trackedObjectOffset = this.trackedObjectOffset;\n trackedObjectOffset.sub(__xAxis.multiplyScalar(this._panDelta.x * length * (1 - dampFactor)));\n trackedObjectOffset.add(__yAxis.multiplyScalar(this._panDelta.y * length * (1 - dampFactor)));\n\n this._panDelta.multiplyScalar(dampFactor);\n\n __worldPos.copy(this.lookAt.position).add(trackedObjectOffset);\n this.node.position.copy(__posDelta.add(__worldPos));\n }\n\n this.node.lookAt(__worldPos);\n }\n}","import { BoxGeometry, Material, Mesh } from \"three\";\n\nexport class Box<M extends Material | Material[] = Material | Material[]> extends Mesh<BoxGeometry, M> {\n constructor(...args: ConstructorParameters<typeof BoxGeometry>) {\n super(new BoxGeometry(...args));\n }\n}","import { Material, Mesh, SphereGeometry } from \"three\";\n\nexport class Sphere<M extends Material | Material[] = Material | Material[]> extends Mesh<SphereGeometry, M> {\n constructor(...args: ConstructorParameters<typeof SphereGeometry>) {\n super(new SphereGeometry(...args));\n }\n}","import { Material, Mesh, PlaneGeometry } from \"three\";\n\nexport class Plane<M extends Material | Material[] = Material | Material[]> extends Mesh<PlaneGeometry, M> {\n constructor(...args: ConstructorParameters<typeof PlaneGeometry>) {\n super(new PlaneGeometry(...args));\n }\n}\n","import {\n BufferGeometry,\n Color,\n ColorRepresentation,\n Matrix4,\n Mesh,\n PerspectiveCamera,\n PlaneGeometry,\n Vector3,\n Vector4,\n Plane,\n WebGLRenderTarget,\n HalfFloatType,\n ShaderMaterial,\n UniformsUtils,\n Scene,\n WebGLRenderer\n} from \"three\";\n\nconst ReflectorShader = {\n name: 'ReflectorShader',\n uniforms: {\n color: { value: null },\n tDiffuse: { value: null },\n textureMatrix: { value: null }\n },\n\n vertexShader: /* glsl */`\n\t\tuniform mat4 textureMatrix;\n\t\tvarying vec4 vUv;\n\n\t\t#include <common>\n\t\t#include <logdepthbuf_pars_vertex>\n\n\t\tvoid main() {\n\t\t\tvUv = textureMatrix * vec4( position, 1.0 );\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t#include <logdepthbuf_vertex>\n\t\t}`,\n\n fragmentShader: /* glsl */`\n\t\tuniform vec3 color;\n\t\tuniform sampler2D tDiffuse;\n\t\tvarying vec4 vUv;\n\n\t\t#include <logdepthbuf_pars_fragment>\n\n\t\tfloat blendOverlay( float base, float blend ) {\n\t\t\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\t\t}\n\n\t\tvec3 blendOverlay( vec3 base, vec3 blend ) {\n\t\t\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n\t\t}\n\n\t\tvoid main() {\n\t\t\t#include <logdepthbuf_fragment>\n\n\t\t\tvec4 base = texture2DProj( tDiffuse, vUv );\n\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\n\t\t\t#include <tonemapping_fragment>\n\t\t\t#include <colorspace_fragment>\n\t\t}`\n}\n\nexport class Reflector extends Mesh<BufferGeometry, ShaderMaterial> {\n isReflector: boolean = true;\n\n constructor(options: {\n textureWidth?: number,\n textureHeight?: number,\n clipBias?: number,\n multisample?: number,\n color?: ColorRepresentation,\n normal?: Vector3,\n material?: ShaderMaterial,\n geometry?: BufferGeometry,\n layer?: number,\n } = {}) {\n super(options.geometry || new PlaneGeometry());\n\n const color = (options.color !== undefined) ? new Color(options.color) : new Color(0x7F7F7F);\n const textureWidth = options.textureWidth || 512;\n const textureHeight = options.textureHeight || 512;\n const clipBias = options.clipBias || 0;\n const multisample = (options.multisample !== undefined) ? options.multisample : 4;\n const defaultNormal = options.normal || new Vector3(0, 0, 1);\n\n const reflectorPlane = new Plane();\n const normal = new Vector3();\n const reflectorWorldPosition = new Vector3();\n const cameraWorldPosition = new Vector3();\n const rotationMatrix = new Matrix4();\n const lookAtPosition = new Vector3(0, 0, - 1);\n const clipPlane = new Vector4();\n\n const view = new Vector3();\n const target = new Vector3();\n const q = new Vector4();\n\n const textureMatrix = new Matrix4();\n const virtualCamera = new PerspectiveCamera();\n virtualCamera.layers.set(options.layer || 0);\n\n const renderTarget = new WebGLRenderTarget(textureWidth, textureHeight, { samples: multisample, type: HalfFloatType });\n\n const shader = ReflectorShader;\n const material = options.material || new ShaderMaterial({\n name: (shader.name !== undefined) ? shader.name : 'unspecified',\n uniforms: UniformsUtils.clone(shader.uniforms),\n fragmentShader: shader.fragmentShader,\n vertexShader: shader.vertexShader\n });\n\n if (material.uniforms.tDiffuse) {\n material.uniforms.tDiffuse.value = renderTarget.texture;\n }\n if (material.uniforms.textureMatrix) {\n material.uniforms.textureMatrix.value = textureMatrix;\n }\n if (material.uniforms.color) {\n material.uniforms.color.value = color;\n }\n\n this.material = material;\n\n const scope = this;\n this.onBeforeRender = function (renderer: WebGLRenderer, scene: Scene, camera: PerspectiveCamera) {\n\n reflectorWorldPosition.setFromMatrixPosition(scope.matrixWorld);\n cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);\n\n rotationMatrix.extractRotation(scope.matrixWorld);\n\n normal.copy(defaultNormal);\n normal.applyMatrix4(rotationMatrix);\n\n view.subVectors(reflectorWorldPosition, cameraWorldPosition);\n\n // Avoid rendering when reflector is facing away\n\n if (view.dot(normal) > 0) return;\n\n view.reflect(normal).negate();\n view.add(reflectorWorldPosition);\n\n rotationMatrix.extractRotation(camera.matrixWorld);\n\n lookAtPosition.set(0, 0, -1);\n lookAtPosition.applyMatrix4(rotationMatrix);\n lookAtPosition.add(cameraWorldPosition);\n\n target.subVectors(reflectorWorldPosition, lookAtPosition);\n target.reflect(normal).negate();\n target.add(reflectorWorldPosition);\n\n virtualCamera.position.copy(view);\n virtualCamera.up.set(0, 1, 0);\n virtualCamera.up.applyMatrix4(rotationMatrix);\n virtualCamera.up.reflect(normal);\n virtualCamera.lookAt(target);\n\n virtualCamera.far = camera.far; // Used in WebGLBackground\n\n virtualCamera.updateMatrixWorld();\n virtualCamera.projectionMatrix.copy(camera.projectionMatrix);\n\n // Update the texture matrix\n textureMatrix.set(\n 0.5, 0.0, 0.0, 0.5,\n 0.0, 0.5, 0.0, 0.5,\n 0.0, 0.0, 0.5, 0.5,\n 0.0, 0.0, 0.0, 1.0\n );\n textureMatrix.multiply(virtualCamera.projectionMatrix);\n textureMatrix.multiply(virtualCamera.matrixWorldInverse);\n textureMatrix.multiply(scope.matrixWorld);\n\n // Now update projection matrix with new clip plane, implementing code from: http://www.terathon.com/code/oblique.html\n // Paper explaining this technique: http://www.terathon.com/lengyel/Lengyel-Oblique.pdf\n reflectorPlane.setFromNormalAndCoplanarPoint(normal, reflectorWorldPosition);\n reflectorPlane.applyMatrix4(virtualCamera.matrixWorldInverse);\n\n clipPlane.set(reflectorPlane.normal.x, reflectorPlane.normal.y, reflectorPlane.normal.z, reflectorPlane.constant);\n\n const projectionMatrix = virtualCamera.projectionMatrix;\n\n q.x = (Math.sign(clipPlane.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0];\n q.y = (Math.sign(clipPlane.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5];\n q.z = - 1.0;\n q.w = (1.0 + projectionMatrix.elements[10]) / projectionMatrix.elements[14];\n\n // Calculate the scaled plane vector\n clipPlane.multiplyScalar(2.0 / clipPlane.dot(q));\n\n // Replacing the third row of the projection matrix\n projectionMatrix.elements[2] = clipPlane.x;\n projectionMatrix.elements[6] = clipPlane.y;\n projectionMatrix.elements[10] = clipPlane.z + 1.0 - clipBias;\n projectionMatrix.elements[14] = clipPlane.w;\n\n // Render\n scope.visible = false;\n\n const currentRenderTarget = renderer.getRenderTarget();\n const currentActiveCubeFace = renderer.getActiveCubeFace();\n const currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n const currentXrEnabled = renderer.xr.enabled;\n const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;\n\n renderer.xr.enabled = false; // Avoid camera modification\n renderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows\n\n renderer.setRenderTarget(renderTarget);\n\n renderer.state.buffers.depth.setMask(true); // make sure the depth buffer is writable so it can be properly cleared, see #18897\n\n if (renderer.autoClear === false) renderer.clear();\n renderer.render(scene, virtualCamera);\n\n renderer.xr.enabled = currentXrEnabled;\n renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\n renderer.setRenderTarget(currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel);\n\n // Restore viewport\n\n const viewport = camera.viewport;\n\n if (viewport !== undefined) {\n renderer.state.viewport(viewport);\n }\n\n scope.visible = true;\n\n };\n\n this.getRenderTarget = function () {\n return renderTarget;\n };\n this.getTextureMatrix = function () {\n return textureMatrix;\n }\n this.dispose = function () {\n renderTarget.dispose();\n scope.material.dispose();\n };\n }\n\n getTextureMatrix: () => Matrix4;\n getRenderTarget: () => WebGLRenderTarget;\n dispose: () => void;\n}","export const vert_fullscreen = /*glsl*/`\nvarying vec2 vUv;\nvoid main() {\n\tvUv = position.xy * 0.5 + 0.5;\n\tgl_Position = vec4(position.xy, 1.0, 1.0);\n}\n`","\nexport const frag_BoxfilterBlur = `\n#include <common>\nuniform sampler2D tLast;\nuniform sampler2D tBlur;\nuniform float\t uLod;\nuniform float\t uWeight;\nvarying vec2 vUv;\n\nvoid main() {\n\tvec3 col0 = textureLod(tLast, vUv, 0.).rgb;\n\tvec3 col1 = textureLod(tBlur, vUv, uLod).rgb;\n gl_FragColor = vec4(mix(col0, col1, uWeight), 1.);\n}\n`","export const frag_panoramaToCubeMap = `\n#include <xv_common>\n\nvarying vec2 vUv;\nuniform sampler2D tMain;\nuniform int uFace;\nuniform vec4 uTilingOffset;\n\nvec3 uvToXYZ(int face, vec2 uv) {\n if (face == 0) return vec3(-1.0, uv.y, -uv.x);\n else if (face == 1) return vec3(1.0, uv.y, uv.x);\n else if (face == 2) return vec3(-uv.x, -1.0, uv.y);\n else if (face == 3) return vec3(-uv.x, 1.0, -uv.y);\n else if (face == 4) return vec3(-uv.x, uv.y, 1.0);\n else return vec3(uv.x, uv.y, -1.0);\n}\n\nvec4 panoramaToCubeMap(int face, vec2 uv_i) {\n vec2 uv = uv_i * 2.0 - 1.0;\n vec3 dir = normalize(uvToXYZ(face, uv));\n vec2 uv_o = dirToUv(dir);\n uv_o = vec2(uv_o.x, uv_o.y) * uTilingOffset.xy + uTilingOffset.zw;\n return texture(tMain, uv_o);\n}\n\nvoid main() {\n gl_FragColor = panoramaToCubeMap(uFace, vUv);\n}\n`\n\nexport const frag_cubeMapToPanorama = `\n#include <xv_common>\n\nvarying vec2 vUv;\nuniform samplerCube tMain;\n\nvec4 cubeMapToPanorama(vec2 uv_i) {\n return texture(tMain, uvToDir(uv_i));\n}\n\nvoid main() {\n gl_FragColor = cubeMapToPanorama(vUv);\n}\n`","import {\n Color,\n CubeTexture,\n Matrix3,\n Matrix4,\n Quaternion,\n ShaderMaterial,\n Texture,\n UniformsUtils,\n Vector2,\n Vector3,\n Vector4\n} from \"three\";\n\nexport function getShaderMaterial<T extends {\n [name: string]:\n | CubeTexture\n | Texture\n | Int32Array\n | Float32Array\n | Matrix4\n | Matrix3\n | Quaternion\n | Vector4\n | Vector3\n | Vector2\n | Color\n | number\n | boolean\n | Array<any>\n | null\n}>(\n uniforms: T,\n vertexShader: string,\n fragmentShader: string,\n onInit?: (material?: ShaderMaterial) => void\n) {\n const material = class extends ShaderMaterial {\n constructor(parameters = {}) {\n const entries = Object.entries(uniforms)\n // Create unforms and shaders\n super({\n uniforms: entries.reduce((acc, [name, value]) => {\n const uniform = UniformsUtils.clone({ [name]: { value } })\n return {\n ...acc,\n ...uniform,\n }\n }, {}),\n vertexShader,\n fragmentShader,\n })\n // Create getter/setters\n entries.forEach(([name]) =>\n Object.defineProperty(this, name, {\n get: () => this.uniforms[name].value,\n set: (v) => (this.uniforms[name].value = v),\n })\n )\n\n // Assign parameters, this might include uniforms\n Object.assign(this, parameters)\n // Call onInit\n if (onInit) onInit(this)\n }\n } as unknown as typeof ShaderMaterial & T & ShaderMaterial;\n return material;\n}","import { Color, IUniform, ShaderMaterial, Texture } from \"three\";\nimport { property } from \"../PropertyManager\";\n\nconst vert_Reflector = `\nuniform mat4 textureMatrix;\nvarying vec4 vUv4;\nvarying vec2 vUv;\nvarying vec2 vUv1;\nvarying vec3 vViewPosition;\n\n#include <common>\n#include <normal_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n\nvoid main() {\n #include <beginnormal_vertex>\n #include <defaultnormal_vertex>\n\n vec4 positionWS = modelMatrix * vec4(position, 1.0);\n vec4 mvPosition = viewMatrix * positionWS;\n\n vUv = uv;\n vUv1 = uv1;\n vUv4 = textureMatrix * vec4(position, 1.0);\n\n vViewPosition = -mvPosition.xyz;\n vNormal = normalize(transformedNormal);\n\n gl_Position = projectionMatrix * mvPosition;\n #include <logdepthbuf_vertex>\n}\n`\n\nconst frag_Reflector = `\nuniform vec3 color;\nuniform float roughness;\nuniform float metalness;\nuniform sampler2D tDiffuse;\nuniform sampler2D normalMap;\nuniform sampler2D roughnessMap;\nuniform sampler2D aoMap;\nuniform float aoMapIntensity;\nuniform sampler2D lightMap;\nuniform float lightMapIntensity;\n\nvarying vec4 vUv4;\nvarying vec2 vUv;\nvarying vec2 vUv1;\nvarying vec3 vViewPosition;\nvarying vec3 vNormal;\n\n#include <common>\n#include <lights_physical_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n\nvoid main() {\n #include <logdepthbuf_fragment>\n\n vec4 uv4 = vUv4;\n vec4 texelNormal = texture2D(normalMap, vUv);\n vec3 normal = normalize(vec3(texelNormal.r * 2.0 - 1.0, texelNormal.b, texelNormal.g * 2.0 - 1.0));\n vec3 coord = uv4.xyz / uv4.w;\n vec2 reflectUv = coord.xy + coord.z * normal.xz * 0.05;\n\n vec3 geometryNormal = normalize(vNormal);\n vec3 geometryViewDir = normalize(vViewPosition);\n\n vec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\n float metalnessFactor = metalness;\n vec3 diffuseColor = color.rgb * ( 1.0 - metalnessFactor );\n vec3 specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n float specularF90 = 1.0;\n\n float roughnessFactor = texture2D(roughnessMap, vUv).g * roughness;\n\n computeMultiscattering( geometryNormal, geometryViewDir, specularColor, specularF90, roughnessFactor, singleScattering, multiScattering );\n\n vec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\n vec3 irradiance = vec3(0.);\n irradiance += texture2D(lightMap, vUv).rgb * lightMapIntensity;\n\n float lod = roughnessFactor * (1.7 - 0.7 * roughnessFactor) * 6.;\n vec4 reflectColor = textureLod(tDiffuse, reflectUv, lod);\n\n vec3 f_specular = vec3(0.);\n vec3 f_diffuse = vec3(0.);\n\n f_specular += reflectColor.rgb * (1.0 - roughnessFactor * roughnessFactor) + multiScattering * irradiance;\n f_diffuse += diffuse * irradiance;\n\n float ambientOcclusion = mix(1., texture2D(aoMap, vUv1).r, aoMapIntensity);\n float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\n f_specular *= computeSpecularOcclusion(dotNV, ambientOcclusion, roughnessFactor);\n\n gl_FragColor = vec4(f_specular + f_diffuse, 1.);\n\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n}\n`\n\nexport class ReflectorMaterial extends ShaderMaterial {\n\n vertexShader: string = vert_Reflector;\n fragmentShader: string = frag_Reflector;\n\n uniforms: { [uniform: string]: IUniform<any>; } = {\n color: { value: new Color(0xffffff) },\n tDiffuse: { value: null },\n textureMatrix: { value: null },\n metalness: { value: 0 },\n roughness: { value: 1 },\n roughnessMap: { value: null },\n normalMap: { value: null },\n aoMap: { value: null },\n aoMapIntensity: { value: 1 },\n lightMap: { value: null },\n lightMapIntensity: { value: 1 },\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get metalness() {\n return this.uniforms.metalness.value;\n }\n set metalness(v: number) {\n this.uniforms.metalness.value = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get roughness() {\n return this.uniforms.roughness.value;\n }\n set roughness(v: number) {\n this.uniforms.roughness.value = v;\n }\n\n get roughnessMap() {\n return this.uniforms.roughnessMap.value;\n }\n set roughnessMap(v: Texture) {\n this.uniforms.roughnessMap.value = v;\n }\n\n get normalMap() {\n return this.uniforms.normalMap.value;\n }\n set normalMap(v: Texture) {\n this.uniforms.normalMap.value = v;\n }\n\n get aoMap() {\n return this.uniforms.aoMap.value;\n }\n set aoMap(v: Texture) {\n this.uniforms.aoMap.value = v;\n }\n\n get lightMap() {\n return this.uniforms.lightMap.value;\n }\n set lightMap(v: Texture) {\n this.uniforms.lightMap.value = v;\n }\n}","import { ObjectInstance } from \"./ObjectInstance\";\nimport { Viewer } from \"./Viewer\";\n\nexport class Plugin extends ObjectInstance {\n viewer: Viewer;\n type: string = \"Plugin\";\n install?(): void;\n uninstall?(): void;\n onUpdate?(dt: number): void;\n onRender?(dt: number): void;\n}","import { Object3D, Scene } from \"three\";\nimport { Plugin } from \"../Plugin\";\nimport { Viewer } from \"../Viewer\";\n\nexport class DebugPlugin extends Plugin {\n\n static Instance(viewer: Viewer) {\n return viewer.getPlugin(DebugPlugin, true);\n }\n\n scene: Scene = new Scene();\n\n add(node: Object3D) {\n this.scene.add(node);\n return node;\n }\n\n remove(node: Object3D) {\n this.scene.remove(node);\n return node;\n }\n\n onRender(dt: number): void {\n const { renderer, camera } = this.viewer;\n const autoClear = renderer.autoClear;\n renderer.autoClear = false;\n renderer.render(this.scene, camera);\n renderer.autoClear = autoClear;\n }\n}","import { AdditiveBlending, NoBlending, OrthographicCamera, ShaderMaterial, Texture, WebGLRenderTarget } from \"three\";\nimport { vert_fullscreen } from \"../../materials\";\n\nexport const LOD_MIN = 4;\nexport const _flatCamera = /*@__PURE__*/ new OrthographicCamera();\n\nexport function _setViewport(\n target: WebGLRenderTarget,\n x: number,\n y: number,\n width: number,\n height: number\n) {\n target.viewport.set(x, y, width, height);\n target.scissor.set(x, y, width, height);\n}\n\nexport function _getCommonVertexShader() {\n\n return /* glsl */`\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\t\t\t} else if ( face == 1.0 ) {\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\t\t\t} else if ( face == 2.0 ) {\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\t\t\t} else if ( face == 3.0 ) {\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\t\t\t} else if ( face == 4.0 ) {\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\t\t\t} else if ( face == 5.0 ) {\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\t\t}\n\t`;\n}\n\nexport function _getClearMaterial() {\n return new ShaderMaterial({\n name: \"Clear\",\n uniforms: {\n map: { value: null },\n intensity: { value: 1 }\n },\n vertexShader: vert_fullscreen,\n fragmentShader: /* glsl */ `\n uniform sampler2D map;\n uniform float intensity;\n varying vec2 vUv;\n void main() {\n vec4 col = texture2D(map, vUv);\n gl_FragColor = vec4(col.rgb * intensity, col.a);\n }\n `,\n blending: NoBlending,\n depthWrite: false,\n depthTest: false,\n })\n}\n\nexport function _getCubeMapMaterial() {\n return new ShaderMaterial({\n name: \"CubeMapToCubeUV\",\n uniforms: {\n envMap: { value: null },\n lod: { value: 0 }\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */`\n precision mediump float;\n precision mediump int;\n\n varying vec3 vOutputDirection;\n uniform samplerCube envMap;\n uniform float lod;\n\n void main() {\n gl_FragColor = textureCubeLodEXT(envMap, vOutputDirection, lod);\n }\n `,\n blending: AdditiveBlending,\n depthWrite: false,\n depthTest: false,\n });\n}\n\nexport function _getMipCopyMaterial(\n lodMax: number,\n width: number,\n height: number,\n) {\n return new ShaderMaterial({\n name: \"MipBlurToCubeUV\",\n defines: {\n CUBEUV_TEXEL_WIDTH: 1.0 / width,\n CUBEUV_TEXEL_HEIGHT: 1.0 / height,\n CUBEUV_MAX_MIP: `${lodMax}.0`,\n },\n uniforms: {\n cubeUVMap: { value: null },\n lod: { value: 0 },\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */ `\n precision mediump float;\n precision mediump int;\n\n #define ENVMAP_TYPE_CUBE_UV\n #include <cube_uv_reflection_fragment>\n\n varying vec3 vOutputDirection;\n\n uniform sampler2D cubeUVMap;\n uniform float lod;\n\n void main() {\n vec3 col = bilinearCubeUV(cubeUVMap, vOutputDirection, CUBEUV_MAX_MIP - lod);\n gl_FragColor = vec4(col, 1.);\n }\n `,\n blending: AdditiveBlending,\n depthWrite: false,\n depthTest: false,\n })\n}\n\nexport function _getMipBlurMaterial(\n lodMax: number,\n width: number,\n height: number,\n) {\n return new ShaderMaterial({\n name: \"MipBlurToCubeUV\",\n defines: {\n CUBEUV_TEXEL_WIDTH: 1.0 / width,\n CUBEUV_TEXEL_HEIGHT: 1.0 / height,\n CUBEUV_MAX_MIP: `${lodMax}.0`,\n },\n uniforms: {\n envMap: { value: null },\n cubeUVMap: { value: null },\n weight: { value: 1 },\n lod: { value: 0 },\n exposure: { value: 1 },\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */ `\n precision mediump float;\n precision mediump int;\n\n #define ENVMAP_TYPE_CUBE_UV\n #include <cube_uv_reflection_fragment>\n\n varying vec3 vOutputDirection;\n\n uniform sampler2D cubeUVMap;\n uniform samplerCube envMap;\n uniform float weight;\n uniform float lod;\n uniform float exposure;\n\n void main() {\n vec3 col0 = bilinearCubeUV(cubeUVMap, vOutputDirection, CUBEUV_MAX_MIP - (lod + 1.));\n vec3 col1 = textureCubeLodEXT(envMap, vOutputDirection, lod).rgb * exposure;\n gl_FragColor = vec4(mix(col0, col1, weight), 1.);\n }\n `,\n blending: NoBlending,\n depthWrite: false,\n depthTest: false,\n })\n}","export interface ICallTarget {\n uuid: string;\n}\n\nclass Caller {\n private _target: ICallTarget | null = null;\n private _callback: Function | null = null;\n private _interval: number = 0;\n private _repeat: number = 0;\n\n private _elapsed: number = 0;\n private _lastTime: number = 0;\n private _repeatForever: boolean = false;\n private _pause: boolean = false;\n\n get pause() {\n return this._pause;\n }\n\n set pause(v: boolean) {\n this._pause = v;\n }\n\n get target() {\n return this._target;\n }\n\n get callback() {\n return this._callback;\n }\n\n constructor(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n this._target = target;\n this._callback = callback;\n this._interval = interval;\n this._repeat = repeat;\n this._repeatForever = repeat === -1;\n }\n\n get lived() {\n return this._repeat > 0 || this._repeatForever;\n }\n\n update(dt: number) {\n if (this._pause) return;\n if (this._repeat > 0 || this._repeatForever) {\n this._elapsed += dt;\n if (this._elapsed >= this._interval) {\n this.trigger(this._elapsed - this._lastTime);\n this._elapsed -= this._interval;\n this._lastTime = this._elapsed;\n this._repeat--;\n }\n }\n }\n\n trigger(dt: number) {\n if (this._target && this._callback) {\n this._callback.call(this._target, dt, this._elapsed);\n }\n }\n}\n\nclass Callers {\n private _target!: ICallTarget;\n private _callers!: Caller[];\n\n get target() {\n return this._target;\n }\n\n get callers() {\n return this._callers;\n }\n\n constructor(target: ICallTarget, callers: Caller[]) {\n this._target = target;\n this._callers = callers;\n }\n}\n\nexport class Scheduler {\n private _callers: { [k: string]: Caller[] } = {}\n private _callersArray: Callers[] = [];\n\n pause(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = true);\n }\n\n resume(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = false);\n }\n\n schedule(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n let callers = this._callers[target.uuid];\n if (callers === undefined) {\n callers = this._callers[target.uuid] = [];\n this._callersArray.push(new Callers(target, callers));\n }\n callers.push(new Caller(target, callback, interval, repeat));\n }\n\n unshedule(target: ICallTarget, callback: Function) {\n let callers = this._callers[target.uuid];\n if (callers) {\n let index = callers.findIndex(v => v.callback === callback);\n if (index !== -1) callers.splice(index, 1);\n }\n }\n\n unscheduleAll(target: ICallTarget) {\n delete this._callers[target.uuid];\n let index = this._callersArray.findIndex(v => v.target === target);\n if (index !== -1) this._callersArray.splice(index, 1);\n }\n\n update(dt: number) {\n let callers: Caller[];\n let callersArray = this._callersArray;\n for (let j = callersArray.length; j--;) {\n callers = callersArray[j].callers;\n for (let i = callers.length; i--;) {\n if (callers[i].lived) callers[i].update(dt);\n else callers.splice(i, 1);\n }\n }\n }\n}","import { Component } from \"./Component\";\n\nclass Invoker<T> {\n protected _targets: T[] = [];\n protected _callback: (target: T, dt: number) => any;\n\n constructor(callback: (target: T, dt: number) => any) {\n this._callback = callback;\n }\n\n add(target: any) {\n this._targets.push(target);\n }\n\n remove(target: any) {\n let index = this._targets.indexOf(target);\n if (index !== -1) {\n this._targets.splice(index, 1);\n }\n }\n\n invoke(dt: number) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, dt);\n }\n }\n}\n\nclass InvokerOneCall<T> extends Invoker<T> {\n invoke(dt: number) {\n if (this._targets.length > 0) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, dt);\n }\n this._targets.length = 0;\n }\n }\n}\n\nexport class ComponentScheduler {\n startInvoker: Invoker<Component> = new InvokerOneCall(comp => comp.start!());\n updateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.update!(dt));\n lastUpdateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.lastUpdate!(dt));\n\n start() {\n this.startInvoker.invoke(0);\n }\n\n update(dt: number) {\n this.updateInvoker.invoke(dt);\n }\n\n lastUpdate(dt: number) {\n this.lastUpdateInvoker.invoke(dt);\n }\n\n enableComponent(comp: Component, enable: boolean) {\n if (enable) {\n if (!comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = true;\n if (comp.onEnable) {\n comp.onEnable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n comp.flags.IsStartCalled = true;\n this.startInvoker.add(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.add(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.add(comp);\n }\n }\n }\n else {\n if (comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = false;\n if (comp.onDisable) {\n comp.onDisable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n this.startInvoker.remove(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.remove(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.remove(comp);\n }\n }\n }\n }\n}","import { Object3D } from \"three\";\nimport { Scheduler } from \"./Scheduler\";\nimport { Component } from \"./Component\";\nimport { ComponentScheduler } from \"./ComponentScheduler\";\nimport { Viewer } from \"./Viewer\";\n\n\ntype ComponentConstructor = new () => Component;\n\ninterface DependentInfo {\n mode: DependentMode;\n components: ComponentConstructor[];\n}\n\nexport enum DependentMode {\n /** Check only, throw error if dependent components do not exist. */\n CheckOnly,\n /** Auto add if dependent components do not exist. */\n AutoAdd\n}\n\nexport function dependencies(\n componentOrComponents: ComponentConstructor | ComponentConstructor[],\n mode: DependentMode = DependentMode.CheckOnly\n) {\n return function <T extends ComponentConstructor>(target: T): void {\n const components = Array.isArray(componentOrComponents) ? componentOrComponents : [componentOrComponents];\n ComponentManager._dependenciesMap.set(target, { components, mode });\n }\n}\n\nexport class ComponentManager {\n static _dependenciesMap = new Map<ComponentConstructor, DependentInfo>();\n\n private _viewer: Viewer;\n private _scheduler: Scheduler = new Scheduler();\n private _componentScheduler: ComponentScheduler = new ComponentScheduler();\n private _componentsMap = new Map<Object3D, Component[]>();\n\n get viewer() {\n return this._viewer;\n }\n\n get scheduler() {\n return this._scheduler;\n }\n\n get componentScheduler() {\n return this._componentScheduler;\n }\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n destroy() {\n this._componentsMap.forEach(components => components.forEach(comp => comp.destroy()));\n this._componentsMap.clear();\n }\n\n update(dt: number) {\n this._scheduler.update(dt);\n this._componentScheduler.start();\n this._componentScheduler.update(dt);\n this._componentScheduler.lastUpdate(dt);\n }\n\n destroyComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => comp.destroy());\n this._componentsMap.delete(node);\n }\n for (let child of node.children) {\n this.destroyComponents(child);\n }\n }\n\n activeComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => this._activeComponent(comp, node.visible));\n }\n for (let child of node.children) {\n this.activeComponents(child);\n }\n }\n\n addComponent<T extends Component>(node: Object3D | Component, instance: T): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: { new(): T }): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: any): T {\n let root = node instanceof Component ? node.node : node;\n let func = typeof constructor === \"function\";\n let component = this._findComponent(root, func ? constructor : constructor.constructor) as any;\n if (component === undefined) {\n component = func ? new constructor() : constructor;\n component.node = root;\n component.manager = this;\n component.viewer = this._viewer;\n\n this._addDendencies(root, component.constructor);\n\n if (!component.flags.OnLoadCalled) {\n component.flags.OnLoadCalled = true;\n if (component.onLoad) {\n component.onLoad();\n }\n }\n\n let components = this._componentsMap.get(root);\n if (components === undefined) {\n this._componentsMap.set(root, [component]);\n }\n else {\n components.push(component);\n }\n\n this._activeComponent(component, component.enabled);\n }\n return component as T;\n }\n\n removeComponent(node: Object3D, component: Component) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.splice(components.indexOf(component), 1);\n }\n return this;\n }\n\n getComponent<T extends Component>(node: Object3D, constructor: { new(): T }, autoAdd: boolean = false): T {\n let comp = this._findComponent(node, constructor) as T;\n if (comp === undefined && autoAdd) {\n comp = this.addComponent(node, constructor);\n }\n return comp;\n }\n\n getComponentsInChidren<T extends Component>(node: Object3D, constructor: { new(): T }, out: T[] = []): T[] {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n if (components[i] instanceof (constructor as any)) out.push(components[i] as any);\n }\n for (let child of node.children) {\n this.getComponentsInChidren(child, constructor, out);\n }\n }\n return out;\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n this._componentsMap.forEach(v => v.forEach(callback));\n }\n\n private _addDendencies(node: Object3D, constructor: ComponentConstructor) {\n while (constructor !== Component) {\n let dependentInfo = ComponentManager._dependenciesMap.get(constructor);\n if (dependentInfo) {\n const { components, mode } = dependentInfo;\n for (const dep of components) {\n if (!this.getComponent(node, dep)) {\n if (mode === DependentMode.AutoAdd) {\n this.addComponent(node, dep);\n } else {\n throw `Should add ${dep.name} before adding ${constructor.name}`;\n }\n }\n }\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n }\n\n private _findComponent(node: Object3D, constructor: any) {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n let component = components[i];\n if (component instanceof constructor) {\n return component;\n }\n }\n }\n }\n\n protected _activeComponent(comp: Component, active: boolean) {\n this._componentScheduler.enableComponent(comp, active);\n }\n}","import { Task } from \"./Task\";\nimport { EventEmitter } from \"./base\";\n\n\nexport class TaskManager extends EventEmitter {\n private _tasks: Task[] = [];\n private _taskIndex: number = 0;\n private _percent: number = 0;\n\n get percent() {\n return this._percent;\n }\n\n constructor(\n public onComplete?: () => void,\n public onProgress?: (task: Task, loaded: number, total: number) => void,\n public onError?: (task: Task) => void,\n ) {\n super();\n }\n\n destroy() {\n this._tasks.length = 0;\n this._taskIndex = 0;\n this._percent = 0;\n }\n\n add(task: Task) {\n this._tasks.push(task);\n }\n\n update() {\n let task = this._tasks[this._taskIndex];\n if (task) {\n try {\n task.excute();\n }\n catch (e) {\n console.error(e);\n this.onError && this.onError(task);\n }\n this._percent = ++this._taskIndex / this._tasks.length;\n this.onProgress && this.onProgress(task, this._taskIndex, this._tasks.length);\n\n if (this._taskIndex === this._tasks.length) {\n this._percent = 1;\n this.onComplete && this.onComplete();\n }\n }\n }\n}","import { FloatType, HalfFloatType, UnsignedByteType, WebGLRendererParameters } from \"three\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { Logger } from \"./base\";\n\nexport function parepareWebGL(canvas: HTMLCanvasElement, props: WebGLRendererParameters) {\n let isSupportedBrowser = (SystemInfo.isChrome || SystemInfo.isSafari || SystemInfo.isEdge || SystemInfo.isFirefox || SystemInfo.isOpera) && !SystemInfo.isIE;\n if (!isSupportedBrowser) {\n Logger.error(\"Unsupport platform\");\n return null;\n }\n if (!(canvas instanceof HTMLCanvasElement)) {\n Logger.error(\"Canvas is null\");\n return null;\n }\n\n let webglOpts = Object.assign({\n alpha: false,\n depth: true,\n stencil: true,\n antialias: false,\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n powerPreference: \"high-performance\",\n failIfMajorPerformanceCaveat: false\n }, props);\n\n if (window.WebGL2RenderingContext) {\n try {\n const gl = canvas.getContext(\"webgl2\", webglOpts) as WebGL2RenderingContext;\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: HalfFloatType,\n DATA_FLOAT_TYPE: FloatType\n }\n }\n catch (err) {\n Logger.error(err);\n return null;\n }\n }\n else if (window.WebGLRenderingContext) {\n const gl = (canvas.getContext(\"webgl\", webglOpts) || canvas.getContext(\"webgl2\", webglOpts) || canvas.getContext(\"experimental-webgl\", webglOpts)) as WebGLRenderingContext;\n if ((gl.getExtension(\"OES_texture_float\") || gl.getExtension(\"OES_texture_half_float\")) && gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS)) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: SystemInfo.isIOS || gl.getExtension(\"OES_texture_half_float\") ? HalfFloatType : FloatType,\n DATA_FLOAT_TYPE: FloatType,\n }\n }\n else if (this._floatPacking) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: UnsignedByteType,\n DATA_FLOAT_TYPE: UnsignedByteType\n }\n }\n Logger.debug(\"Unspport float type in current platform\");\n return null;\n }\n return null;\n}","export enum Orientation {\n AUTO,\n LANDSCAPE,\n PORTRAIT,\n}","import { LoadingManager } from \"three\";\nimport { TextureSettings } from \"../TextureSettings\";\nimport { aLoader } from \"./aLoader\";\n\nexport interface AssetProperties {\n ext?: string,\n url?: string | File | { mainFile: File, additionalFiles: File[] };\n onProgress?: (event: ProgressEvent) => void,\n}\n\nexport type LoaderConstructor = new (manager: ResourceManager) => aLoader;\n\nexport class ResourceManager {\n\n static extension(path: string) {\n let str = path.split(\".\");\n if (str.length > 1) {\n return str.pop();\n }\n return \"\";\n }\n\n static dirname(path: string) {\n let index = path.lastIndexOf(\"/\");\n return index !== -1 ? path.substring(0, index) : \"\";\n }\n\n static basename(path: string, ext?: string) {\n let str = path.split(\"/\").pop();\n return ext ? str.replace(\".\" + ext, \"\") : str;\n }\n\n static _parseURL(uri: any) {\n let url = \"\";\n let file = null;\n let ext = \"\";\n if (typeof (File) !== \"undefined\" && uri instanceof File) {\n url = uri.name;\n ext = ResourceManager.extension(url);\n file = uri;\n }\n else if (typeof (uri) === \"object\") {\n url = uri.mainFile.name;\n ext = ResourceManager.extension(url);\n file = uri;\n }\n else {\n url += uri;\n ext = ResourceManager.extension(url);\n }\n return { url, file, ext };\n }\n\n static _getTextureKey(url: string, settings: TextureSettings) {\n let keys = [url];\n for (let k in settings) {\n if (settings[k] !== undefined) keys.push(k + \"=\" + settings[k]);\n }\n return keys.join(\",\");\n }\n\n static _texSettingKeys = [\n \"flipY\", \"mapping\", \"wrapS\", \"wrapT\", \"dataType\",\n \"magFilter\", \"minFilter\", \"format\", \"anisotropy\", \"repeat\", \"colorSpace\", \"channel\",\n ]\n static _splitTextureSettings(props: TextureSettings & { [k: string]: any }) {\n let settings = {};\n for (let v of ResourceManager._texSettingKeys) {\n if (props[v] !== undefined) {\n if (v === \"dataType\") {\n settings[\"type\"] = props[v];\n }\n else {\n settings[v] = props[v];\n }\n }\n }\n return settings;\n }\n\n path: string = \"\";\n resourcePath: string = \"\";\n dracoPath: string = \"\";\n loadingManager: LoadingManager;\n\n private _caches: Map<string, any> = new Map();\n private _loaders: Map<string, aLoader> = new Map();\n\n constructor(props: {\n path: string;\n resourcePath: string;\n dracoPath: string;\n loadingManager: LoadingManager;\n }) {\n this.path = props.path;\n this.resourcePath = props.resourcePath;\n this.dracoPath = props.dracoPath;\n this.loadingManager = props.loadingManager;\n }\n\n destroy() {\n this._caches.clear();\n this._loaders.clear();\n }\n\n addLoader(Loader: LoaderConstructor) {\n let loader = new Loader(this);\n for (let ext of loader.extension) {\n this._loaders.set(ext, loader);\n }\n }\n\n loadAsset<T = any>({ url, ext, onProgress, ...props }: AssetProperties & TextureSettings) {\n return new Promise<T>((resolve, reject) => {\n const info = ResourceManager._parseURL(url);\n const texSettings = ResourceManager._splitTextureSettings(props);\n const key = ResourceManager._getTextureKey(info.url, texSettings);\n let result = this._caches.get(key);\n if (result) {\n resolve(result);\n }\n else {\n const onLoad = (file) => {\n this._caches.set(key, file);\n resolve(file);\n }\n let sel = ext || info.ext;\n if (this._loaders.has(sel)) {\n this._loaders.get(sel).load({\n url: info.url,\n texSettings,\n onProgress,\n onLoad,\n onError: reject\n });\n }\n else {\n reject(\"ResourceManager.loadAsset: missing loader for \" + ext)\n }\n }\n })\n }\n}","import { __C, __P } from \"./types\";\n\nexport function applyProps<T, K extends __C<T>>(\n target: T & { copy?: Function },\n props: __P<T, K>,\n) {\n for (let k in props) {\n let prop = props[k];\n if (prop === undefined) {\n continue;\n }\n if (target[k] !== undefined) {\n let des = Object.getOwnPropertyDescriptor(target, k);\n if (!des || (des.writable || des.set)) {\n target[k] = prop;\n }\n else {\n let value = target[k];\n if (value && value.copy) {\n value.copy(prop);\n }\n }\n }\n }\n return target;\n}","import { Plugin } from \"./Plugin\";\nimport { PropertyManager } from \"./PropertyManager\";\nimport { Viewer } from \"./Viewer\";\nimport { Logger, getClassInstance } from \"./base\";\nimport { __C, __Comp } from \"./types\";\n\nexport class PluginManager {\n private _viewer: Viewer;\n private _plugins: Plugin[] = [];\n private _pluginsMap: Map<Object, Plugin> = new Map();\n\n get viewer() {\n return this._viewer\n }\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n destroy() {\n this._plugins.forEach(plugin => plugin.uninstall && plugin.uninstall());\n this._plugins.length = 0;\n this._pluginsMap.clear();\n }\n\n update(dt: number) {\n this._plugins.forEach(plugin => plugin.onUpdate && plugin.onUpdate(dt));\n }\n\n render(dt: number) {\n this._plugins.forEach(plugin => plugin.onRender && plugin.onRender(dt));\n }\n\n traversePlugins(callback: (plugin: Plugin) => void) {\n this._plugins.forEach(callback);\n }\n\n getPlugin<T extends Plugin>(plugin: new (...args: any[]) => T, autoAdd: boolean = false): T {\n let ins = this._pluginsMap.get(plugin);\n if (ins === undefined && autoAdd) {\n ins = this.addPlugin(plugin);\n }\n return ins as T;\n }\n\n addPlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): T;\n addPlugin(plugin: any) {\n const ins = getClassInstance(plugin);\n if (this._pluginsMap.has(ins.constructor)) {\n Logger.warn(\"Plugin already added\");\n }\n else {\n ins.viewer = this._viewer;\n ins.install && ins.install();\n this._plugins.push(ins);\n this._pluginsMap.set(ins.constructor, ins);\n PropertyManager._applyClassProperties(ins.type, ins.constructor);\n }\n return ins;\n }\n\n removePlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): void;\n removePlugin(plugin: any) {\n const key = typeof plugin === \"function\" ? plugin : plugin.constructor;\n const ins = this._pluginsMap.get(key);\n if (ins) {\n ins.uninstall && ins.uninstall();\n this._plugins.splice(this._plugins.indexOf(ins), 1);\n this._pluginsMap.delete(key);\n }\n }\n\n}","import {\n BufferGeometry,\n Camera,\n ClampToEdgeWrapping,\n ColorSpace,\n DataTexture,\n DirectionalLightShadow,\n Euler,\n Float32BufferAttribute,\n FloatType,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearSRGBColorSpace,\n LinearToneMapping,\n LoadingManager,\n Material,\n MathUtils,\n Mesh,\n NearestFilter,\n Object3D,\n OrthographicCamera,\n PCFSoftShadowMap,\n PerspectiveCamera,\n RGBAFormat,\n Scene,\n ShadowMapType,\n SRGBColorSpace,\n Texture,\n TextureDataType,\n ToneMapping,\n UnsignedByteType,\n UVMapping,\n Vector3,\n WebGLCubeRenderTarget,\n WebGLRenderer,\n WebGLRendererParameters,\n WebGLRenderTarget,\n} from \"three\";\n\nimport { EventEmitter, getClassInstance } from \"./base\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { TaskManager } from \"./TaskManager\";\nimport { parepareWebGL } from \"./WebGL\";\nimport { DeviceInput } from \"./DeviceInput\";\nimport { Orientation } from \"./enums/Orientation\";\nimport { AssetProperties, LoaderConstructor, ResourceManager } from \"./asset/ResourceManager\";\nimport { __C, __Comp, __P } from \"./types\";\nimport { Component } from \"./Component\";\nimport { applyProps } from \"./Utils\";\nimport { TextureSettings } from \"./TextureSettings\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { PluginManager } from \"./PluginManager\";\nimport { Plugin } from \"./Plugin\";\nimport { TweenManager } from \"./tween\";\nimport { aGLTFLoader, aHDRLoader, aJSONLoader, aTextureLoader } from \"./loaders\";\n\nexport class Viewer extends EventEmitter {\n static __target: Vector3 = new Vector3();\n static __worldPos: Vector3 = new Vector3();\n\n static _shadowCameraKeys = [\"top\", \"bottom\", \"left\", \"right\", \"near\", \"far\"];\n static _setDirectLightShadow(shadow: DirectionalLightShadow, props: number[]) {\n const shadowCamera = shadow.camera;\n for (let i = 0; i < props.length && i < 6; i++) {\n shadowCamera[Viewer._shadowCameraKeys[i]] = props[i];\n }\n if (props.length > 6) {\n shadow.bias = props[6];\n }\n if (props.length > 8) {\n shadow.mapSize.set(props[7], props[8]);\n }\n return shadow;\n }\n\n static compileMaterial(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Material | Material[],\n ) {\n Viewer.fullscreenMesh.material = target;\n renderer.compile(Viewer.fullscreenMesh, camera, scene);\n }\n\n static compileObject3D(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Object3D\n ) {\n renderer.compile(target, camera, scene);\n }\n\n static compileTexture(\n renderer: WebGLRenderer,\n target: Texture | Texture[]\n ) {\n if (Array.isArray(target)) {\n for (let v of target) {\n renderer.initTexture(v);\n }\n }\n else {\n renderer.initTexture(target);\n }\n }\n\n static Blit(\n renderer: WebGLRenderer,\n renderTarget: WebGLRenderTarget,\n material: Material,\n lod?: number,\n face?: number\n ) {\n Viewer.fullscreenMesh.material = material;\n const RT = renderer.getRenderTarget();\n renderer.setRenderTarget(renderTarget, face, lod);\n renderer.render(Viewer.fullscreenMesh, Viewer.fullscreenCamera);\n renderer.setRenderTarget(RT);\n }\n\n static createFullscreenTriangle() {\n let geometry = new BufferGeometry();\n geometry.setAttribute('position', new Float32BufferAttribute([- 1, 3, 0, - 1, - 1, 0, 3, - 1, 0], 3));\n geometry.setAttribute('uv', new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\n return geometry;\n }\n\n static findChild<T extends Object3D>(node: T, path: string): T {\n let child = null;\n let parts = path.split(\"/\");\n let children = node.children;\n\n for (let part of parts) {\n child = children.find(v => v.name === part);\n if (child) {\n children = child.children;\n }\n else {\n return null;\n }\n }\n\n return child;\n }\n\n static getChildByName<T extends Object3D>(node: T, name: string): T {\n return Viewer.getObject(node, v => (v.name === name) && v);\n }\n\n static getObject<T extends Object3D>(node: T, filter: (value: T) => any) {\n const queue = [node];\n while (queue.length !== 0) {\n let object = queue.shift();\n let target = filter(object);\n if (target) {\n return target;\n }\n object.children.forEach((v: T) => queue.push(v));\n }\n }\n\n static getObjects<T extends Object3D>(node: T, filter: (value: T) => any) {\n const queue = [node];\n const objects = [];\n\n while (queue.length !== 0) {\n let object = queue.shift();\n let target = filter(object);\n if (target) {\n objects.push(object);\n }\n object.children.forEach((v: T) => queue.push(v));\n }\n\n return objects;\n }\n\n static fullscreenMesh: Mesh = new Mesh(Viewer.createFullscreenTriangle());\n static fullscreenCamera: OrthographicCamera = new OrthographicCamera(- 1, 1, 1, - 1, 0, 1);\n\n private _root: HTMLElement;\n private _canvas: HTMLCanvasElement;\n private _gl: WebGLRenderingContext | WebGL2RenderingContext;\n private _RENDER_TARGET_FLOAT_TYPE: TextureDataType;\n private _DATA_FLOAT_TYPE: TextureDataType;\n\n private _scene: Scene;\n private _camera: PerspectiveCamera;\n private _renderer: WebGLRenderer;\n private _input: DeviceInput;\n\n private _dpr: number = 1;\n private _width: number = 1;\n private _height: number = 1;\n private _viewport: { width: number, height: number, factor: number } = { width: 1, height: 1, factor: 1 };\n private _orientation: Orientation = Orientation.AUTO;\n\n private _running: boolean = false;\n private _rootRotated: boolean = false;\n\n private _time: number = 0;\n private _lastTime: number = 0;\n private _targetFrameRate: number = -1;\n private _autoResize: boolean = true;\n\n private _taskManager: TaskManager;\n private _resourceManager: ResourceManager;\n private _componentManager: ComponentManager;\n private _pluginManager: PluginManager;\n private _tweenManager: TweenManager;\n\n get root() {\n return this._root;\n }\n get time() {\n return this._time;\n }\n get scene() {\n return this._scene;\n }\n get camera() {\n return this._camera;\n }\n get renderer() {\n return this._renderer;\n }\n get canvas() {\n return this._canvas;\n }\n get gl() {\n return this._gl;\n }\n get RENDER_TARGET_FLOAT_TYPE() {\n return this._RENDER_TARGET_FLOAT_TYPE;\n }\n get DATA_FLOAT_TYPE() {\n return this._DATA_FLOAT_TYPE;\n }\n get dpr() {\n return this._dpr;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get viewport() {\n return this._viewport;\n }\n get rootRotated() {\n return this._rootRotated;\n }\n\n constructor({\n root,\n canvas,\n autoStart = true,\n autoResize = true,\n shadows = false,\n camera = { fov: 45, near: 0.1, far: 1000, position: new Vector3(0, 0, 4) },\n targetFrameRate = -1,\n colorSpace = SRGBColorSpace,\n toneMapping = LinearToneMapping,\n toneMappingExposure = 1,\n maxDPR = 1.5,\n path = \"\",\n resourcePath = \"\",\n dracoPath = \"https://www.gstatic.com/draco/v1/decoders/\",\n loader = {},\n tasker = {},\n ...webglOpts\n }: {\n root?: HTMLElement;\n canvas?: HTMLCanvasElement;\n targetFrameRate?: number;\n autoStart?: boolean;\n autoResize?: boolean;\n shadows?: boolean | ShadowMapType;\n colorSpace?: ColorSpace;\n toneMapping?: ToneMapping;\n toneMappingExposure?: number;\n maxDPR?: number;\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n camera?: {\n fov?: number;\n aspect?: number;\n near?: number;\n far?: number;\n position?: Vector3;\n rotation?: Euler;\n };\n loader?: {\n onLoad?: () => void,\n onProgress?: (url: string, loaded: number, total: number) => void,\n onError?: (url: string) => void,\n };\n tasker?: {\n onComplete?: () => void,\n onProgress?: (target: Object, loaded: number, total: number) => void,\n onError?: (target: Object) => void,\n };\n } & WebGLRendererParameters = {}) {\n super();\n const el = canvas || document.getElementById(\"canvas\") as HTMLCanvasElement;\n const webgl = parepareWebGL(el, webglOpts);\n if (!webgl) {\n throw Error(\"Unsupport WebGL in current platform\");\n }\n\n this._root = root || el;\n this._canvas = el;\n this._gl = webgl.gl;\n this._RENDER_TARGET_FLOAT_TYPE = webgl.RENDER_TARGET_FLOAT_TYPE;\n this._DATA_FLOAT_TYPE = webgl.DATA_FLOAT_TYPE;\n this._dpr = Math.min(maxDPR, window.devicePixelRatio);\n\n this._scene = new Scene();\n this._camera = applyProps(new PerspectiveCamera(), camera);\n this._renderer = new WebGLRenderer({ canvas: el, context: webgl.gl });\n this._renderer.setPixelRatio(this._dpr);\n this._renderer.outputColorSpace = colorSpace;\n this._renderer.toneMapping = toneMapping;\n this._renderer.toneMappingExposure = toneMappingExposure;\n this._renderer.shadowMap.enabled = !!shadows;\n this._renderer.shadowMap.type = typeof shadows === \"boolean\" ? PCFSoftShadowMap : shadows;\n this._renderer.info.autoReset = false;\n\n const loadingManager = new LoadingManager(loader.onLoad, loader.onProgress, loader.onError);\n this._resourceManager = new ResourceManager({ path, resourcePath, dracoPath, loadingManager });\n this._taskManager = new TaskManager(tasker.onComplete, tasker.onProgress, tasker.onError);\n this._componentManager = new ComponentManager(this);\n this._pluginManager = new PluginManager(this);\n this._tweenManager = new TweenManager();\n\n this._autoResize = autoResize;\n this._targetFrameRate = targetFrameRate;\n this._input = new DeviceInput(this);\n this._input.addEventListeners();\n\n this._addDefaultLoaders();\n\n if (autoStart) this.start();\n }\n\n destroy() {\n this._renderer.dispose();\n this._taskManager.destroy();\n this._resourceManager.destroy();\n this._componentManager.destroy();\n this._pluginManager.destroy();\n this._tweenManager.destroy();\n this._input.removeAllListeners();\n }\n\n private _addDefaultLoaders() {\n this.addLoader(aGLTFLoader);\n this.addLoader(aHDRLoader);\n this.addLoader(aTextureLoader);\n this.addLoader(aJSONLoader);\n }\n\n private _frame(time: number) {\n this._time = time;\n\n if (this._targetFrameRate > -1) {\n const interval = 1 / this._targetFrameRate;\n const delta = time - this._lastTime;\n\n if (delta >= interval) {\n this.loop(delta);\n this._lastTime = time - (delta % interval);\n }\n }\n else {\n this.loop(time - this._lastTime);\n this._lastTime = time;\n }\n }\n\n loop(dt: number) {\n if (this._autoResize) this.resize();\n\n dt = Math.min(dt, 0.067);\n this.update(dt);\n this.render(dt);\n }\n\n update(dt: number) {\n this._taskManager.update();\n this._tweenManager.update(this._time);\n this._componentManager.update(dt);\n this._pluginManager.update(dt);\n }\n\n render(dt: number) {\n this._renderer.info.reset();\n this._onRender(dt);\n this._pluginManager.render(dt);\n }\n\n _onRender(dt: number) {\n this._renderer.render(this._scene, this._camera);\n }\n\n _onResize(width: number, height: number) {\n this._renderer.setSize(width, height);\n }\n\n start() {\n if (this._running == false) {\n this._running = true;\n const frameCallback = (time: number) => {\n if (this._running) {\n this._frame(time * 0.001);\n requestAnimationFrame(frameCallback);\n }\n }\n requestAnimationFrame(frameCallback);\n }\n return this;\n }\n\n stop() {\n this._running = false;\n this._time = this._lastTime = 0;\n return this;\n }\n\n resize(\n width: number = window.innerWidth,\n height: number = window.innerHeight\n ) {\n this._rootRotated =\n this._orientation === Orientation.LANDSCAPE ? width < height :\n this._orientation === Orientation.PORTRAIT ? width > height : false;\n\n if (this._rootRotated) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n\n if (this._width !== width ||\n this._height !== height\n ) {\n this._width = width;\n this._height = height;\n\n let root = this._root;\n if (this._rootRotated) {\n root.style['-webkit-transform'] = 'rotate(90deg)';\n root.style.transform = 'rotate(90deg)';\n root.style['-webkit-transform-origin'] = '0px 0px 0px';\n root.style.transformOrigin = '0px 0px 0px';\n root.style.margin = `0 0 0 ${height}px`;\n root.style.width = `${width}px`;\n root.style.height = `${height}px`;\n }\n else {\n root.style['-webkit-transform'] = 'rotate(0deg)';\n root.style.transform = 'rotate(0deg)';\n root.style.margin = '0px auto';\n root.style.width = `${width}px`;\n root.style.height = `${height}px`;\n }\n\n let camera = this._camera as any;\n if (camera.isOrthographicCamera) {\n this._viewport = { width: width / camera.zoom, height: height / camera.zoom, factor: 1 };\n }\n else if (camera.isPerspectiveCamera) {\n if (!camera.manual) {\n camera.aspect = width / height;\n camera.updateProjectionMatrix();\n }\n let distance = camera.getWorldPosition(Viewer.__worldPos).distanceTo(Viewer.__target);\n let h = 2 * Math.tan(MathUtils.degToRad(camera.fov * 0.5)) * distance;\n let w = h * width / height;\n this._viewport = { width: w, height: h, factor: width / w };\n }\n\n this._onResize(width, height);\n this.emit(DeviceInput.RESIZE, width, height);\n }\n }\n\n loadAsset(props: AssetProperties & TextureSettings) {\n return this._resourceManager.loadAsset(props);\n }\n\n addLoader(Loader: LoaderConstructor) {\n this._resourceManager.addLoader(Loader);\n }\n\n async load({\n url, ext, onProgress,\n castShadow = false,\n receiveShadow = false,\n ...props\n }: AssetProperties & __P<Object3D, typeof Object3D>) {\n const node = await this.loadAsset({ url, ext, onProgress });\n if (castShadow || receiveShadow) {\n node.userData.meshData.meshes.forEach(v => { v.castShadow = castShadow; v.receiveShadow = receiveShadow; });\n }\n this.addNode(node, props);\n return node;\n }\n\n tween(target: Object) {\n return this._tweenManager.tween(target);\n }\n\n timeline(target: Object) {\n return this._tweenManager.timeline(target);\n }\n\n killTweensOf(target: Object) {\n this._tweenManager.killTweensOf(target);\n }\n\n traverseMaterials(callback: (mat: Material) => void) {\n Viewer.getObjects(this._scene, (item: any) => {\n if (item.isMesh) {\n if (Array.isArray(item.material)) item.material.forEach(callback);\n else callback(item.material);\n }\n })\n }\n\n traversePlugins(callback: (plugin: Plugin) => void) {\n return this._pluginManager.traversePlugins(callback);\n }\n\n getPlugin<T extends Plugin>(plugin: new (...args: any[]) => T, autoAdd?: boolean): T {\n return this._pluginManager.getPlugin(plugin, autoAdd);\n }\n\n addPlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>, props?: __P<T, K>): T;\n addPlugin(plugin: any, props: any) {\n const ins = this._pluginManager.addPlugin(plugin);\n applyProps(ins, props);\n return ins;\n }\n\n removePlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): void;\n removePlugin(plugin: any) {\n this._pluginManager.removePlugin(plugin);\n }\n\n getComponent<T extends Component>(node: Object3D, constructor: { new(): T }, autoAdd?: boolean): T {\n return this._componentManager.getComponent(node, constructor, autoAdd);\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n return this._componentManager.traverseComponents(callback);\n }\n\n addComponent<T extends Component>(node: Object3D | Component, instance: T): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: { new(): T }): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: any): T {\n return this._componentManager.addComponent(node, constructor);\n }\n\n removeComponent(node: Object3D, component: Component) {\n return this._componentManager.removeComponent(node, component);\n }\n\n addNode<T, K extends __C<T>>(object: T | K & __C<T>, props?: __P<T, K>): T;\n addNode(object: any, {\n args,\n debug,\n scale,\n position,\n rotation,\n shadowArgs,\n makeDefault,\n component,\n parent = this._scene,\n ...props\n }: any = {}\n ) {\n let node = null;\n let ins = getClassInstance(object, args);\n if (ins.isObject3D) {\n node = ins;\n parent.add(ins);\n }\n else if (ins instanceof Component) {\n node = ins.node || new Object3D();\n parent.add(node);\n this._componentManager.addComponent(node, ins);\n }\n else {\n throw Error(\"Viewer.addNode: unsuport object\");\n }\n\n if (component) {\n const components = Array.isArray(component) ? component : [component];\n for (let ins of components) {\n this._componentManager.addComponent(node, ins);\n }\n }\n\n if (scale || position || rotation) {\n applyProps(node, { scale, position, rotation });\n }\n if (props) {\n applyProps(ins, props);\n }\n\n if (ins.isCamera && makeDefault) {\n ins.manual = ins.aspect !== this._camera.aspect;\n this._camera = ins;\n }\n if (shadowArgs) {\n if (node.isDirectionalLight) Viewer._setDirectLightShadow(node.shadow, shadowArgs);\n }\n\n return ins;\n }\n\n removeNode(node: Object3D) {\n this._componentManager.destroyComponents(node);\n node.removeFromParent();\n }\n\n activeNode(node: Object3D, active: boolean) {\n this._componentManager.activeComponents(node);\n node.visible = active;\n return node;\n }\n\n createRenderTarget(\n width: number,\n height: number,\n nearest: boolean = false,\n floatType: boolean | TextureDataType = false,\n msaa: number = 0,\n mipmap: boolean = false,\n ) {\n return new WebGLRenderTarget(width, height, {\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n magFilter: nearest ? NearestFilter : LinearFilter,\n minFilter: nearest ? NearestFilter : mipmap ? LinearMipMapLinearFilter : LinearFilter,\n type: typeof floatType === \"boolean\" ? floatType ? this.DATA_FLOAT_TYPE : UnsignedByteType : floatType,\n anisotropy: 0,\n colorSpace: LinearSRGBColorSpace,\n depthBuffer: false,\n stencilBuffer: false,\n samples: SystemInfo.isSupportMSAA ? msaa : 0,\n generateMipmaps: mipmap\n })\n }\n\n createCubeRenderTarget(\n size: number,\n nearest: boolean = false,\n floatType: boolean | TextureDataType = false,\n msaa: number = 0,\n mipmap: boolean = false,\n ) {\n return new WebGLCubeRenderTarget(size, {\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n magFilter: nearest ? NearestFilter : LinearFilter,\n minFilter: nearest ? NearestFilter : mipmap ? LinearMipMapLinearFilter : LinearFilter,\n type: typeof floatType === \"boolean\" ? floatType ? this.DATA_FLOAT_TYPE : UnsignedByteType : floatType,\n anisotropy: 0,\n colorSpace: LinearSRGBColorSpace,\n depthBuffer: false,\n stencilBuffer: false,\n samples: SystemInfo.isSupportMSAA ? msaa : 0,\n generateMipmaps: mipmap\n })\n }\n\n createDataTexture(\n data: BufferSource,\n width: number,\n height: number,\n floatType: boolean = false,\n nearest: boolean = true,\n ) {\n return new DataTexture(\n data, width, height,\n RGBAFormat,\n floatType ? FloatType : UnsignedByteType,\n UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping,\n nearest ? NearestFilter : LinearFilter,\n nearest ? NearestFilter : LinearFilter,\n 0\n );\n }\n\n /**\n * 传送门,得到一个全新的场景\n * @param callback 禁止使用异步函数,会导致状态错误\n * @returns \n */\n portal<T = any>(callback: () => T) {\n const scene = this._scene;\n const camera = this._camera;\n this._scene = new Scene();\n const result = callback();\n this._scene = scene;\n this._camera = camera;\n return result;\n }\n\n blit(\n renderTarget: WebGLRenderTarget,\n material: Material,\n lod?: number,\n face?: number\n ) {\n Viewer.Blit(this._renderer, renderTarget, material, lod, face);\n }\n\n compile(target?: Object3D | Scene | Material | Texture): void;\n compile(target?: Material[]): void;\n compile(target?: any) {\n if (Array.isArray(target)) {\n if (target.every(v => v.isMaterial)) {\n Viewer.compileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else {\n throw Error(\"Viewer.compile: unsuport material\");\n }\n }\n else if (typeof target === \"object\") {\n if (target.isMaterial) {\n Viewer.compileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else if (target.isObject3D) {\n if (target.meshData.materials) {\n Viewer.compileMaterial(this._renderer, this._scene, this._camera, Object.values(target.meshData.materials));\n }\n if (target.meshData.textures) {\n Viewer.compileTexture(this._renderer, Object.values(target.meshData.textures));\n }\n if (!target.meshData.meshes) {\n Viewer.compileObject3D(this._renderer, this._scene, this._camera, target);\n }\n }\n else if (target.isTexture) {\n Viewer.compileTexture(this._renderer, target);\n }\n }\n else {\n Viewer.compileObject3D(this._renderer, this._scene, this._camera, this._scene);\n }\n }\n}","import { CubeTexture, Mesh, PMREMGenerator, ShaderMaterial, Texture, WebGLRenderTarget, WebGLRenderer } from \"three\";\nimport { LOD_MIN, _flatCamera, _getClearMaterial, _getCubeMapMaterial, _setViewport } from \"./utils\";\nimport { Viewer } from \"../../Viewer\";\nimport { MergeInfo } from \"./MergeInfo\";\n\nexport class MergeRefectPass {\n private _pmremGenerator: any;\n private _envMapTarget: WebGLRenderTarget;\n private _reflectMap: Texture;\n\n envMapIntensity: number = 1;\n\n get envMapTarget() {\n return this._envMapTarget;\n }\n\n constructor({\n envMap,\n reflectMap,\n viewer,\n }: {\n envMap?: Texture;\n reflectMap: CubeTexture;\n viewer: Viewer;\n }) {\n this._reflectMap = reflectMap;\n this._pmremGenerator = this._getPMREMExtension(viewer.renderer);\n this._envMapTarget = this._pmremGenerator._fromTextureExtension(reflectMap, envMap);\n\n viewer.scene.environment = this._envMapTarget.texture;\n }\n\n dispose() {\n this._envMapTarget.dispose();\n this._pmremGenerator.dispose();\n }\n\n mergeReflect(info: MergeInfo) {\n this._pmremGenerator._clearTexture(this._envMapTarget, this.envMapIntensity);\n this._pmremGenerator._mergeReflect(this._envMapTarget, this._reflectMap);\n\n info.envMapTarget = this._envMapTarget;\n info.lodMax = this._pmremGenerator._lodMeshes.length - 1;\n }\n\n private _getPMREMExtension(renderer: WebGLRenderer) {\n const pmremGenerator = new PMREMGenerator(renderer) as any;\n pmremGenerator._fromTextureExtension = function (reflectMap: CubeTexture, envMap?: Texture) {\n const target = envMap ? this._fromTexture(envMap) : this._fromCubeTexture(reflectMap);\n this._cubeMapMaterial = _getCubeMapMaterial();\n this._copyTexMaterial = _getClearMaterial();\n this._copyMesh = new Mesh(Viewer.fullscreenMesh.geometry, this._copyTexMaterial);\n this._lodMeshes = this._lodPlanes.map(v => new Mesh(v, this._cubeMapMaterial));\n this._sourceInit = false;\n return target;\n }\n pmremGenerator._fromCubeTexture = function (texture: CubeTexture) {\n this._setSize(texture.image.length === 0 ? 16 : (texture.image[0].width || texture.image[0].image.width));\n return this._allocateTargets();\n }\n pmremGenerator._copyTexture = function (\n targetOut: WebGLRenderTarget,\n texture: Texture,\n intensity: number = 1,\n ) {\n const uniforms = this._copyTexMaterial.uniforms;\n uniforms.map.value = texture;\n uniforms.intensity.value = intensity;\n\n const renderer = this._renderer;\n renderer.autoClear = true;\n renderer.setRenderTarget(targetOut);\n renderer.render(this._copyMesh, _flatCamera);\n renderer.setRenderTarget(null);\n }\n pmremGenerator._clearTexture = function (\n targetOut: WebGLRenderTarget,\n intensity?: number,\n ) {\n const source = this._pingPongRenderTarget;\n if (this._sourceInit === false) {\n this._sourceInit = true;\n source.scissorTest = false;\n _setViewport(source, 0, 0, source.width, source.height);\n this._copyTexture(source, targetOut.texture);\n }\n else {\n this._copyTexture(targetOut, source.texture, intensity);\n }\n }\n pmremGenerator._mergeReflect = function (\n sourceTarget: WebGLRenderTarget,\n reflectMap: CubeTexture,\n clear: boolean = false\n ) {\n const renderer = this._renderer;\n const autoClear = renderer.autoClear;\n const cubeMapMaterial = this._cubeMapMaterial;\n\n const uniforms = this._cubeMapMaterial.uniforms;\n uniforms.envMap.value = reflectMap;\n\n renderer.autoClear = clear;\n\n for (let i = 0; i < this._lodMeshes.length - 1; i++) {\n uniforms.lod.value = i < 5 ? 0 : i;\n this._blit(sourceTarget, i, cubeMapMaterial);\n }\n\n sourceTarget.scissorTest = false;\n _setViewport(sourceTarget, 0, 0, sourceTarget.width, sourceTarget.height);\n\n renderer.autoClear = autoClear;\n }\n pmremGenerator._blit = function (\n targetOut: WebGLRenderTarget,\n lodOut: number,\n material: ShaderMaterial,\n ) {\n const renderer = this._renderer;\n const _lodMax = this._lodMax;\n const outputSize = this._sizeLods[lodOut];\n const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n const y = 4 * (this._cubeSize - outputSize);\n _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n const lodMesh = this._lodMeshes[lodOut];\n lodMesh.material = material;\n renderer.autoClear = false;\n renderer.setRenderTarget(targetOut);\n renderer.render(lodMesh, _flatCamera);\n }\n return pmremGenerator;\n }\n}\n","import { MathUtils } from \"three\";\n\nexport function mipGaussianBlendWeight(sigma: number, lod: number) {\n let sigma2 = sigma * sigma;\n let c = 2.0 * Math.PI * sigma2;\n let numerator = Math.pow(16, lod) * 1.386294361; //log(4)\n let denorminator = c * (Math.pow(4, lod) + c);\n return MathUtils.clamp(numerator / denorminator, 0, 1);\n}\n","import { CubeTexture, MathUtils, Mesh, PMREMGenerator, ShaderMaterial, Texture, WebGLRenderTarget, WebGLRenderer } from \"three\";\nimport { mipGaussianBlendWeight } from \"../mipGaussianBlendWeight\";\nimport { LOD_MIN, _flatCamera, _getMipBlurMaterial, _getMipCopyMaterial, _setViewport } from \"./utils\";\nimport { Viewer } from \"../../Viewer\";\nimport { MergeInfo } from \"./MergeInfo\";\n\nconst MAX_LOD = 10;\n\nexport class MergeMipBlurPass {\n private _pmremGenerator: any;\n private _sigma: number = 2;\n private _blurMinLod: number = 0;\n private _blurMaxLod: number = MAX_LOD;\n private _blurIntensity: number = -1;\n private _envMapTarget: WebGLRenderTarget;\n private _reflectMap: CubeTexture;\n\n exposure: number = 1;\n\n get blurIntensity() {\n return this._blurIntensity;\n }\n set blurIntensity(v: number) {\n if (this._blurIntensity !== v) {\n this._blurIntensity = v;\n this._sigma = MathUtils.lerp(1, 40, this._blurIntensity / 10);\n for (let lod = 0; lod <= MAX_LOD; lod++) {\n let w = mipGaussianBlendWeight(this._sigma, lod);\n if (w < 0.002) {\n this._blurMinLod = lod;\n }\n if (w >= 1) {\n this._blurMaxLod = lod;\n break;\n }\n }\n }\n }\n\n get envMapTarget() {\n return this._envMapTarget;\n }\n\n constructor({\n viewer,\n reflectMap,\n }: {\n viewer: Viewer;\n reflectMap: CubeTexture;\n }) {\n this._reflectMap = reflectMap;\n this._pmremGenerator = this._getPMREMExtension(viewer.renderer);\n this._envMapTarget = this._pmremGenerator._fromTextureExtension(reflectMap);\n }\n\n dispose() {\n this._envMapTarget.dispose();\n this._pmremGenerator.dispose();\n }\n\n mergeMipBlur(info: MergeInfo) {\n const targetIn = this._pmremGenerator._applyMipBlur(\n this._envMapTarget,\n this._reflectMap,\n this._blurMinLod,\n this._blurMaxLod,\n this._sigma,\n this.exposure,\n );\n this._pmremGenerator._mipCopy(info.envMapTarget, targetIn, info.lodMax, this._blurMinLod);\n }\n\n private _getPMREMExtension(renderer: WebGLRenderer) {\n const pmremGenerator = new PMREMGenerator(renderer) as any;\n pmremGenerator._fromTextureExtension = function (texture: Texture) {\n this._setSize(texture.image.length === 0 ? 16 : (texture.image[0].width || texture.image[0].image.width));\n const target = this._allocateTargets();\n this._mipBlurMaterial = _getMipBlurMaterial(this._lodMax, target.width, target.height);\n this._mipCopyMaterial = _getMipCopyMaterial(this._lodMax, target.width, target.height);\n this._lodMeshes = this._lodPlanes.map(v => new Mesh(v, this._mipBlurMaterial));\n return target;\n }\n pmremGenerator._applyMipBlur = function (\n sourceTarget: WebGLRenderTarget,\n texture: CubeTexture,\n blurMinLod: number,\n blurMaxLod: number,\n sigma: number,\n exposure: number\n ) {\n const pingPongRenderTarget = this._pingPongRenderTarget;\n const uniforms = this._mipBlurMaterial.uniforms;\n uniforms.envMap.value = texture;\n uniforms.exposure.value = exposure;\n\n let lod = blurMaxLod;\n let targetOut = sourceTarget;\n let targetIn = pingPongRenderTarget;\n\n this._mipBlur(sourceTarget, pingPongRenderTarget, lod, 1);\n for (let i = 0; lod-- > blurMinLod; i++) {\n targetOut = (i & 1) === 0 ? pingPongRenderTarget : sourceTarget;\n targetIn = (i & 1) === 1 ? pingPongRenderTarget : sourceTarget;\n this._mipBlur(targetOut, targetIn, lod, mipGaussianBlendWeight(sigma, lod));\n }\n\n sourceTarget.scissorTest = false;\n _setViewport(sourceTarget, 0, 0, sourceTarget.width, sourceTarget.height);\n\n return targetOut;\n }\n pmremGenerator._mipBlur = function (\n targetOut: WebGLRenderTarget,\n targetIn: WebGLRenderTarget,\n lodOut: number,\n weight: number,\n ) {\n const uniforms = this._mipBlurMaterial.uniforms;\n uniforms.cubeUVMap.value = targetIn.texture;\n uniforms.weight.value = weight;\n uniforms.lod.value = lodOut;\n\n this._blit(targetOut, lodOut, this._mipBlurMaterial);\n }\n pmremGenerator._mipCopy = function (\n targetOut: WebGLRenderTarget,\n targetIn: WebGLRenderTarget,\n lodOut: number,\n lodIn: number = lodOut,\n ) {\n const uniforms = this._mipCopyMaterial.uniforms;\n uniforms.cubeUVMap.value = targetIn.texture;\n uniforms.lod.value = lodIn;\n\n this._blit(targetOut, lodOut, this._mipCopyMaterial);\n\n targetOut.scissorTest = false;\n _setViewport(targetOut, 0, 0, targetOut.width, targetOut.height);\n }\n pmremGenerator._blit = function (\n targetOut: WebGLRenderTarget,\n lodOut: number,\n material: ShaderMaterial,\n ) {\n const renderer = this._renderer;\n const _lodMax = this._lodMax;\n const outputSize = this._sizeLods[lodOut];\n const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n const y = 4 * (this._cubeSize - outputSize);\n _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n const lodMesh = this._lodMeshes[lodOut];\n lodMesh.material = material;\n renderer.autoClear = false;\n renderer.setRenderTarget(targetOut);\n renderer.render(lodMesh, _flatCamera);\n }\n\n return pmremGenerator;\n }\n}","import {\n CubeCamera,\n HalfFloatType,\n MeshBasicMaterial,\n Object3D,\n Scene,\n Texture,\n TextureDataType,\n Vector3,\n} from \"three\";\n\nimport { Plugin } from \"../Plugin\";\nimport { MergeRefectPass } from \"../passes/cubeuv/MergeReflectPass\";\nimport { MergeMipBlurPass } from \"../passes/cubeuv/MergeBlurPass\";\nimport { property } from \"../PropertyManager\";\nimport { MergeInfo } from \"../passes/cubeuv/MergeInfo\";\nimport { Plane } from \"../primitive\";\nimport { DebugPlugin } from \"./DebugPlugin\";\n\nexport class EnvironmentPlugin extends Plugin {\n\n private _scene: Scene | Object3D;\n private _cubeCamera: CubeCamera;\n private _reflectPass: MergeRefectPass;\n private _mipBlurPass: MergeMipBlurPass;\n private _mergeInfo: MergeInfo = { envMapTarget: null, lodMax: 0 }\n private _debug: boolean = false;\n private _debugNode: Object3D = null;\n\n @property\n get debug() {\n return this._debug;\n }\n set debug(v: boolean) {\n if (this._debug !== v) {\n this._debug = v;\n if (v) {\n if (this._debugNode === null) {\n const viewer = this.viewer;\n const debugScene = DebugPlugin.Instance(viewer).scene;\n this._debugNode = viewer.addNode(Object3D, { parent: debugScene });\n viewer.addNode(Plane, {\n parent: this._debugNode,\n material: new MeshBasicMaterial({ map: this._reflectPass.envMapTarget.texture }),\n position: new Vector3(1.1, 3, 0)\n })\n viewer.addNode(Plane, {\n parent: this._debugNode,\n material: new MeshBasicMaterial({ map: this._mipBlurPass.envMapTarget.texture }),\n position: new Vector3(0, 3, 0)\n })\n }\n }\n if (this._debugNode) {\n this._debugNode.visible = v;\n }\n }\n }\n @property({ min: 0, max: 1, step: 0.01 })\n envMapIntensity: number = 1;\n @property({ min: 0, max: 10, step: 0.01 })\n reflectExposure: number = 1;\n @property({ min: 0, max: 10, step: 0.1 })\n reflectBlurIntensity: number = 5;\n\n constructor({\n envMap,\n scene,\n near,\n far,\n layer = 0,\n resolution = 256,\n floatType = HalfFloatType,\n position = new Vector3(0, 1, 0),\n }: {\n envMap?: Texture;\n scene?: Scene | Object3D;\n resolution?: number;\n layer?: number;\n near?: number;\n far?: number;\n floatType?: boolean | TextureDataType;\n position?: Vector3;\n } = {}) {\n super();\n this.install = () => {\n const viewer = this.viewer;\n this._scene = scene || viewer.scene;\n const cubeRenderTarget = viewer.createCubeRenderTarget(resolution, false, floatType, 0, true);\n this._cubeCamera = new CubeCamera(near || viewer.camera.near, far || viewer.camera.far, cubeRenderTarget);\n this._cubeCamera.position.copy(position);\n this._cubeCamera.layers.set(layer);\n const reflectMap = cubeRenderTarget.texture;\n this._reflectPass = new MergeRefectPass({ viewer, reflectMap, envMap });\n this._mipBlurPass = new MergeMipBlurPass({ viewer, reflectMap });\n }\n this.uninstall = () => {\n this._reflectPass.dispose();\n this._mipBlurPass.dispose();\n }\n }\n\n onRender() {\n const { renderer } = this.viewer;\n const autoClear = renderer.autoClear;\n const oldTarget = renderer.getRenderTarget();\n const oldActiveCubeFace = renderer.getActiveCubeFace();\n const oldActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n this._reflectPass.envMapIntensity = this.envMapIntensity;\n this._mipBlurPass.exposure = this.reflectExposure;\n this._mipBlurPass.blurIntensity = this.reflectBlurIntensity;\n\n this._cubeCamera.update(renderer, this._scene);\n this._reflectPass.mergeReflect(this._mergeInfo);\n this._mipBlurPass.mergeMipBlur(this._mergeInfo);\n\n renderer.autoClear = autoClear;\n renderer.setRenderTarget(oldTarget, oldActiveCubeFace, oldActiveMipmapLevel);\n }\n}","import { Box3, Box3Helper, ShaderChunk, ShaderLib, Vector3, Vector4, WebGLProgramParametersWithUniforms } from \"three\";\nimport { Plugin } from \"../Plugin\";\nimport { property } from \"../PropertyManager\";\nimport { DebugPlugin } from \"./DebugPlugin\";\n\nexport class BoxProjectionPlugin extends Plugin {\n\n private _center: Vector4 = new Vector4(0, 0.5, 0, 1);\n private _boxMin: Vector3 = new Vector3(0, 0, 0);\n private _boxMax: Vector3 = new Vector3(1, 1, 1);\n private _helper: Box3Helper = null;\n private _debug: boolean = false;\n\n @property\n get debug() {\n return this._debug;\n }\n set debug(v: boolean) {\n if (this._debug !== v) {\n this._debug = v;\n if (v) {\n if (this._helper === null) {\n this._helper = new Box3Helper(new Box3(this._boxMin, this._boxMax));\n DebugPlugin.Instance(this.viewer).add(this._helper);\n }\n }\n if (this._helper) {\n this._helper.visible = v;\n }\n }\n }\n\n @property\n get center() {\n return this._center;\n }\n set center(v: Vector4) {\n this._center.copy(v);\n }\n\n @property\n get boxMin() {\n return this._boxMin;\n }\n set boxMin(v: Vector3) {\n this._boxMin.copy(v);\n }\n\n @property\n get boxMax() {\n return this._boxMax;\n }\n set boxMax(v: Vector3) {\n this._boxMax.copy(v);\n }\n\n constructor() {\n super();\n this.install = () => {\n ShaderLib.physical.vertexShader = ShaderLib.physical.vertexShader.replace(/#ifdef USE_TRANSMISSION/g, `\n #if defined(USE_TRANSMISSION) || defined(USE_BOX_PROJECTION)\n `);\n ShaderLib.physical.fragmentShader = ShaderLib.physical.fragmentShader.replace(\"varying vec3 vViewPosition;\", `\n varying vec3 vViewPosition;\n #if defined(USE_BOX_PROJECTION)\n varying vec3 vWorldPosition;\n #endif\n `);\n ShaderChunk.worldpos_vertex = ShaderChunk.worldpos_vertex.replace(\"#if defined( USE_ENVMAP )\", \"#if defined( USE_ENVMAP ) || defined( USE_BOX_PROJECTION )\");\n ShaderChunk.envmap_physical_pars_fragment = ShaderChunk.envmap_physical_pars_fragment.replace(\"#ifdef USE_ENVMAP\", `\n #ifdef USE_ENVMAP\n\n #if defined(USE_BOX_PROJECTION)\n uniform vec4 probePos;\n uniform vec3 probeBoxMin;\n uniform vec3 probeBoxMax;\n \n vec3 boxProjection(vec3 nrdir, vec3 worldPos, vec3 probePos, vec3 boxMin, vec3 boxMax) {\n vec3 tbot = boxMin - worldPos;\n vec3 ttop = boxMax - worldPos;\n vec3 tmax = mix(tbot, ttop, step(vec3(0), nrdir));\n tmax /= nrdir;\n float t = min(min(tmax.x, tmax.y), tmax.z);\n return worldPos + nrdir * t - probePos;\n }\n #endif\n\n `).replace(\"reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\", `\n reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n \n #if defined(USE_BOX_PROJECTION)\n if (probePos.w > 0.001) {\n reflectVec = boxProjection(reflectVec, vWorldPosition, probePos.xyz, probeBoxMin.xyz, probeBoxMax.xyz);\n }\n #endif\n\n `).replace(\"vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\", `\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\n #if defined(USE_BOX_PROJECTION)\n if (probePos.w > 0.001) {\n worldNormal = boxProjection(worldNormal, vWorldPosition, probePos.xyz, probeBoxMin.xyz, probeBoxMax.xyz);\n }\n #endif\n\n `);\n }\n this.uninstall = () => {\n DebugPlugin.Instance(this.viewer).remove(this._helper);\n }\n }\n\n onUpdate(dt: number): void {\n if (this._debug) {\n this._helper.updateMatrixWorld();\n }\n }\n\n useBoxProjection(shader: WebGLProgramParametersWithUniforms) {\n shader.defines.USE_BOX_PROJECTION = true;\n shader.uniforms.probePos = { value: this._center };\n shader.uniforms.probeBoxMin = { value: this._boxMin };\n shader.uniforms.probeBoxMax = { value: this._boxMax };\n }\n}"],"names":["EventEmitter","_removeEvent","list","index","name","splice","length","_events","clear","has","on","callback","target","once","findIndex","v","console","warn","push","off","a","onof","container","_listeners","undefined","offof","targetOff","i","emit","args","apply","noop","message","optionalParams","debug","log","bind","info","error","Logger","isEnabled","enable","disable","mixin","derivedCtor","baseCtors","forEach","baseCtor","Object","getOwnPropertyNames","prototype","defineProperty","getOwnPropertyDescriptor","create","getClassInstance","constructor","Easing","Linear","None","amount","Quadratic","In","Out","InOut","Cubic","Quartic","Quintic","Sinusoidal","Math","cos","PI","sin","Exponential","pow","Circular","sqrt","Elastic","Back","s","Bounce","now","self","process","hrtime","time","performance","Date","getTime","now$1","Group","_tweens","_tweensAddedDuringUpdate","getAll","_this","keys","map","tweenId","removeAll","add","tween","getId","remove","update","preserve","tweenIds","autoStart","Interpolation","k","m","f","floor","fn","Utils","Bezier","b","n","pw","bn","Bernstein","CatmullRom","p0","p1","t","fc","Factorial","p2","p3","v0","v1","t2","t3","Sequence","nextId","_nextId","mainGroup","Tween","_object","_group","_isPaused","_pauseStart","_valuesStart","_valuesEnd","_valuesStartRepeat","_duration","_initialRepeat","_repeat","_yoyo","_isPlaying","_reversed","_delayTime","_startTime","_easingFunction","_interpolationFunction","_chainedTweens","_onStartCallbackFired","_id","_isChainStopped","_goToEnd","_headTween","_tailTween","_headStart","isPlaying","isPaused","duration","d","start","property","_swapEndStartRepeatValues","parseFloat","_setupProperties","startValue","startValueIsArray","Array","isArray","propType","isInterpolationList","endValues","_handleRelativeValue","concat","prop","slice","reverse","stop","stopChainedTweens","_onStopCallback","end","Infinity","pause","resume","numChainedTweens","group","call","_onFinishCallback","from","properties","to","_chainedTween","delay","union","headTween","tailTween","chain","repeat","times","repeatDelay","_repeatDelayTime","yoyo","easing","easingFunction","interpolation","interpolationFunction","tweens","_i","arguments","unchain","onStart","_onStartCallback","onUpdate","_onUpdateCallback","onRepeat","_onRepeatCallback","onComplete","_onCompleteCallback","onStop","elapsed","endTime","value","_updateProperties","isFinite","startIsArray","endIsArray","des","set","charAt","tmp","endValue","TweenChain","_tween","_chainTween","props","object","TweenManager","destroy","timeline","killTweensOf","aLoader","_setMeshData","node","_texKeys","meshes","textures","materials","queue","shift","isMesh","mat","material","tex","uuid","children","userData","meshData","manager","aEXRLoader","load","url","onLoad","onProgress","onError","texSettings","loader","EXRLoader","loadingManager","setPath","path","setResourcePath","resourcePath","assign","extension","aFBXLoader","loadCallback","FBXLoader","aGLTFLoader","gltf","scene","animations","gltfLoader","GLTFLoader","dracoLoader","DRACOLoader","setDecoderPath","dracoPath","setDRACOLoader","setMeshoptDecoder","MeshoptDecoder","aHDRLoader","mapping","EquirectangularReflectionMapping","RGBELoader","aJSONLoader","FileLoader","file","JSON","parse","aTextureLoader","colorSpace","SRGBColorSpace","TextureLoader","ClassProperties","propertyKey","options","_properties","applyProperties","clsName","PropertyManager","_hasProperties","_propertyMap","_getProperties","autoAdd","get","_getMergedProperties","values","getPrototypeOf","_getClassProperties","_classMap","_applyClassProperties","cls","Map","normalized","CinestationBlendStyle","QuadraticIn","QuadraticOut","QuadraticInOut","CinestationBlendDefinition","style","ObjectInstance","instanceId","_instanceCount","MathUtils","generateUUID","type","Component","enabled","_enabled","componentScheduler","enableComponent","_onPreDestroy","unscheduleAll","removeComponent","onDestroy","flags","OnLoadCalled","schedule","interval","scheduler","unshedule","Destroyed","destroyImmediate","clamp","lerp","CinestationBrain","vcam","_vcam","vcams","_vcams","lastUpdate","dt","getActiveCamera","_lerpTime","brainBlend","_lerpToMainCamera","activeCamera","_vcamSolo","addCamera","indexOf","removeCamera","filter","sort","priority","fov","near","far","finalPosition","finalRotation","isLensChanged","isTransformChanged","position","equals","quaternion","isChanged","slerp","updateProjectionMatrix","_isChanged","onChanged","VirtualCamera","_finalPosition","copy","correctPosition","_finalRotation","multiply","correctRotation","isCamera","camera","viewer","brain","getComponent","lookAt","Vector3","Quaternion","follow","lookaheadPosition","trackedObjectOffset","dir","PressState","NONE","SELECTED","IN","Pressability","connect","connector","_connectors","find","state","disconnect","pointerDown","pointer","_raycaster","setFromCamera","conn","intersects","intersectObject","pointerUp","pointerMove","Raycaster","DeviceInput","pointerButton","_pointerButton","_pointer","pointerPosition","_pointerPosition","mouseWheel","_mouseWheel","touchCount","_touchCount","touches","_touches","_keys","addEventListeners","domElement","canvas","touchAction","_addEventListener","e","preventDefault","_onPointerDown","passive","_onPointerUp","_onPointerMove","_onMouseWheel","_onTouchStart","_onTouchEnd","_onTouchMove","window","_onKeyDown","_onKeyPress","_onKeyUp","removeAllListeners","removeEventListener","event","CLICK","POINTER_DOWN","POINTER_UP","POINTER_OVER","POINTER_OUT","_pressability","addEventListener","_remapPointer","width","rootRotated","button","buttons","clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","movementX","movementY","_remapTouch","identifier","_computePointer","x","y","height","POINTER_MOVE","deltaY","wheelDelta","MOUSE_WHEEL","TOUCH_START","TOUCH_END","touchesTo","id","Vector2","touch","TOUCH_MOVE","key","KEYDOWN","KEYPRESS","KEYUP","RESIZE","isSSR","DetectUA","match","pattern","userAgent","isMobile","isTablet","test","iOSDevice","isAndroidDevice","isDesktop","isMacOS","version","replace","split","versionNumber","isWindows","isiOS","isAndroid","browser","versionIdentifier","forceUserAgent","navigator","toLowerCase","platform","maxTouchPoints","MSStream","detectUA","vendor","browserName","audioElem","document","createElement","SystemInfo","device","isIOS","isLinux","ua","isEdge","isIE","isFirefox","isChrome","isOpera","isSafari","isSupportMSAA","isSupportOgg","canPlayType","isRetina","devicePixelRatio","cpuCoreCount","hardwareConcurrency","baseUrl","location","origin","isIFrame","top","min","max","exp","kNegligibleResidual","kLogNegligibleResidual","exponentialDamp","current","dampTime","deltaTime","quarticDamp","tt","smoothDamp","smoothTime","maxSpeed","_velocity","num","num2","num3","num4","num5","num6","num7","num8","Quat_exponentialDamp","out","Quat_quarticDamp","Quat_smoothDamp","Vec3_smoothDamp","Vector3_UNIT_X","freeze","Vector3_UNIT_Y","Vector3_UNIT_Z","Vector3_RIGHT","Vector3_UP","Vector3_ZERO","Vector3_ONE","Vector3_NEG_ONE","abs","acos","EPSILON","__delta","VInterpTo","speed","dist","sub","lengthSq","multiplyScalar","VInterpConstantTo","delta","deltaM","maxStep","deltaN","Quat_Equals","epsilon","z","w","Quat_AngularDistance","innerProd","QInterpTo","QInterpConstantTo","deltaSpeed","angularDist","FInterpTo","FInterpConstantTo","step","catmullRom","CurvePoint","p","mode","AnimationCurve","_getInterpolant","samples","_samples","_interpolant","LinearInterpolant","Float32Array","createCurvePoint","resample","interpolant","parameterPositions","sampleValues","point","getPoint","evaluate","needsUpdate","points","intPoint","weight","isAnimationCurve","Perlin","Noise","fade","_Fade","grad","_Grad","_Lerp","_Permutation","xi","yi","zi","X","Y","Z","u","A","AA","AB","B","BA","BB","Fbm","octave","noise","hash","h","degToRad","tan","VCamFreeLookMode","FREE","TRANSLATE","FreelookVirtualCamera","onEnable","reset","onDisable","_button","_touchID","_rotateDelta","_panDelta","_distanceDelta","gotoPOI","_tweenPOI","_preLoc0","__loc0","_calculateRotateDelta","__moveDelta","_calculatePanDelta","__worldPos","distanceTo","distNew","_calculateDistanceScale","rotateTouchID","_preLoc1","__loc1","__preCenter","__center","scale","forbidZ","loc0","loc1","rotateSpeed","forbidX","forbidY","panSpeed","forbidPanX","forbidPanY","__posDelta","__posOffset","__quat","__spherical","__xAxis","__yAxis","setFromUnitVectors","up","Object3D","DEFAULT_UP","applyQuaternion","setFromVector3","dampFactor","rotateSmoothing","theta","thetaMin","thetaMax","phi","phiMin","phiMax","radius","distanceMin","distanceMax","setFromSpherical","invert","dist0","pos","normalize","setFromMatrixColumn","matrix","forbitPanOffsetY","panSmoothing","panScale","Spherical","Box","Mesh","BoxGeometry","Sphere","SphereGeometry","Plane","PlaneGeometry","ReflectorShader","uniforms","color","tDiffuse","textureMatrix","vertexShader","fragmentShader","Reflector","geometry","isReflector","Color","textureWidth","textureHeight","clipBias","multisample","defaultNormal","normal","reflectorPlane","reflectorWorldPosition","cameraWorldPosition","rotationMatrix","Matrix4","lookAtPosition","clipPlane","Vector4","view","q","virtualCamera","PerspectiveCamera","layers","layer","renderTarget","WebGLRenderTarget","HalfFloatType","shader","ShaderMaterial","UniformsUtils","clone","texture","scope","onBeforeRender","renderer","setFromMatrixPosition","matrixWorld","extractRotation","applyMatrix4","subVectors","dot","reflect","negate","updateMatrixWorld","projectionMatrix","matrixWorldInverse","setFromNormalAndCoplanarPoint","constant","sign","elements","visible","currentRenderTarget","getRenderTarget","currentActiveCubeFace","getActiveCubeFace","currentActiveMipmapLevel","getActiveMipmapLevel","currentXrEnabled","xr","currentShadowAutoUpdate","shadowMap","autoUpdate","setRenderTarget","buffers","depth","setMask","autoClear","render","viewport","getTextureMatrix","dispose","vert_fullscreen","frag_BoxfilterBlur","frag_panoramaToCubeMap","frag_cubeMapToPanorama","getShaderMaterial","onInit","parameters","entries","reduce","acc","uniform","vert_Reflector","frag_Reflector","ReflectorMaterial","metalness","roughness","roughnessMap","normalMap","aoMap","lightMap","aoMapIntensity","lightMapIntensity","Plugin","DebugPlugin","Instance","getPlugin","onRender","Scene","LOD_MIN","_flatCamera","OrthographicCamera","_setViewport","scissor","_getCommonVertexShader","_getClearMaterial","intensity","blending","NoBlending","depthWrite","depthTest","_getCubeMapMaterial","envMap","lod","AdditiveBlending","_getMipCopyMaterial","lodMax","defines","CUBEUV_TEXEL_WIDTH","CUBEUV_TEXEL_HEIGHT","CUBEUV_MAX_MIP","cubeUVMap","_getMipBlurMaterial","exposure","Caller","_pause","_target","_callback","lived","_repeatForever","_elapsed","_interval","trigger","_lastTime","Callers","callers","_callers","Scheduler","_callersArray","callersArray","j","Invoker","_targets","invoke","InvokerOneCall","ComponentScheduler","startInvoker","updateInvoker","lastUpdateInvoker","comp","OnEnableCalled","IsStartCalled","DependentMode","ComponentManager","_viewer","_scheduler","_componentScheduler","_componentsMap","components","destroyComponents","delete","child","activeComponents","_activeComponent","addComponent","root","func","component","_findComponent","_addDendencies","getComponentsInChidren","traverseComponents","dependentInfo","_dependenciesMap","dep","active","TaskManager","percent","_percent","_tasks","_taskIndex","task","excute","parepareWebGL","isSupportedBrowser","HTMLCanvasElement","webglOpts","alpha","stencil","antialias","premultipliedAlpha","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","WebGL2RenderingContext","gl","getContext","RENDER_TARGET_FLOAT_TYPE","DATA_FLOAT_TYPE","FloatType","err","WebGLRenderingContext","getExtension","getParameter","MAX_VERTEX_TEXTURE_IMAGE_UNITS","_floatPacking","UnsignedByteType","Orientation","ResourceManager","str","pop","dirname","lastIndexOf","substring","basename","ext","_parseURL","uri","File","mainFile","_getTextureKey","settings","join","_splitTextureSettings","_texSettingKeys","_caches","_loaders","addLoader","Loader","loadAsset","Promise","resolve","reject","result","sel","applyProps","writable","PluginManager","_plugins","plugin","uninstall","_pluginsMap","traversePlugins","ins","addPlugin","install","removePlugin","Viewer","_setDirectLightShadow","shadow","shadowCamera","_shadowCameraKeys","bias","mapSize","compileMaterial","fullscreenMesh","compile","compileObject3D","compileTexture","initTexture","Blit","face","RT","fullscreenCamera","createFullscreenTriangle","BufferGeometry","setAttribute","Float32BufferAttribute","findChild","parts","part","getChildByName","getObject","getObjects","objects","_root","_time","_scene","_camera","_renderer","_canvas","_gl","_RENDER_TARGET_FLOAT_TYPE","_DATA_FLOAT_TYPE","dpr","_dpr","_width","_height","_viewport","_rootRotated","_taskManager","_resourceManager","_componentManager","_pluginManager","_tweenManager","_input","_addDefaultLoaders","_frame","_targetFrameRate","loop","_autoResize","resize","_onRender","_onResize","setSize","_running","frameCallback","requestAnimationFrame","innerWidth","innerHeight","_orientation","LANDSCAPE","PORTRAIT","transform","transformOrigin","margin","isOrthographicCamera","zoom","factor","isPerspectiveCamera","manual","aspect","distance","getWorldPosition","__target","castShadow","receiveShadow","addNode","traverseMaterials","item","rotation","shadowArgs","makeDefault","parent","isObject3D","Error","isDirectionalLight","removeNode","removeFromParent","activeNode","createRenderTarget","nearest","floatType","msaa","mipmap","wrapS","ClampToEdgeWrapping","wrapT","magFilter","NearestFilter","LinearFilter","minFilter","LinearMipMapLinearFilter","anisotropy","LinearSRGBColorSpace","depthBuffer","stencilBuffer","generateMipmaps","createCubeRenderTarget","size","WebGLCubeRenderTarget","createDataTexture","data","DataTexture","RGBAFormat","UVMapping","portal","blit","every","isMaterial","isTexture","autoResize","shadows","targetFrameRate","toneMapping","LinearToneMapping","toneMappingExposure","maxDPR","tasker","AUTO","el","getElementById","webgl","WebGLRenderer","context","setPixelRatio","outputColorSpace","PCFSoftShadowMap","autoReset","LoadingManager","MergeRefectPass","envMapTarget","_envMapTarget","_pmremGenerator","mergeReflect","_clearTexture","envMapIntensity","_mergeReflect","_reflectMap","_lodMeshes","_getPMREMExtension","pmremGenerator","PMREMGenerator","_fromTextureExtension","reflectMap","_fromTexture","_fromCubeTexture","_cubeMapMaterial","_copyTexMaterial","_copyMesh","_lodPlanes","_sourceInit","_setSize","image","_allocateTargets","_copyTexture","targetOut","source","_pingPongRenderTarget","scissorTest","sourceTarget","cubeMapMaterial","_blit","lodOut","_lodMax","outputSize","_sizeLods","_cubeSize","lodMesh","environment","mipGaussianBlendWeight","sigma","sigma2","c","numerator","denorminator","MAX_LOD","MergeMipBlurPass","blurIntensity","_blurIntensity","_sigma","_blurMinLod","_blurMaxLod","mergeMipBlur","targetIn","_applyMipBlur","_mipCopy","_mipBlurMaterial","_mipCopyMaterial","blurMinLod","blurMaxLod","pingPongRenderTarget","_mipBlur","lodIn","EnvironmentPlugin","_debug","_debugNode","debugScene","MeshBasicMaterial","_reflectPass","_mipBlurPass","oldTarget","oldActiveCubeFace","oldActiveMipmapLevel","reflectExposure","reflectBlurIntensity","_cubeCamera","_mergeInfo","resolution","cubeRenderTarget","CubeCamera","BoxProjectionPlugin","_helper","Box3Helper","Box3","_boxMin","_boxMax","center","_center","boxMin","boxMax","useBoxProjection","USE_BOX_PROJECTION","probePos","probeBoxMin","probeBoxMax","ShaderLib","physical","ShaderChunk","worldpos_vertex","envmap_physical_pars_fragment"],"mappings":"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","x_google_ignoreList":[14]}
1
+ {"version":3,"file":"module.js","sources":["../src/base/EventEmitter.ts","../src/base/Logger.ts","../src/base/mixin.ts","../src/base/getClassInstance.ts","../src/tween/tween.js","../src/tween/TweenChain.ts","../src/tween/TweenManager.ts","../src/asset/aLoader.ts","../src/loaders/aEXRLoader.ts","../src/loaders/aFBXLoader.ts","../src/loaders/aGLTFLoader.ts","../src/loaders/aHDRLoader.ts","../src/loaders/aJSONLoader.ts","../src/loaders/aTextureLoader.ts","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../src/PropertyManager.ts","../src/cinestation/CinestationBlendDefinition.ts","../src/ObjectInstance.ts","../src/Component.ts","../src/cinestation/CinestationBrain.ts","../src/cinestation/VirtualCamera.ts","../src/Pressability.ts","../src/DeviceInput.ts","../src/DetectUA.ts","../src/SystemInfo.ts","../src/math/Damp.ts","../src/math/Constant.ts","../src/math/Interpolation.ts","../src/math/AnimationCurve.ts","../src/math/Perlin.ts","../src/cinestation/FreelookVirtualCamera.ts","../src/primitive/Box.ts","../src/primitive/Sphere.ts","../src/primitive/Plane.ts","../src/objects/Reflector.ts","../src/materials/glsl/fullscreen.glsl.ts","../src/materials/glsl/boxfilterblur.glsl.ts","../src/materials/glsl/panorama.glsl.ts","../src/materials/getShaderMaterial.ts","../src/materials/ReflectorMaterial.ts","../src/Plugin.ts","../src/plugins/DebugPlugin.ts","../src/passes/cubeuv/utils.ts","../src/Scheduler.ts","../src/ComponentScheduler.ts","../src/ComponentManager.ts","../src/TaskManager.ts","../src/WebGL.ts","../src/enums/Orientation.ts","../src/asset/ResourceManager.ts","../src/Utils.ts","../src/PluginManager.ts","../src/Viewer.ts","../src/passes/cubeuv/MergeReflectPass.ts","../src/passes/mipGaussianBlendWeight.ts","../src/passes/cubeuv/MergeBlurPass.ts","../src/plugins/EnvironmentPlugin.ts","../src/plugins/BoxProjectionPlugin.ts"],"sourcesContent":["interface EventHandler {\n name: string;\n callback: (...args: any[]) => any;\n target?: Object;\n once?: boolean;\n}\n\ninterface Listener {\n name: string, callback: (...args: any[]) => any;\n}\n\nexport class EventEmitter {\n\n protected _events: { [k: string]: EventHandler[] } = {};\n protected _removeEvent(list: EventHandler[], index: number, name: string) {\n if (index > -1) {\n list.splice(index, 1);\n if (list.length === 0) {\n delete this._events[name];\n }\n }\n return this;\n }\n\n clear() {\n this._events = {};\n return this;\n }\n\n has(name: string) {\n return !!this._events[name];\n }\n\n on(name: string, callback: (...args: any[]) => any, target?: Object, once: boolean = false) {\n let list = this._events[name];\n if (list == null) {\n list = this._events[name] = [];\n }\n\n let index = list.findIndex(v => v.callback === callback && (!target || v.target === target));\n if (index > -1) {\n console.warn(`event: ${name} duplicate registered`);\n return;\n }\n\n list.push({ name, callback, target, once });\n return this;\n }\n\n off(name: string, callback: (...args: any[]) => any, target?: Object) {\n let list = this._events[name];\n if (list) {\n let index = list.findIndex(a => (a.callback === callback) && (!target || a.target === target));\n this._removeEvent(list, index, name);\n }\n return this;\n }\n\n onof(name: string, callback: (...args: any[]) => any, container: Object & { _listeners?: Listener[] }) {\n if (container._listeners === undefined) {\n container._listeners = [];\n }\n container._listeners.push({ name, callback });\n this.on(name, callback);\n return this;\n }\n\n offof(container: Object & { _listeners?: Listener[] }) {\n for (let v of container._listeners) {\n this.off(v.name, v.callback);\n }\n return this;\n }\n\n targetOff(target: Object) {\n for (let name in this._events) {\n let list = this._events[name];\n for (let i = list.length; i--;) {\n let v = list[i];\n if (v.target === target) {\n this._removeEvent(list, i, name);\n }\n }\n }\n return this;\n }\n\n emit(name: string, ...args: any[]) {\n let list = this._events[name];\n if (list) {\n for (let i = list.length; i--;) {\n let v = list[i];\n if (v) { //callback可能会删除list元素\n if (v.once) this._removeEvent(list, i, name);\n if (v.target) v.callback.apply(v.target, args);\n else v.callback(...args);\n }\n }\n }\n return this;\n }\n}\n","/**\n * @class\n * @private\n */\n/* tslint:disable */\nconst noop = (message?: any, ...optionalParams: any[]) => {};\nconst debug = console.log.bind(console);\nconst info = console.info.bind(console);\nconst warn = console.warn.bind(console);\nconst error = console.error.bind(console);\n\nexport const Logger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n isEnabled: false,\n\n /** Turn on log */\n enable() {\n this.debug = debug;\n this.info = info;\n this.warn = warn;\n this.error = error;\n this.isEnabled = true;\n },\n\n /** Turn off log */\n disable() {\n this.debug = noop;\n this.info = noop;\n this.warn = noop;\n this.error = noop;\n this.isEnabled = false;\n }\n};\n","export function mixin(derivedCtor: any, baseCtors: any[]): void {\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n Object.defineProperty(\n derivedCtor.prototype,\n name,\n Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null)\n );\n });\n });\n}","export function getClassInstance(constructor: any, args: any[] = []) {\n return typeof constructor === \"function\" ? new constructor(...args) : constructor;\n}","/**\n * The Ease class provides a collection of easing functions for use with tween.js.\n */\nvar Easing = {\n Linear: {\n None: function (amount) {\n return amount;\n },\n },\n Quadratic: {\n In: function (amount) {\n return amount * amount;\n },\n Out: function (amount) {\n return amount * (2 - amount);\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount;\n }\n return -0.5 * (--amount * (amount - 2) - 1);\n },\n },\n Cubic: {\n In: function (amount) {\n return amount * amount * amount;\n },\n Out: function (amount) {\n return --amount * amount * amount + 1;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount;\n }\n return 0.5 * ((amount -= 2) * amount * amount + 2);\n },\n },\n Quartic: {\n In: function (amount) {\n return amount * amount * amount * amount;\n },\n Out: function (amount) {\n return 1 - --amount * amount * amount * amount;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount * amount;\n }\n return -0.5 * ((amount -= 2) * amount * amount * amount - 2);\n },\n },\n Quintic: {\n In: function (amount) {\n return amount * amount * amount * amount * amount;\n },\n Out: function (amount) {\n return --amount * amount * amount * amount * amount + 1;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount * amount * amount;\n }\n return 0.5 * ((amount -= 2) * amount * amount * amount * amount + 2);\n },\n },\n Sinusoidal: {\n In: function (amount) {\n return 1 - Math.cos((amount * Math.PI) / 2);\n },\n Out: function (amount) {\n return Math.sin((amount * Math.PI) / 2);\n },\n InOut: function (amount) {\n return 0.5 * (1 - Math.cos(Math.PI * amount));\n },\n },\n Exponential: {\n In: function (amount) {\n return amount === 0 ? 0 : Math.pow(1024, amount - 1);\n },\n Out: function (amount) {\n return amount === 1 ? 1 : 1 - Math.pow(2, -10 * amount);\n },\n InOut: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n if ((amount *= 2) < 1) {\n return 0.5 * Math.pow(1024, amount - 1);\n }\n return 0.5 * (-Math.pow(2, -10 * (amount - 1)) + 2);\n },\n },\n Circular: {\n In: function (amount) {\n return 1 - Math.sqrt(1 - amount * amount);\n },\n Out: function (amount) {\n return Math.sqrt(1 - --amount * amount);\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - amount * amount) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (amount -= 2) * amount) + 1);\n },\n },\n Elastic: {\n In: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n return -Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);\n },\n Out: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n return Math.pow(2, -10 * amount) * Math.sin((amount - 0.1) * 5 * Math.PI) + 1;\n },\n InOut: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n amount *= 2;\n if (amount < 1) {\n return -0.5 * Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);\n }\n return 0.5 * Math.pow(2, -10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI) + 1;\n },\n },\n Back: {\n In: function (amount) {\n var s = 1.70158;\n return amount * amount * ((s + 1) * amount - s);\n },\n Out: function (amount) {\n var s = 1.70158;\n return --amount * amount * ((s + 1) * amount + s) + 1;\n },\n InOut: function (amount) {\n var s = 1.70158 * 1.525;\n if ((amount *= 2) < 1) {\n return 0.5 * (amount * amount * ((s + 1) * amount - s));\n }\n return 0.5 * ((amount -= 2) * amount * ((s + 1) * amount + s) + 2);\n },\n },\n Bounce: {\n In: function (amount) {\n return 1 - Easing.Bounce.Out(1 - amount);\n },\n Out: function (amount) {\n if (amount < 1 / 2.75) {\n return 7.5625 * amount * amount;\n }\n else if (amount < 2 / 2.75) {\n return 7.5625 * (amount -= 1.5 / 2.75) * amount + 0.75;\n }\n else if (amount < 2.5 / 2.75) {\n return 7.5625 * (amount -= 2.25 / 2.75) * amount + 0.9375;\n }\n else {\n return 7.5625 * (amount -= 2.625 / 2.75) * amount + 0.984375;\n }\n },\n InOut: function (amount) {\n if (amount < 0.5) {\n return Easing.Bounce.In(amount * 2) * 0.5;\n }\n return Easing.Bounce.Out(amount * 2 - 1) * 0.5 + 0.5;\n },\n },\n};\n\nvar now;\n// Include a performance.now polyfill.\n// In node.js, use process.hrtime.\n// eslint-disable-next-line\n// @ts-ignore\nif (typeof self === 'undefined' && typeof process !== 'undefined' && process.hrtime) {\n now = function () {\n // eslint-disable-next-line\n // @ts-ignore\n var time = process.hrtime();\n // Convert [seconds, nanoseconds] to milliseconds.\n return time[0] * 1000 + time[1] / 1000000;\n };\n}\n// In a browser, use self.performance.now if it is available.\nelse if (typeof self !== 'undefined' && self.performance !== undefined && self.performance.now !== undefined) {\n // This must be bound, because directly assigning this function\n // leads to an invocation exception in Chrome.\n now = self.performance.now.bind(self.performance);\n}\n// Use Date.now if it is available.\nelse if (Date.now !== undefined) {\n now = Date.now;\n}\n// Otherwise, use 'new Date().getTime()'.\nelse {\n now = function () {\n return new Date().getTime();\n };\n}\n\nfunction now$1() {\n return now() * 0.001;\n};\n\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tween\n */\nvar Group = /** @class */ (function () {\n function Group() {\n this._tweens = {};\n this._tweensAddedDuringUpdate = {};\n }\n Group.prototype.getAll = function () {\n var _this = this;\n return Object.keys(this._tweens).map(function (tweenId) {\n return _this._tweens[tweenId];\n });\n };\n Group.prototype.removeAll = function () {\n this._tweens = {};\n };\n Group.prototype.add = function (tween) {\n this._tweens[tween.getId()] = tween;\n this._tweensAddedDuringUpdate[tween.getId()] = tween;\n };\n Group.prototype.remove = function (tween) {\n delete this._tweens[tween.getId()];\n delete this._tweensAddedDuringUpdate[tween.getId()];\n };\n Group.prototype.update = function (time, preserve) {\n if (time === void 0) { time = now$1(); }\n if (preserve === void 0) { preserve = false; }\n var tweenIds = Object.keys(this._tweens);\n if (tweenIds.length === 0) {\n return false;\n }\n // Tweens are updated in \"batches\". If you add a new tween during an\n // update, then the new tween will be updated in the next batch.\n // If you remove a tween during an update, it may or may not be updated.\n // However, if the removed tween was added during the current batch,\n // then it will not be updated.\n while (tweenIds.length > 0) {\n this._tweensAddedDuringUpdate = {};\n for (var i = 0; i < tweenIds.length; i++) {\n var tween = this._tweens[tweenIds[i]];\n var autoStart = !preserve;\n if (tween && tween.update(time, autoStart) === false && !preserve) {\n delete this._tweens[tweenIds[i]];\n }\n }\n tweenIds = Object.keys(this._tweensAddedDuringUpdate);\n }\n return true;\n };\n return Group;\n}());\n\n/**\n *\n */\nvar Interpolation = {\n Linear: function (v, k) {\n var m = v.length - 1;\n var f = m * k;\n var i = Math.floor(f);\n var fn = Interpolation.Utils.Linear;\n if (k < 0) {\n return fn(v[0], v[1], f);\n }\n if (k > 1) {\n return fn(v[m], v[m - 1], m - f);\n }\n return fn(v[i], v[i + 1 > m ? m : i + 1], f - i);\n },\n Bezier: function (v, k) {\n var b = 0;\n var n = v.length - 1;\n var pw = Math.pow;\n var bn = Interpolation.Utils.Bernstein;\n for (var i = 0; i <= n; i++) {\n b += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i);\n }\n return b;\n },\n CatmullRom: function (v, k) {\n var m = v.length - 1;\n var f = m * k;\n var i = Math.floor(f);\n var fn = Interpolation.Utils.CatmullRom;\n if (v[0] === v[m]) {\n if (k < 0) {\n i = Math.floor((f = m * (1 + k)));\n }\n return fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i);\n }\n else {\n if (k < 0) {\n return v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]);\n }\n if (k > 1) {\n return v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]);\n }\n return fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i);\n }\n },\n Utils: {\n Linear: function (p0, p1, t) {\n return (p1 - p0) * t + p0;\n },\n Bernstein: function (n, i) {\n var fc = Interpolation.Utils.Factorial;\n return fc(n) / fc(i) / fc(n - i);\n },\n Factorial: (function () {\n var a = [1];\n return function (n) {\n var s = 1;\n if (a[n]) {\n return a[n];\n }\n for (var i = n; i > 1; i--) {\n s *= i;\n }\n a[n] = s;\n return s;\n };\n })(),\n CatmullRom: function (p0, p1, p2, p3, t) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n var t2 = t * t;\n var t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n },\n },\n};\n\n/**\n * Utils\n */\nvar Sequence = /** @class */ (function () {\n function Sequence() {\n }\n Sequence.nextId = function () {\n return Sequence._nextId++;\n };\n Sequence._nextId = 0;\n return Sequence;\n}());\n\nvar mainGroup = new Group();\n\n/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\nvar Tween = /** @class */ (function () {\n function Tween(_object, _group) {\n if (_group === void 0) { _group = mainGroup; }\n this._object = _object;\n this._group = _group;\n this._isPaused = false;\n this._pauseStart = 0;\n this._valuesStart = {};\n this._valuesEnd = {};\n this._valuesStartRepeat = {};\n this._duration = 0;\n this._initialRepeat = 0;\n this._repeat = 0;\n this._yoyo = false;\n this._isPlaying = false;\n this._reversed = false;\n this._delayTime = 0;\n this._startTime = 0;\n this._easingFunction = Easing.Linear.None;\n this._interpolationFunction = Interpolation.Linear;\n this._chainedTweens = [];\n this._onStartCallbackFired = false;\n this._id = Sequence.nextId();\n this._isChainStopped = false;\n this._goToEnd = false;\n this._headTween = null;\n this._tailTween = null;\n this._headStart = false;\n }\n Tween.prototype.getId = function () {\n return this._id;\n };\n Tween.prototype.isPlaying = function () {\n return this._isPlaying;\n };\n Tween.prototype.isPaused = function () {\n return this._isPaused;\n };\n Tween.prototype.duration = function (d) {\n this._duration = d;\n return this;\n };\n Tween.prototype.start = function (time) {\n if (this._isPlaying) {\n return this;\n }\n // eslint-disable-next-line\n this._group && this._group.add(this);\n this._repeat = this._initialRepeat;\n if (this._reversed) {\n // If we were reversed (f.e. using the yoyo feature) then we need to\n // flip the tween direction back to forward.\n this._reversed = false;\n for (var property in this._valuesStartRepeat) {\n this._swapEndStartRepeatValues(property);\n this._valuesStart[property] = this._valuesStartRepeat[property];\n }\n }\n this._isPlaying = true;\n this._isPaused = false;\n this._onStartCallbackFired = false;\n this._isChainStopped = false;\n this._startTime = time !== undefined ? (typeof time === 'string' ? now$1() + parseFloat(time) : time) : now$1();\n this._startTime += this._delayTime;\n this._setupProperties(this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat);\n return this;\n };\n Tween.prototype._setupProperties = function (_object, _valuesStart, _valuesEnd, _valuesStartRepeat) {\n for (var property in _valuesEnd) {\n var startValue = _object[property];\n var startValueIsArray = Array.isArray(startValue);\n var propType = startValueIsArray ? 'array' : typeof startValue;\n var isInterpolationList = !startValueIsArray && Array.isArray(_valuesEnd[property]);\n // If `to()` specifies a property that doesn't exist in the source object,\n // we should not set that property in the object\n if (propType === 'undefined' || propType === 'function') {\n continue;\n }\n // Check if an Array was provided as property value\n if (isInterpolationList) {\n var endValues = _valuesEnd[property];\n if (endValues.length === 0) {\n continue;\n }\n // handle an array of relative values\n endValues = endValues.map(this._handleRelativeValue.bind(this, startValue));\n // Create a local copy of the Array with the start value at the front\n _valuesEnd[property] = [startValue].concat(endValues);\n }\n // handle the deepness of the values\n if ((propType === 'object' || startValueIsArray) && startValue && !isInterpolationList) {\n _valuesStart[property] = startValueIsArray ? [] : {};\n // eslint-disable-next-line\n for (var prop in startValue) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStart[property][prop] = startValue[prop];\n }\n _valuesStartRepeat[property] = startValueIsArray ? [] : {}; // TODO? repeat nested values? And yoyo? And array values?\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._setupProperties(startValue, _valuesStart[property], _valuesEnd[property], _valuesStartRepeat[property]);\n }\n else {\n // Save the starting value, but only once.\n if (typeof _valuesStart[property] === 'undefined') {\n _valuesStart[property] = startValue;\n }\n if (!startValueIsArray) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings\n }\n if (isInterpolationList) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStartRepeat[property] = _valuesEnd[property].slice().reverse();\n }\n else {\n _valuesStartRepeat[property] = _valuesStart[property] || 0;\n }\n }\n }\n };\n Tween.prototype.stop = function () {\n if (!this._isChainStopped) {\n this._isChainStopped = true;\n this.stopChainedTweens();\n }\n if (!this._isPlaying) {\n return this;\n }\n // eslint-disable-next-line\n this._group && this._group.remove(this);\n this._isPlaying = false;\n this._isPaused = false;\n if (this._onStopCallback) {\n this._onStopCallback(this._object);\n }\n return this;\n };\n Tween.prototype.end = function () {\n this._goToEnd = true;\n this.update(Infinity);\n return this;\n };\n Tween.prototype.pause = function (time) {\n if (time === void 0) { time = now$1(); }\n if (this._isPaused || !this._isPlaying) {\n return this;\n }\n this._isPaused = true;\n this._pauseStart = time;\n // eslint-disable-next-line\n this._group && this._group.remove(this);\n return this;\n };\n Tween.prototype.resume = function (time) {\n if (time === void 0) { time = now$1(); }\n if (!this._isPaused || !this._isPlaying) {\n return this;\n }\n this._isPaused = false;\n this._startTime += time - this._pauseStart;\n this._pauseStart = 0;\n // eslint-disable-next-line\n this._group && this._group.add(this);\n return this;\n };\n Tween.prototype.stopChainedTweens = function () {\n for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n this._chainedTweens[i].stop();\n }\n this._chainedTweens = [];\n return this;\n };\n Tween.prototype.group = function (group) {\n this._group = group;\n return this;\n };\n Tween.prototype.call = function (callback) {\n this._onFinishCallback = callback;\n return this;\n };\n Tween.prototype.from = function (properties) {\n this._valuesStart = Object.create(properties);\n return this;\n };\n Tween.prototype.to = function (properties, duration) {\n // TODO? restore this, then update the 07_dynamic_to example to set fox\n // tween's to on each update. That way the behavior is opt-in (there's\n // currently no opt-out).\n // for (const prop in properties) this._valuesEnd[prop] = properties[prop]\n this._valuesEnd = Object.create(properties);\n if (duration !== undefined) {\n this._duration = duration;\n }\n this._chainedTween = this;\n return this;\n };\n Tween.prototype.delay = function (amount) {\n this._delayTime = amount;\n return this;\n };\n Tween.prototype.union = function (headTween, tailTween) {\n this._headTween = headTween;\n this._tailTween = tailTween.chain(this);\n this._headStart = true;\n return this;\n };\n Tween.prototype.repeat = function (times) {\n this._initialRepeat = times;\n this._repeat = times;\n return this;\n };\n Tween.prototype.repeatDelay = function (amount) {\n this._repeatDelayTime = amount;\n return this;\n };\n Tween.prototype.yoyo = function (yoyo) {\n this._yoyo = yoyo;\n return this;\n };\n Tween.prototype.easing = function (easingFunction) {\n this._easingFunction = easingFunction;\n return this;\n };\n Tween.prototype.interpolation = function (interpolationFunction) {\n this._interpolationFunction = interpolationFunction;\n return this;\n };\n Tween.prototype.chain = function () {\n var tweens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tweens[_i] = arguments[_i];\n }\n this._chainedTweens = tweens;\n return this;\n };\n Tween.prototype.unchain = function () {\n for (var _i = 0; _i < arguments.length; _i++) {\n let index = this._chainedTweens.findIndex(v => v == arguments[_i]);\n if (index > -1) {\n this._chainedTweens.splice(index, 1);\n }\n }\n return this;\n };\n Tween.prototype.onStart = function (callback) {\n this._onStartCallback = callback;\n return this;\n };\n Tween.prototype.onUpdate = function (callback) {\n this._onUpdateCallback = callback;\n return this;\n };\n Tween.prototype.onRepeat = function (callback) {\n this._onRepeatCallback = callback;\n return this;\n };\n Tween.prototype.onComplete = function (callback) {\n this._onCompleteCallback = callback;\n return this;\n };\n Tween.prototype.onStop = function (callback) {\n this._onStopCallback = callback;\n return this;\n };\n /**\n * @returns true if the tween is still playing after the update, false\n * otherwise (calling update on a paused tween still returns true because\n * it is still playing, just paused).\n */\n Tween.prototype.update = function (time, autoStart) {\n if (time === void 0) { time = now$1(); }\n if (autoStart === void 0) { autoStart = true; }\n if (this._isPaused)\n return true;\n var property;\n var elapsed;\n var endTime = this._startTime + this._duration;\n if (!this._goToEnd && !this._isPlaying) {\n if (time > endTime)\n return false;\n if (autoStart)\n this.start(time);\n }\n this._goToEnd = false;\n if (time < this._startTime) {\n return true;\n }\n if (this._onStartCallbackFired === false) {\n if (this._onStartCallback) {\n this._onStartCallback(this._object);\n }\n this._onStartCallbackFired = true;\n }\n elapsed = (time - this._startTime) / this._duration;\n elapsed = this._duration === 0 || elapsed > 1 ? 1 : elapsed;\n var value = this._easingFunction(elapsed);\n // properties transformations\n this._updateProperties(this._object, this._valuesStart, this._valuesEnd, value);\n if (this._onUpdateCallback) {\n this._onUpdateCallback(this._object, elapsed);\n }\n if (elapsed === 1) {\n if (this._onFinishCallback) {\n this._onFinishCallback(this._object);\n }\n if (this._headTween && this._headStart) {\n this._headTween.start(this._startTime + this._duration);\n this._headStart = false;\n this._isPlaying = false;\n return false;\n }\n if (this._repeat > 0) {\n if (isFinite(this._repeat)) {\n this._repeat--;\n }\n // Reassign starting values, restart by making startTime = now\n for (property in this._valuesStartRepeat) {\n if (!this._yoyo && typeof this._valuesEnd[property] === 'string') {\n this._valuesStartRepeat[property] =\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._valuesStartRepeat[property] + parseFloat(this._valuesEnd[property]);\n }\n if (this._yoyo) {\n this._swapEndStartRepeatValues(property);\n }\n this._valuesStart[property] = this._valuesStartRepeat[property];\n }\n if (this._yoyo) {\n this._reversed = !this._reversed;\n }\n if (this._repeatDelayTime !== undefined) {\n this._startTime = time + this._repeatDelayTime;\n }\n else {\n this._startTime = time + this._delayTime;\n }\n if (this._onRepeatCallback) {\n this._onRepeatCallback(this._object);\n }\n if (this._headTween) {\n this._headStart = true;\n this._initialRepeat = this._repeat;\n }\n return true;\n }\n else {\n if (this._tailTween) {\n this._tailTween.unchain(this);\n }\n if (this._onCompleteCallback) {\n this._onCompleteCallback(this._object);\n }\n for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n // Make the chained tweens start exactly at the time they should,\n // even if the `update()` method was called way past the duration of the tween\n this._chainedTweens[i].start(this._startTime + this._duration);\n }\n this._isPlaying = false;\n return false;\n }\n }\n return true;\n };\n Tween.prototype._updateProperties = function (_object, _valuesStart, _valuesEnd, value) {\n for (var property in _valuesEnd) {\n // Don't update properties that do not exist in the source object\n if (_valuesStart[property] === undefined) {\n continue;\n }\n var start = _valuesStart[property] || 0;\n var end = _valuesEnd[property];\n var startIsArray = Array.isArray(_object[property]);\n var endIsArray = Array.isArray(end);\n var isInterpolationList = !startIsArray && endIsArray;\n if (isInterpolationList) {\n _object[property] = this._interpolationFunction(end, value);\n }\n else if (typeof end === 'object' && end) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._updateProperties(_object[property], start, end, value);\n let des = Object.getOwnPropertyDescriptor(_object, property);\n if (des && des.set) {\n _object[property] = _object[property];\n }\n }\n else {\n // Parses relative end values with start as base (e.g.: +10, -3)\n end = this._handleRelativeValue(start, end);\n // Protect against non numeric properties.\n if (typeof end === 'number') {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _object[property] = start + (end - start) * value;\n }\n }\n }\n };\n Tween.prototype._handleRelativeValue = function (start, end) {\n if (typeof end !== 'string') {\n return end;\n }\n if (end.charAt(0) === '+' || end.charAt(0) === '-') {\n return start + parseFloat(end);\n }\n else {\n return parseFloat(end);\n }\n };\n Tween.prototype._swapEndStartRepeatValues = function (property) {\n var tmp = this._valuesStartRepeat[property];\n var endValue = this._valuesEnd[property];\n if (typeof endValue === 'string') {\n this._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(endValue);\n }\n else {\n this._valuesStartRepeat[property] = this._valuesEnd[property];\n }\n this._valuesEnd[property] = tmp;\n };\n return Tween;\n}());\n\nvar VERSION = '18.6.4';\n\n/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\nvar nextId = Sequence.nextId;\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tweens.\n */\nvar TWEEN = mainGroup;\n// This is the best way to export things in a way that's compatible with both ES\n// Modules and CommonJS, without build hacks, and so as not to break the\n// existing API.\n// https://github.com/rollup/rollup/issues/1961#issuecomment-423037881\n\n// var getAll = TWEEN.getAll.bind(TWEEN);\n// var removeAll = TWEEN.removeAll.bind(TWEEN);\n// var add = TWEEN.add.bind(TWEEN);\n// var remove = TWEEN.remove.bind(TWEEN);\n// var update = TWEEN.update.bind(TWEEN);\n\nexport {\n Easing,\n Group,\n Interpolation,\n Tween,\n VERSION,\n nextId,\n};","import { Group, Tween } from \"./tween\";\n\nexport class TweenChain {\n private _object: Object;\n private _tween: Tween<Object>;\n private _chainedTween: Tween<Object>;\n\n constructor(object: Object, group?: Group) {\n this._object = object;\n this._tween = new Tween(object, group);\n }\n\n start() {\n this._tween.start();\n return this;\n }\n\n stop() {\n this._tween.stop();\n return this;\n }\n\n repeat(times: number) {\n this._chainedTween.repeat(times);\n return this;\n }\n\n union() {\n this._chainedTween = this._tween = new Tween(this._object).union(this._tween, this._chainedTween);\n return this;\n }\n\n call(callback: (object: Object) => void) {\n this._chainTween().call(callback);\n return this;\n }\n\n delay(amount: number) {\n this._chainTween().delay(amount);\n return this;\n }\n\n to(properties: Record<string, any>, duration?: number, props?: {\n from?: Record<string, any>,\n easing?: (amount: number) => number,\n onStart?: (object: Object) => void,\n onStop?: (object: Object) => void,\n onComplete?: (object: Object) => void,\n onUpdate?: (object: Object, elapsed: number) => void,\n onRepeat?: (object: Object) => void\n }) {\n let tween = this._chainTween().to(properties, duration);\n if (props) {\n if (props.from) tween.from(props.from);\n if (props.easing) tween.easing(props.easing);\n if (props.onStart) tween.onStart(props.onStart);\n if (props.onStop) tween.onStop(props.onStop);\n if (props.onComplete) tween.onComplete(props.onComplete);\n if (props.onUpdate) tween.onUpdate(props.onUpdate);\n if (props.onRepeat) tween.onRepeat(props.onRepeat);\n }\n return this;\n }\n\n _chainTween() {\n let tween = this._tween;\n if (this._chainedTween) {\n tween = new Tween(this._object);\n this._chainedTween.chain(tween);\n }\n this._chainedTween = tween;\n return tween;\n }\n}","import { TweenChain } from \"./TweenChain\";\nimport { Group, Tween } from \"./tween\";\n\nexport class TweenManager {\n private _group: Group = new Group();\n\n destroy() {\n this._group.removeAll();\n }\n\n update(time: number) {\n this._group.update(time);\n }\n\n tween(target: Object) {\n return new Tween(target, this._group);\n }\n\n timeline(target: Object) {\n return new TweenChain(target, this._group);\n }\n\n killTweensOf(target: Object) {\n this._group.getAll().forEach((tween: any) => tween._object === target && this._group.remove(tween));\n }\n}","import { Object3D } from \"three\";\nimport { ResourceManager } from \"./ResourceManager\";\nimport { TextureSettings } from \"../TextureSettings\";\n\nexport interface LoadProperties {\n url: string,\n texSettings?: TextureSettings,\n onLoad: (asset: any) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (event: ErrorEvent) => void,\n}\n\nexport abstract class aLoader {\n static _texKeys = [\n \"alphaMap\", \"aoMap\", \"bumpMap\", \"displacementMap\", \"emissiveMap\",\n \"envMap\", \"lightMap\", \"metalnessMap\", \"normalMap\", \"roughnessMap\", \"specularMap\"\n ]\n static _setMeshData(node: Object3D) {\n const keys = aLoader._texKeys;\n\n const meshes = [];\n const textures = {};\n const materials = {};\n const queue = [node];\n\n while (queue.length !== 0) {\n let object = queue.shift() as any;\n if (object.isMesh) {\n meshes.push(object);\n\n const mat = object.material;\n if (Array.isArray(mat)) mat.forEach(v => materials[v.name] = v)\n else materials[mat.name] = mat;\n\n keys.forEach(k => {\n let tex = mat[k];\n if (tex) {\n textures[tex.uuid] = tex;\n }\n });\n }\n object.children.forEach(v => queue.push(v));\n }\n\n node.userData.meshData = { meshes, materials, textures };\n\n return node;\n }\n\n constructor(public manager: ResourceManager) { };\n abstract extension: string[];\n abstract load(props: LoadProperties): void;\n\n}","import { LoadProperties, aLoader } from \"../asset/aLoader\";\nimport { EXRLoader } from \"three/examples/jsm/loaders/EXRLoader.js\";\n\nexport class aEXRLoader extends aLoader {\n extension: string[] = [\"exr\"];\n\n load({ url, onLoad, onProgress, onError, texSettings }: LoadProperties) {\n const loader = new EXRLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, (tex) => onLoad(Object.assign(tex, texSettings)), onProgress, onError);\n }\n}","import { Object3D } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nimport { FBXLoader } from \"three/examples/jsm/loaders/FBXLoader.js\";\n\nexport class aFBXLoader extends aLoader {\n extension: string[] = [\"fbx\"];\n\n load({ url, onLoad, onProgress, onError }: LoadProperties) {\n const loadCallback = (node: Object3D) => {\n onLoad(aLoader._setMeshData(node));\n }\n const loader = new FBXLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, loadCallback, onProgress, onError);\n }\n}","import { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nimport { GLTF, GLTFLoader } from \"three/examples/jsm/loaders/GLTFLoader.js\";\nimport { DRACOLoader } from \"three/examples/jsm/loaders/DRACOLoader.js\";\nimport { MeshoptDecoder } from \"three/examples/jsm/libs/meshopt_decoder.module.js\";\n\nexport class aGLTFLoader extends aLoader {\n extension: string[] = [\"gltf\", \"glb\"];\n\n load({ url, onLoad, onProgress, onError }: LoadProperties) {\n const loadCallback = (gltf: GLTF) => {\n const node = gltf.scene;\n if (gltf.animations) node.animations = gltf.animations;\n onLoad(aLoader._setMeshData(node));\n }\n let gltfLoader = new GLTFLoader(this.manager.loadingManager);\n gltfLoader.setPath(this.manager.path);\n gltfLoader.setResourcePath(this.manager.resourcePath);\n\n let dracoLoader = new DRACOLoader(this.manager.loadingManager);\n dracoLoader.setDecoderPath(this.manager.dracoPath);\n gltfLoader.setDRACOLoader(dracoLoader);\n\n gltfLoader.setMeshoptDecoder(MeshoptDecoder);\n gltfLoader.load(url, loadCallback, onProgress, onError);\n }\n}","import { EquirectangularReflectionMapping } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nimport { RGBELoader } from \"three/examples/jsm/loaders/RGBELoader.js\";\n\nexport class aHDRLoader extends aLoader {\n extension: string[] = [\"hdr\"];\n\n load({ url, onLoad, onProgress, onError, texSettings }: LoadProperties): void {\n texSettings = Object.assign({ mapping: EquirectangularReflectionMapping }, texSettings);\n const loader = new RGBELoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, tex => onLoad(Object.assign(tex, texSettings)), onProgress, onError);\n }\n\n}","import { FileLoader } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nexport class aJSONLoader extends aLoader {\n extension: string[] = [\"json\"];\n\n load({ url, onLoad, onProgress, onError }: LoadProperties) {\n const loader = new FileLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, (file: string) => onLoad(JSON.parse(file)), onProgress, onError);\n }\n}","import { SRGBColorSpace, TextureLoader } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nexport class aTextureLoader extends aLoader {\n extension: string[] = [\"png\", \"jpg\", \"webp\", \"avif\"];\n\n load({ url, onLoad, onProgress, onError, texSettings }: LoadProperties): void {\n const loadCallback = (tex) => {\n tex.colorSpace = SRGBColorSpace;\n onLoad(Object.assign(tex, texSettings));\n }\n const loader = new TextureLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, loadCallback, onProgress, onError);\n }\n\n}","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","\nclass ClassProperties {\n private _properties: Object = Object.create(null);\n constructor(public clsName: string) { }\n property(propertyKey: string, options: Object = {}) {\n this._properties[propertyKey] = options;\n return this;\n }\n applyProperties(target: object) {\n Object.assign(target, this._properties);\n return target;\n }\n}\n\nexport class PropertyManager {\n static _classMap = new Map<String, ClassProperties>();\n static _propertyMap = new Map<Object, Object>();\n\n static _hasProperties(constructor: Function) {\n return PropertyManager._propertyMap.has(constructor);\n }\n static _getProperties(constructor: Function, autoAdd: boolean = true) {\n let props = PropertyManager._propertyMap.get(constructor);\n if (props === undefined && autoAdd) {\n props = Object.create(null);\n PropertyManager._propertyMap.set(constructor, props);\n }\n return props;\n }\n static _getMergedProperties(constructor: Function) {\n let props = null;\n while (constructor !== Object.constructor.prototype) {\n let values = PropertyManager._getProperties(constructor, false);\n if (values) {\n if (props === null) {\n props = Object.create(null);\n }\n Object.assign(props, values);\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n return props;\n }\n static _getClassProperties(clsName: string, autoAdd: boolean = true) {\n let props = PropertyManager._classMap.get(clsName);\n if (props === undefined && autoAdd) {\n props = new ClassProperties(clsName);\n PropertyManager._classMap.set(clsName, props);\n }\n return props;\n }\n static _applyClassProperties(clsName: string, constructor: Function) {\n let cls = PropertyManager._getClassProperties(clsName, false);\n if (cls) {\n return cls.applyProperties(PropertyManager._getProperties(constructor));\n }\n else {\n return PropertyManager._getProperties(constructor, false);\n }\n }\n}\n\nexport interface IPropertyOptions {\n dir?: string;\n parent?: string;\n max?: number;\n min?: number;\n step?: number;\n value?: any;\n name?: string;\n}\n\ntype PropertyDecorator = (target: Object, propertyKey: string) => void;\nexport function property(options?: IPropertyOptions): PropertyDecorator;\nexport function property(...args: Parameters<PropertyDecorator>): void;\nexport function property(target?: Object, propertyKey?: string) {\n let options: IPropertyOptions | Function | string = null;\n function normalized(target: Object, propertyKey: string) {\n PropertyManager._getProperties(target.constructor)[propertyKey] = options;\n }\n if (target === undefined) { //@property()\n return property({});\n }\n else if (typeof propertyKey === \"undefined\") { // @property(options)\n options = target;\n return normalized;\n }\n else { // @property\n options = {};\n normalized(target, propertyKey);\n }\n}","import { property } from \"../PropertyManager\";\nimport { Easing } from \"../tween/tween\";\n\nexport const CinestationBlendStyle = {\n Linear: Easing.Linear.None,\n QuadraticIn: Easing.Quadratic.In,\n QuadraticOut: Easing.Quadratic.Out,\n QuadraticInOut: Easing.Quadratic.InOut,\n}\n\nexport type CinestationBlendStyle = typeof CinestationBlendStyle[keyof typeof CinestationBlendStyle];\n\nexport class CinestationBlendDefinition {\n\n @property({ value: CinestationBlendStyle })\n style: CinestationBlendStyle = CinestationBlendStyle.QuadraticInOut;\n\n @property\n time: number = 4;\n\n}","import { MathUtils } from \"three\";\n\nexport class ObjectInstance {\n static _instanceCount: number = 0;\n instanceId: number = ObjectInstance._instanceCount++;\n uuid: string = MathUtils.generateUUID();\n name: string = \"\";\n type: string = \"ObjectInstance\";\n}","import { Object3D } from \"three\";\nimport { Viewer } from \"./Viewer\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { ObjectInstance } from \"./ObjectInstance\";\n\nexport class Component<T extends Object3D = Object3D> extends ObjectInstance{\n\n get enabled() {\n return this._enabled;\n }\n set enabled(v: boolean) {\n if (this._enabled !== v) {\n this._enabled = v;\n this.manager.componentScheduler.enableComponent(this, v);\n }\n }\n private _enabled: boolean = true;\n\n node: T;\n viewer: Viewer;\n manager: ComponentManager;\n type: string = \"Component\";\n\n onLoad?(): void;\n onEnable?(): void;\n onDisable?(): void;\n onDestroy?(): void;\n start?(): void;\n update?(dt: number): void;\n lastUpdate?(dt: number): void;\n\n flags: {\n Destroyed?: boolean;\n OnLoadCalled?: boolean;\n OnEnableCalled?: boolean;\n StartCalled?: boolean;\n Deactivating?: boolean;\n IsStartCalled?: boolean;\n } = {};\n\n protected _onPreDestroy() {\n this.unscheduleAll();\n this.manager.removeComponent(this.node, this);\n\n if (this._enabled) {\n this.manager.componentScheduler.enableComponent(this, false);\n }\n if (this.onDestroy && this.flags.OnLoadCalled) {\n this.onDestroy();\n }\n }\n\n schedule(callback: Function, interval: number, repeat: number = -1) {\n this.manager.scheduler.schedule(this, callback, interval, repeat);\n }\n\n unshedule(callback: Function) {\n this.manager.scheduler.unshedule(this, callback);\n }\n\n unscheduleAll() {\n this.manager.scheduler.unscheduleAll(this);\n }\n\n destroy() {\n if (this.flags.Destroyed) {\n return false;\n }\n this.destroyImmediate();\n return true;\n }\n\n destroyImmediate() {\n if (this._onPreDestroy) {\n this._onPreDestroy();\n }\n this.flags.Destroyed = true;\n }\n}","import { MathUtils, PerspectiveCamera } from \"three\";\nimport { CinestationBlendDefinition } from \"./CinestationBlendDefinition\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { Component } from \"../Component\";\nimport { property } from \"../PropertyManager\";\n\nconst { clamp, lerp } = MathUtils;\n\nexport class CinestationBrain extends Component<PerspectiveCamera> {\n private _vcam: VirtualCamera | null = null;\n private _vcamSolo: VirtualCamera | null = null;\n private _vcams: VirtualCamera[] = [];\n private _lerpTime: number = 0;\n private _isChanged: boolean = false;\n\n @property\n brainBlend: CinestationBlendDefinition = new CinestationBlendDefinition();\n\n onChanged: (v: boolean) => void = null;\n\n get vcam() {\n return this._vcam;\n }\n\n get vcams() {\n return this._vcams\n }\n\n lastUpdate(dt: number) {\n let vcam = this.getActiveCamera();\n if (vcam == null) return;\n\n this._vcams.forEach(v => v.enabled = v === vcam);\n\n if (this._lerpTime < this.brainBlend.time) {\n this._lerpTime += dt;\n let t = clamp(this._lerpTime / this.brainBlend.time, 0, 1);\n this._lerpToMainCamera(vcam, this.brainBlend.style(t));\n }\n else {\n this._lerpToMainCamera(vcam, 1);\n }\n }\n\n activeCamera(vcam: VirtualCamera, time: number = 4) {\n if (this._vcamSolo !== vcam) {\n this._vcamSolo = vcam;\n this._lerpTime = 0;\n this.brainBlend.time = time;\n }\n }\n\n addCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index === -1) {\n this._vcams.push(vcam);\n }\n }\n\n removeCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index !== -1) {\n this._vcams.splice(index, 1);\n }\n }\n\n getActiveCamera() {\n return this._vcamSolo || this._vcams.filter(v => v.enabled).sort((a, b) => b.priority - a.priority)[0];\n }\n\n private _lerpToMainCamera(vcam: VirtualCamera, t: number) {\n const from = this.node, to = vcam;\n const { fov, near, far, finalPosition, finalRotation } = to;\n\n const isLensChanged = from.fov != fov || from.near != near || from.far != far;\n const isTransformChanged = !from.position.equals(finalPosition) || !from.quaternion.equals(finalRotation);\n const isChanged = isLensChanged || isTransformChanged;\n\n from.position.lerp(finalPosition, t);\n from.quaternion.slerp(finalRotation, t);\n from.fov = lerp(from.fov, fov, t);\n from.near = lerp(from.near, near, t);\n from.far = lerp(from.far, far, t);\n\n if (isLensChanged) {\n from.updateProjectionMatrix();\n }\n\n if (this._isChanged !== isChanged) {\n this._isChanged = isChanged;\n this.onChanged && this.onChanged(isChanged);\n }\n }\n}","import { Object3D, Quaternion, Vector3 } from \"three\";\nimport { Component } from \"../Component\";\nimport { CinestationBrain } from \"./CinestationBrain\";\nimport { property } from \"../PropertyManager\";\n\nexport class VirtualCamera extends Component<Object3D & { isCamera?: boolean }> {\n private _finalPosition: Vector3 = new Vector3();\n private _finalRotation: Quaternion = new Quaternion();\n\n priority: number = 10;\n lookAt: Object3D | null = null;\n follow: Object3D | null = null;\n\n @property({dir: \"lens\"})\n fov: number = 45;\n @property({dir: \"lens\"})\n near: number = 0.1;\n @property({dir: \"lens\"})\n far: number = 1000;\n\n correctPosition: Vector3 = new Vector3();\n correctRotation: Quaternion = new Quaternion();\n lookaheadPosition: Vector3 = new Vector3();\n trackedObjectOffset: Vector3 = new Vector3();\n brain!: CinestationBrain;\n\n get finalPosition() {\n return this._finalPosition.copy(this.node.position).add(this.correctPosition);\n }\n\n get finalRotation() {\n return this._finalRotation.copy(this.node.quaternion).multiply(this.correctRotation);\n }\n\n onLoad() {\n this.node.isCamera = true;\n\n const camera = this.viewer.camera;\n this.fov = camera.fov;\n this.near = camera.near;\n this.far = camera.far;\n this.node.position.set(0, 0, 4);\n \n this.brain = this.viewer.getComponent(camera, CinestationBrain, true);\n this.brain.addCamera(this);\n }\n\n onDestroy() {\n this.brain.removeCamera(this);\n }\n\n update(dt: number) {\n if (this.lookAt) {\n this.node.lookAt(this.lookAt.position);\n }\n }\n}","import { Camera, Intersection, Object3D, Raycaster, Vector2 } from \"three\";\n\nconst PressState = {\n NONE: 1 << 0,\n SELECTED: 1 << 1,\n IN: 1 << 2,\n}\ntype PressState = typeof PressState[keyof typeof PressState];\n\nexport interface ConnTarget {\n node: Object3D;\n emit(name: string, e: { intersects: Intersection[] }): void;\n has(name: string): boolean;\n}\n\nexport class Pressability {\n private _raycaster: Raycaster = new Raycaster();\n private _connectors: { target: ConnTarget, state: number }[] = [];\n\n public connect(target: ConnTarget) {\n let connector = this._connectors.find(v => v.target === target);\n if (connector === undefined) {\n connector = { target, state: PressState.NONE };\n this._connectors.push(connector);\n }\n }\n\n public disconnect(target: ConnTarget) {\n let index = this._connectors.findIndex(v => v.target === target);\n if (index !== -1) {\n this._connectors.splice(index, 1);\n }\n }\n\n public pointerDown(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerdown\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n conn.state |= PressState.SELECTED;\n conn.target.emit(\"pointerdown\", { intersects });\n }\n }\n }\n }\n\n public pointerUp(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerup\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (conn.state & PressState.SELECTED) {\n conn.state &= ~PressState.SELECTED;\n conn.target.emit(\"click\", { intersects });\n }\n conn.target.emit(\"pointerup\", { intersects });\n }\n }\n }\n }\n\n public pointerMove(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"pointerover\") || conn.target.has(\"pointerout\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (!(conn.state & PressState.IN)) {\n conn.state |= PressState.IN;\n conn.target.emit(\"pointerover\", { intersects });\n }\n }\n else {\n if (conn.state & PressState.IN) {\n conn.state &= ~PressState.IN;\n conn.target.emit(\"pointerout\", { intersects });\n }\n }\n }\n }\n }\n\n}\n","import { Vector2 } from \"three\";\nimport { ConnTarget, Pressability } from \"./Pressability\";\nimport { Viewer } from \"./Viewer\";\n\ninterface InputTarget {\n on?(event: string, cb: (...args: any[]) => void, target: Object, once?: boolean);\n off?(event: string, cb: (...args: any[]) => void, target: Object);\n removeEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n addEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n}\n\nexport class DeviceInput {\n static readonly CLICK = \"click\";\n static readonly MOUSE_WHEEL = \"mousewheel\";\n static readonly TOUCH_START = \"touchstart\";\n static readonly TOUCH_END = \"touchend\";\n static readonly TOUCH_MOVE = \"touchmove\";\n static readonly POINTER_DOWN = \"pointerdown\";\n static readonly POINTER_UP = \"pointerup\";\n static readonly POINTER_MOVE = \"pointermove\";\n static readonly POINTER_OVER = \"pointerover\";\n static readonly POINTER_OUT = \"pointerout\";\n static readonly KEYDOWN = \"keydown\";\n static readonly KEYPRESS = \"keypress\";\n static readonly KEYUP = \"keyup\";\n static readonly RESIZE = \"resize\";\n\n private _listeners: { target: InputTarget, type: string, callback: any }[] = [];\n private _mouseWheel: number = 0;\n private _touches: { id: number, position: Vector2 }[] = [];\n private _touchCount: number = 0;\n private _pointerButton: number = -1;\n private _pointerPosition: Vector2 = new Vector2();\n private _pointer: Vector2 = new Vector2();\n private _keys: { [k: string]: boolean } = {};\n private _pressability: Pressability = new Pressability();\n\n get pointerButton() {\n return this._pointerButton;\n }\n\n get pointer() {\n return this._pointer;\n }\n\n get pointerPosition() {\n return this._pointerPosition;\n }\n\n get mouseWheel() {\n return this._mouseWheel;\n }\n\n get touchCount() {\n return this._touchCount;\n }\n\n get touches() {\n return this._touches;\n }\n\n get keys() {\n return this._keys;\n }\n\n constructor(public viewer: Viewer) { }\n\n addEventListeners() {\n const domElement = this.viewer.canvas; domElement.style.touchAction = 'none';\n this._addEventListener(domElement, 'contextmenu', e => e.preventDefault());\n this._addEventListener(domElement, \"pointerdown\", e => this._onPointerDown(e), { passive: false });\n this._addEventListener(domElement, \"pointerup\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointercancel\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointerout\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointermove\", e => this._onPointerMove(e), { passive: true });\n this._addEventListener(domElement, \"wheel\", e => this._onMouseWheel(e), { passive: false });\n this._addEventListener(domElement, \"touchstart\", e => this._onTouchStart(e), { passive: true });\n this._addEventListener(domElement, \"touchend\", e => this._onTouchEnd(e), { passive: true });\n this._addEventListener(domElement, \"touchmove\", e => this._onTouchMove(e), { passive: true });\n //监听了pointer事件之后,key事件失效,改成window解决\n this._addEventListener(window, \"keydown\", e => this._onKeyDown(e), { passive: false });\n this._addEventListener(window, \"keypress\", e => this._onKeyPress(e), { passive: false });\n this._addEventListener(window, \"keyup\", e => this._onKeyUp(e), { passive: false });\n }\n\n removeAllListeners() {\n for (let { target, type, callback } of this._listeners) {\n if (target.removeEventListener) target.removeEventListener(type, callback);\n else if (target.off) target.off(type, callback, target);\n }\n this._listeners = [];\n }\n\n connect(target: ConnTarget, event: string) {\n switch (event) {\n case DeviceInput.CLICK:\n case DeviceInput.POINTER_DOWN:\n case DeviceInput.POINTER_UP:\n case DeviceInput.POINTER_OVER:\n case DeviceInput.POINTER_OUT:\n this._pressability.connect(target);\n break;\n }\n }\n\n disconnect(target: ConnTarget) {\n this._pressability.disconnect(target);\n }\n\n private _addEventListener<K extends keyof HTMLElementEventMap>(\n target: InputTarget,\n type: K | string,\n callback: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) {\n if (target.addEventListener) target.addEventListener(type, callback, options);\n else if (target.on) target.on(type, callback, target);\n this._listeners.push({ target, type, callback });\n }\n\n private _remapPointer(e: PointerEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n button: e.button,\n buttons: e.buttons,\n clientX: e.clientY,\n clientY: width - e.clientX,\n offsetX: e.offsetY,\n offsetY: width - e.offsetX,\n pageX: e.pageY,\n pageY: width - e.pageX,\n screenX: e.screenY,\n screenY: width - e.screenX,\n movementX: e.movementY,\n movementY: e.movementX,\n } as any : e;\n }\n\n private _remapTouch(e: TouchEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n touches: Array.from(e.touches).map(v => {\n return {\n identifier: v.identifier,\n clientX: v.clientY,\n clientY: width - v.clientX,\n pageX: v.pageY,\n pageY: width - v.pageX,\n screenX: v.screenY,\n screenY: width - v.screenX,\n }\n })\n } as any : e;\n }\n\n private _computePointer(e: PointerEvent) {\n this._pointer.x = e.offsetX / this.viewer.width * 2 - 1;\n this._pointer.y = 1 - e.offsetY / this.viewer.height * 2;\n this._pointerPosition.set(e.offsetX, e.offsetY);\n }\n\n private _onPointerDown(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = e.button;\n this._computePointer(e);\n this._pressability.pointerDown(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_DOWN, e);\n }\n\n private _onPointerUp(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = -1;\n this._computePointer(e);\n this._pressability.pointerUp(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_UP, e);\n }\n\n private _onPointerMove(e: PointerEvent) {\n e = this._remapPointer(e);\n this._computePointer(e);\n this._pressability.pointerMove(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_MOVE, e);\n }\n\n private _onMouseWheel(e: WheelEvent & { wheelDelta?: number }) {\n e.preventDefault();\n this._mouseWheel = e.deltaY || e.wheelDelta;\n this.viewer.emit(DeviceInput.MOUSE_WHEEL, e);\n }\n\n private _onTouchStart(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_START, e);\n }\n\n private _onTouchEnd(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_END, e);\n }\n\n private _onTouchMove(e: TouchEvent) {\n e = this._remapTouch(e);\n let touches = e.touches;\n let touchesTo = this._touches;\n for (let i = touches.length; i--;) {\n if (touchesTo[i] == undefined) {\n touchesTo[i] = { id: -1, position: new Vector2() };\n }\n const touch = touches[i];\n touchesTo[i].id = touch.identifier;\n touchesTo[i].position.set(touch.pageX, touch.pageY);\n }\n this._touchCount = touches.length;\n this.viewer.emit(DeviceInput.TOUCH_MOVE, e);\n }\n\n private _onKeyDown(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYDOWN, e);\n }\n\n private _onKeyPress(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYPRESS, e);\n }\n\n private _onKeyUp(e: KeyboardEvent) {\n this._keys[e.key] = false;\n this.viewer.emit(DeviceInput.KEYUP, e);\n }\n}","const isSSR = typeof window === 'undefined';\n\nexport interface IDeviceResult {\n version: string;\n}\n\nexport interface IBrowserResult {\n name: string;\n version: string;\n}\n\nexport class DetectUA {\n public userAgent: string;\n\n // Internal variables, prevents multiple lookups\n private isAndroidDevice: boolean;\n private iOSDevice: string;\n\n /**\n * Detect a users browser, browser version and whether it is a mobile-, tablet- or desktop device\n *\n * @param forceUserAgent Force a user agent string (useful for testing)\n */\n constructor(forceUserAgent?: string) {\n this.userAgent = forceUserAgent\n ? forceUserAgent\n : !isSSR && window.navigator\n ? window.navigator.userAgent\n : '';\n\n this.isAndroidDevice = !/like android/i.test(this.userAgent) && /android/i.test(this.userAgent);\n this.iOSDevice = this.match(1, /(iphone|ipod|ipad)/i).toLowerCase();\n\n // Workaround for ipadOS, force detection as tablet\n // SEE: https://github.com/lancedikson/bowser/issues/329\n // SEE: https://stackoverflow.com/questions/58019463/how-to-detect-device-name-in-safari-on-ios-13-while-it-doesnt-show-the-correct\n if (\n !isSSR &&\n navigator.platform === 'MacIntel' &&\n navigator.maxTouchPoints > 2 &&\n !(window as any).MSStream\n ) {\n this.iOSDevice = 'ipad';\n }\n }\n\n /**\n * Match entry based on position found in the user-agent string\n *\n * @param pattern regular expression pattern\n */\n private match(position: number, pattern: RegExp): string {\n const match = this.userAgent.match(pattern);\n\n return (match && match.length > 1 && match[position]) || '';\n }\n\n /**\n * Returns if the device is a mobile device\n */\n get isMobile(): boolean {\n return (\n // Default mobile\n !this.isTablet &&\n (/[^-]mobi/i.test(this.userAgent) ||\n // iPhone / iPod\n this.iOSDevice === 'iphone' ||\n this.iOSDevice === 'ipod' ||\n // Android\n this.isAndroidDevice ||\n // Nexus mobile\n /nexus\\s*[0-6]\\s*/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a tablet device\n */\n get isTablet(): boolean {\n return (\n // Default tablet\n (/tablet/i.test(this.userAgent) && !/tablet pc/i.test(this.userAgent)) ||\n // iPad\n this.iOSDevice === 'ipad' ||\n // Android\n (this.isAndroidDevice && !/[^-]mobi/i.test(this.userAgent)) ||\n // Nexus tablet\n (!/nexus\\s*[0-6]\\s*/i.test(this.userAgent) && /nexus\\s*[0-9]+/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a desktop device\n */\n get isDesktop(): boolean {\n return !this.isMobile && !this.isTablet;\n }\n\n /**\n * Returns if the device is running MacOS (and if so which version)\n *\n * '5' => Leopard'\n * '6' => Snow Leopard'\n * '7' => Lion'\n * '8' => Mountain Lion'\n * '9' => Mavericks'\n * '10' => Yosemite'\n * '11' => El Capitan'\n * '12' => Sierra'\n * '13' => High Sierra'\n * '14' => Mojave'\n * '15' => Catalina'\n */\n get isMacOS(): IDeviceResult | boolean {\n return (\n /macintosh/i.test(this.userAgent) && {\n version: this.match(1, /mac os x (\\d+(\\.?_?\\d+)+)/i)\n .replace(/[_\\s]/g, '.')\n .split('.')\n .map((versionNumber: string): string => versionNumber)[1],\n }\n );\n }\n\n /**\n * Returns if the device is running Windows (and if so which version)\n *\n * 'NT' => 'NT'\n * 'XP' => 'XP'\n * 'NT 5.0' => '2000'\n * 'NT 5.1' => 'XP'\n * 'NT 5.2' => '2003'\n * 'NT 6.0' => 'Vista'\n * 'NT 6.1' => '7'\n * 'NT 6.2' => '8'\n * 'NT 6.3' => '8.1'\n * 'NT 10.0' => '10'\n */\n get isWindows(): IDeviceResult | boolean {\n return (\n /windows /i.test(this.userAgent) && {\n version: this.match(1, /Windows ((NT|XP)( \\d\\d?.\\d)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an iOS device (and if so which version)\n */\n get isiOS(): IDeviceResult | boolean {\n return (\n !!this.iOSDevice && {\n version:\n this.match(1, /os (\\d+([_\\s]\\d+)*) like mac os x/i).replace(/[_\\s]/g, '.') ||\n this.match(1, /version\\/(\\d+(\\.\\d+)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an Android device (and if so which version)\n */\n get isAndroid(): IDeviceResult | boolean {\n return (\n this.isAndroidDevice && {\n version: this.match(1, /android[ \\/-](\\d+(\\.\\d+)*)/i),\n }\n );\n }\n\n /**\n * Returns the browser name and version\n */\n get browser(): IBrowserResult | boolean {\n const versionIdentifier = this.match(1, /version\\/(\\d+(\\.\\d+)?)/i);\n\n if (/opera/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: versionIdentifier || this.match(1, /(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/opr\\/|opios/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: this.match(1, /(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/SamsungBrowser/i.test(this.userAgent)) {\n // Samsung Browser\n return {\n name: 'Samsung Internet for Android',\n version: versionIdentifier || this.match(1, /(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/yabrowser/i.test(this.userAgent)) {\n // Yandex Browser\n return {\n name: 'Yandex Browser',\n version: versionIdentifier || this.match(1, /(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/ucbrowser/i.test(this.userAgent)) {\n // UC Browser\n return {\n name: 'UC Browser',\n version: this.match(1, /(?:ucbrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/msie|trident/i.test(this.userAgent)) {\n // Internet Explorer\n return {\n name: 'Internet Explorer',\n version: this.match(1, /(?:msie |rv:)(\\d+(\\.\\d+)?)/i),\n };\n } else if (/(edge|edgios|edga|edg)/i.test(this.userAgent)) {\n // Edge\n return {\n name: 'Microsoft Edge',\n version: this.match(2, /(edge|edgios|edga|edg)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/firefox|iceweasel|fxios/i.test(this.userAgent)) {\n // Firefox\n return {\n name: 'Firefox',\n version: this.match(1, /(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/chromium/i.test(this.userAgent)) {\n // Chromium\n return {\n name: 'Chromium',\n version: this.match(1, /(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/chrome|crios|crmo/i.test(this.userAgent)) {\n // Chrome\n return {\n name: 'Chrome',\n version: this.match(1, /(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/safari|applewebkit/i.test(this.userAgent)) {\n // Safari\n return {\n name: 'Safari',\n version: versionIdentifier,\n };\n } else {\n // Everything else\n return {\n name: this.match(1, /^(.*)\\/(.*) /),\n version: this.match(2, /^(.*)\\/(.*) /),\n };\n }\n }\n}","import { DetectUA } from \"./DetectUA\";\n\nconst detectUA = new DetectUA();\nconst userAgent = (navigator.userAgent || navigator.vendor).toLowerCase();\nconst browserName = typeof detectUA.browser === \"boolean\" ? \"\" : detectUA.browser.name\nconst audioElem = document.createElement(\"audio\");\n\nexport class SystemInfo {\n static isMobile = detectUA.isMobile || detectUA.isTablet;\n static isDesktop = detectUA.isDesktop;\n static device = SystemInfo.isMobile ? \"mobile\" : \"desktop\";\n static isAndroid = !!detectUA.isAndroid;\n static isIOS = !!detectUA.isiOS;\n static isMacOS = !!detectUA.isMacOS;\n static isWindows = typeof detectUA.isWindows === \"boolean\" ? detectUA.isWindows : detectUA.isWindows.version !== null;\n static isLinux = userAgent.indexOf(\"linux\") != -1;\n static ua = userAgent;\n static isEdge = browserName === \"Microsoft Edge\";\n static isIE = browserName === \"Internet Explorer\";\n static isFirefox = browserName === \"Firefox\";\n static isChrome = browserName === \"Chrome\";\n static isOpera = browserName === \"Opera\";\n static isSafari = browserName === \"Safari\";\n static isSupportMSAA = !userAgent.match(\"version/15.4 \");\n static isSupportOgg = !!audioElem.canPlayType(\"audio/ogg\");\n static isRetina = window.devicePixelRatio && window.devicePixelRatio >= 1.5;\n static devicePixelRatio = window.devicePixelRatio || 1;\n static cpuCoreCount = navigator.hardwareConcurrency || 1;\n static baseUrl = document.location.origin;\n static isIFrame = window.self !== window.top;\n}","import { MathUtils, Quaternion, Vector3 } from \"three\";\n\nconst { clamp } = MathUtils;\nconst { min, max, exp } = Math;\n\nconst kNegligibleResidual = 0.01;\nconst kLogNegligibleResidual = Math.log(kNegligibleResidual)// -4.605170186;\n\nexport function exponentialDamp(current: number, target: number, dampTime: number, deltaTime: number) {\n let k = -kLogNegligibleResidual / dampTime;\n return current + (target - current) * (1 - exp(-k * deltaTime));\n}\n\n// cuve like exponentialDecay but cost less\nexport function quarticDamp(current: number, target: number, dampTime: number, deltaTime: number) {\n let t = (1 - min(deltaTime, dampTime) / dampTime);\n let tt = t * t;\n return current + (target - current) * (1 - tt * tt);\n}\n\nexport function smoothDamp(\n state: Object & { _velocity?: number },\n current: number,\n target: number,\n smoothTime: number,\n maxSpeed: number,\n deltaTime: number\n) {\n if (state._velocity === undefined) {\n state._velocity = 0;\n }\n smoothTime = max(0.0001, smoothTime);\n let num = 2 / smoothTime;\n let num2 = num * deltaTime;\n let num3 = 1 / (1 + num2 + 0.48 * num2 * num2 + 0.235 * num2 * num2 * num2);\n let num4 = current - target;\n let num5 = target;\n let num6 = maxSpeed * smoothTime;\n num4 = clamp(num4, -num6, num6);\n target = current - num4;\n let num7 = (state._velocity + num * num4) * deltaTime;\n state._velocity = (state._velocity - num * num7) * num3;\n let num8 = target + (num4 + num7) * num3;\n if (num5 - current > 0 == num8 > num5) {\n num8 = num5;\n state._velocity = (num8 - num5) / deltaTime;\n }\n return num8;\n}\n\nexport function Quat_exponentialDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, exponentialDamp(0, 1, dampTime, deltaTime));\n}\n\nexport function Quat_quarticDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, quarticDamp(0, 1, dampTime, deltaTime));\n}\n\nexport function Quat_smoothDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, smoothDamp(out, 0, 1, dampTime, Infinity, deltaTime));\n}\n\nexport function Vec3_smoothDamp(current: Vector3, target: Vector3, dampTime: number, deltaTime: number, out: Vector3 = current) {\n return out.copy(current).lerp(target, smoothDamp(out, 0, 1, dampTime, Infinity, deltaTime));\n}","import { Vector3 } from \"three\";\n\nexport const Vector3_UNIT_X = Object.freeze(new Vector3(1, 0, 0));\nexport const Vector3_UNIT_Y = Object.freeze(new Vector3(0, 1, 0));\nexport const Vector3_UNIT_Z = Object.freeze(new Vector3(0, 0, 1));\nexport const Vector3_RIGHT = Object.freeze(new Vector3(1, 0, 0));\nexport const Vector3_UP = Object.freeze(new Vector3(0, 1, 0));\nexport const Vector3_ZERO = Object.freeze(new Vector3(0, 0, 0));\nexport const Vector3_ONE = Object.freeze(new Vector3(1, 1, 1));\nexport const Vector3_NEG_ONE = Object.freeze(new Vector3(-1, -1, -1));","import { MathUtils, Quaternion, Vector3 } from \"three\";\n\nconst { clamp } = MathUtils;\nconst { max, abs, acos } = Math;\n\nconst EPSILON = 1.e-6;\nconst __delta = new Vector3();\n\nexport function VInterpTo(current, target, deltaTime, speed, out = current) {\n if (speed <= 0) {\n return out.copy(target);\n }\n let dist = __delta.copy(target).sub(current);\n if (dist.lengthSq() < EPSILON) {\n return out.copy(target);\n }\n return out.copy(current).add(dist.multiplyScalar(clamp(deltaTime * speed, 0, 1)));\n}\n\nexport function VInterpConstantTo(current, target, deltaTime, speed, out = current) {\n let delta = __delta.copy(target).sub(current);\n let deltaM = delta.length();\n let maxStep = speed * deltaTime;\n if (deltaM > maxStep) {\n if (maxStep > 0) {\n let deltaN = delta.multiplyScalar(1 / deltaM);\n return out.copy(current).add(deltaN);\n }\n else {\n return out.copy(current);\n }\n }\n return out.copy(target);\n}\n\nexport function Quat_Equals(a: Quaternion, b: Quaternion, epsilon: number = EPSILON) {\n return abs(a.x - b.x) <= epsilon * max(1., abs(a.x), abs(b.x)) &&\n abs(a.y - b.y) <= epsilon * max(1., abs(a.y), abs(b.y)) &&\n abs(a.z - b.z) <= epsilon * max(1., abs(a.z), abs(b.z)) &&\n abs(a.w - b.w) <= epsilon * max(1., abs(a.w), abs(b.w));\n}\n\nexport function Quat_AngularDistance(a: Quaternion, b: Quaternion) {\n let innerProd = a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;\n return acos(2 * innerProd * innerProd - 1);\n}\n\nexport function QInterpTo(current: Quaternion, target: Quaternion, deltaTime: number, speed: number) {\n if (speed <= 0) {\n return target;\n }\n if (Quat_Equals(current, target)) {\n return target;\n }\n return current.slerp(target, clamp(speed * deltaTime, 0, 1));\n}\n\nexport function QInterpConstantTo(current, target, deltaTime, speed, out = current) {\n if (speed <= 0) {\n return out.copy(target);\n }\n if (Quat_Equals(current, target)) {\n return out.copy(target);\n }\n let deltaSpeed = clamp(speed * deltaTime, 0, 1);\n let angularDist = max(Quat_AngularDistance(current, target), EPSILON);\n return out.copy(current).slerp(target, clamp(deltaSpeed / angularDist, 0, 1))\n}\n\n//非线性\nexport function FInterpTo(current, target, deltaTime, speed) {\n if (speed <= 0) {\n return target;\n }\n let dist = target - current;\n if (abs(dist) < EPSILON) {\n return target;\n }\n return current + dist * clamp(speed * deltaTime, 0, 1);\n}\n\n//线性插值\nexport function FInterpConstantTo(current, target, deltaTime, speed) {\n let dist = target - current;\n if (abs(dist) < EPSILON) {\n return target;\n }\n let step = speed * deltaTime;\n return current + clamp(dist, -step, step);\n}","import { LinearInterpolant, MathUtils } from \"three\";\n\nconst { lerp, clamp } = MathUtils;\n\nfunction catmullRom(t: number, p0: number, p1: number, p2: number, p3: number) {\n const v0 = (p2 - p0) * 0.5;\n const v1 = (p3 - p1) * 0.5;\n const t2 = t * t;\n const t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (- 3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\nclass CurvePoint {\n\n constructor(\n public x: number = 0,\n public y: number = 0,\n public mode: number = 0) { }\n\n set(x: number, y: number) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n lerp(p: CurvePoint, t: number, out: CurvePoint = this) {\n out.x = lerp(this.x, p.x, t);\n out.y = lerp(this.y, p.y, t);\n return out;\n }\n}\n\nexport class AnimationCurve {\n needsUpdate: boolean = true;\n isAnimationCurve: boolean = true;\n\n private _samples: number = 100;\n private _interpolant: LinearInterpolant = new LinearInterpolant(\n new Float32Array(100), new Float32Array(100), 1, new Float32Array(100)\n );\n\n constructor(\n public name: string = \"\",\n public points: CurvePoint[] = [new CurvePoint(0, 0), new CurvePoint(1, 1)]\n ) { }\n\n private _getInterpolant(samples: number) {\n if (this._samples !== samples) {\n this._samples = samples;\n this._interpolant = new LinearInterpolant(\n new Float32Array(samples), new Float32Array(samples), 1, new Float32Array(samples)\n );\n }\n return this._interpolant;\n }\n\n createCurvePoint(x?: number, y?: number, mode?: number) {\n return new CurvePoint(x, y, mode);\n }\n\n resample(samples: number = 100) {\n const step = 1 / (samples - 1);\n const interpolant = this._getInterpolant(samples);\n const times = interpolant.parameterPositions;\n const values = interpolant.sampleValues;\n const point = this.createCurvePoint();\n\n for (let i = 0; i < samples; i++) {\n this.getPoint(i * step, point);\n times[i] = point.x;\n values[i] = point.y;\n }\n }\n\n evaluate(t: number) {\n if (this.needsUpdate) {\n this.needsUpdate = false;\n this.resample();\n }\n return this._interpolant.evaluate(t)[0];\n }\n\n getPoint(t: number, out: CurvePoint) {\n const points = this.points;\n\n if (t <= 0) {\n return out.set(t, points[0].y);\n }\n if (t >= 1) {\n return out.set(t, points[points.length - 1].y);\n }\n\n const p = (points.length - 1) * t;\n\n const intPoint = Math.floor(p);\n const weight = p - intPoint;\n\n const p0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n const p1 = points[intPoint];\n const p2 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n const p3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n\n if ((p1.mode === 1) || (p0 === p1 && p2.mode === 1)) {\n return p1.lerp(p2, weight, out);\n }\n return out.set(\n clamp(catmullRom(weight, p0.x, p1.x, p2.x, p3.x), 0, 1),\n clamp(catmullRom(weight, p0.y, p1.y, p2.y, p3.y), 0, 1)\n )\n }\n\n}","const { floor } = Math;\n\n// Copyright (C) 2016 Keijiro Takahashi\n// https://mrl.cs.nyu.edu/~perlin/noise/\nexport class Perlin {\n public static Noise(x: number): number;\n public static Noise(x: number, y: number): number;\n public static Noise(x: number, y: number, z: number): number;\n public static Noise(x: number, y?: number, z?: number) {\n let fade = Perlin._Fade;\n let grad = Perlin._Grad;\n let lerp = Perlin._Lerp;\n let p = Perlin._Permutation;\n\n if (y !== undefined && z !== undefined) {\n let xi = floor(x);\n let yi = floor(y);\n let zi = floor(z);\n let X = xi & 0xff; // FIND UNIT CUBE THAT\n let Y = yi & 0xff; // CONTAINS POINT.\n let Z = zi & 0xff;\n x -= xi; // FIND RELATIVE X,Y,Z\n y -= yi; // OF POINT IN CUBE.\n z -= zi;\n let u = fade(x); // COMPUTE FADE CURVES\n let v = fade(y); // FOR EACH OF X,Y,Z.\n let w = fade(z);\n let A = p[X] + Y, AA = p[A] + Z, AB = p[A + 1] + Z; // HASH COORDINATES OF\n let B = p[X + 1] + Y, BA = p[B] + Z, BB = p[B + 1] + Z; // THE 8 CUBE CORNERS,\n\n return lerp(w, lerp(v, lerp(u, grad(p[AA], x, y, z), // AND ADD\n grad(p[BA], x - 1, y, z)), // BLENDED\n lerp(u, grad(p[AB], x, y - 1, z), // RESULTS\n grad(p[BB], x - 1, y - 1, z))), // FROM 8\n lerp(v, lerp(u, grad(p[AA + 1], x, y, z - 1), // CORNERS\n grad(p[BA + 1], x - 1, y, z - 1)), // OF CUBE\n lerp(u, grad(p[AB + 1], x, y - 1, z - 1),\n grad(p[BB + 1], x - 1, y - 1, z - 1))));\n }\n else if (y !== undefined) {\n let xi = floor(x);\n let yi = floor(y);\n let X = xi & 0xff;\n let Y = yi & 0xff;\n x -= xi;\n y -= yi;\n let u = fade(x);\n let v = fade(y);\n let A = (p[X] + Y) & 0xff;\n let B = (p[X + 1] + Y) & 0xff;\n return lerp(v, lerp(u, grad(p[A], x, y),\n grad(p[B], x - 1, y)),\n lerp(u, grad(p[A + 1], x, y - 1),\n grad(p[B + 1], x - 1, y - 1)));\n }\n else {\n let xi = floor(x);\n let X = xi & 0xff;\n x -= xi;\n let u = fade(x);\n return lerp(u, grad(p[X], x),\n grad(p[X + 1], x - 1));\n }\n }\n\n public static Fbm(octave: number, x: number): number;\n public static Fbm(octave: number, x: number, y: number): number;\n public static Fbm(octave: number, x: number, y: number, z: number): number;\n public static Fbm(octave: number, x: number, y?: number, z?: number) {\n let f = 0;\n let w = 0.5;\n let noise = Perlin.Noise;\n if (y !== undefined && z !== undefined) {\n for (let i = 0; i < octave; i++) {\n f += w * noise(x, y, z);\n x *= 2.0;\n y *= 2.0;\n z *= 2.0;\n w *= 0.5;\n }\n }\n else if (y !== undefined) {\n for (let i = 0; i < octave; i++) {\n f += w * noise(x, y);\n x *= 2.0;\n y *= 2.0;\n w *= 0.5;\n }\n }\n else {\n for (let i = 0; i < octave; i++) {\n f += w * noise(x);\n x *= 2.0;\n w *= 0.5;\n }\n }\n return f;\n }\n\n private static _Fade(t: number) {\n return t * t * t * (t * (t * 6 - 15) + 10);\n }\n\n private static _Lerp(t: number, a: number, b: number) {\n return a + t * (b - a);\n }\n\n private static _Grad(hash: number, x: number): number;\n private static _Grad(hash: number, x: number, y: number): number;\n private static _Grad(hash: number, x: number, y: number, z: number): number\n private static _Grad(hash: number, x: number, y?: number, z?: number) {\n if (y !== undefined && z !== undefined) {\n let h = hash & 15; // CONVERT LO 4 BITS OF HASH CODE\n let u = h < 8 ? x : y, // INTO 12 GRADIENT DIRECTIONS.\n v = h < 4 ? y : (h == 12 || h == 14 ? x : z);\n return ((h & 1) == 0 ? u : -u) + ((h & 2) == 0 ? v : -v);\n }\n else if (y !== undefined) {\n return ((hash & 1) == 0 ? x : -x) + ((hash & 2) == 0 ? y : -y);\n }\n else {\n return (hash & 1) == 0 ? x : -x;\n }\n }\n\n private static _Permutation = [\n 151, 160, 137, 91, 90, 15,\n 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23,\n 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33,\n 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166,\n 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244,\n 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196,\n 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123,\n 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42,\n 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9,\n 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228,\n 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107,\n 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254,\n 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180,\n 151\n ]\n}\n","import { MathUtils, Object3D, Quaternion, Spherical, Vector2, Vector3 } from \"three\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { DeviceInput } from \"../DeviceInput\";\nimport { Easing } from \"../tween/tween\";\nimport { SystemInfo } from \"../SystemInfo\";\nimport { property } from \"../PropertyManager\";\nimport { Vector3_ZERO, quarticDamp } from \"../math\";\n\nconst { clamp, degToRad } = MathUtils;\nconst { abs, tan } = Math;\n\nexport const VCamFreeLookMode = {\n FREE: 0,\n TRANSLATE: 1,\n}\nexport type VCamFreeLookMode = typeof VCamFreeLookMode[keyof typeof VCamFreeLookMode];\n\nexport class FreelookVirtualCamera extends VirtualCamera {\n static __loc0 = new Vector2();\n static __loc1 = new Vector2();\n static __center = new Vector2();\n static __preCenter = new Vector2();\n static __moveDelta = new Vector2();\n static __worldPos = new Vector3();\n static __posDelta = new Vector3();\n static __posOffset = new Vector3();\n static __xAxis = new Vector3();\n static __yAxis = new Vector3();\n static __quat = new Quaternion();\n static __spherical = new Spherical();\n\n private _button: number = -1;\n private _touchID: number = -1;\n private _distanceDelta: number = 0;\n private _preLoc0: Vector2 = new Vector2();\n private _preLoc1: Vector2 = new Vector2();\n private _rotateDelta: Vector2 = new Vector2();\n private _panDelta: Vector2 = new Vector2();\n\n @property({ value: VCamFreeLookMode })\n mode: VCamFreeLookMode = VCamFreeLookMode.FREE;\n @property({ dir: \"set\" })\n forbidX: boolean = false;\n @property({ dir: \"set\" })\n forbidY: boolean = false;\n @property({ dir: \"set\" })\n forbidZ: boolean = false;\n @property({ dir: \"set\" })\n forbidPanX: boolean = false;\n @property({ dir: \"set\" })\n forbidPanY: boolean = false;\n @property({ dir: \"set\" })\n forbitPanOffsetY: boolean = false;\n\n rotateSpeed: number = 2;\n rotateSmoothing: number = 0.5;\n panSpeed: number = 2;\n panSmoothing: number = 0.5;\n panScale: Vector3 = new Vector3(1, 1, 1);\n phiMin: number = 0.001;\n phiMax: number = Math.PI - 0.001;\n thetaMin: number = -Infinity;\n thetaMax: number = Infinity;\n distanceMin: number = 0.001;\n distanceMax: number = Infinity;\n rotateTouchID: number = 0;\n lookAt = new Object3D();\n\n onEnable() {\n this.viewer.on(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.on(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.on(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.on(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.on(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.on(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n this.reset();\n }\n\n onDisable() {\n this.viewer.off(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.off(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.off(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.off(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.off(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.off(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n }\n\n reset() {\n this._button = -1;\n this._touchID = -1;\n this._rotateDelta.set(0, 0);\n this._panDelta.set(0, 0);\n this._distanceDelta = 0;\n }\n\n private _tweenPOI = {\n get position() { return this.node.position; },\n set position(v: Vector3) { this.node.position.copy(v); },\n get lookAt() { return this.lookAt.position; },\n set lookAt(v: Vector3) { this.lookAt.position.copy(v); },\n get trackedObjectOffset() { return this.trackedObjectOffset; },\n set trackedObjectOffset(v: Vector3) { this.trackedObjectOffset.copy(v); }\n }\n\n gotoPOI(\n position: Vector3,\n lookAt: Vector3,\n duration: number = 1,\n easing: (amount: number) => number = Easing.Quadratic.InOut\n ) {\n this.viewer.killTweensOf(this._tweenPOI);\n this.viewer.tween(this._tweenPOI).to({ position, lookAt, trackedObjectOffset: Vector3_ZERO }, duration).easing(easing).start();\n }\n\n private _onPointerDown(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = e.button;\n this._preLoc0.set(e.pageX, e.pageY);\n }\n\n private _onPointerUp(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = -1;\n }\n\n private _onPointerMove(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n FreelookVirtualCamera.__loc0.set(e.pageX, e.pageY);\n switch (this._button) {\n case 0: this._rotateDelta.add(this._calculateRotateDelta(FreelookVirtualCamera.__moveDelta, this._preLoc0, FreelookVirtualCamera.__loc0)); break;\n case 1:\n case 2:\n this._panDelta.add(this._calculatePanDelta(FreelookVirtualCamera.__moveDelta, this._preLoc0, FreelookVirtualCamera.__loc0)); break;\n }\n this._preLoc0.copy(FreelookVirtualCamera.__loc0);\n }\n\n private _onMouseWheel(e: WheelEvent) {\n if (this.lookAt) {\n let dist = FreelookVirtualCamera.__worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset).distanceTo(this.node.position);\n let distNew = dist + this._distanceDelta;\n if (e.deltaY > 0) {\n distNew *= this._calculateDistanceScale(1 / 0.85);\n }\n else if (e.deltaY < 0) {\n distNew *= this._calculateDistanceScale(0.85);\n }\n this._distanceDelta = distNew - dist;\n }\n }\n\n private _onTouchStart(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n let touches = e.touches;\n let rotateTouchID = this.rotateTouchID;\n if (touches.length > rotateTouchID + 1) {\n this._preLoc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n this._preLoc1.set(touches[rotateTouchID + 1].pageX, touches[rotateTouchID + 1].pageY);\n }\n else if (touches.length > rotateTouchID) {\n this._touchID = touches[rotateTouchID].identifier;\n this._preLoc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n }\n }\n\n private _onTouchMove(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n const { __loc0, __loc1, __worldPos, __moveDelta, __preCenter, __center } = FreelookVirtualCamera;\n\n let touches = e.touches;\n let rotateTouchID = this.rotateTouchID;\n if (touches.length > rotateTouchID + 1) {\n __loc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n __loc1.set(touches[rotateTouchID + 1].pageX, touches[rotateTouchID + 1].pageY);\n if (this.lookAt) {\n let dist = __worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset).distanceTo(this.node.position);\n let distNew = (dist + this._distanceDelta) * this._calculateDistanceScale(this._preLoc0.distanceTo(this._preLoc1) / __loc0.distanceTo(__loc1))\n this._distanceDelta = distNew - dist;\n }\n this._panDelta.add(this._calculatePanDelta(__moveDelta, __preCenter.copy(this._preLoc0).add(this._preLoc1).multiplyScalar(0.5), __center.copy(__loc0).add(__loc1).multiplyScalar(0.5)));\n this._preLoc0.copy(__loc0);\n this._preLoc1.copy(__loc1);\n }\n else if (touches.length > rotateTouchID) {\n if (this._touchID === touches[rotateTouchID].identifier) {\n __loc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n this._rotateDelta.add(this._calculateRotateDelta(__moveDelta, this._preLoc0, __loc0));\n this._preLoc0.copy(__loc0);\n }\n }\n }\n\n private _calculateDistanceScale(scale: number) {\n if (this.forbidZ) {\n scale = 1;\n }\n return scale;\n }\n\n private _calculateRotateDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n const domElement = this.viewer.canvas;\n out.copy(loc1).sub(loc0).multiplyScalar(this.rotateSpeed * 2 * Math.PI / domElement.height);\n out.y = -out.y;\n if (this.forbidX) {\n out.x = 0;\n }\n if (this.forbidY) {\n out.y = 0;\n }\n return out;\n }\n\n private _calculatePanDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n const domElement = this.viewer.canvas;\n out.copy(loc1).sub(loc0).multiplyScalar(this.panSpeed / domElement.height);\n if (this.forbidPanX) {\n out.x = 0;\n }\n if (this.forbidPanY) {\n out.y = 0;\n }\n return out;\n }\n\n update(dt: number) {\n if (!this.lookAt) return;\n\n const { __posDelta, __posOffset, __worldPos, __quat, __spherical, __xAxis, __yAxis } = FreelookVirtualCamera;\n\n __worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset);\n\n switch (this.mode) {\n case VCamFreeLookMode.FREE:\n if ((abs(this._rotateDelta.x) + abs(this._rotateDelta.y) + abs(this._distanceDelta)) > 0.001) {\n const { __posDelta, __posOffset, __worldPos } = FreelookVirtualCamera;\n __quat.setFromUnitVectors(this.node.up, Object3D.DEFAULT_UP);\n __posDelta.copy(this.node.position).sub(__worldPos);\n __posDelta.applyQuaternion(__quat);\n __spherical.setFromVector3(__posDelta);\n\n let dampFactor = quarticDamp(1, 0, this.rotateSmoothing, dt);\n this._rotateDelta.x = __spherical.theta - clamp(__spherical.theta - this._rotateDelta.x, this.thetaMin, this.thetaMax);\n __spherical.theta = __spherical.theta - this._rotateDelta.x * (1 - dampFactor);\n\n this._rotateDelta.y = clamp(__spherical.phi + this._rotateDelta.y, this.phiMin, this.phiMax) - __spherical.phi;\n __spherical.phi = clamp(__spherical.phi + this._rotateDelta.y * (1 - dampFactor), 0.001, Math.PI - 0.001);\n\n this._distanceDelta = clamp(__spherical.radius + this._distanceDelta, this.distanceMin, this.distanceMax) - __spherical.radius;\n __spherical.radius = __spherical.radius + this._distanceDelta * (1 - dampFactor);\n\n this._rotateDelta.multiplyScalar(dampFactor);\n this._distanceDelta *= dampFactor;\n\n __posDelta.setFromSpherical(__spherical);\n __posDelta.applyQuaternion(__quat.invert());\n\n this.node.position.copy(__posDelta.add(__worldPos));\n }\n break;\n case VCamFreeLookMode.TRANSLATE:\n if (abs(this._distanceDelta) > 0.001) {\n __posDelta.copy(this.node.position).sub(this.lookAt.position);\n\n let dampFactor = quarticDamp(1, 0, this.rotateSmoothing, dt);\n let dist0 = __posDelta.length();\n this._distanceDelta = clamp(dist0 + this._distanceDelta, this.distanceMin, this.distanceMax) - dist0;\n let dist = dist0 + this._distanceDelta * (1 - dampFactor);\n this._distanceDelta *= dampFactor;\n\n let pos = __posDelta.normalize().multiplyScalar(dist).add(this.lookAt.position);\n __posOffset.copy(pos).sub(this.node.position);\n this.trackedObjectOffset.add(__posOffset);\n this.node.position.copy(pos);\n\n __worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset);\n }\n break;\n }\n\n if (abs(this._panDelta.x) + abs(this._panDelta.y) > 0.001) {\n __posDelta.copy(this.node.position).sub(__worldPos);\n\n __xAxis.setFromMatrixColumn(this.node.matrix, 0);\n __yAxis.setFromMatrixColumn(this.node.matrix, 1);\n\n if (this.forbitPanOffsetY) {\n __yAxis.y = 0;\n __yAxis.normalize();\n }\n\n let length = __posDelta.length() * 2 * tan(degToRad(this.fov * 0.5));\n\n let dampFactor = quarticDamp(1, 0, this.panSmoothing, dt);\n\n let trackedObjectOffset = this.trackedObjectOffset;\n trackedObjectOffset.sub(__xAxis.multiplyScalar(this._panDelta.x * length * (1 - dampFactor)));\n trackedObjectOffset.add(__yAxis.multiplyScalar(this._panDelta.y * length * (1 - dampFactor)));\n\n this._panDelta.multiplyScalar(dampFactor);\n\n __worldPos.copy(this.lookAt.position).add(trackedObjectOffset);\n this.node.position.copy(__posDelta.add(__worldPos));\n }\n\n this.node.lookAt(__worldPos);\n }\n}","import { BoxGeometry, Material, Mesh } from \"three\";\n\nexport class Box<M extends Material | Material[] = Material | Material[]> extends Mesh<BoxGeometry, M> {\n constructor(...args: ConstructorParameters<typeof BoxGeometry>) {\n super(new BoxGeometry(...args));\n }\n}","import { Material, Mesh, SphereGeometry } from \"three\";\n\nexport class Sphere<M extends Material | Material[] = Material | Material[]> extends Mesh<SphereGeometry, M> {\n constructor(...args: ConstructorParameters<typeof SphereGeometry>) {\n super(new SphereGeometry(...args));\n }\n}","import { Material, Mesh, PlaneGeometry } from \"three\";\n\nexport class Plane<M extends Material | Material[] = Material | Material[]> extends Mesh<PlaneGeometry, M> {\n constructor(...args: ConstructorParameters<typeof PlaneGeometry>) {\n super(new PlaneGeometry(...args));\n }\n}\n","import {\n BufferGeometry,\n Color,\n ColorRepresentation,\n Matrix4,\n Mesh,\n PerspectiveCamera,\n PlaneGeometry,\n Vector3,\n Vector4,\n Plane,\n WebGLRenderTarget,\n HalfFloatType,\n ShaderMaterial,\n UniformsUtils,\n Scene,\n WebGLRenderer\n} from \"three\";\n\nconst ReflectorShader = {\n name: 'ReflectorShader',\n uniforms: {\n color: { value: null },\n tDiffuse: { value: null },\n textureMatrix: { value: null }\n },\n\n vertexShader: /* glsl */`\n\t\tuniform mat4 textureMatrix;\n\t\tvarying vec4 vUv;\n\n\t\t#include <common>\n\t\t#include <logdepthbuf_pars_vertex>\n\n\t\tvoid main() {\n\t\t\tvUv = textureMatrix * vec4( position, 1.0 );\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t#include <logdepthbuf_vertex>\n\t\t}`,\n\n fragmentShader: /* glsl */`\n\t\tuniform vec3 color;\n\t\tuniform sampler2D tDiffuse;\n\t\tvarying vec4 vUv;\n\n\t\t#include <logdepthbuf_pars_fragment>\n\n\t\tfloat blendOverlay( float base, float blend ) {\n\t\t\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\t\t}\n\n\t\tvec3 blendOverlay( vec3 base, vec3 blend ) {\n\t\t\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n\t\t}\n\n\t\tvoid main() {\n\t\t\t#include <logdepthbuf_fragment>\n\n\t\t\tvec4 base = texture2DProj( tDiffuse, vUv );\n\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\n\t\t\t#include <tonemapping_fragment>\n\t\t\t#include <colorspace_fragment>\n\t\t}`\n}\n\nexport class Reflector extends Mesh<BufferGeometry, ShaderMaterial> {\n isReflector: boolean = true;\n\n constructor(options: {\n textureWidth?: number,\n textureHeight?: number,\n clipBias?: number,\n multisample?: number,\n color?: ColorRepresentation,\n normal?: Vector3,\n material?: ShaderMaterial,\n geometry?: BufferGeometry,\n layer?: number,\n } = {}) {\n super(options.geometry || new PlaneGeometry());\n\n const color = (options.color !== undefined) ? new Color(options.color) : new Color(0x7F7F7F);\n const textureWidth = options.textureWidth || 512;\n const textureHeight = options.textureHeight || 512;\n const clipBias = options.clipBias || 0;\n const multisample = (options.multisample !== undefined) ? options.multisample : 4;\n const defaultNormal = options.normal || new Vector3(0, 0, 1);\n\n const reflectorPlane = new Plane();\n const normal = new Vector3();\n const reflectorWorldPosition = new Vector3();\n const cameraWorldPosition = new Vector3();\n const rotationMatrix = new Matrix4();\n const lookAtPosition = new Vector3(0, 0, - 1);\n const clipPlane = new Vector4();\n\n const view = new Vector3();\n const target = new Vector3();\n const q = new Vector4();\n\n const textureMatrix = new Matrix4();\n const virtualCamera = new PerspectiveCamera();\n virtualCamera.layers.set(options.layer || 0);\n\n const renderTarget = new WebGLRenderTarget(textureWidth, textureHeight, { samples: multisample, type: HalfFloatType });\n\n const shader = ReflectorShader;\n const material = options.material || new ShaderMaterial({\n name: (shader.name !== undefined) ? shader.name : 'unspecified',\n uniforms: UniformsUtils.clone(shader.uniforms),\n fragmentShader: shader.fragmentShader,\n vertexShader: shader.vertexShader\n });\n\n if (material.uniforms.tDiffuse) {\n material.uniforms.tDiffuse.value = renderTarget.texture;\n }\n if (material.uniforms.textureMatrix) {\n material.uniforms.textureMatrix.value = textureMatrix;\n }\n if (material.uniforms.color) {\n material.uniforms.color.value = color;\n }\n\n this.material = material;\n\n const scope = this;\n this.onBeforeRender = function (renderer: WebGLRenderer, scene: Scene, camera: PerspectiveCamera) {\n\n reflectorWorldPosition.setFromMatrixPosition(scope.matrixWorld);\n cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);\n\n rotationMatrix.extractRotation(scope.matrixWorld);\n\n normal.copy(defaultNormal);\n normal.applyMatrix4(rotationMatrix);\n\n view.subVectors(reflectorWorldPosition, cameraWorldPosition);\n\n // Avoid rendering when reflector is facing away\n\n if (view.dot(normal) > 0) return;\n\n view.reflect(normal).negate();\n view.add(reflectorWorldPosition);\n\n rotationMatrix.extractRotation(camera.matrixWorld);\n\n lookAtPosition.set(0, 0, -1);\n lookAtPosition.applyMatrix4(rotationMatrix);\n lookAtPosition.add(cameraWorldPosition);\n\n target.subVectors(reflectorWorldPosition, lookAtPosition);\n target.reflect(normal).negate();\n target.add(reflectorWorldPosition);\n\n virtualCamera.position.copy(view);\n virtualCamera.up.set(0, 1, 0);\n virtualCamera.up.applyMatrix4(rotationMatrix);\n virtualCamera.up.reflect(normal);\n virtualCamera.lookAt(target);\n\n virtualCamera.far = camera.far; // Used in WebGLBackground\n\n virtualCamera.updateMatrixWorld();\n virtualCamera.projectionMatrix.copy(camera.projectionMatrix);\n\n // Update the texture matrix\n textureMatrix.set(\n 0.5, 0.0, 0.0, 0.5,\n 0.0, 0.5, 0.0, 0.5,\n 0.0, 0.0, 0.5, 0.5,\n 0.0, 0.0, 0.0, 1.0\n );\n textureMatrix.multiply(virtualCamera.projectionMatrix);\n textureMatrix.multiply(virtualCamera.matrixWorldInverse);\n textureMatrix.multiply(scope.matrixWorld);\n\n // Now update projection matrix with new clip plane, implementing code from: http://www.terathon.com/code/oblique.html\n // Paper explaining this technique: http://www.terathon.com/lengyel/Lengyel-Oblique.pdf\n reflectorPlane.setFromNormalAndCoplanarPoint(normal, reflectorWorldPosition);\n reflectorPlane.applyMatrix4(virtualCamera.matrixWorldInverse);\n\n clipPlane.set(reflectorPlane.normal.x, reflectorPlane.normal.y, reflectorPlane.normal.z, reflectorPlane.constant);\n\n const projectionMatrix = virtualCamera.projectionMatrix;\n\n q.x = (Math.sign(clipPlane.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0];\n q.y = (Math.sign(clipPlane.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5];\n q.z = - 1.0;\n q.w = (1.0 + projectionMatrix.elements[10]) / projectionMatrix.elements[14];\n\n // Calculate the scaled plane vector\n clipPlane.multiplyScalar(2.0 / clipPlane.dot(q));\n\n // Replacing the third row of the projection matrix\n projectionMatrix.elements[2] = clipPlane.x;\n projectionMatrix.elements[6] = clipPlane.y;\n projectionMatrix.elements[10] = clipPlane.z + 1.0 - clipBias;\n projectionMatrix.elements[14] = clipPlane.w;\n\n // Render\n scope.visible = false;\n\n const currentRenderTarget = renderer.getRenderTarget();\n const currentActiveCubeFace = renderer.getActiveCubeFace();\n const currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n const currentXrEnabled = renderer.xr.enabled;\n const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;\n\n renderer.xr.enabled = false; // Avoid camera modification\n renderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows\n\n renderer.setRenderTarget(renderTarget);\n\n renderer.state.buffers.depth.setMask(true); // make sure the depth buffer is writable so it can be properly cleared, see #18897\n\n if (renderer.autoClear === false) renderer.clear();\n renderer.render(scene, virtualCamera);\n\n renderer.xr.enabled = currentXrEnabled;\n renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\n renderer.setRenderTarget(currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel);\n\n // Restore viewport\n\n const viewport = camera.viewport;\n\n if (viewport !== undefined) {\n renderer.state.viewport(viewport);\n }\n\n scope.visible = true;\n\n };\n\n this.getRenderTarget = function () {\n return renderTarget;\n };\n this.getTextureMatrix = function () {\n return textureMatrix;\n }\n this.dispose = function () {\n renderTarget.dispose();\n scope.material.dispose();\n };\n }\n\n getTextureMatrix: () => Matrix4;\n getRenderTarget: () => WebGLRenderTarget;\n dispose: () => void;\n}","export const vert_fullscreen = /*glsl*/`\nvarying vec2 vUv;\nvoid main() {\n\tvUv = position.xy * 0.5 + 0.5;\n\tgl_Position = vec4(position.xy, 1.0, 1.0);\n}\n`","\nexport const frag_BoxfilterBlur = `\n#include <common>\nuniform sampler2D tLast;\nuniform sampler2D tBlur;\nuniform float\t uLod;\nuniform float\t uWeight;\nvarying vec2 vUv;\n\nvoid main() {\n\tvec3 col0 = textureLod(tLast, vUv, 0.).rgb;\n\tvec3 col1 = textureLod(tBlur, vUv, uLod).rgb;\n gl_FragColor = vec4(mix(col0, col1, uWeight), 1.);\n}\n`","export const frag_panoramaToCubeMap = `\n#include <xv_common>\n\nvarying vec2 vUv;\nuniform sampler2D tMain;\nuniform int uFace;\nuniform vec4 uTilingOffset;\n\nvec3 uvToXYZ(int face, vec2 uv) {\n if (face == 0) return vec3(-1.0, uv.y, -uv.x);\n else if (face == 1) return vec3(1.0, uv.y, uv.x);\n else if (face == 2) return vec3(-uv.x, -1.0, uv.y);\n else if (face == 3) return vec3(-uv.x, 1.0, -uv.y);\n else if (face == 4) return vec3(-uv.x, uv.y, 1.0);\n else return vec3(uv.x, uv.y, -1.0);\n}\n\nvec4 panoramaToCubeMap(int face, vec2 uv_i) {\n vec2 uv = uv_i * 2.0 - 1.0;\n vec3 dir = normalize(uvToXYZ(face, uv));\n vec2 uv_o = dirToUv(dir);\n uv_o = vec2(uv_o.x, uv_o.y) * uTilingOffset.xy + uTilingOffset.zw;\n return texture(tMain, uv_o);\n}\n\nvoid main() {\n gl_FragColor = panoramaToCubeMap(uFace, vUv);\n}\n`\n\nexport const frag_cubeMapToPanorama = `\n#include <xv_common>\n\nvarying vec2 vUv;\nuniform samplerCube tMain;\n\nvec4 cubeMapToPanorama(vec2 uv_i) {\n return texture(tMain, uvToDir(uv_i));\n}\n\nvoid main() {\n gl_FragColor = cubeMapToPanorama(vUv);\n}\n`","import {\n Color,\n CubeTexture,\n Matrix3,\n Matrix4,\n Quaternion,\n ShaderMaterial,\n Texture,\n UniformsUtils,\n Vector2,\n Vector3,\n Vector4\n} from \"three\";\n\nexport function getShaderMaterial<T extends {\n [name: string]:\n | CubeTexture\n | Texture\n | Int32Array\n | Float32Array\n | Matrix4\n | Matrix3\n | Quaternion\n | Vector4\n | Vector3\n | Vector2\n | Color\n | number\n | boolean\n | Array<any>\n | null\n}>(\n uniforms: T,\n vertexShader: string,\n fragmentShader: string,\n onInit?: (material?: ShaderMaterial) => void\n) {\n const material = class extends ShaderMaterial {\n constructor(parameters = {}) {\n const entries = Object.entries(uniforms)\n // Create unforms and shaders\n super({\n uniforms: entries.reduce((acc, [name, value]) => {\n const uniform = UniformsUtils.clone({ [name]: { value } })\n return {\n ...acc,\n ...uniform,\n }\n }, {}),\n vertexShader,\n fragmentShader,\n })\n // Create getter/setters\n entries.forEach(([name]) =>\n Object.defineProperty(this, name, {\n get: () => this.uniforms[name].value,\n set: (v) => (this.uniforms[name].value = v),\n })\n )\n\n // Assign parameters, this might include uniforms\n Object.assign(this, parameters)\n // Call onInit\n if (onInit) onInit(this)\n }\n } as unknown as typeof ShaderMaterial & T & ShaderMaterial;\n return material;\n}","import { Color, IUniform, ShaderMaterial, Texture, WebGLProgramParametersWithUniforms, WebGLRenderer } from \"three\";\nimport { property } from \"../PropertyManager\";\n\nconst vert_Reflector = `\nuniform mat4 textureMatrix;\nvarying vec4 vUv4;\nvarying vec2 vUv;\n\n#ifdef USE_UV1\n varying vec2 vUv1;\n#endif\n\n#ifdef USE_UV2\n varying vec2 vUv2;\n#endif\n\n#ifdef USE_UV3\n varying vec2 vUv3;\n#endif\n\nvarying vec3 vViewPosition;\n\n#include <common>\n#include <normal_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n\nvoid main() {\n #include <beginnormal_vertex>\n #include <defaultnormal_vertex>\n\n vec4 positionWS = modelMatrix * vec4(position, 1.0);\n vec4 mvPosition = viewMatrix * positionWS;\n\n vUv = uv;\n\n#ifdef USE_UV1 \n vUv1 = uv1;\n#endif\n\n#ifdef USE_UV2 \n vUv2 = uv2;\n#endif\n\n#ifdef USE_UV3 \n vUv3 = uv2;\n#endif\n\n vUv4 = textureMatrix * vec4(position, 1.0);\n\n vViewPosition = -mvPosition.xyz;\n vNormal = normalize(transformedNormal);\n\n gl_Position = projectionMatrix * mvPosition;\n #include <logdepthbuf_vertex>\n}\n`\n\nconst frag_Reflector = `\nuniform vec3 color;\nuniform float roughness;\nuniform float metalness;\nuniform sampler2D tDiffuse;\nuniform sampler2D normalMap;\nuniform sampler2D roughnessMap;\nuniform sampler2D aoMap;\nuniform float aoMapIntensity;\nuniform sampler2D lightMap;\nuniform float lightMapIntensity;\n\nvarying vec2 vUv;\n\n#ifdef USE_UV1\n varying vec2 vUv1;\n#endif\n\n#ifdef USE_UV2\n varying vec2 vUv2;\n#endif\n\n#ifdef USE_UV3\n varying vec2 vUv3;\n#endif\n\nvarying vec4 vUv4;\nvarying vec3 vViewPosition;\nvarying vec3 vNormal;\n\n#include <common>\n#include <lights_physical_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n\nvoid main() {\n #include <logdepthbuf_fragment>\n\n vec4 texelNormal = texture2D(normalMap, UV_NORMAL);\n vec3 normal = normalize(vec3(texelNormal.r * 2.0 - 1.0, texelNormal.b, texelNormal.g * 2.0 - 1.0));\n vec3 coord = vUv4.xyz / vUv4.w;\n vec2 reflectUv = coord.xy + coord.z * normal.xz * 0.05;\n\n vec3 geometryNormal = normalize(vNormal);\n vec3 geometryViewDir = normalize(vViewPosition);\n\n vec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\n float metalnessFactor = metalness;\n vec3 diffuseColor = color.rgb * ( 1.0 - metalnessFactor );\n vec3 specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n float specularF90 = 1.0;\n\n float roughnessFactor = texture2D(roughnessMap, UV_ROUGHNESS).g * roughness;\n\n computeMultiscattering( geometryNormal, geometryViewDir, specularColor, specularF90, roughnessFactor, singleScattering, multiScattering );\n\n vec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\n vec3 irradiance = vec3(0.);\n irradiance += texture2D(lightMap, UV_LIGHTMAP).rgb * lightMapIntensity;\n\n float lod = roughnessFactor * (1.7 - 0.7 * roughnessFactor) * 6.;\n vec4 reflectColor = textureLod(tDiffuse, reflectUv, lod);\n\n vec3 f_specular = vec3(0.);\n vec3 f_diffuse = vec3(0.);\n\n f_specular += reflectColor.rgb * (1.0 - roughnessFactor * roughnessFactor) + multiScattering * irradiance;\n f_diffuse += diffuse * irradiance;\n\n float ambientOcclusion = mix(1., texture2D(aoMap, UV_AO).r, aoMapIntensity);\n float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\n f_specular *= computeSpecularOcclusion(dotNV, ambientOcclusion, roughnessFactor);\n\n gl_FragColor = vec4(f_specular + f_diffuse, 1.);\n\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n}\n`\n\nexport class ReflectorMaterial extends ShaderMaterial {\n\n vertexShader: string = vert_Reflector;\n fragmentShader: string = frag_Reflector;\n defines: { [key: string]: any; } = {\n UV_AO: \"vUv\",\n UV_LIGHTMAP: \"vUv\",\n UV_ROUGHNESS: \"vUv\",\n UV_NORMAL: \"vUv\",\n }\n uniforms: { [uniform: string]: IUniform<any>; } = {\n color: { value: new Color(0xffffff) },\n tDiffuse: { value: null },\n textureMatrix: { value: null },\n metalness: { value: 0 },\n roughness: { value: 1 },\n roughnessMap: { value: null },\n normalMap: { value: null },\n aoMap: { value: null },\n aoMapIntensity: { value: 1 },\n lightMap: { value: null },\n lightMapIntensity: { value: 1 },\n }\n\n onBeforeCompile(shader: WebGLProgramParametersWithUniforms, renderer: WebGLRenderer): void {\n const channels = [];\n if (this.aoMap && this.aoMap.channel) {\n channels.push([\"UV_AO\", this.aoMap.channel]);\n }\n if (this.lightMap && this.lightMap.channel) {\n channels.push([\"UV_LIGHTMAP\", this.lightMap.channel]);\n }\n if (this.roughnessMap && this.roughnessMap.channel) {\n channels.push([\"UV_ROUGHNESS\", this.roughnessMap.channel]);\n }\n if (this.normalMap && this.normalMap.channel) {\n channels.push([\"UV_NORMAL\", this.normalMap.channel]);\n }\n channels.forEach(([key, channel]) => {\n this.defines[key] = \"vUv\" + channel;\n })\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get metalness() {\n return this.uniforms.metalness.value;\n }\n set metalness(v: number) {\n this.uniforms.metalness.value = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get roughness() {\n return this.uniforms.roughness.value;\n }\n set roughness(v: number) {\n this.uniforms.roughness.value = v;\n }\n\n get roughnessMap() {\n return this.uniforms.roughnessMap.value;\n }\n set roughnessMap(v: Texture) {\n this.uniforms.roughnessMap.value = v;\n this.needsUpdate = true;\n }\n\n get normalMap() {\n return this.uniforms.normalMap.value;\n }\n set normalMap(v: Texture) {\n this.uniforms.normalMap.value = v;\n this.needsUpdate = true;\n }\n\n get aoMap() {\n return this.uniforms.aoMap.value;\n }\n set aoMap(v: Texture) {\n this.uniforms.aoMap.value = v;\n this.needsUpdate = true;\n }\n\n get lightMap() {\n return this.uniforms.lightMap.value;\n }\n set lightMap(v: Texture) {\n this.uniforms.lightMap.value = v;\n this.needsUpdate = true;\n }\n}","import { ObjectInstance } from \"./ObjectInstance\";\nimport { Viewer } from \"./Viewer\";\n\nexport class Plugin extends ObjectInstance {\n viewer: Viewer;\n type: string = \"Plugin\";\n install?(): void;\n uninstall?(): void;\n onUpdate?(dt: number): void;\n onRender?(dt: number): void;\n}","import { Object3D, Scene } from \"three\";\nimport { Plugin } from \"../Plugin\";\nimport { Viewer } from \"../Viewer\";\n\nexport class DebugPlugin extends Plugin {\n\n static Instance(viewer: Viewer) {\n return viewer.getPlugin(DebugPlugin, true);\n }\n\n scene: Scene = new Scene();\n\n add(node: Object3D) {\n this.scene.add(node);\n return node;\n }\n\n remove(node: Object3D) {\n this.scene.remove(node);\n return node;\n }\n\n onRender(dt: number): void {\n const { renderer, camera } = this.viewer;\n const autoClear = renderer.autoClear;\n renderer.autoClear = false;\n renderer.render(this.scene, camera);\n renderer.autoClear = autoClear;\n }\n}","import { AdditiveBlending, NoBlending, OrthographicCamera, ShaderMaterial, Texture, WebGLRenderTarget } from \"three\";\nimport { vert_fullscreen } from \"../../materials\";\n\nexport const LOD_MIN = 4;\nexport const _flatCamera = /*@__PURE__*/ new OrthographicCamera();\n\nexport function _setViewport(\n target: WebGLRenderTarget,\n x: number,\n y: number,\n width: number,\n height: number\n) {\n target.viewport.set(x, y, width, height);\n target.scissor.set(x, y, width, height);\n}\n\nexport function _getCommonVertexShader() {\n\n return /* glsl */`\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\t\t\t} else if ( face == 1.0 ) {\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\t\t\t} else if ( face == 2.0 ) {\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\t\t\t} else if ( face == 3.0 ) {\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\t\t\t} else if ( face == 4.0 ) {\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\t\t\t} else if ( face == 5.0 ) {\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\t\t}\n\t`;\n}\n\nexport function _getClearMaterial() {\n return new ShaderMaterial({\n name: \"Clear\",\n uniforms: {\n map: { value: null },\n intensity: { value: 1 }\n },\n vertexShader: vert_fullscreen,\n fragmentShader: /* glsl */ `\n uniform sampler2D map;\n uniform float intensity;\n varying vec2 vUv;\n void main() {\n vec4 col = texture2D(map, vUv);\n gl_FragColor = vec4(col.rgb * intensity, col.a);\n }\n `,\n blending: NoBlending,\n depthWrite: false,\n depthTest: false,\n })\n}\n\nexport function _getCubeMapMaterial() {\n return new ShaderMaterial({\n name: \"CubeMapToCubeUV\",\n uniforms: {\n envMap: { value: null },\n lod: { value: 0 }\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */`\n precision mediump float;\n precision mediump int;\n\n varying vec3 vOutputDirection;\n uniform samplerCube envMap;\n uniform float lod;\n\n void main() {\n gl_FragColor = textureCubeLodEXT(envMap, vOutputDirection, lod);\n }\n `,\n blending: AdditiveBlending,\n depthWrite: false,\n depthTest: false,\n });\n}\n\nexport function _getMipCopyMaterial(\n lodMax: number,\n width: number,\n height: number,\n) {\n return new ShaderMaterial({\n name: \"MipBlurToCubeUV\",\n defines: {\n CUBEUV_TEXEL_WIDTH: 1.0 / width,\n CUBEUV_TEXEL_HEIGHT: 1.0 / height,\n CUBEUV_MAX_MIP: `${lodMax}.0`,\n },\n uniforms: {\n cubeUVMap: { value: null },\n lod: { value: 0 },\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */ `\n precision mediump float;\n precision mediump int;\n\n #define ENVMAP_TYPE_CUBE_UV\n #include <cube_uv_reflection_fragment>\n\n varying vec3 vOutputDirection;\n\n uniform sampler2D cubeUVMap;\n uniform float lod;\n\n void main() {\n vec3 col = bilinearCubeUV(cubeUVMap, vOutputDirection, CUBEUV_MAX_MIP - lod);\n gl_FragColor = vec4(col, 1.);\n }\n `,\n blending: AdditiveBlending,\n depthWrite: false,\n depthTest: false,\n })\n}\n\nexport function _getMipBlurMaterial(\n lodMax: number,\n width: number,\n height: number,\n) {\n return new ShaderMaterial({\n name: \"MipBlurToCubeUV\",\n defines: {\n CUBEUV_TEXEL_WIDTH: 1.0 / width,\n CUBEUV_TEXEL_HEIGHT: 1.0 / height,\n CUBEUV_MAX_MIP: `${lodMax}.0`,\n },\n uniforms: {\n envMap: { value: null },\n cubeUVMap: { value: null },\n weight: { value: 1 },\n lod: { value: 0 },\n exposure: { value: 1 },\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */ `\n precision mediump float;\n precision mediump int;\n\n #define ENVMAP_TYPE_CUBE_UV\n #include <cube_uv_reflection_fragment>\n\n varying vec3 vOutputDirection;\n\n uniform sampler2D cubeUVMap;\n uniform samplerCube envMap;\n uniform float weight;\n uniform float lod;\n uniform float exposure;\n\n void main() {\n vec3 col0 = bilinearCubeUV(cubeUVMap, vOutputDirection, CUBEUV_MAX_MIP - (lod + 1.));\n vec3 col1 = textureCubeLodEXT(envMap, vOutputDirection, lod).rgb * exposure;\n gl_FragColor = vec4(mix(col0, col1, weight), 1.);\n }\n `,\n blending: NoBlending,\n depthWrite: false,\n depthTest: false,\n })\n}","export interface ICallTarget {\n uuid: string;\n}\n\nclass Caller {\n private _target: ICallTarget | null = null;\n private _callback: Function | null = null;\n private _interval: number = 0;\n private _repeat: number = 0;\n\n private _elapsed: number = 0;\n private _lastTime: number = 0;\n private _repeatForever: boolean = false;\n private _pause: boolean = false;\n\n get pause() {\n return this._pause;\n }\n\n set pause(v: boolean) {\n this._pause = v;\n }\n\n get target() {\n return this._target;\n }\n\n get callback() {\n return this._callback;\n }\n\n constructor(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n this._target = target;\n this._callback = callback;\n this._interval = interval;\n this._repeat = repeat;\n this._repeatForever = repeat === -1;\n }\n\n get lived() {\n return this._repeat > 0 || this._repeatForever;\n }\n\n update(dt: number) {\n if (this._pause) return;\n if (this._repeat > 0 || this._repeatForever) {\n this._elapsed += dt;\n if (this._elapsed >= this._interval) {\n this.trigger(this._elapsed - this._lastTime);\n this._elapsed -= this._interval;\n this._lastTime = this._elapsed;\n this._repeat--;\n }\n }\n }\n\n trigger(dt: number) {\n if (this._target && this._callback) {\n this._callback.call(this._target, dt, this._elapsed);\n }\n }\n}\n\nclass Callers {\n private _target!: ICallTarget;\n private _callers!: Caller[];\n\n get target() {\n return this._target;\n }\n\n get callers() {\n return this._callers;\n }\n\n constructor(target: ICallTarget, callers: Caller[]) {\n this._target = target;\n this._callers = callers;\n }\n}\n\nexport class Scheduler {\n private _callers: { [k: string]: Caller[] } = {}\n private _callersArray: Callers[] = [];\n\n pause(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = true);\n }\n\n resume(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = false);\n }\n\n schedule(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n let callers = this._callers[target.uuid];\n if (callers === undefined) {\n callers = this._callers[target.uuid] = [];\n this._callersArray.push(new Callers(target, callers));\n }\n callers.push(new Caller(target, callback, interval, repeat));\n }\n\n unshedule(target: ICallTarget, callback: Function) {\n let callers = this._callers[target.uuid];\n if (callers) {\n let index = callers.findIndex(v => v.callback === callback);\n if (index !== -1) callers.splice(index, 1);\n }\n }\n\n unscheduleAll(target: ICallTarget) {\n delete this._callers[target.uuid];\n let index = this._callersArray.findIndex(v => v.target === target);\n if (index !== -1) this._callersArray.splice(index, 1);\n }\n\n update(dt: number) {\n let callers: Caller[];\n let callersArray = this._callersArray;\n for (let j = callersArray.length; j--;) {\n callers = callersArray[j].callers;\n for (let i = callers.length; i--;) {\n if (callers[i].lived) callers[i].update(dt);\n else callers.splice(i, 1);\n }\n }\n }\n}","import { Component } from \"./Component\";\n\nclass Invoker<T> {\n protected _targets: T[] = [];\n protected _callback: (target: T, dt: number) => any;\n\n constructor(callback: (target: T, dt: number) => any) {\n this._callback = callback;\n }\n\n add(target: any) {\n this._targets.push(target);\n }\n\n remove(target: any) {\n let index = this._targets.indexOf(target);\n if (index !== -1) {\n this._targets.splice(index, 1);\n }\n }\n\n invoke(dt: number) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, dt);\n }\n }\n}\n\nclass InvokerOneCall<T> extends Invoker<T> {\n invoke(dt: number) {\n if (this._targets.length > 0) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, dt);\n }\n this._targets.length = 0;\n }\n }\n}\n\nexport class ComponentScheduler {\n startInvoker: Invoker<Component> = new InvokerOneCall(comp => comp.start!());\n updateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.update!(dt));\n lastUpdateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.lastUpdate!(dt));\n\n start() {\n this.startInvoker.invoke(0);\n }\n\n update(dt: number) {\n this.updateInvoker.invoke(dt);\n }\n\n lastUpdate(dt: number) {\n this.lastUpdateInvoker.invoke(dt);\n }\n\n enableComponent(comp: Component, enable: boolean) {\n if (enable) {\n if (!comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = true;\n if (comp.onEnable) {\n comp.onEnable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n comp.flags.IsStartCalled = true;\n this.startInvoker.add(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.add(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.add(comp);\n }\n }\n }\n else {\n if (comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = false;\n if (comp.onDisable) {\n comp.onDisable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n this.startInvoker.remove(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.remove(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.remove(comp);\n }\n }\n }\n }\n}","import { Object3D } from \"three\";\nimport { Scheduler } from \"./Scheduler\";\nimport { Component } from \"./Component\";\nimport { ComponentScheduler } from \"./ComponentScheduler\";\nimport { Viewer } from \"./Viewer\";\n\n\ntype ComponentConstructor = new () => Component;\n\ninterface DependentInfo {\n mode: DependentMode;\n components: ComponentConstructor[];\n}\n\nexport enum DependentMode {\n /** Check only, throw error if dependent components do not exist. */\n CheckOnly,\n /** Auto add if dependent components do not exist. */\n AutoAdd\n}\n\nexport function dependencies(\n componentOrComponents: ComponentConstructor | ComponentConstructor[],\n mode: DependentMode = DependentMode.CheckOnly\n) {\n return function <T extends ComponentConstructor>(target: T): void {\n const components = Array.isArray(componentOrComponents) ? componentOrComponents : [componentOrComponents];\n ComponentManager._dependenciesMap.set(target, { components, mode });\n }\n}\n\nexport class ComponentManager {\n static _dependenciesMap = new Map<ComponentConstructor, DependentInfo>();\n\n private _viewer: Viewer;\n private _scheduler: Scheduler = new Scheduler();\n private _componentScheduler: ComponentScheduler = new ComponentScheduler();\n private _componentsMap = new Map<Object3D, Component[]>();\n\n get viewer() {\n return this._viewer;\n }\n\n get scheduler() {\n return this._scheduler;\n }\n\n get componentScheduler() {\n return this._componentScheduler;\n }\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n destroy() {\n this._componentsMap.forEach(components => components.forEach(comp => comp.destroy()));\n this._componentsMap.clear();\n }\n\n update(dt: number) {\n this._scheduler.update(dt);\n this._componentScheduler.start();\n this._componentScheduler.update(dt);\n this._componentScheduler.lastUpdate(dt);\n }\n\n destroyComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => comp.destroy());\n this._componentsMap.delete(node);\n }\n for (let child of node.children) {\n this.destroyComponents(child);\n }\n }\n\n activeComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => this._activeComponent(comp, node.visible));\n }\n for (let child of node.children) {\n this.activeComponents(child);\n }\n }\n\n addComponent<T extends Component>(node: Object3D | Component, instance: T): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: { new(): T }): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: any): T {\n let root = node instanceof Component ? node.node : node;\n let func = typeof constructor === \"function\";\n let component = this._findComponent(root, func ? constructor : constructor.constructor) as any;\n if (component === undefined) {\n component = func ? new constructor() : constructor;\n component.node = root;\n component.manager = this;\n component.viewer = this._viewer;\n\n this._addDendencies(root, component.constructor);\n\n if (!component.flags.OnLoadCalled) {\n component.flags.OnLoadCalled = true;\n if (component.onLoad) {\n component.onLoad();\n }\n }\n\n let components = this._componentsMap.get(root);\n if (components === undefined) {\n this._componentsMap.set(root, [component]);\n }\n else {\n components.push(component);\n }\n\n this._activeComponent(component, component.enabled);\n }\n return component as T;\n }\n\n removeComponent(node: Object3D, component: Component) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.splice(components.indexOf(component), 1);\n }\n return this;\n }\n\n getComponent<T extends Component>(node: Object3D, constructor: { new(): T }, autoAdd: boolean = false): T {\n let comp = this._findComponent(node, constructor) as T;\n if (comp === undefined && autoAdd) {\n comp = this.addComponent(node, constructor);\n }\n return comp;\n }\n\n getComponentsInChidren<T extends Component>(node: Object3D, constructor: { new(): T }, out: T[] = []): T[] {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n if (components[i] instanceof (constructor as any)) out.push(components[i] as any);\n }\n for (let child of node.children) {\n this.getComponentsInChidren(child, constructor, out);\n }\n }\n return out;\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n this._componentsMap.forEach(v => v.forEach(callback));\n }\n\n private _addDendencies(node: Object3D, constructor: ComponentConstructor) {\n while (constructor !== Component) {\n let dependentInfo = ComponentManager._dependenciesMap.get(constructor);\n if (dependentInfo) {\n const { components, mode } = dependentInfo;\n for (const dep of components) {\n if (!this.getComponent(node, dep)) {\n if (mode === DependentMode.AutoAdd) {\n this.addComponent(node, dep);\n } else {\n throw `Should add ${dep.name} before adding ${constructor.name}`;\n }\n }\n }\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n }\n\n private _findComponent(node: Object3D, constructor: any) {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n let component = components[i];\n if (component instanceof constructor) {\n return component;\n }\n }\n }\n }\n\n protected _activeComponent(comp: Component, active: boolean) {\n this._componentScheduler.enableComponent(comp, active);\n }\n}","import { Task } from \"./Task\";\nimport { EventEmitter } from \"./base\";\n\n\nexport class TaskManager extends EventEmitter {\n private _tasks: Task[] = [];\n private _taskIndex: number = 0;\n private _percent: number = 0;\n\n get percent() {\n return this._percent;\n }\n\n constructor(\n public onComplete?: () => void,\n public onProgress?: (task: Task, loaded: number, total: number) => void,\n public onError?: (task: Task) => void,\n ) {\n super();\n }\n\n destroy() {\n this._tasks.length = 0;\n this._taskIndex = 0;\n this._percent = 0;\n }\n\n add(task: Task) {\n this._tasks.push(task);\n }\n\n update() {\n let task = this._tasks[this._taskIndex];\n if (task) {\n try {\n task.excute();\n }\n catch (e) {\n console.error(e);\n this.onError && this.onError(task);\n }\n this._percent = ++this._taskIndex / this._tasks.length;\n this.onProgress && this.onProgress(task, this._taskIndex, this._tasks.length);\n\n if (this._taskIndex === this._tasks.length) {\n this._percent = 1;\n this.onComplete && this.onComplete();\n }\n }\n }\n}","import { FloatType, HalfFloatType, UnsignedByteType, WebGLRendererParameters } from \"three\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { Logger } from \"./base\";\n\nexport function parepareWebGL(canvas: HTMLCanvasElement, props: WebGLRendererParameters) {\n let isSupportedBrowser = (SystemInfo.isChrome || SystemInfo.isSafari || SystemInfo.isEdge || SystemInfo.isFirefox || SystemInfo.isOpera) && !SystemInfo.isIE;\n if (!isSupportedBrowser) {\n Logger.error(\"Unsupport platform\");\n return null;\n }\n if (!(canvas instanceof HTMLCanvasElement)) {\n Logger.error(\"Canvas is null\");\n return null;\n }\n\n let webglOpts = Object.assign({\n alpha: false,\n depth: true,\n stencil: true,\n antialias: false,\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n powerPreference: \"high-performance\",\n failIfMajorPerformanceCaveat: false\n }, props);\n\n if (window.WebGL2RenderingContext) {\n try {\n const gl = canvas.getContext(\"webgl2\", webglOpts) as WebGL2RenderingContext;\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: HalfFloatType,\n DATA_FLOAT_TYPE: FloatType\n }\n }\n catch (err) {\n Logger.error(err);\n return null;\n }\n }\n else if (window.WebGLRenderingContext) {\n const gl = (canvas.getContext(\"webgl\", webglOpts) || canvas.getContext(\"webgl2\", webglOpts) || canvas.getContext(\"experimental-webgl\", webglOpts)) as WebGLRenderingContext;\n if ((gl.getExtension(\"OES_texture_float\") || gl.getExtension(\"OES_texture_half_float\")) && gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS)) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: SystemInfo.isIOS || gl.getExtension(\"OES_texture_half_float\") ? HalfFloatType : FloatType,\n DATA_FLOAT_TYPE: FloatType,\n }\n }\n else if (this._floatPacking) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: UnsignedByteType,\n DATA_FLOAT_TYPE: UnsignedByteType\n }\n }\n Logger.debug(\"Unspport float type in current platform\");\n return null;\n }\n return null;\n}","export enum Orientation {\n AUTO,\n LANDSCAPE,\n PORTRAIT,\n}","import { LoadingManager } from \"three\";\nimport { TextureSettings } from \"../TextureSettings\";\nimport { aLoader } from \"./aLoader\";\n\nexport interface AssetProperties {\n ext?: string,\n url?: string | File | { mainFile: File, additionalFiles: File[] };\n onProgress?: (event: ProgressEvent) => void,\n}\n\nexport type LoaderConstructor = new (manager: ResourceManager) => aLoader;\n\nexport class ResourceManager {\n\n static extension(path: string) {\n let str = path.split(\".\");\n if (str.length > 1) {\n return str.pop();\n }\n return \"\";\n }\n\n static dirname(path: string) {\n let index = path.lastIndexOf(\"/\");\n return index !== -1 ? path.substring(0, index) : \"\";\n }\n\n static basename(path: string, ext?: string) {\n let str = path.split(\"/\").pop();\n return ext ? str.replace(\".\" + ext, \"\") : str;\n }\n\n static _parseURL(uri: any) {\n let url = \"\";\n let file = null;\n let ext = \"\";\n if (typeof (File) !== \"undefined\" && uri instanceof File) {\n url = uri.name;\n ext = ResourceManager.extension(url);\n file = uri;\n }\n else if (typeof (uri) === \"object\") {\n url = uri.mainFile.name;\n ext = ResourceManager.extension(url);\n file = uri;\n }\n else {\n url += uri;\n ext = ResourceManager.extension(url);\n }\n return { url, file, ext };\n }\n\n static _getTextureKey(url: string, settings: TextureSettings) {\n let keys = [url];\n for (let k in settings) {\n if (settings[k] !== undefined) keys.push(k + \"=\" + settings[k]);\n }\n return keys.join(\",\");\n }\n\n static _texSettingKeys = [\n \"flipY\", \"mapping\", \"wrapS\", \"wrapT\", \"dataType\",\n \"magFilter\", \"minFilter\", \"format\", \"anisotropy\", \"repeat\", \"colorSpace\", \"channel\",\n ]\n static _splitTextureSettings(props: TextureSettings & { [k: string]: any }) {\n let settings = {};\n for (let v of ResourceManager._texSettingKeys) {\n if (props[v] !== undefined) {\n if (v === \"dataType\") {\n settings[\"type\"] = props[v];\n }\n else {\n settings[v] = props[v];\n }\n }\n }\n return settings;\n }\n\n path: string = \"\";\n resourcePath: string = \"\";\n dracoPath: string = \"\";\n loadingManager: LoadingManager;\n\n private _caches: Map<string, any> = new Map();\n private _loaders: Map<string, aLoader> = new Map();\n\n constructor(props: {\n path: string;\n resourcePath: string;\n dracoPath: string;\n loadingManager: LoadingManager;\n }) {\n this.path = props.path;\n this.resourcePath = props.resourcePath;\n this.dracoPath = props.dracoPath;\n this.loadingManager = props.loadingManager;\n }\n\n destroy() {\n this._caches.clear();\n this._loaders.clear();\n }\n\n addLoader(Loader: LoaderConstructor) {\n let loader = new Loader(this);\n for (let ext of loader.extension) {\n this._loaders.set(ext, loader);\n }\n }\n\n loadAsset<T = any>({ url, ext, onProgress, ...props }: AssetProperties & TextureSettings) {\n return new Promise<T>((resolve, reject) => {\n const info = ResourceManager._parseURL(url);\n const texSettings = ResourceManager._splitTextureSettings(props);\n const key = ResourceManager._getTextureKey(info.url, texSettings);\n let result = this._caches.get(key);\n if (result) {\n resolve(result);\n }\n else {\n const onLoad = (file) => {\n this._caches.set(key, file);\n resolve(file);\n }\n let sel = ext || info.ext;\n if (this._loaders.has(sel)) {\n this._loaders.get(sel).load({\n url: info.url,\n texSettings,\n onProgress,\n onLoad,\n onError: reject\n });\n }\n else {\n reject(\"ResourceManager.loadAsset: missing loader for \" + ext)\n }\n }\n })\n }\n}","import { __C, __P } from \"./types\";\n\nexport function applyProps<T, K extends __C<T>>(\n target: T & { copy?: Function },\n props: __P<T, K>,\n) {\n for (let k in props) {\n let prop = props[k];\n if (prop === undefined) {\n continue;\n }\n if (target[k] !== undefined) {\n let des = Object.getOwnPropertyDescriptor(target, k);\n if (!des || (des.writable || des.set)) {\n target[k] = prop;\n }\n else {\n let value = target[k];\n if (value && value.copy) {\n value.copy(prop);\n }\n }\n }\n }\n return target;\n}","import { Plugin } from \"./Plugin\";\nimport { PropertyManager } from \"./PropertyManager\";\nimport { Viewer } from \"./Viewer\";\nimport { Logger, getClassInstance } from \"./base\";\nimport { __C, __Comp } from \"./types\";\n\nexport class PluginManager {\n private _viewer: Viewer;\n private _plugins: Plugin[] = [];\n private _pluginsMap: Map<Object, Plugin> = new Map();\n\n get viewer() {\n return this._viewer\n }\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n destroy() {\n this._plugins.forEach(plugin => plugin.uninstall && plugin.uninstall());\n this._plugins.length = 0;\n this._pluginsMap.clear();\n }\n\n update(dt: number) {\n this._plugins.forEach(plugin => plugin.onUpdate && plugin.onUpdate(dt));\n }\n\n render(dt: number) {\n this._plugins.forEach(plugin => plugin.onRender && plugin.onRender(dt));\n }\n\n traversePlugins(callback: (plugin: Plugin) => void) {\n this._plugins.forEach(callback);\n }\n\n getPlugin<T extends Plugin>(plugin: new (...args: any[]) => T, autoAdd: boolean = false): T {\n let ins = this._pluginsMap.get(plugin);\n if (ins === undefined && autoAdd) {\n ins = this.addPlugin(plugin);\n }\n return ins as T;\n }\n\n addPlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): T;\n addPlugin(plugin: any) {\n const ins = getClassInstance(plugin);\n if (this._pluginsMap.has(ins.constructor)) {\n Logger.warn(\"Plugin already added\");\n }\n else {\n ins.viewer = this._viewer;\n ins.install && ins.install();\n this._plugins.push(ins);\n this._pluginsMap.set(ins.constructor, ins);\n PropertyManager._applyClassProperties(ins.type, ins.constructor);\n }\n return ins;\n }\n\n removePlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): void;\n removePlugin(plugin: any) {\n const key = typeof plugin === \"function\" ? plugin : plugin.constructor;\n const ins = this._pluginsMap.get(key);\n if (ins) {\n ins.uninstall && ins.uninstall();\n this._plugins.splice(this._plugins.indexOf(ins), 1);\n this._pluginsMap.delete(key);\n }\n }\n\n}","import {\n BufferGeometry,\n Camera,\n ClampToEdgeWrapping,\n ColorSpace,\n DataTexture,\n DirectionalLightShadow,\n Euler,\n Float32BufferAttribute,\n FloatType,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearSRGBColorSpace,\n LinearToneMapping,\n LoadingManager,\n Material,\n MathUtils,\n Mesh,\n NearestFilter,\n Object3D,\n OrthographicCamera,\n PCFSoftShadowMap,\n PerspectiveCamera,\n RGBAFormat,\n Scene,\n ShadowMapType,\n SRGBColorSpace,\n Texture,\n TextureDataType,\n ToneMapping,\n UnsignedByteType,\n UVMapping,\n Vector3,\n WebGLCubeRenderTarget,\n WebGLRenderer,\n WebGLRendererParameters,\n WebGLRenderTarget,\n} from \"three\";\n\nimport { EventEmitter, getClassInstance } from \"./base\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { TaskManager } from \"./TaskManager\";\nimport { parepareWebGL } from \"./WebGL\";\nimport { DeviceInput } from \"./DeviceInput\";\nimport { Orientation } from \"./enums/Orientation\";\nimport { AssetProperties, LoaderConstructor, ResourceManager } from \"./asset/ResourceManager\";\nimport { __C, __Comp, __P } from \"./types\";\nimport { Component } from \"./Component\";\nimport { applyProps } from \"./Utils\";\nimport { TextureSettings } from \"./TextureSettings\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { PluginManager } from \"./PluginManager\";\nimport { Plugin } from \"./Plugin\";\nimport { TweenManager } from \"./tween\";\nimport { aGLTFLoader, aHDRLoader, aJSONLoader, aTextureLoader } from \"./loaders\";\n\nexport class Viewer extends EventEmitter {\n static __target: Vector3 = new Vector3();\n static __worldPos: Vector3 = new Vector3();\n\n static _shadowCameraKeys = [\"top\", \"bottom\", \"left\", \"right\", \"near\", \"far\"];\n static _setDirectLightShadow(shadow: DirectionalLightShadow, props: number[]) {\n const shadowCamera = shadow.camera;\n for (let i = 0; i < props.length && i < 6; i++) {\n shadowCamera[Viewer._shadowCameraKeys[i]] = props[i];\n }\n if (props.length > 6) {\n shadow.bias = props[6];\n }\n if (props.length > 8) {\n shadow.mapSize.set(props[7], props[8]);\n }\n return shadow;\n }\n\n static compileMaterial(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Material | Material[],\n ) {\n Viewer.fullscreenMesh.material = target;\n renderer.compile(Viewer.fullscreenMesh, camera, scene);\n }\n\n static compileObject3D(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Object3D\n ) {\n renderer.compile(target, camera, scene);\n }\n\n static compileTexture(\n renderer: WebGLRenderer,\n target: Texture | Texture[]\n ) {\n if (Array.isArray(target)) {\n for (let v of target) {\n renderer.initTexture(v);\n }\n }\n else {\n renderer.initTexture(target);\n }\n }\n\n static Blit(\n renderer: WebGLRenderer,\n renderTarget: WebGLRenderTarget,\n material: Material,\n lod?: number,\n face?: number\n ) {\n Viewer.fullscreenMesh.material = material;\n const RT = renderer.getRenderTarget();\n renderer.setRenderTarget(renderTarget, face, lod);\n renderer.render(Viewer.fullscreenMesh, Viewer.fullscreenCamera);\n renderer.setRenderTarget(RT);\n }\n\n static createFullscreenTriangle() {\n let geometry = new BufferGeometry();\n geometry.setAttribute('position', new Float32BufferAttribute([- 1, 3, 0, - 1, - 1, 0, 3, - 1, 0], 3));\n geometry.setAttribute('uv', new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\n return geometry;\n }\n\n static findChild<T extends Object3D>(node: T, path: string): T {\n let child = null;\n let parts = path.split(\"/\");\n let children = node.children;\n\n for (let part of parts) {\n child = children.find(v => v.name === part);\n if (child) {\n children = child.children;\n }\n else {\n return null;\n }\n }\n\n return child;\n }\n\n static getChildByName<T extends Object3D>(node: T, name: string): T {\n return Viewer.getObject(node, v => (v.name === name) && v);\n }\n\n static getObject<T extends Object3D>(node: T, filter: (value: T) => any) {\n const queue = [node];\n while (queue.length !== 0) {\n let object = queue.shift();\n let target = filter(object);\n if (target) {\n return target;\n }\n object.children.forEach((v: T) => queue.push(v));\n }\n }\n\n static getObjects<T extends Object3D>(node: T, filter: (value: T) => any) {\n const queue = [node];\n const objects = [];\n\n while (queue.length !== 0) {\n let object = queue.shift();\n let target = filter(object);\n if (target) {\n objects.push(object);\n }\n object.children.forEach((v: T) => queue.push(v));\n }\n\n return objects;\n }\n\n static fullscreenMesh: Mesh = new Mesh(Viewer.createFullscreenTriangle());\n static fullscreenCamera: OrthographicCamera = new OrthographicCamera(- 1, 1, 1, - 1, 0, 1);\n\n private _root: HTMLElement;\n private _canvas: HTMLCanvasElement;\n private _gl: WebGLRenderingContext | WebGL2RenderingContext;\n private _RENDER_TARGET_FLOAT_TYPE: TextureDataType;\n private _DATA_FLOAT_TYPE: TextureDataType;\n\n private _scene: Scene;\n private _camera: PerspectiveCamera;\n private _renderer: WebGLRenderer;\n private _input: DeviceInput;\n\n private _dpr: number = 1;\n private _width: number = 1;\n private _height: number = 1;\n private _viewport: { width: number, height: number, factor: number } = { width: 1, height: 1, factor: 1 };\n private _orientation: Orientation = Orientation.AUTO;\n\n private _running: boolean = false;\n private _rootRotated: boolean = false;\n\n private _time: number = 0;\n private _lastTime: number = 0;\n private _targetFrameRate: number = -1;\n private _autoResize: boolean = true;\n\n private _taskManager: TaskManager;\n private _resourceManager: ResourceManager;\n private _componentManager: ComponentManager;\n private _pluginManager: PluginManager;\n private _tweenManager: TweenManager;\n\n get root() {\n return this._root;\n }\n get time() {\n return this._time;\n }\n get scene() {\n return this._scene;\n }\n get camera() {\n return this._camera;\n }\n get renderer() {\n return this._renderer;\n }\n get canvas() {\n return this._canvas;\n }\n get gl() {\n return this._gl;\n }\n get RENDER_TARGET_FLOAT_TYPE() {\n return this._RENDER_TARGET_FLOAT_TYPE;\n }\n get DATA_FLOAT_TYPE() {\n return this._DATA_FLOAT_TYPE;\n }\n get dpr() {\n return this._dpr;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get viewport() {\n return this._viewport;\n }\n get rootRotated() {\n return this._rootRotated;\n }\n\n constructor({\n root,\n canvas,\n autoStart = true,\n autoResize = true,\n shadows = false,\n camera = { fov: 45, near: 0.1, far: 1000, position: new Vector3(0, 0, 4) },\n targetFrameRate = -1,\n colorSpace = SRGBColorSpace,\n toneMapping = LinearToneMapping,\n toneMappingExposure = 1,\n maxDPR = 1.5,\n path = \"\",\n resourcePath = \"\",\n dracoPath = \"https://www.gstatic.com/draco/v1/decoders/\",\n loader = {},\n tasker = {},\n ...webglOpts\n }: {\n root?: HTMLElement;\n canvas?: HTMLCanvasElement;\n targetFrameRate?: number;\n autoStart?: boolean;\n autoResize?: boolean;\n shadows?: boolean | ShadowMapType;\n colorSpace?: ColorSpace;\n toneMapping?: ToneMapping;\n toneMappingExposure?: number;\n maxDPR?: number;\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n camera?: {\n fov?: number;\n aspect?: number;\n near?: number;\n far?: number;\n position?: Vector3;\n rotation?: Euler;\n };\n loader?: {\n onLoad?: () => void,\n onProgress?: (url: string, loaded: number, total: number) => void,\n onError?: (url: string) => void,\n };\n tasker?: {\n onComplete?: () => void,\n onProgress?: (target: Object, loaded: number, total: number) => void,\n onError?: (target: Object) => void,\n };\n } & WebGLRendererParameters = {}) {\n super();\n const el = canvas || document.getElementById(\"canvas\") as HTMLCanvasElement;\n const webgl = parepareWebGL(el, webglOpts);\n if (!webgl) {\n throw Error(\"Unsupport WebGL in current platform\");\n }\n\n this._root = root || el;\n this._canvas = el;\n this._gl = webgl.gl;\n this._RENDER_TARGET_FLOAT_TYPE = webgl.RENDER_TARGET_FLOAT_TYPE;\n this._DATA_FLOAT_TYPE = webgl.DATA_FLOAT_TYPE;\n this._dpr = Math.min(maxDPR, window.devicePixelRatio);\n\n this._scene = new Scene();\n this._camera = applyProps(new PerspectiveCamera(), camera);\n this._renderer = new WebGLRenderer({ canvas: el, context: webgl.gl });\n this._renderer.setPixelRatio(this._dpr);\n this._renderer.outputColorSpace = colorSpace;\n this._renderer.toneMapping = toneMapping;\n this._renderer.toneMappingExposure = toneMappingExposure;\n this._renderer.shadowMap.enabled = !!shadows;\n this._renderer.shadowMap.type = typeof shadows === \"boolean\" ? PCFSoftShadowMap : shadows;\n this._renderer.info.autoReset = false;\n\n const loadingManager = new LoadingManager(loader.onLoad, loader.onProgress, loader.onError);\n this._resourceManager = new ResourceManager({ path, resourcePath, dracoPath, loadingManager });\n this._taskManager = new TaskManager(tasker.onComplete, tasker.onProgress, tasker.onError);\n this._componentManager = new ComponentManager(this);\n this._pluginManager = new PluginManager(this);\n this._tweenManager = new TweenManager();\n\n this._autoResize = autoResize;\n this._targetFrameRate = targetFrameRate;\n this._input = new DeviceInput(this);\n this._input.addEventListeners();\n\n this._addDefaultLoaders();\n\n if (autoStart) this.start();\n }\n\n destroy() {\n this._renderer.dispose();\n this._taskManager.destroy();\n this._resourceManager.destroy();\n this._componentManager.destroy();\n this._pluginManager.destroy();\n this._tweenManager.destroy();\n this._input.removeAllListeners();\n }\n\n private _addDefaultLoaders() {\n this.addLoader(aGLTFLoader);\n this.addLoader(aHDRLoader);\n this.addLoader(aTextureLoader);\n this.addLoader(aJSONLoader);\n }\n\n private _frame(time: number) {\n this._time = time;\n\n if (this._targetFrameRate > -1) {\n const interval = 1 / this._targetFrameRate;\n const delta = time - this._lastTime;\n\n if (delta >= interval) {\n this.loop(delta);\n this._lastTime = time - (delta % interval);\n }\n }\n else {\n this.loop(time - this._lastTime);\n this._lastTime = time;\n }\n }\n\n loop(dt: number) {\n if (this._autoResize) this.resize();\n\n dt = Math.min(dt, 0.067);\n this.update(dt);\n this.render(dt);\n }\n\n update(dt: number) {\n this._taskManager.update();\n this._tweenManager.update(this._time);\n this._componentManager.update(dt);\n this._pluginManager.update(dt);\n }\n\n render(dt: number) {\n this._renderer.info.reset();\n this._onRender(dt);\n this._pluginManager.render(dt);\n }\n\n _onRender(dt: number) {\n this._renderer.render(this._scene, this._camera);\n }\n\n _onResize(width: number, height: number) {\n this._renderer.setSize(width, height);\n }\n\n start() {\n if (this._running == false) {\n this._running = true;\n const frameCallback = (time: number) => {\n if (this._running) {\n this._frame(time * 0.001);\n requestAnimationFrame(frameCallback);\n }\n }\n requestAnimationFrame(frameCallback);\n }\n return this;\n }\n\n stop() {\n this._running = false;\n this._time = this._lastTime = 0;\n return this;\n }\n\n resize(\n width: number = window.innerWidth,\n height: number = window.innerHeight\n ) {\n this._rootRotated =\n this._orientation === Orientation.LANDSCAPE ? width < height :\n this._orientation === Orientation.PORTRAIT ? width > height : false;\n\n if (this._rootRotated) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n\n if (this._width !== width ||\n this._height !== height\n ) {\n this._width = width;\n this._height = height;\n\n let root = this._root;\n if (this._rootRotated) {\n root.style['-webkit-transform'] = 'rotate(90deg)';\n root.style.transform = 'rotate(90deg)';\n root.style['-webkit-transform-origin'] = '0px 0px 0px';\n root.style.transformOrigin = '0px 0px 0px';\n root.style.margin = `0 0 0 ${height}px`;\n root.style.width = `${width}px`;\n root.style.height = `${height}px`;\n }\n else {\n root.style['-webkit-transform'] = 'rotate(0deg)';\n root.style.transform = 'rotate(0deg)';\n root.style.margin = '0px auto';\n root.style.width = `${width}px`;\n root.style.height = `${height}px`;\n }\n\n let camera = this._camera as any;\n if (camera.isOrthographicCamera) {\n this._viewport = { width: width / camera.zoom, height: height / camera.zoom, factor: 1 };\n }\n else if (camera.isPerspectiveCamera) {\n if (!camera.manual) {\n camera.aspect = width / height;\n camera.updateProjectionMatrix();\n }\n let distance = camera.getWorldPosition(Viewer.__worldPos).distanceTo(Viewer.__target);\n let h = 2 * Math.tan(MathUtils.degToRad(camera.fov * 0.5)) * distance;\n let w = h * width / height;\n this._viewport = { width: w, height: h, factor: width / w };\n }\n\n this._onResize(width, height);\n this.emit(DeviceInput.RESIZE, width, height);\n }\n }\n\n loadAsset(props: AssetProperties & TextureSettings) {\n return this._resourceManager.loadAsset(props);\n }\n\n addLoader(Loader: LoaderConstructor) {\n this._resourceManager.addLoader(Loader);\n }\n\n async load({\n url, ext, onProgress,\n castShadow = false,\n receiveShadow = false,\n ...props\n }: AssetProperties & __P<Object3D, typeof Object3D>) {\n const node = await this.loadAsset({ url, ext, onProgress });\n if (castShadow || receiveShadow) {\n node.userData.meshData.meshes.forEach(v => { v.castShadow = castShadow; v.receiveShadow = receiveShadow; });\n }\n this.addNode(node, props);\n return node;\n }\n\n tween(target: Object) {\n return this._tweenManager.tween(target);\n }\n\n timeline(target: Object) {\n return this._tweenManager.timeline(target);\n }\n\n killTweensOf(target: Object) {\n this._tweenManager.killTweensOf(target);\n }\n\n traverseMaterials(callback: (mat: Material) => void) {\n Viewer.getObjects(this._scene, (item: any) => {\n if (item.isMesh) {\n if (Array.isArray(item.material)) item.material.forEach(callback);\n else callback(item.material);\n }\n })\n }\n\n traversePlugins(callback: (plugin: Plugin) => void) {\n return this._pluginManager.traversePlugins(callback);\n }\n\n getPlugin<T extends Plugin>(plugin: new (...args: any[]) => T, autoAdd?: boolean): T {\n return this._pluginManager.getPlugin(plugin, autoAdd);\n }\n\n addPlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>, props?: __P<T, K>): T;\n addPlugin(plugin: any, props: any) {\n const ins = this._pluginManager.addPlugin(plugin);\n applyProps(ins, props);\n return ins;\n }\n\n removePlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): void;\n removePlugin(plugin: any) {\n this._pluginManager.removePlugin(plugin);\n }\n\n getComponent<T extends Component>(node: Object3D, constructor: { new(): T }, autoAdd?: boolean): T {\n return this._componentManager.getComponent(node, constructor, autoAdd);\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n return this._componentManager.traverseComponents(callback);\n }\n\n addComponent<T extends Component>(node: Object3D | Component, instance: T): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: { new(): T }): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: any): T {\n return this._componentManager.addComponent(node, constructor);\n }\n\n removeComponent(node: Object3D, component: Component) {\n return this._componentManager.removeComponent(node, component);\n }\n\n addNode<T, K extends __C<T>>(object: T | K & __C<T>, props?: __P<T, K>): T;\n addNode(object: any, {\n args,\n debug,\n scale,\n position,\n rotation,\n shadowArgs,\n makeDefault,\n component,\n parent = this._scene,\n ...props\n }: any = {}\n ) {\n let node = null;\n let ins = getClassInstance(object, args);\n if (ins.isObject3D) {\n node = ins;\n parent.add(ins);\n }\n else if (ins instanceof Component) {\n node = ins.node || new Object3D();\n parent.add(node);\n this._componentManager.addComponent(node, ins);\n }\n else {\n throw Error(\"Viewer.addNode: unsuport object\");\n }\n\n if (component) {\n const components = Array.isArray(component) ? component : [component];\n for (let ins of components) {\n this._componentManager.addComponent(node, ins);\n }\n }\n\n if (scale || position || rotation) {\n applyProps(node, { scale, position, rotation });\n }\n if (props) {\n applyProps(ins, props);\n }\n\n if (ins.isCamera && makeDefault) {\n ins.manual = ins.aspect !== this._camera.aspect;\n this._camera = ins;\n }\n if (shadowArgs) {\n if (node.isDirectionalLight) Viewer._setDirectLightShadow(node.shadow, shadowArgs);\n }\n\n return ins;\n }\n\n removeNode(node: Object3D) {\n this._componentManager.destroyComponents(node);\n node.removeFromParent();\n }\n\n activeNode(node: Object3D, active: boolean) {\n this._componentManager.activeComponents(node);\n node.visible = active;\n return node;\n }\n\n createRenderTarget(\n width: number,\n height: number,\n nearest: boolean = false,\n floatType: boolean | TextureDataType = false,\n msaa: number = 0,\n mipmap: boolean = false,\n ) {\n return new WebGLRenderTarget(width, height, {\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n magFilter: nearest ? NearestFilter : LinearFilter,\n minFilter: nearest ? NearestFilter : mipmap ? LinearMipMapLinearFilter : LinearFilter,\n type: typeof floatType === \"boolean\" ? floatType ? this.DATA_FLOAT_TYPE : UnsignedByteType : floatType,\n anisotropy: 0,\n colorSpace: LinearSRGBColorSpace,\n depthBuffer: false,\n stencilBuffer: false,\n samples: SystemInfo.isSupportMSAA ? msaa : 0,\n generateMipmaps: mipmap\n })\n }\n\n createCubeRenderTarget(\n size: number,\n nearest: boolean = false,\n floatType: boolean | TextureDataType = false,\n msaa: number = 0,\n mipmap: boolean = false,\n ) {\n return new WebGLCubeRenderTarget(size, {\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n magFilter: nearest ? NearestFilter : LinearFilter,\n minFilter: nearest ? NearestFilter : mipmap ? LinearMipMapLinearFilter : LinearFilter,\n type: typeof floatType === \"boolean\" ? floatType ? this.DATA_FLOAT_TYPE : UnsignedByteType : floatType,\n anisotropy: 0,\n colorSpace: LinearSRGBColorSpace,\n depthBuffer: false,\n stencilBuffer: false,\n samples: SystemInfo.isSupportMSAA ? msaa : 0,\n generateMipmaps: mipmap\n })\n }\n\n createDataTexture(\n data: BufferSource,\n width: number,\n height: number,\n floatType: boolean = false,\n nearest: boolean = true,\n ) {\n return new DataTexture(\n data, width, height,\n RGBAFormat,\n floatType ? FloatType : UnsignedByteType,\n UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping,\n nearest ? NearestFilter : LinearFilter,\n nearest ? NearestFilter : LinearFilter,\n 0\n );\n }\n\n /**\n * 传送门,得到一个全新的场景\n * @param callback 禁止使用异步函数,会导致状态错误\n * @returns \n */\n portal<T = any>(callback: () => T) {\n const scene = this._scene;\n const camera = this._camera;\n this._scene = new Scene();\n const result = callback();\n this._scene = scene;\n this._camera = camera;\n return result;\n }\n\n blit(\n renderTarget: WebGLRenderTarget,\n material: Material,\n lod?: number,\n face?: number\n ) {\n Viewer.Blit(this._renderer, renderTarget, material, lod, face);\n }\n\n compile(target?: Object3D | Scene | Material | Texture): void;\n compile(target?: Material[]): void;\n compile(target?: any) {\n if (Array.isArray(target)) {\n if (target.every(v => v.isMaterial)) {\n Viewer.compileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else {\n throw Error(\"Viewer.compile: unsuport material\");\n }\n }\n else if (typeof target === \"object\") {\n if (target.isMaterial) {\n Viewer.compileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else if (target.isObject3D) {\n if (target.meshData.materials) {\n Viewer.compileMaterial(this._renderer, this._scene, this._camera, Object.values(target.meshData.materials));\n }\n if (target.meshData.textures) {\n Viewer.compileTexture(this._renderer, Object.values(target.meshData.textures));\n }\n if (!target.meshData.meshes) {\n Viewer.compileObject3D(this._renderer, this._scene, this._camera, target);\n }\n }\n else if (target.isTexture) {\n Viewer.compileTexture(this._renderer, target);\n }\n }\n else {\n Viewer.compileObject3D(this._renderer, this._scene, this._camera, this._scene);\n }\n }\n}","import { CubeTexture, Mesh, PMREMGenerator, ShaderMaterial, Texture, WebGLRenderTarget, WebGLRenderer } from \"three\";\nimport { LOD_MIN, _flatCamera, _getClearMaterial, _getCubeMapMaterial, _setViewport } from \"./utils\";\nimport { Viewer } from \"../../Viewer\";\nimport { MergeInfo } from \"./MergeInfo\";\n\nexport class MergeRefectPass {\n private _pmremGenerator: any;\n private _envMapTarget: WebGLRenderTarget;\n private _reflectMap: Texture;\n\n envMapIntensity: number = 1;\n\n get envMapTarget() {\n return this._envMapTarget;\n }\n\n constructor({\n envMap,\n reflectMap,\n viewer,\n }: {\n envMap?: Texture;\n reflectMap: CubeTexture;\n viewer: Viewer;\n }) {\n this._reflectMap = reflectMap;\n this._pmremGenerator = this._getPMREMExtension(viewer.renderer);\n this._envMapTarget = this._pmremGenerator._fromTextureExtension(reflectMap, envMap);\n\n viewer.scene.environment = this._envMapTarget.texture;\n }\n\n dispose() {\n this._envMapTarget.dispose();\n this._pmremGenerator.dispose();\n }\n\n mergeReflect(info: MergeInfo) {\n this._pmremGenerator._clearTexture(this._envMapTarget, this.envMapIntensity);\n this._pmremGenerator._mergeReflect(this._envMapTarget, this._reflectMap);\n\n info.envMapTarget = this._envMapTarget;\n info.lodMax = this._pmremGenerator._lodMeshes.length - 1;\n }\n\n private _getPMREMExtension(renderer: WebGLRenderer) {\n const pmremGenerator = new PMREMGenerator(renderer) as any;\n pmremGenerator._fromTextureExtension = function (reflectMap: CubeTexture, envMap?: Texture) {\n const target = envMap ? this._fromTexture(envMap) : this._fromCubeTexture(reflectMap);\n this._cubeMapMaterial = _getCubeMapMaterial();\n this._copyTexMaterial = _getClearMaterial();\n this._copyMesh = new Mesh(Viewer.fullscreenMesh.geometry, this._copyTexMaterial);\n this._lodMeshes = this._lodPlanes.map(v => new Mesh(v, this._cubeMapMaterial));\n this._sourceInit = false;\n return target;\n }\n pmremGenerator._fromCubeTexture = function (texture: CubeTexture) {\n this._setSize(texture.image.length === 0 ? 16 : (texture.image[0].width || texture.image[0].image.width));\n return this._allocateTargets();\n }\n pmremGenerator._copyTexture = function (\n targetOut: WebGLRenderTarget,\n texture: Texture,\n intensity: number = 1,\n ) {\n const uniforms = this._copyTexMaterial.uniforms;\n uniforms.map.value = texture;\n uniforms.intensity.value = intensity;\n\n const renderer = this._renderer;\n renderer.autoClear = true;\n renderer.setRenderTarget(targetOut);\n renderer.render(this._copyMesh, _flatCamera);\n renderer.setRenderTarget(null);\n }\n pmremGenerator._clearTexture = function (\n targetOut: WebGLRenderTarget,\n intensity?: number,\n ) {\n const source = this._pingPongRenderTarget;\n if (this._sourceInit === false) {\n this._sourceInit = true;\n source.scissorTest = false;\n _setViewport(source, 0, 0, source.width, source.height);\n this._copyTexture(source, targetOut.texture);\n }\n else {\n this._copyTexture(targetOut, source.texture, intensity);\n }\n }\n pmremGenerator._mergeReflect = function (\n sourceTarget: WebGLRenderTarget,\n reflectMap: CubeTexture,\n clear: boolean = false\n ) {\n const renderer = this._renderer;\n const autoClear = renderer.autoClear;\n const cubeMapMaterial = this._cubeMapMaterial;\n\n const uniforms = this._cubeMapMaterial.uniforms;\n uniforms.envMap.value = reflectMap;\n\n renderer.autoClear = clear;\n\n for (let i = 0; i < this._lodMeshes.length - 1; i++) {\n uniforms.lod.value = i < 5 ? 0 : i;\n this._blit(sourceTarget, i, cubeMapMaterial);\n }\n\n sourceTarget.scissorTest = false;\n _setViewport(sourceTarget, 0, 0, sourceTarget.width, sourceTarget.height);\n\n renderer.autoClear = autoClear;\n }\n pmremGenerator._blit = function (\n targetOut: WebGLRenderTarget,\n lodOut: number,\n material: ShaderMaterial,\n ) {\n const renderer = this._renderer;\n const _lodMax = this._lodMax;\n const outputSize = this._sizeLods[lodOut];\n const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n const y = 4 * (this._cubeSize - outputSize);\n _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n const lodMesh = this._lodMeshes[lodOut];\n lodMesh.material = material;\n renderer.autoClear = false;\n renderer.setRenderTarget(targetOut);\n renderer.render(lodMesh, _flatCamera);\n }\n return pmremGenerator;\n }\n}\n","import { MathUtils } from \"three\";\n\nexport function mipGaussianBlendWeight(sigma: number, lod: number) {\n let sigma2 = sigma * sigma;\n let c = 2.0 * Math.PI * sigma2;\n let numerator = Math.pow(16, lod) * 1.386294361; //log(4)\n let denorminator = c * (Math.pow(4, lod) + c);\n return MathUtils.clamp(numerator / denorminator, 0, 1);\n}\n","import { CubeTexture, MathUtils, Mesh, PMREMGenerator, ShaderMaterial, Texture, WebGLRenderTarget, WebGLRenderer } from \"three\";\nimport { mipGaussianBlendWeight } from \"../mipGaussianBlendWeight\";\nimport { LOD_MIN, _flatCamera, _getMipBlurMaterial, _getMipCopyMaterial, _setViewport } from \"./utils\";\nimport { Viewer } from \"../../Viewer\";\nimport { MergeInfo } from \"./MergeInfo\";\n\nconst MAX_LOD = 10;\n\nexport class MergeMipBlurPass {\n private _pmremGenerator: any;\n private _sigma: number = 2;\n private _blurMinLod: number = 0;\n private _blurMaxLod: number = MAX_LOD;\n private _blurIntensity: number = -1;\n private _envMapTarget: WebGLRenderTarget;\n private _reflectMap: CubeTexture;\n\n exposure: number = 1;\n\n get blurIntensity() {\n return this._blurIntensity;\n }\n set blurIntensity(v: number) {\n if (this._blurIntensity !== v) {\n this._blurIntensity = v;\n this._sigma = MathUtils.lerp(1, 40, this._blurIntensity / 10);\n for (let lod = 0; lod <= MAX_LOD; lod++) {\n let w = mipGaussianBlendWeight(this._sigma, lod);\n if (w < 0.002) {\n this._blurMinLod = lod;\n }\n if (w >= 1) {\n this._blurMaxLod = lod;\n break;\n }\n }\n }\n }\n\n get envMapTarget() {\n return this._envMapTarget;\n }\n\n constructor({\n viewer,\n reflectMap,\n }: {\n viewer: Viewer;\n reflectMap: CubeTexture;\n }) {\n this._reflectMap = reflectMap;\n this._pmremGenerator = this._getPMREMExtension(viewer.renderer);\n this._envMapTarget = this._pmremGenerator._fromTextureExtension(reflectMap);\n }\n\n dispose() {\n this._envMapTarget.dispose();\n this._pmremGenerator.dispose();\n }\n\n mergeMipBlur(info: MergeInfo) {\n const targetIn = this._pmremGenerator._applyMipBlur(\n this._envMapTarget,\n this._reflectMap,\n this._blurMinLod,\n this._blurMaxLod,\n this._sigma,\n this.exposure,\n );\n this._pmremGenerator._mipCopy(info.envMapTarget, targetIn, info.lodMax, this._blurMinLod);\n }\n\n private _getPMREMExtension(renderer: WebGLRenderer) {\n const pmremGenerator = new PMREMGenerator(renderer) as any;\n pmremGenerator._fromTextureExtension = function (texture: Texture) {\n this._setSize(texture.image.length === 0 ? 16 : (texture.image[0].width || texture.image[0].image.width));\n const target = this._allocateTargets();\n this._mipBlurMaterial = _getMipBlurMaterial(this._lodMax, target.width, target.height);\n this._mipCopyMaterial = _getMipCopyMaterial(this._lodMax, target.width, target.height);\n this._lodMeshes = this._lodPlanes.map(v => new Mesh(v, this._mipBlurMaterial));\n return target;\n }\n pmremGenerator._applyMipBlur = function (\n sourceTarget: WebGLRenderTarget,\n texture: CubeTexture,\n blurMinLod: number,\n blurMaxLod: number,\n sigma: number,\n exposure: number\n ) {\n const pingPongRenderTarget = this._pingPongRenderTarget;\n const uniforms = this._mipBlurMaterial.uniforms;\n uniforms.envMap.value = texture;\n uniforms.exposure.value = exposure;\n\n let lod = blurMaxLod;\n let targetOut = sourceTarget;\n let targetIn = pingPongRenderTarget;\n\n this._mipBlur(sourceTarget, pingPongRenderTarget, lod, 1);\n for (let i = 0; lod-- > blurMinLod; i++) {\n targetOut = (i & 1) === 0 ? pingPongRenderTarget : sourceTarget;\n targetIn = (i & 1) === 1 ? pingPongRenderTarget : sourceTarget;\n this._mipBlur(targetOut, targetIn, lod, mipGaussianBlendWeight(sigma, lod));\n }\n\n sourceTarget.scissorTest = false;\n _setViewport(sourceTarget, 0, 0, sourceTarget.width, sourceTarget.height);\n\n return targetOut;\n }\n pmremGenerator._mipBlur = function (\n targetOut: WebGLRenderTarget,\n targetIn: WebGLRenderTarget,\n lodOut: number,\n weight: number,\n ) {\n const uniforms = this._mipBlurMaterial.uniforms;\n uniforms.cubeUVMap.value = targetIn.texture;\n uniforms.weight.value = weight;\n uniforms.lod.value = lodOut;\n\n this._blit(targetOut, lodOut, this._mipBlurMaterial);\n }\n pmremGenerator._mipCopy = function (\n targetOut: WebGLRenderTarget,\n targetIn: WebGLRenderTarget,\n lodOut: number,\n lodIn: number = lodOut,\n ) {\n const uniforms = this._mipCopyMaterial.uniforms;\n uniforms.cubeUVMap.value = targetIn.texture;\n uniforms.lod.value = lodIn;\n\n this._blit(targetOut, lodOut, this._mipCopyMaterial);\n\n targetOut.scissorTest = false;\n _setViewport(targetOut, 0, 0, targetOut.width, targetOut.height);\n }\n pmremGenerator._blit = function (\n targetOut: WebGLRenderTarget,\n lodOut: number,\n material: ShaderMaterial,\n ) {\n const renderer = this._renderer;\n const _lodMax = this._lodMax;\n const outputSize = this._sizeLods[lodOut];\n const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n const y = 4 * (this._cubeSize - outputSize);\n _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n const lodMesh = this._lodMeshes[lodOut];\n lodMesh.material = material;\n renderer.autoClear = false;\n renderer.setRenderTarget(targetOut);\n renderer.render(lodMesh, _flatCamera);\n }\n\n return pmremGenerator;\n }\n}","import {\n CubeCamera,\n HalfFloatType,\n MeshBasicMaterial,\n Object3D,\n Scene,\n Texture,\n TextureDataType,\n Vector3,\n} from \"three\";\n\nimport { Plugin } from \"../Plugin\";\nimport { MergeRefectPass } from \"../passes/cubeuv/MergeReflectPass\";\nimport { MergeMipBlurPass } from \"../passes/cubeuv/MergeBlurPass\";\nimport { property } from \"../PropertyManager\";\nimport { MergeInfo } from \"../passes/cubeuv/MergeInfo\";\nimport { Plane } from \"../primitive\";\nimport { DebugPlugin } from \"./DebugPlugin\";\n\nexport class EnvironmentPlugin extends Plugin {\n\n private _scene: Scene | Object3D;\n private _cubeCamera: CubeCamera;\n private _reflectPass: MergeRefectPass;\n private _mipBlurPass: MergeMipBlurPass;\n private _mergeInfo: MergeInfo = { envMapTarget: null, lodMax: 0 }\n private _debug: boolean = false;\n private _debugNode: Object3D = null;\n\n @property\n get debug() {\n return this._debug;\n }\n set debug(v: boolean) {\n if (this._debug !== v) {\n this._debug = v;\n if (v) {\n if (this._debugNode === null) {\n const viewer = this.viewer;\n const debugScene = DebugPlugin.Instance(viewer).scene;\n this._debugNode = viewer.addNode(Object3D, { parent: debugScene });\n viewer.addNode(Plane, {\n parent: this._debugNode,\n material: new MeshBasicMaterial({ map: this._reflectPass.envMapTarget.texture }),\n position: new Vector3(1.1, 3, 0)\n })\n viewer.addNode(Plane, {\n parent: this._debugNode,\n material: new MeshBasicMaterial({ map: this._mipBlurPass.envMapTarget.texture }),\n position: new Vector3(0, 3, 0)\n })\n }\n }\n if (this._debugNode) {\n this._debugNode.visible = v;\n }\n }\n }\n @property({ min: 0, max: 1, step: 0.01 })\n envMapIntensity: number = 1;\n @property({ min: 0, max: 10, step: 0.01 })\n reflectExposure: number = 1;\n @property({ min: 0, max: 10, step: 0.1 })\n reflectBlurIntensity: number = 5;\n\n constructor({\n envMap,\n scene,\n near,\n far,\n layer = 0,\n resolution = 256,\n floatType = HalfFloatType,\n position = new Vector3(0, 1, 0),\n }: {\n envMap?: Texture;\n scene?: Scene | Object3D;\n resolution?: number;\n layer?: number;\n near?: number;\n far?: number;\n floatType?: boolean | TextureDataType;\n position?: Vector3;\n } = {}) {\n super();\n this.install = () => {\n const viewer = this.viewer;\n this._scene = scene || viewer.scene;\n const cubeRenderTarget = viewer.createCubeRenderTarget(resolution, false, floatType, 0, true);\n this._cubeCamera = new CubeCamera(near || viewer.camera.near, far || viewer.camera.far, cubeRenderTarget);\n this._cubeCamera.position.copy(position);\n this._cubeCamera.layers.set(layer);\n const reflectMap = cubeRenderTarget.texture;\n this._reflectPass = new MergeRefectPass({ viewer, reflectMap, envMap });\n this._mipBlurPass = new MergeMipBlurPass({ viewer, reflectMap });\n }\n this.uninstall = () => {\n this._reflectPass.dispose();\n this._mipBlurPass.dispose();\n }\n }\n\n onRender() {\n const { renderer } = this.viewer;\n const autoClear = renderer.autoClear;\n const oldTarget = renderer.getRenderTarget();\n const oldActiveCubeFace = renderer.getActiveCubeFace();\n const oldActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n this._reflectPass.envMapIntensity = this.envMapIntensity;\n this._mipBlurPass.exposure = this.reflectExposure;\n this._mipBlurPass.blurIntensity = this.reflectBlurIntensity;\n\n this._cubeCamera.update(renderer, this._scene);\n this._reflectPass.mergeReflect(this._mergeInfo);\n this._mipBlurPass.mergeMipBlur(this._mergeInfo);\n\n renderer.autoClear = autoClear;\n renderer.setRenderTarget(oldTarget, oldActiveCubeFace, oldActiveMipmapLevel);\n }\n}","import { Box3, Box3Helper, ShaderChunk, ShaderLib, Vector3, Vector4, WebGLProgramParametersWithUniforms } from \"three\";\nimport { Plugin } from \"../Plugin\";\nimport { property } from \"../PropertyManager\";\nimport { DebugPlugin } from \"./DebugPlugin\";\n\nexport class BoxProjectionPlugin extends Plugin {\n\n private _center: Vector4 = new Vector4(0, 0.5, 0, 1);\n private _boxMin: Vector3 = new Vector3(0, 0, 0);\n private _boxMax: Vector3 = new Vector3(1, 1, 1);\n private _helper: Box3Helper = null;\n private _debug: boolean = false;\n\n @property\n get debug() {\n return this._debug;\n }\n set debug(v: boolean) {\n if (this._debug !== v) {\n this._debug = v;\n if (v) {\n if (this._helper === null) {\n this._helper = new Box3Helper(new Box3(this._boxMin, this._boxMax));\n DebugPlugin.Instance(this.viewer).add(this._helper);\n }\n }\n if (this._helper) {\n this._helper.visible = v;\n }\n }\n }\n\n @property\n get center() {\n return this._center;\n }\n set center(v: Vector4) {\n this._center.copy(v);\n }\n\n @property\n get boxMin() {\n return this._boxMin;\n }\n set boxMin(v: Vector3) {\n this._boxMin.copy(v);\n }\n\n @property\n get boxMax() {\n return this._boxMax;\n }\n set boxMax(v: Vector3) {\n this._boxMax.copy(v);\n }\n\n constructor() {\n super();\n this.install = () => {\n ShaderLib.physical.vertexShader = ShaderLib.physical.vertexShader.replace(/#ifdef USE_TRANSMISSION/g, `\n #if defined(USE_TRANSMISSION) || defined(USE_BOX_PROJECTION)\n `);\n ShaderLib.physical.fragmentShader = ShaderLib.physical.fragmentShader.replace(\"varying vec3 vViewPosition;\", `\n varying vec3 vViewPosition;\n #if defined(USE_BOX_PROJECTION)\n varying vec3 vWorldPosition;\n #endif\n `);\n ShaderChunk.worldpos_vertex = ShaderChunk.worldpos_vertex.replace(\"#if defined( USE_ENVMAP )\", \"#if defined( USE_ENVMAP ) || defined( USE_BOX_PROJECTION )\");\n ShaderChunk.envmap_physical_pars_fragment = ShaderChunk.envmap_physical_pars_fragment.replace(\"#ifdef USE_ENVMAP\", `\n #ifdef USE_ENVMAP\n\n #if defined(USE_BOX_PROJECTION)\n uniform vec4 probePos;\n uniform vec3 probeBoxMin;\n uniform vec3 probeBoxMax;\n \n vec3 boxProjection(vec3 nrdir, vec3 worldPos, vec3 probePos, vec3 boxMin, vec3 boxMax) {\n vec3 tbot = boxMin - worldPos;\n vec3 ttop = boxMax - worldPos;\n vec3 tmax = mix(tbot, ttop, step(vec3(0), nrdir));\n tmax /= nrdir;\n float t = min(min(tmax.x, tmax.y), tmax.z);\n return worldPos + nrdir * t - probePos;\n }\n #endif\n\n `).replace(\"reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\", `\n reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n \n #if defined(USE_BOX_PROJECTION)\n if (probePos.w > 0.001) {\n reflectVec = boxProjection(reflectVec, vWorldPosition, probePos.xyz, probeBoxMin.xyz, probeBoxMax.xyz);\n }\n #endif\n\n `).replace(\"vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\", `\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\n #if defined(USE_BOX_PROJECTION)\n if (probePos.w > 0.001) {\n worldNormal = boxProjection(worldNormal, vWorldPosition, probePos.xyz, probeBoxMin.xyz, probeBoxMax.xyz);\n }\n #endif\n\n `);\n }\n this.uninstall = () => {\n DebugPlugin.Instance(this.viewer).remove(this._helper);\n }\n }\n\n onUpdate(dt: number): void {\n if (this._debug) {\n this._helper.updateMatrixWorld();\n }\n }\n\n useBoxProjection(shader: WebGLProgramParametersWithUniforms) {\n shader.defines.USE_BOX_PROJECTION = true;\n shader.uniforms.probePos = { value: this._center };\n shader.uniforms.probeBoxMin = { value: this._boxMin };\n shader.uniforms.probeBoxMax = { value: this._boxMax };\n }\n}"],"names":["EventEmitter","_removeEvent","list","index","name","splice","length","_events","clear","has","on","callback","target","once","findIndex","v","console","warn","push","off","a","onof","container","_listeners","undefined","offof","targetOff","i","emit","args","apply","noop","message","optionalParams","debug","log","bind","info","error","Logger","isEnabled","enable","disable","mixin","derivedCtor","baseCtors","forEach","baseCtor","Object","getOwnPropertyNames","prototype","defineProperty","getOwnPropertyDescriptor","create","getClassInstance","constructor","Easing","Linear","None","amount","Quadratic","In","Out","InOut","Cubic","Quartic","Quintic","Sinusoidal","Math","cos","PI","sin","Exponential","pow","Circular","sqrt","Elastic","Back","s","Bounce","now","self","process","hrtime","time","performance","Date","getTime","now$1","Group","_tweens","_tweensAddedDuringUpdate","getAll","_this","keys","map","tweenId","removeAll","add","tween","getId","remove","update","preserve","tweenIds","autoStart","Interpolation","k","m","f","floor","fn","Utils","Bezier","b","n","pw","bn","Bernstein","CatmullRom","p0","p1","t","fc","Factorial","p2","p3","v0","v1","t2","t3","Sequence","nextId","_nextId","mainGroup","Tween","_object","_group","_isPaused","_pauseStart","_valuesStart","_valuesEnd","_valuesStartRepeat","_duration","_initialRepeat","_repeat","_yoyo","_isPlaying","_reversed","_delayTime","_startTime","_easingFunction","_interpolationFunction","_chainedTweens","_onStartCallbackFired","_id","_isChainStopped","_goToEnd","_headTween","_tailTween","_headStart","isPlaying","isPaused","duration","d","start","property","_swapEndStartRepeatValues","parseFloat","_setupProperties","startValue","startValueIsArray","Array","isArray","propType","isInterpolationList","endValues","_handleRelativeValue","concat","prop","slice","reverse","stop","stopChainedTweens","_onStopCallback","end","Infinity","pause","resume","numChainedTweens","group","call","_onFinishCallback","from","properties","to","_chainedTween","delay","union","headTween","tailTween","chain","repeat","times","repeatDelay","_repeatDelayTime","yoyo","easing","easingFunction","interpolation","interpolationFunction","tweens","_i","arguments","unchain","onStart","_onStartCallback","onUpdate","_onUpdateCallback","onRepeat","_onRepeatCallback","onComplete","_onCompleteCallback","onStop","elapsed","endTime","value","_updateProperties","isFinite","startIsArray","endIsArray","des","set","charAt","tmp","endValue","TweenChain","_tween","_chainTween","props","object","TweenManager","destroy","timeline","killTweensOf","aLoader","_setMeshData","node","_texKeys","meshes","textures","materials","queue","shift","isMesh","mat","material","tex","uuid","children","userData","meshData","manager","aEXRLoader","load","url","onLoad","onProgress","onError","texSettings","loader","EXRLoader","loadingManager","setPath","path","setResourcePath","resourcePath","assign","extension","aFBXLoader","loadCallback","FBXLoader","aGLTFLoader","gltf","scene","animations","gltfLoader","GLTFLoader","dracoLoader","DRACOLoader","setDecoderPath","dracoPath","setDRACOLoader","setMeshoptDecoder","MeshoptDecoder","aHDRLoader","mapping","EquirectangularReflectionMapping","RGBELoader","aJSONLoader","FileLoader","file","JSON","parse","aTextureLoader","colorSpace","SRGBColorSpace","TextureLoader","ClassProperties","propertyKey","options","_properties","applyProperties","clsName","PropertyManager","_hasProperties","_propertyMap","_getProperties","autoAdd","get","_getMergedProperties","values","getPrototypeOf","_getClassProperties","_classMap","_applyClassProperties","cls","Map","normalized","CinestationBlendStyle","QuadraticIn","QuadraticOut","QuadraticInOut","CinestationBlendDefinition","style","ObjectInstance","instanceId","_instanceCount","MathUtils","generateUUID","type","Component","enabled","_enabled","componentScheduler","enableComponent","_onPreDestroy","unscheduleAll","removeComponent","onDestroy","flags","OnLoadCalled","schedule","interval","scheduler","unshedule","Destroyed","destroyImmediate","clamp","lerp","CinestationBrain","vcam","_vcam","vcams","_vcams","lastUpdate","dt","getActiveCamera","_lerpTime","brainBlend","_lerpToMainCamera","activeCamera","_vcamSolo","addCamera","indexOf","removeCamera","filter","sort","priority","fov","near","far","finalPosition","finalRotation","isLensChanged","isTransformChanged","position","equals","quaternion","isChanged","slerp","updateProjectionMatrix","_isChanged","onChanged","VirtualCamera","_finalPosition","copy","correctPosition","_finalRotation","multiply","correctRotation","isCamera","camera","viewer","brain","getComponent","lookAt","Vector3","Quaternion","follow","lookaheadPosition","trackedObjectOffset","dir","PressState","NONE","SELECTED","IN","Pressability","connect","connector","_connectors","find","state","disconnect","pointerDown","pointer","_raycaster","setFromCamera","conn","intersects","intersectObject","pointerUp","pointerMove","Raycaster","DeviceInput","pointerButton","_pointerButton","_pointer","pointerPosition","_pointerPosition","mouseWheel","_mouseWheel","touchCount","_touchCount","touches","_touches","_keys","addEventListeners","domElement","canvas","touchAction","_addEventListener","e","preventDefault","_onPointerDown","passive","_onPointerUp","_onPointerMove","_onMouseWheel","_onTouchStart","_onTouchEnd","_onTouchMove","window","_onKeyDown","_onKeyPress","_onKeyUp","removeAllListeners","removeEventListener","event","CLICK","POINTER_DOWN","POINTER_UP","POINTER_OVER","POINTER_OUT","_pressability","addEventListener","_remapPointer","width","rootRotated","button","buttons","clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","movementX","movementY","_remapTouch","identifier","_computePointer","x","y","height","POINTER_MOVE","deltaY","wheelDelta","MOUSE_WHEEL","TOUCH_START","TOUCH_END","touchesTo","id","Vector2","touch","TOUCH_MOVE","key","KEYDOWN","KEYPRESS","KEYUP","RESIZE","isSSR","DetectUA","match","pattern","userAgent","isMobile","isTablet","test","iOSDevice","isAndroidDevice","isDesktop","isMacOS","version","replace","split","versionNumber","isWindows","isiOS","isAndroid","browser","versionIdentifier","forceUserAgent","navigator","toLowerCase","platform","maxTouchPoints","MSStream","detectUA","vendor","browserName","audioElem","document","createElement","SystemInfo","device","isIOS","isLinux","ua","isEdge","isIE","isFirefox","isChrome","isOpera","isSafari","isSupportMSAA","isSupportOgg","canPlayType","isRetina","devicePixelRatio","cpuCoreCount","hardwareConcurrency","baseUrl","location","origin","isIFrame","top","min","max","exp","kNegligibleResidual","kLogNegligibleResidual","exponentialDamp","current","dampTime","deltaTime","quarticDamp","tt","smoothDamp","smoothTime","maxSpeed","_velocity","num","num2","num3","num4","num5","num6","num7","num8","Quat_exponentialDamp","out","Quat_quarticDamp","Quat_smoothDamp","Vec3_smoothDamp","Vector3_UNIT_X","freeze","Vector3_UNIT_Y","Vector3_UNIT_Z","Vector3_RIGHT","Vector3_UP","Vector3_ZERO","Vector3_ONE","Vector3_NEG_ONE","abs","acos","EPSILON","__delta","VInterpTo","speed","dist","sub","lengthSq","multiplyScalar","VInterpConstantTo","delta","deltaM","maxStep","deltaN","Quat_Equals","epsilon","z","w","Quat_AngularDistance","innerProd","QInterpTo","QInterpConstantTo","deltaSpeed","angularDist","FInterpTo","FInterpConstantTo","step","catmullRom","CurvePoint","p","mode","AnimationCurve","_getInterpolant","samples","_samples","_interpolant","LinearInterpolant","Float32Array","createCurvePoint","resample","interpolant","parameterPositions","sampleValues","point","getPoint","evaluate","needsUpdate","points","intPoint","weight","isAnimationCurve","Perlin","Noise","fade","_Fade","grad","_Grad","_Lerp","_Permutation","xi","yi","zi","X","Y","Z","u","A","AA","AB","B","BA","BB","Fbm","octave","noise","hash","h","degToRad","tan","VCamFreeLookMode","FREE","TRANSLATE","FreelookVirtualCamera","onEnable","reset","onDisable","_button","_touchID","_rotateDelta","_panDelta","_distanceDelta","gotoPOI","_tweenPOI","_preLoc0","__loc0","_calculateRotateDelta","__moveDelta","_calculatePanDelta","__worldPos","distanceTo","distNew","_calculateDistanceScale","rotateTouchID","_preLoc1","__loc1","__preCenter","__center","scale","forbidZ","loc0","loc1","rotateSpeed","forbidX","forbidY","panSpeed","forbidPanX","forbidPanY","__posDelta","__posOffset","__quat","__spherical","__xAxis","__yAxis","setFromUnitVectors","up","Object3D","DEFAULT_UP","applyQuaternion","setFromVector3","dampFactor","rotateSmoothing","theta","thetaMin","thetaMax","phi","phiMin","phiMax","radius","distanceMin","distanceMax","setFromSpherical","invert","dist0","pos","normalize","setFromMatrixColumn","matrix","forbitPanOffsetY","panSmoothing","panScale","Spherical","Box","Mesh","BoxGeometry","Sphere","SphereGeometry","Plane","PlaneGeometry","ReflectorShader","uniforms","color","tDiffuse","textureMatrix","vertexShader","fragmentShader","Reflector","geometry","isReflector","Color","textureWidth","textureHeight","clipBias","multisample","defaultNormal","normal","reflectorPlane","reflectorWorldPosition","cameraWorldPosition","rotationMatrix","Matrix4","lookAtPosition","clipPlane","Vector4","view","q","virtualCamera","PerspectiveCamera","layers","layer","renderTarget","WebGLRenderTarget","HalfFloatType","shader","ShaderMaterial","UniformsUtils","clone","texture","scope","onBeforeRender","renderer","setFromMatrixPosition","matrixWorld","extractRotation","applyMatrix4","subVectors","dot","reflect","negate","updateMatrixWorld","projectionMatrix","matrixWorldInverse","setFromNormalAndCoplanarPoint","constant","sign","elements","visible","currentRenderTarget","getRenderTarget","currentActiveCubeFace","getActiveCubeFace","currentActiveMipmapLevel","getActiveMipmapLevel","currentXrEnabled","xr","currentShadowAutoUpdate","shadowMap","autoUpdate","setRenderTarget","buffers","depth","setMask","autoClear","render","viewport","getTextureMatrix","dispose","vert_fullscreen","frag_BoxfilterBlur","frag_panoramaToCubeMap","frag_cubeMapToPanorama","getShaderMaterial","onInit","parameters","entries","reduce","acc","uniform","vert_Reflector","frag_Reflector","ReflectorMaterial","onBeforeCompile","channels","aoMap","channel","lightMap","roughnessMap","normalMap","defines","metalness","roughness","UV_AO","UV_LIGHTMAP","UV_ROUGHNESS","UV_NORMAL","aoMapIntensity","lightMapIntensity","Plugin","DebugPlugin","Instance","getPlugin","onRender","Scene","LOD_MIN","_flatCamera","OrthographicCamera","_setViewport","scissor","_getCommonVertexShader","_getClearMaterial","intensity","blending","NoBlending","depthWrite","depthTest","_getCubeMapMaterial","envMap","lod","AdditiveBlending","_getMipCopyMaterial","lodMax","CUBEUV_TEXEL_WIDTH","CUBEUV_TEXEL_HEIGHT","CUBEUV_MAX_MIP","cubeUVMap","_getMipBlurMaterial","exposure","Caller","_pause","_target","_callback","lived","_repeatForever","_elapsed","_interval","trigger","_lastTime","Callers","callers","_callers","Scheduler","_callersArray","callersArray","j","Invoker","_targets","invoke","InvokerOneCall","ComponentScheduler","startInvoker","updateInvoker","lastUpdateInvoker","comp","OnEnableCalled","IsStartCalled","DependentMode","ComponentManager","_viewer","_scheduler","_componentScheduler","_componentsMap","components","destroyComponents","delete","child","activeComponents","_activeComponent","addComponent","root","func","component","_findComponent","_addDendencies","getComponentsInChidren","traverseComponents","dependentInfo","_dependenciesMap","dep","active","TaskManager","percent","_percent","_tasks","_taskIndex","task","excute","parepareWebGL","isSupportedBrowser","HTMLCanvasElement","webglOpts","alpha","stencil","antialias","premultipliedAlpha","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","WebGL2RenderingContext","gl","getContext","RENDER_TARGET_FLOAT_TYPE","DATA_FLOAT_TYPE","FloatType","err","WebGLRenderingContext","getExtension","getParameter","MAX_VERTEX_TEXTURE_IMAGE_UNITS","_floatPacking","UnsignedByteType","Orientation","ResourceManager","str","pop","dirname","lastIndexOf","substring","basename","ext","_parseURL","uri","File","mainFile","_getTextureKey","settings","join","_splitTextureSettings","_texSettingKeys","_caches","_loaders","addLoader","Loader","loadAsset","Promise","resolve","reject","result","sel","applyProps","writable","PluginManager","_plugins","plugin","uninstall","_pluginsMap","traversePlugins","ins","addPlugin","install","removePlugin","Viewer","_setDirectLightShadow","shadow","shadowCamera","_shadowCameraKeys","bias","mapSize","compileMaterial","fullscreenMesh","compile","compileObject3D","compileTexture","initTexture","Blit","face","RT","fullscreenCamera","createFullscreenTriangle","BufferGeometry","setAttribute","Float32BufferAttribute","findChild","parts","part","getChildByName","getObject","getObjects","objects","_root","_time","_scene","_camera","_renderer","_canvas","_gl","_RENDER_TARGET_FLOAT_TYPE","_DATA_FLOAT_TYPE","dpr","_dpr","_width","_height","_viewport","_rootRotated","_taskManager","_resourceManager","_componentManager","_pluginManager","_tweenManager","_input","_addDefaultLoaders","_frame","_targetFrameRate","loop","_autoResize","resize","_onRender","_onResize","setSize","_running","frameCallback","requestAnimationFrame","innerWidth","innerHeight","_orientation","LANDSCAPE","PORTRAIT","transform","transformOrigin","margin","isOrthographicCamera","zoom","factor","isPerspectiveCamera","manual","aspect","distance","getWorldPosition","__target","castShadow","receiveShadow","addNode","traverseMaterials","item","rotation","shadowArgs","makeDefault","parent","isObject3D","Error","isDirectionalLight","removeNode","removeFromParent","activeNode","createRenderTarget","nearest","floatType","msaa","mipmap","wrapS","ClampToEdgeWrapping","wrapT","magFilter","NearestFilter","LinearFilter","minFilter","LinearMipMapLinearFilter","anisotropy","LinearSRGBColorSpace","depthBuffer","stencilBuffer","generateMipmaps","createCubeRenderTarget","size","WebGLCubeRenderTarget","createDataTexture","data","DataTexture","RGBAFormat","UVMapping","portal","blit","every","isMaterial","isTexture","autoResize","shadows","targetFrameRate","toneMapping","LinearToneMapping","toneMappingExposure","maxDPR","tasker","AUTO","el","getElementById","webgl","WebGLRenderer","context","setPixelRatio","outputColorSpace","PCFSoftShadowMap","autoReset","LoadingManager","MergeRefectPass","envMapTarget","_envMapTarget","_pmremGenerator","mergeReflect","_clearTexture","envMapIntensity","_mergeReflect","_reflectMap","_lodMeshes","_getPMREMExtension","pmremGenerator","PMREMGenerator","_fromTextureExtension","reflectMap","_fromTexture","_fromCubeTexture","_cubeMapMaterial","_copyTexMaterial","_copyMesh","_lodPlanes","_sourceInit","_setSize","image","_allocateTargets","_copyTexture","targetOut","source","_pingPongRenderTarget","scissorTest","sourceTarget","cubeMapMaterial","_blit","lodOut","_lodMax","outputSize","_sizeLods","_cubeSize","lodMesh","environment","mipGaussianBlendWeight","sigma","sigma2","c","numerator","denorminator","MAX_LOD","MergeMipBlurPass","blurIntensity","_blurIntensity","_sigma","_blurMinLod","_blurMaxLod","mergeMipBlur","targetIn","_applyMipBlur","_mipCopy","_mipBlurMaterial","_mipCopyMaterial","blurMinLod","blurMaxLod","pingPongRenderTarget","_mipBlur","lodIn","EnvironmentPlugin","_debug","_debugNode","debugScene","MeshBasicMaterial","_reflectPass","_mipBlurPass","oldTarget","oldActiveCubeFace","oldActiveMipmapLevel","reflectExposure","reflectBlurIntensity","_cubeCamera","_mergeInfo","resolution","cubeRenderTarget","CubeCamera","BoxProjectionPlugin","_helper","Box3Helper","Box3","_boxMin","_boxMax","center","_center","boxMin","boxMax","useBoxProjection","USE_BOX_PROJECTION","probePos","probeBoxMin","probeBoxMax","ShaderLib","physical","ShaderChunk","worldpos_vertex","envmap_physical_pars_fragment"],"mappings":";;;;;;;;AAWO,MAAMA,YAAAA,CAAAA;AAGCC,IAAAA,YAAAA,CAAaC,IAAoB,EAAEC,KAAa,EAAEC,IAAY,EAAE;QACtE,IAAID,KAAAA,GAAQ,CAAC,CAAG,EAAA;YACZD,IAAKG,CAAAA,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;YACnB,IAAID,IAAAA,CAAKI,MAAM,KAAK,CAAG,EAAA;AACnB,gBAAA,OAAO,IAAI,CAACC,OAAO,CAACH,IAAK,CAAA,CAAA;AAC7B,aAAA;AACJ,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAI,KAAQ,GAAA;QACJ,IAAI,CAACD,OAAO,GAAG,EAAC,CAAA;AAChB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAE,IAAAA,GAAAA,CAAIL,IAAY,EAAE;AACd,QAAA,OAAO,CAAC,CAAC,IAAI,CAACG,OAAO,CAACH,IAAK,CAAA,CAAA;AAC/B,KAAA;IAEAM,EAAGN,CAAAA,IAAY,EAAEO,QAAiC,EAAEC,MAAe,EAAEC,IAAAA,GAAgB,KAAK,EAAE;AACxF,QAAA,IAAIX,IAAO,GAAA,IAAI,CAACK,OAAO,CAACH,IAAK,CAAA,CAAA;AAC7B,QAAA,IAAIF,QAAQ,IAAM,EAAA;AACdA,YAAAA,IAAAA,GAAO,IAAI,CAACK,OAAO,CAACH,IAAAA,CAAK,GAAG,EAAE,CAAA;AAClC,SAAA;AAEA,QAAA,IAAID,QAAQD,IAAKY,CAAAA,SAAS,CAACC,CAAAA,IAAKA,CAAEJ,CAAAA,QAAQ,KAAKA,QAAAA,KAAa,CAACC,MAAAA,IAAUG,CAAEH,CAAAA,MAAM,KAAKA,MAAK,CAAA,CAAA,CAAA;QACzF,IAAIT,KAAAA,GAAQ,CAAC,CAAG,EAAA;AACZa,YAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAC,OAAO,EAAEb,IAAAA,CAAK,qBAAqB,CAAC,CAAA,CAAA;AAClD,YAAA,OAAA;AACJ,SAAA;AAEAF,QAAAA,IAAAA,CAAKgB,IAAI,CAAC;AAAEd,YAAAA,IAAAA;AAAMO,YAAAA,QAAAA;AAAUC,YAAAA,MAAAA;AAAQC,YAAAA,IAAAA;AAAK,SAAA,CAAA,CAAA;AACzC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAM,IAAAA,GAAAA,CAAIf,IAAY,EAAEO,QAAiC,EAAEC,MAAe,EAAE;AAClE,QAAA,IAAIV,IAAO,GAAA,IAAI,CAACK,OAAO,CAACH,IAAK,CAAA,CAAA;AAC7B,QAAA,IAAIF,IAAM,EAAA;AACN,YAAA,IAAIC,QAAQD,IAAKY,CAAAA,SAAS,CAACM,CAAAA,IAAK,CAACA,CAAET,QAAQ,KAAKA,aAAc,CAACC,UAAUQ,CAAER,CAAAA,MAAM,KAAKA,MAAK,CAAA,CAAA,CAAA;AAC3F,YAAA,IAAI,CAACX,YAAY,CAACC,IAAAA,EAAMC,KAAOC,EAAAA,IAAAA,CAAAA,CAAAA;AACnC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAiB,IAAAA,IAAAA,CAAKjB,IAAY,EAAEO,QAAiC,EAAEW,SAA+C,EAAE;QACnG,IAAIA,SAAAA,CAAUC,UAAU,KAAKC,SAAW,EAAA;YACpCF,SAAUC,CAAAA,UAAU,GAAG,EAAE,CAAA;AAC7B,SAAA;QACAD,SAAUC,CAAAA,UAAU,CAACL,IAAI,CAAC;AAAEd,YAAAA,IAAAA;AAAMO,YAAAA,QAAAA;AAAS,SAAA,CAAA,CAAA;QAC3C,IAAI,CAACD,EAAE,CAACN,IAAMO,EAAAA,QAAAA,CAAAA,CAAAA;AACd,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAc,IAAAA,KAAAA,CAAMH,SAA+C,EAAE;AACnD,QAAA,KAAK,IAAIP,CAAAA,IAAKO,SAAUC,CAAAA,UAAU,CAAE;AAChC,YAAA,IAAI,CAACJ,GAAG,CAACJ,EAAEX,IAAI,EAAEW,EAAEJ,QAAQ,CAAA,CAAA;AAC/B,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAe,IAAAA,SAAAA,CAAUd,MAAc,EAAE;AACtB,QAAA,IAAK,IAAIR,IAAAA,IAAQ,IAAI,CAACG,OAAO,CAAE;AAC3B,YAAA,IAAIL,IAAO,GAAA,IAAI,CAACK,OAAO,CAACH,IAAK,CAAA,CAAA;AAC7B,YAAA,IAAK,IAAIuB,CAAAA,GAAIzB,IAAKI,CAAAA,MAAM,EAAEqB,CAAM,EAAA,EAAA;gBAC5B,IAAIZ,CAAAA,GAAIb,IAAI,CAACyB,CAAE,CAAA,CAAA;gBACf,IAAIZ,CAAAA,CAAEH,MAAM,KAAKA,MAAQ,EAAA;AACrB,oBAAA,IAAI,CAACX,YAAY,CAACC,IAAAA,EAAMyB,CAAGvB,EAAAA,IAAAA,CAAAA,CAAAA;AAC/B,iBAAA;AACJ,aAAA;AACJ,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAwB,IAAAA,IAAAA,CAAKxB,IAAY,EAAE,GAAGyB,IAAW,EAAE;AAC/B,QAAA,IAAI3B,IAAO,GAAA,IAAI,CAACK,OAAO,CAACH,IAAK,CAAA,CAAA;AAC7B,QAAA,IAAIF,IAAM,EAAA;AACN,YAAA,IAAK,IAAIyB,CAAAA,GAAIzB,IAAKI,CAAAA,MAAM,EAAEqB,CAAM,EAAA,EAAA;gBAC5B,IAAIZ,CAAAA,GAAIb,IAAI,CAACyB,CAAE,CAAA,CAAA;AACf,gBAAA,IAAIZ,CAAG,EAAA;oBACH,IAAIA,CAAAA,CAAEF,IAAI,EAAE,IAAI,CAACZ,YAAY,CAACC,MAAMyB,CAAGvB,EAAAA,IAAAA,CAAAA,CAAAA;oBACvC,IAAIW,CAAAA,CAAEH,MAAM,EAAEG,CAAEJ,CAAAA,QAAQ,CAACmB,KAAK,CAACf,CAAEH,CAAAA,MAAM,EAAEiB,IAAAA,CAAAA,CAAAA;AACpCd,yBAAAA,CAAAA,CAAEJ,QAAQ,CAAIkB,GAAAA,IAAAA,CAAAA,CAAAA;AACvB,iBAAA;AACJ,aAAA;AACJ,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;;AAvFUtB,QAAAA,IAAAA,CAAAA,OAAAA,GAA2C,EAAC,CAAA;;AAwF1D;;ACrGA;;;AAGC,yBAED,MAAMwB,OAAO,CAACC,OAAAA,EAAe,GAAGC,cAA2B,GAAA,EAAA,CAAA;AAC3D,MAAMC,KAAQlB,GAAAA,OAAAA,CAAQmB,GAAG,CAACC,IAAI,CAACpB,OAAAA,CAAAA,CAAAA;AAC/B,MAAMqB,IAAOrB,GAAAA,OAAAA,CAAQqB,IAAI,CAACD,IAAI,CAACpB,OAAAA,CAAAA,CAAAA;AAC/B,MAAMC,IAAOD,GAAAA,OAAAA,CAAQC,IAAI,CAACmB,IAAI,CAACpB,OAAAA,CAAAA,CAAAA;AAC/B,MAAMsB,KAAQtB,GAAAA,OAAAA,CAAQsB,KAAK,CAACF,IAAI,CAACpB,OAAAA,CAAAA,CAAAA;MAEpBuB,MAAS,GAAA;IACpBL,KAAOH,EAAAA,IAAAA;IACPM,IAAMN,EAAAA,IAAAA;IACNd,IAAMc,EAAAA,IAAAA;IACNO,KAAOP,EAAAA,IAAAA;IACPS,SAAW,EAAA,KAAA;AAEX,uBACAC,MAAAA,CAAAA,GAAAA;QACE,IAAI,CAACP,KAAK,GAAGA,KAAAA,CAAAA;QACb,IAAI,CAACG,IAAI,GAAGA,IAAAA,CAAAA;QACZ,IAAI,CAACpB,IAAI,GAAGA,IAAAA,CAAAA;QACZ,IAAI,CAACqB,KAAK,GAAGA,KAAAA,CAAAA;QACb,IAAI,CAACE,SAAS,GAAG,IAAA,CAAA;AACnB,KAAA;AAEA,wBACAE,OAAAA,CAAAA,GAAAA;QACE,IAAI,CAACR,KAAK,GAAGH,IAAAA,CAAAA;QACb,IAAI,CAACM,IAAI,GAAGN,IAAAA,CAAAA;QACZ,IAAI,CAACd,IAAI,GAAGc,IAAAA,CAAAA;QACZ,IAAI,CAACO,KAAK,GAAGP,IAAAA,CAAAA;QACb,IAAI,CAACS,SAAS,GAAG,KAAA,CAAA;AACnB,KAAA;AACF;;ACnCO,SAASG,KAAAA,CAAMC,WAAgB,EAAEC,SAAgB,EAAA;IACpDA,SAAUC,CAAAA,OAAO,CAAC,CAACC,QAAAA,GAAAA;AACfC,QAAAA,MAAAA,CAAOC,mBAAmB,CAACF,QAAAA,CAASG,SAAS,CAAEJ,CAAAA,OAAO,CAAC,CAAC1C,IAAAA,GAAAA;AACpD4C,YAAAA,MAAAA,CAAOG,cAAc,CACjBP,WAAYM,CAAAA,SAAS,EACrB9C,IACA4C,EAAAA,MAAAA,CAAOI,wBAAwB,CAACL,SAASG,SAAS,EAAE9C,IAAS4C,CAAAA,IAAAA,MAAAA,CAAOK,MAAM,CAAC,IAAA,CAAA,CAAA,CAAA;AAEnF,SAAA,CAAA,CAAA;AACJ,KAAA,CAAA,CAAA;AACJ;;ACVO,SAASC,gBAAAA,CAAiBC,WAAgB,EAAE1B,OAAc,EAAE,EAAA;AAC/D,IAAA,OAAO,OAAO0B,WAAAA,KAAgB,UAAa,GAAA,IAAIA,eAAe1B,IAAQ0B,CAAAA,GAAAA,WAAAA,CAAAA;AAC1E;;ACFA;;AAEC,QACGC,MAAS,GAAA;IACTC,MAAQ,EAAA;AACJC,QAAAA,IAAAA,EAAM,SAAUC,MAAM,EAAA;YAClB,OAAOA,MAAAA,CAAAA;AACX,SAAA;AACJ,KAAA;IACAC,SAAW,EAAA;AACPC,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;AAChB,YAAA,OAAOA,MAASA,GAAAA,MAAAA,CAAAA;AACpB,SAAA;AACAG,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;YACjB,OAAOA,MAAAA,IAAU,CAAA,GAAIA,MAAK,CAAA,CAAA;AAC9B,SAAA;AACAI,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAI,CAACA,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;AACnB,gBAAA,OAAO,MAAMA,MAASA,GAAAA,MAAAA,CAAAA;AAC1B,aAAA;YACA,OAAO,CAAC,OAAO,EAAEA,UAAUA,MAAAA,GAAS,CAAA,CAAA,GAAK,CAAA,CAAA,CAAA;AAC7C,SAAA;AACJ,KAAA;IACAK,KAAO,EAAA;AACHH,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;AAChB,YAAA,OAAOA,SAASA,MAASA,GAAAA,MAAAA,CAAAA;AAC7B,SAAA;AACAG,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;YACjB,OAAO,EAAEA,MAASA,GAAAA,MAAAA,GAASA,MAAS,GAAA,CAAA,CAAA;AACxC,SAAA;AACAI,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAI,CAACA,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;gBACnB,OAAO,GAAA,GAAMA,SAASA,MAASA,GAAAA,MAAAA,CAAAA;AACnC,aAAA;YACA,OAAO,GAAA,IAAO,CAACA,UAAU,CAAA,IAAKA,MAASA,GAAAA,MAAAA,GAAS,CAAA,CAAA,CAAA;AACpD,SAAA;AACJ,KAAA;IACAM,OAAS,EAAA;AACLJ,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;YAChB,OAAOA,MAAAA,GAASA,SAASA,MAASA,GAAAA,MAAAA,CAAAA;AACtC,SAAA;AACAG,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;AACjB,YAAA,OAAO,CAAI,GAAA,EAAEA,MAASA,GAAAA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,CAAAA;AAC5C,SAAA;AACAI,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAI,CAACA,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;gBACnB,OAAO,GAAA,GAAMA,MAASA,GAAAA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,CAAAA;AAC5C,aAAA;YACA,OAAO,CAAC,GAAO,IAAA,CAACA,MAAU,IAAA,CAAA,IAAKA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,GAAS,CAAA,CAAA,CAAA;AAC9D,SAAA;AACJ,KAAA;IACAO,OAAS,EAAA;AACLL,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;YAChB,OAAOA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,CAAAA;AAC/C,SAAA;AACAG,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;AACjB,YAAA,OAAO,EAAEA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,GAASA,SAASA,MAAS,GAAA,CAAA,CAAA;AAC1D,SAAA;AACAI,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAI,CAACA,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;AACnB,gBAAA,OAAO,GAAMA,GAAAA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,CAAAA;AACrD,aAAA;YACA,OAAO,GAAA,IAAQA,CAAAA,MAAAA,IAAU,CAAA,IAAKA,MAASA,GAAAA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,GAAS,CAAA,CAAA,CAAA;AACtE,SAAA;AACJ,KAAA;IACAQ,UAAY,EAAA;AACRN,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;YAChB,OAAO,CAAA,GAAIS,KAAKC,GAAG,CAAC,MAAUD,GAAAA,IAAAA,CAAKE,EAAE,GAAI,CAAA,CAAA,CAAA;AAC7C,SAAA;AACAR,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;AACjB,YAAA,OAAOS,KAAKG,GAAG,CAAC,MAAUH,GAAAA,IAAAA,CAAKE,EAAE,GAAI,CAAA,CAAA,CAAA;AACzC,SAAA;AACAP,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;YACnB,OAAO,GAAA,IAAO,CAAIS,GAAAA,IAAAA,CAAKC,GAAG,CAACD,IAAAA,CAAKE,EAAE,GAAGX,MAAM,CAAA,CAAA,CAAA;AAC/C,SAAA;AACJ,KAAA;IACAa,WAAa,EAAA;AACTX,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;AAChB,YAAA,OAAOA,WAAW,CAAI,GAAA,CAAA,GAAIS,KAAKK,GAAG,CAAC,MAAMd,MAAS,GAAA,CAAA,CAAA,CAAA;AACtD,SAAA;AACAG,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;YACjB,OAAOA,MAAAA,KAAW,IAAI,CAAI,GAAA,CAAA,GAAIS,KAAKK,GAAG,CAAC,CAAG,EAAA,CAAC,EAAKd,GAAAA,MAAAA,CAAAA,CAAAA;AACpD,SAAA;AACAI,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;AACA,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;AACA,YAAA,IAAI,CAACA,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;AACnB,gBAAA,OAAO,GAAMS,GAAAA,IAAAA,CAAKK,GAAG,CAAC,MAAMd,MAAS,GAAA,CAAA,CAAA,CAAA;AACzC,aAAA;AACA,YAAA,OAAO,GAAO,IAAA,CAACS,IAAAA,CAAKK,GAAG,CAAC,CAAG,EAAA,CAAC,EAAMd,IAAAA,MAAS,GAAA,CAAA,KAAM,CAAA,CAAA,CAAA;AACrD,SAAA;AACJ,KAAA;IACAe,QAAU,EAAA;AACNb,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;AAChB,YAAA,OAAO,CAAIS,GAAAA,IAAAA,CAAKO,IAAI,CAAC,IAAIhB,MAASA,GAAAA,MAAAA,CAAAA,CAAAA;AACtC,SAAA;AACAG,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;AACjB,YAAA,OAAOS,IAAKO,CAAAA,IAAI,CAAC,CAAA,GAAI,EAAEhB,MAASA,GAAAA,MAAAA,CAAAA,CAAAA;AACpC,SAAA;AACAI,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAI,CAACA,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;gBACnB,OAAO,CAAC,OAAOS,IAAAA,CAAKO,IAAI,CAAC,CAAA,GAAIhB,MAASA,GAAAA,MAAAA,CAAAA,GAAU,CAAA,CAAA,CAAA;AACpD,aAAA;AACA,YAAA,OAAO,GAAOS,IAAAA,IAAKO,CAAAA,IAAI,CAAC,CAAA,GAAI,CAAChB,MAAU,IAAA,CAAA,IAAKA,MAAAA,CAAAA,GAAU,CAAA,CAAA,CAAA;AAC1D,SAAA;AACJ,KAAA;IACAiB,OAAS,EAAA;AACLf,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;AAChB,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;AACA,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;YACA,OAAO,CAACS,KAAKK,GAAG,CAAC,GAAG,EAAMd,IAAAA,SAAS,CAAA,CAAA,CAAA,GAAMS,KAAKG,GAAG,CAAC,CAACZ,MAAAA,GAAS,GAAE,IAAK,CAAA,GAAIS,KAAKE,EAAE,CAAA,CAAA;AAClF,SAAA;AACAR,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;AACjB,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;AACA,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;AACA,YAAA,OAAOS,KAAKK,GAAG,CAAC,GAAG,CAAC,EAAA,GAAKd,UAAUS,IAAKG,CAAAA,GAAG,CAAEZ,CAAAA,MAAS,GAAA,GAAE,IAAK,CAAIS,GAAAA,IAAAA,CAAKE,EAAE,CAAI,GAAA,CAAA,CAAA;AAChF,SAAA;AACAP,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;AACA,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;YACAA,MAAU,IAAA,CAAA,CAAA;AACV,YAAA,IAAIA,SAAS,CAAG,EAAA;gBACZ,OAAO,CAAC,MAAMS,IAAKK,CAAAA,GAAG,CAAC,CAAG,EAAA,EAAA,IAAMd,MAAS,GAAA,CAAA,KAAMS,IAAKG,CAAAA,GAAG,CAAC,CAACZ,SAAS,GAAE,IAAK,CAAIS,GAAAA,IAAAA,CAAKE,EAAE,CAAA,CAAA;AACxF,aAAA;YACA,OAAO,GAAA,GAAMF,KAAKK,GAAG,CAAC,GAAG,CAAC,EAAA,IAAMd,MAAAA,GAAS,CAAA,CAAA,CAAA,GAAMS,KAAKG,GAAG,CAAC,CAACZ,MAAAA,GAAS,GAAE,IAAK,CAAA,GAAIS,IAAKE,CAAAA,EAAE,CAAI,GAAA,CAAA,CAAA;AAC5F,SAAA;AACJ,KAAA;IACAO,IAAM,EAAA;AACFhB,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;AAChB,YAAA,IAAImB,CAAI,GAAA,OAAA,CAAA;YACR,OAAOnB,MAAAA,GAASA,UAAWmB,CAAAA,CAAI,GAAA,CAAA,IAAKnB,MAAAA,GAASmB,CAAAA,CAAAA,CAAAA;AACjD,SAAA;AACAhB,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;AACjB,YAAA,IAAImB,CAAI,GAAA,OAAA,CAAA;YACR,OAAO,EAAEnB,MAASA,GAAAA,MAAAA,IAAWmB,CAAAA,CAAAA,GAAI,CAAA,IAAKnB,MAASmB,GAAAA,CAAAA,CAAK,GAAA,CAAA,CAAA;AACxD,SAAA;AACAf,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAImB,IAAI,OAAU,GAAA,KAAA,CAAA;AAClB,YAAA,IAAI,CAACnB,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;AACnB,gBAAA,OAAO,GAAOA,IAAAA,MAASA,GAAAA,MAAAA,IAAWmB,CAAAA,CAAAA,GAAI,CAAA,IAAKnB,MAASmB,GAAAA,CAAAA,CAAC,CAAA,CAAA;AACzD,aAAA;AACA,YAAA,OAAO,OAAQnB,CAAAA,MAAAA,IAAU,CAAA,IAAKA,MAAAA,IAAWmB,CAAAA,CAAI,GAAA,CAAA,IAAKnB,MAASmB,GAAAA,CAAAA,IAAK,CAAA,CAAA,CAAA;AACpE,SAAA;AACJ,KAAA;IACAC,MAAQ,EAAA;AACJlB,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;AAChB,YAAA,OAAO,IAAIH,MAAOuB,CAAAA,MAAM,CAACjB,GAAG,CAAC,CAAIH,GAAAA,MAAAA,CAAAA,CAAAA;AACrC,SAAA;AACAG,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;YACjB,IAAIA,MAAAA,GAAS,IAAI,IAAM,EAAA;AACnB,gBAAA,OAAO,SAASA,MAASA,GAAAA,MAAAA,CAAAA;aAExB,MAAA,IAAIA,MAAS,GAAA,CAAA,GAAI,IAAM,EAAA;AACxB,gBAAA,OAAO,UAAUA,MAAAA,IAAU,GAAM,GAAA,IAAG,IAAKA,MAAS,GAAA,IAAA,CAAA;aAEjD,MAAA,IAAIA,MAAS,GAAA,GAAA,GAAM,IAAM,EAAA;AAC1B,gBAAA,OAAO,UAAUA,MAAAA,IAAU,IAAO,GAAA,IAAG,IAAKA,MAAS,GAAA,MAAA,CAAA;aAElD,MAAA;AACD,gBAAA,OAAO,UAAUA,MAAAA,IAAU,KAAQ,GAAA,IAAG,IAAKA,MAAS,GAAA,QAAA,CAAA;AACxD,aAAA;AACJ,SAAA;AACAI,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAIA,SAAS,GAAK,EAAA;AACd,gBAAA,OAAOH,OAAOuB,MAAM,CAAClB,EAAE,CAACF,SAAS,CAAK,CAAA,GAAA,GAAA,CAAA;AAC1C,aAAA;YACA,OAAOH,MAAAA,CAAOuB,MAAM,CAACjB,GAAG,CAACH,MAAS,GAAA,CAAA,GAAI,KAAK,GAAM,GAAA,GAAA,CAAA;AACrD,SAAA;AACJ,KAAA;AACJ,EAAA;AAEA,IAAIqB,GAAAA,CAAAA;AACJ;AACA;AACA;AACA;AACA,IAAI,OAAOC,SAAS,WAAe,IAAA,OAAOC,YAAY,WAAeA,IAAAA,OAAAA,CAAQC,MAAM,EAAE;IACjFH,GAAM,GAAA,WAAA;;;QAGF,IAAII,IAAAA,GAAOF,QAAQC,MAAM,EAAA,CAAA;;QAEzB,OAAOC,IAAI,CAAC,CAAE,CAAA,GAAG,OAAOA,IAAI,CAAC,EAAE,GAAG,OAAA,CAAA;AACtC,KAAA,CAAA;AACJ,CAAA,MAEK,IAAI,OAAOH,IAAS,KAAA,WAAA,IAAeA,IAAKI,CAAAA,WAAW,KAAK7D,SAAAA,IAAayD,IAAKI,CAAAA,WAAW,CAACL,GAAG,KAAKxD,SAAW,EAAA;;;IAG1GwD,GAAMC,GAAAA,IAAAA,CAAKI,WAAW,CAACL,GAAG,CAAC5C,IAAI,CAAC6C,KAAKI,WAAW,CAAA,CAAA;AACpD,CAAA,MAEK,IAAIC,IAAAA,CAAKN,GAAG,KAAKxD,SAAW,EAAA;AAC7BwD,IAAAA,GAAAA,GAAMM,KAAKN,GAAG,CAAA;AAClB,CAEK,MAAA;IACDA,GAAM,GAAA,WAAA;QACF,OAAO,IAAIM,OAAOC,OAAO,EAAA,CAAA;AAC7B,KAAA,CAAA;AACJ,CAAA;AAEA,SAASC,KAAAA,GAAAA;AACL,IAAA,OAAOR,GAAQ,EAAA,GAAA,KAAA,CAAA;AACnB,CAAA;AAEA;;;;;IAMA,IAAIS,KAAQ,iBAAe,WAAA;IACvB,SAASA,KAAAA,GAAAA;QACL,IAAI,CAACC,OAAO,GAAG,EAAC,CAAA;QAChB,IAAI,CAACC,wBAAwB,GAAG,EAAC,CAAA;AACrC,KAAA;IACAF,KAAMvC,CAAAA,SAAS,CAAC0C,MAAM,GAAG,WAAA;AACrB,QAAA,IAAIC,QAAQ,IAAI,CAAA;QAChB,OAAO7C,MAAAA,CAAO8C,IAAI,CAAC,IAAI,CAACJ,OAAO,CAAEK,CAAAA,GAAG,CAAC,SAAUC,OAAO,EAAA;YAClD,OAAOH,KAAAA,CAAMH,OAAO,CAACM,OAAQ,CAAA,CAAA;AACjC,SAAA,CAAA,CAAA;AACJ,KAAA,CAAA;IACAP,KAAMvC,CAAAA,SAAS,CAAC+C,SAAS,GAAG,WAAA;QACxB,IAAI,CAACP,OAAO,GAAG,EAAC,CAAA;AACpB,KAAA,CAAA;AACAD,IAAAA,KAAAA,CAAMvC,SAAS,CAACgD,GAAG,GAAG,SAAUC,KAAK,EAAA;AACjC,QAAA,IAAI,CAACT,OAAO,CAACS,KAAMC,CAAAA,KAAK,GAAG,GAAGD,KAAAA,CAAAA;AAC9B,QAAA,IAAI,CAACR,wBAAwB,CAACQ,KAAMC,CAAAA,KAAK,GAAG,GAAGD,KAAAA,CAAAA;AACnD,KAAA,CAAA;AACAV,IAAAA,KAAAA,CAAMvC,SAAS,CAACmD,MAAM,GAAG,SAAUF,KAAK,EAAA;AACpC,QAAA,OAAO,IAAI,CAACT,OAAO,CAACS,KAAAA,CAAMC,KAAK,EAAG,CAAA,CAAA;AAClC,QAAA,OAAO,IAAI,CAACT,wBAAwB,CAACQ,KAAAA,CAAMC,KAAK,EAAG,CAAA,CAAA;AACvD,KAAA,CAAA;AACAX,IAAAA,KAAAA,CAAMvC,SAAS,CAACoD,MAAM,GAAG,SAAUlB,IAAI,EAAEmB,QAAQ,EAAA;QAC7C,IAAInB,IAAAA,KAAS,KAAK,CAAG,EAAA;YAAEA,IAAOI,GAAAA,KAAAA,EAAAA,CAAAA;AAAS,SAAA;QACvC,IAAIe,QAAAA,KAAa,KAAK,CAAG,EAAA;YAAEA,QAAW,GAAA,KAAA,CAAA;AAAO,SAAA;AAC7C,QAAA,IAAIC,WAAWxD,MAAO8C,CAAAA,IAAI,CAAC,IAAI,CAACJ,OAAO,CAAA,CAAA;QACvC,IAAIc,QAAAA,CAASlG,MAAM,KAAK,CAAG,EAAA;YACvB,OAAO,KAAA,CAAA;AACX,SAAA;;;;;;QAMA,MAAOkG,QAAAA,CAASlG,MAAM,GAAG,CAAG,CAAA;YACxB,IAAI,CAACqF,wBAAwB,GAAG,EAAC,CAAA;AACjC,YAAA,IAAK,IAAIhE,CAAI,GAAA,CAAA,EAAGA,IAAI6E,QAASlG,CAAAA,MAAM,EAAEqB,CAAK,EAAA,CAAA;gBACtC,IAAIwE,KAAAA,GAAQ,IAAI,CAACT,OAAO,CAACc,QAAQ,CAAC7E,EAAE,CAAC,CAAA;AACrC,gBAAA,IAAI8E,YAAY,CAACF,QAAAA,CAAAA;gBACjB,IAAIJ,KAAAA,IAASA,MAAMG,MAAM,CAAClB,MAAMqB,SAAe,CAAA,KAAA,KAAA,IAAS,CAACF,QAAU,EAAA;AAC/D,oBAAA,OAAO,IAAI,CAACb,OAAO,CAACc,QAAQ,CAAC7E,EAAE,CAAC,CAAA;AACpC,iBAAA;AACJ,aAAA;AACA6E,YAAAA,QAAAA,GAAWxD,MAAO8C,CAAAA,IAAI,CAAC,IAAI,CAACH,wBAAwB,CAAA,CAAA;AACxD,SAAA;QACA,OAAO,IAAA,CAAA;AACX,KAAA,CAAA;IACA,OAAOF,KAAAA,CAAAA;AACX,CAAA,EAAA,CAAA;AAEA;;AAEC,IACD,IAAIiB,aAAgB,GAAA;IAChBjD,MAAQ,EAAA,SAAU1C,CAAC,EAAE4F,CAAC,EAAA;QAClB,IAAIC,CAAAA,GAAI7F,CAAET,CAAAA,MAAM,GAAG,CAAA,CAAA;AACnB,QAAA,IAAIuG,IAAID,CAAID,GAAAA,CAAAA,CAAAA;QACZ,IAAIhF,CAAAA,GAAIyC,IAAK0C,CAAAA,KAAK,CAACD,CAAAA,CAAAA,CAAAA;AACnB,QAAA,IAAIE,EAAKL,GAAAA,aAAAA,CAAcM,KAAK,CAACvD,MAAM,CAAA;AACnC,QAAA,IAAIkD,IAAI,CAAG,EAAA;YACP,OAAOI,EAAAA,CAAGhG,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,EAAE,EAAE8F,CAAAA,CAAAA,CAAAA;AAC1B,SAAA;AACA,QAAA,IAAIF,IAAI,CAAG,EAAA;YACP,OAAOI,EAAAA,CAAGhG,CAAC,CAAC6F,CAAE,CAAA,EAAE7F,CAAC,CAAC6F,CAAAA,GAAI,CAAE,CAAA,EAAEA,CAAIC,GAAAA,CAAAA,CAAAA,CAAAA;AAClC,SAAA;AACA,QAAA,OAAOE,EAAGhG,CAAAA,CAAC,CAACY,CAAAA,CAAE,EAAEZ,CAAC,CAACY,CAAI,GAAA,CAAA,GAAIiF,CAAIA,GAAAA,CAAAA,GAAIjF,CAAI,GAAA,CAAA,CAAE,EAAEkF,CAAIlF,GAAAA,CAAAA,CAAAA,CAAAA;AAClD,KAAA;IACAsF,MAAQ,EAAA,SAAUlG,CAAC,EAAE4F,CAAC,EAAA;AAClB,QAAA,IAAIO,CAAI,GAAA,CAAA,CAAA;QACR,IAAIC,CAAAA,GAAIpG,CAAET,CAAAA,MAAM,GAAG,CAAA,CAAA;QACnB,IAAI8G,EAAAA,GAAKhD,KAAKK,GAAG,CAAA;AACjB,QAAA,IAAI4C,EAAKX,GAAAA,aAAAA,CAAcM,KAAK,CAACM,SAAS,CAAA;AACtC,QAAA,IAAK,IAAI3F,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,IAAKwF,GAAGxF,CAAK,EAAA,CAAA;AACzBuF,YAAAA,CAAAA,IAAKE,EAAG,CAAA,CAAA,GAAIT,CAAGQ,EAAAA,CAAAA,GAAIxF,CAAKyF,CAAAA,GAAAA,EAAAA,CAAGT,CAAGhF,EAAAA,CAAAA,CAAAA,GAAKZ,CAAC,CAACY,CAAE,CAAA,GAAG0F,GAAGF,CAAGxF,EAAAA,CAAAA,CAAAA,CAAAA;AACpD,SAAA;QACA,OAAOuF,CAAAA,CAAAA;AACX,KAAA;IACAK,UAAY,EAAA,SAAUxG,CAAC,EAAE4F,CAAC,EAAA;QACtB,IAAIC,CAAAA,GAAI7F,CAAET,CAAAA,MAAM,GAAG,CAAA,CAAA;AACnB,QAAA,IAAIuG,IAAID,CAAID,GAAAA,CAAAA,CAAAA;QACZ,IAAIhF,CAAAA,GAAIyC,IAAK0C,CAAAA,KAAK,CAACD,CAAAA,CAAAA,CAAAA;AACnB,QAAA,IAAIE,EAAKL,GAAAA,aAAAA,CAAcM,KAAK,CAACO,UAAU,CAAA;AACvC,QAAA,IAAIxG,CAAC,CAAC,CAAA,CAAE,KAAKA,CAAC,CAAC6F,EAAE,EAAE;AACf,YAAA,IAAID,IAAI,CAAG,EAAA;AACPhF,gBAAAA,CAAAA,GAAIyC,KAAK0C,KAAK,CAAED,IAAID,CAAK,IAAA,IAAID,CAAAA,CAAAA,CAAAA,CAAAA;AACjC,aAAA;AACA,YAAA,OAAOI,EAAGhG,CAAAA,CAAC,CAAEY,CAAAA,CAAI,GAAA,CAAA,GAAIiF,CAAAA,IAAKA,CAAE,CAAA,EAAE7F,CAAC,CAACY,EAAE,EAAEZ,CAAC,CAAEY,CAAAA,CAAAA,GAAI,CAAA,IAAKiF,EAAE,EAAE7F,CAAC,CAAEY,CAAAA,CAAI,GAAA,CAAA,IAAKiF,CAAAA,CAAE,EAAEC,CAAIlF,GAAAA,CAAAA,CAAAA,CAAAA;SAEvE,MAAA;AACD,YAAA,IAAIgF,IAAI,CAAG,EAAA;gBACP,OAAO5F,CAAC,CAAC,CAAA,CAAE,IAAIgG,EAAGhG,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAE,CAAC8F,CAAK9F,CAAAA,GAAAA,CAAC,CAAC,CAAA,CAAE,CAAD,CAAA;AACvD,aAAA;AACA,YAAA,IAAI4F,IAAI,CAAG,EAAA;AACP,gBAAA,OAAO5F,CAAC,CAAC6F,CAAE,CAAA,IAAIG,EAAAA,CAAGhG,CAAC,CAAC6F,CAAE,CAAA,EAAE7F,CAAC,CAAC6F,CAAE,CAAA,EAAE7F,CAAC,CAAC6F,CAAI,GAAA,CAAA,CAAE,EAAE7F,CAAC,CAAC6F,CAAAA,GAAI,CAAE,CAAA,EAAEC,CAAID,GAAAA,CAAAA,CAAAA,GAAK7F,CAAC,CAAC6F,EAAE,CAAD,CAAA;AAClE,aAAA;AACA,YAAA,OAAOG,EAAGhG,CAAAA,CAAC,CAACY,CAAAA,GAAIA,CAAI,GAAA,CAAA,GAAI,CAAE,CAAA,EAAEZ,CAAC,CAACY,CAAE,CAAA,EAAEZ,CAAC,CAAC6F,CAAAA,GAAIjF,CAAI,GAAA,CAAA,GAAIiF,CAAIjF,GAAAA,CAAAA,GAAI,CAAE,CAAA,EAAEZ,CAAC,CAAC6F,CAAIjF,GAAAA,CAAAA,GAAI,CAAIiF,GAAAA,CAAAA,GAAIjF,CAAI,GAAA,CAAA,CAAE,EAAEkF,CAAIlF,GAAAA,CAAAA,CAAAA,CAAAA;AAC9F,SAAA;AACJ,KAAA;IACAqF,KAAO,EAAA;AACHvD,QAAAA,MAAAA,EAAQ,SAAU+D,EAAE,EAAEC,EAAE,EAAEC,CAAC,EAAA;AACvB,YAAA,OAAO,CAACD,EAAKD,GAAAA,EAAC,IAAKE,CAAIF,GAAAA,EAAAA,CAAAA;AAC3B,SAAA;QACAF,SAAW,EAAA,SAAUH,CAAC,EAAExF,CAAC,EAAA;AACrB,YAAA,IAAIgG,EAAKjB,GAAAA,aAAAA,CAAcM,KAAK,CAACY,SAAS,CAAA;AACtC,YAAA,OAAOD,EAAGR,CAAAA,CAAAA,CAAAA,GAAKQ,EAAGhG,CAAAA,CAAAA,CAAAA,GAAKgG,GAAGR,CAAIxF,GAAAA,CAAAA,CAAAA,CAAAA;AAClC,SAAA;AACAiG,QAAAA,SAAAA,EAAW,WAAC;AACR,YAAA,IAAIxG,CAAI,GAAA;AAAC,gBAAA,CAAA;AAAE,aAAA,CAAA;AACX,YAAA,OAAO,SAAU+F,CAAC,EAAA;AACd,gBAAA,IAAIrC,CAAI,GAAA,CAAA,CAAA;gBACR,IAAI1D,CAAC,CAAC+F,CAAAA,CAAE,EAAE;oBACN,OAAO/F,CAAC,CAAC+F,CAAE,CAAA,CAAA;AACf,iBAAA;AACA,gBAAA,IAAK,IAAIxF,CAAAA,GAAIwF,CAAGxF,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;oBACxBmD,CAAKnD,IAAAA,CAAAA,CAAAA;AACT,iBAAA;gBACAP,CAAC,CAAC+F,EAAE,GAAGrC,CAAAA,CAAAA;gBACP,OAAOA,CAAAA,CAAAA;AACX,aAAA,CAAA;AACJ,SAAA,EAAA;QACAyC,UAAY,EAAA,SAAUC,EAAE,EAAEC,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEJ,CAAC,EAAA;AACnC,YAAA,IAAIK,EAAK,GAACF,CAAAA,EAAAA,GAAKL,EAAC,IAAK,GAAA,CAAA;AACrB,YAAA,IAAIQ,EAAK,GAACF,CAAAA,EAAAA,GAAKL,EAAC,IAAK,GAAA,CAAA;AACrB,YAAA,IAAIQ,KAAKP,CAAIA,GAAAA,CAAAA,CAAAA;AACb,YAAA,IAAIQ,KAAKR,CAAIO,GAAAA,EAAAA,CAAAA;YACb,OAAQ,CAAA,CAAIR,GAAAA,EAAAA,GAAK,IAAII,EAAKE,GAAAA,EAAAA,GAAKC,EAAC,IAAKE,EAAK,GAAC,CAAA,CAAC,CAAA,GAAIT,EAAK,GAAA,CAAA,GAAII,EAAK,GAAA,CAAA,GAAIE,KAAKC,EAAC,IAAKC,EAAKF,GAAAA,EAAAA,GAAKL,CAAID,GAAAA,EAAAA,CAAAA;AAC/F,SAAA;AACJ,KAAA;AACJ,CAAA,CAAA;AAEA;;IAGA,IAAIU,QAAW,iBAAe,WAAA;AAC1B,IAAA,SAASA,QACT,GAAA,EAAA;AACAA,IAAAA,QAAAA,CAASC,MAAM,GAAG,WAAA;AACd,QAAA,OAAOD,SAASE,OAAO,EAAA,CAAA;AAC3B,KAAA,CAAA;AACAF,IAAAA,QAAAA,CAASE,OAAO,GAAG,CAAA,CAAA;IACnB,OAAOF,QAAAA,CAAAA;AACX,CAAA,EAAA,CAAA;AAEA,IAAIG,YAAY,IAAI7C,KAAAA,EAAAA,CAAAA;AAEpB;;;;;;;IAQA,IAAI8C,KAAQ,iBAAe,WAAA;IACvB,SAASA,KAAAA,CAAMC,OAAO,EAAEC,MAAM,EAAA;QAC1B,IAAIA,MAAAA,KAAW,KAAK,CAAG,EAAA;YAAEA,MAASH,GAAAA,SAAAA,CAAAA;AAAW,SAAA;QAC7C,IAAI,CAACE,OAAO,GAAGA,OAAAA,CAAAA;QACf,IAAI,CAACC,MAAM,GAAGA,MAAAA,CAAAA;QACd,IAAI,CAACC,SAAS,GAAG,KAAA,CAAA;QACjB,IAAI,CAACC,WAAW,GAAG,CAAA,CAAA;QACnB,IAAI,CAACC,YAAY,GAAG,EAAC,CAAA;QACrB,IAAI,CAACC,UAAU,GAAG,EAAC,CAAA;QACnB,IAAI,CAACC,kBAAkB,GAAG,EAAC,CAAA;QAC3B,IAAI,CAACC,SAAS,GAAG,CAAA,CAAA;QACjB,IAAI,CAACC,cAAc,GAAG,CAAA,CAAA;QACtB,IAAI,CAACC,OAAO,GAAG,CAAA,CAAA;QACf,IAAI,CAACC,KAAK,GAAG,KAAA,CAAA;QACb,IAAI,CAACC,UAAU,GAAG,KAAA,CAAA;QAClB,IAAI,CAACC,SAAS,GAAG,KAAA,CAAA;QACjB,IAAI,CAACC,UAAU,GAAG,CAAA,CAAA;QAClB,IAAI,CAACC,UAAU,GAAG,CAAA,CAAA;AAClB,QAAA,IAAI,CAACC,eAAe,GAAG/F,MAAOC,CAAAA,MAAM,CAACC,IAAI,CAAA;AACzC,QAAA,IAAI,CAAC8F,sBAAsB,GAAG9C,aAAAA,CAAcjD,MAAM,CAAA;QAClD,IAAI,CAACgG,cAAc,GAAG,EAAE,CAAA;QACxB,IAAI,CAACC,qBAAqB,GAAG,KAAA,CAAA;AAC7B,QAAA,IAAI,CAACC,GAAG,GAAGxB,QAAAA,CAASC,MAAM,EAAA,CAAA;QAC1B,IAAI,CAACwB,eAAe,GAAG,KAAA,CAAA;QACvB,IAAI,CAACC,QAAQ,GAAG,KAAA,CAAA;QAChB,IAAI,CAACC,UAAU,GAAG,IAAA,CAAA;QAClB,IAAI,CAACC,UAAU,GAAG,IAAA,CAAA;QAClB,IAAI,CAACC,UAAU,GAAG,KAAA,CAAA;AACtB,KAAA;IACAzB,KAAMrF,CAAAA,SAAS,CAACkD,KAAK,GAAG,WAAA;QACpB,OAAO,IAAI,CAACuD,GAAG,CAAA;AACnB,KAAA,CAAA;IACApB,KAAMrF,CAAAA,SAAS,CAAC+G,SAAS,GAAG,WAAA;QACxB,OAAO,IAAI,CAACd,UAAU,CAAA;AAC1B,KAAA,CAAA;IACAZ,KAAMrF,CAAAA,SAAS,CAACgH,QAAQ,GAAG,WAAA;QACvB,OAAO,IAAI,CAACxB,SAAS,CAAA;AACzB,KAAA,CAAA;AACAH,IAAAA,KAAAA,CAAMrF,SAAS,CAACiH,QAAQ,GAAG,SAAUC,CAAC,EAAA;QAClC,IAAI,CAACrB,SAAS,GAAGqB,CAAAA,CAAAA;AACjB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA7B,IAAAA,KAAAA,CAAMrF,SAAS,CAACmH,KAAK,GAAG,SAAUjF,IAAI,EAAA;QAClC,IAAI,IAAI,CAAC+D,UAAU,EAAE;AACjB,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;;QAEA,IAAI,CAACV,MAAM,IAAI,IAAI,CAACA,MAAM,CAACvC,GAAG,CAAC,IAAI,CAAA,CAAA;AACnC,QAAA,IAAI,CAAC+C,OAAO,GAAG,IAAI,CAACD,cAAc,CAAA;QAClC,IAAI,IAAI,CAACI,SAAS,EAAE;;;YAGhB,IAAI,CAACA,SAAS,GAAG,KAAA,CAAA;AACjB,YAAA,IAAK,IAAIkB,QAAAA,IAAY,IAAI,CAACxB,kBAAkB,CAAE;gBAC1C,IAAI,CAACyB,yBAAyB,CAACD,QAAAA,CAAAA,CAAAA;gBAC/B,IAAI,CAAC1B,YAAY,CAAC0B,QAAAA,CAAS,GAAG,IAAI,CAACxB,kBAAkB,CAACwB,QAAS,CAAA,CAAA;AACnE,aAAA;AACJ,SAAA;QACA,IAAI,CAACnB,UAAU,GAAG,IAAA,CAAA;QAClB,IAAI,CAACT,SAAS,GAAG,KAAA,CAAA;QACjB,IAAI,CAACgB,qBAAqB,GAAG,KAAA,CAAA;QAC7B,IAAI,CAACE,eAAe,GAAG,KAAA,CAAA;QACvB,IAAI,CAACN,UAAU,GAAGlE,IAAS5D,KAAAA,SAAAA,GAAa,OAAO4D,IAAAA,KAAS,QAAWI,GAAAA,KAAAA,EAAAA,GAAUgF,UAAWpF,CAAAA,IAAAA,CAAAA,GAAQA,IAAQI,GAAAA,KAAAA,EAAAA,CAAAA;AACxG,QAAA,IAAI,CAAC8D,UAAU,IAAI,IAAI,CAACD,UAAU,CAAA;AAClC,QAAA,IAAI,CAACoB,gBAAgB,CAAC,IAAI,CAACjC,OAAO,EAAE,IAAI,CAACI,YAAY,EAAE,IAAI,CAACC,UAAU,EAAE,IAAI,CAACC,kBAAkB,CAAA,CAAA;AAC/F,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;IACAP,KAAMrF,CAAAA,SAAS,CAACuH,gBAAgB,GAAG,SAAUjC,OAAO,EAAEI,YAAY,EAAEC,UAAU,EAAEC,kBAAkB,EAAA;QAC9F,IAAK,IAAIwB,YAAYzB,UAAY,CAAA;YAC7B,IAAI6B,UAAAA,GAAalC,OAAO,CAAC8B,QAAS,CAAA,CAAA;YAClC,IAAIK,iBAAAA,GAAoBC,KAAMC,CAAAA,OAAO,CAACH,UAAAA,CAAAA,CAAAA;YACtC,IAAII,QAAAA,GAAWH,iBAAoB,GAAA,OAAA,GAAU,OAAOD,UAAAA,CAAAA;YACpD,IAAIK,mBAAAA,GAAsB,CAACJ,iBAAqBC,IAAAA,KAAAA,CAAMC,OAAO,CAAChC,UAAU,CAACyB,QAAS,CAAA,CAAA,CAAA;;;YAGlF,IAAIQ,QAAAA,KAAa,WAAeA,IAAAA,QAAAA,KAAa,UAAY,EAAA;AACrD,gBAAA,SAAA;AACJ,aAAA;;AAEA,YAAA,IAAIC,mBAAqB,EAAA;gBACrB,IAAIC,SAAAA,GAAYnC,UAAU,CAACyB,QAAS,CAAA,CAAA;gBACpC,IAAIU,SAAAA,CAAU1K,MAAM,KAAK,CAAG,EAAA;AACxB,oBAAA,SAAA;AACJ,iBAAA;;gBAEA0K,SAAYA,GAAAA,SAAAA,CAAUjF,GAAG,CAAC,IAAI,CAACkF,oBAAoB,CAAC7I,IAAI,CAAC,IAAI,EAAEsI,UAAAA,CAAAA,CAAAA,CAAAA;;gBAE/D7B,UAAU,CAACyB,SAAS,GAAG;AAACI,oBAAAA,UAAAA;AAAW,iBAAA,CAACQ,MAAM,CAACF,SAAAA,CAAAA,CAAAA;AAC/C,aAAA;;YAEA,IAAKF,CAAAA,QAAa,KAAA,QAAA,IAAYH,iBAAgB,KAAMD,UAAAA,IAAc,CAACK,mBAAqB,EAAA;AACpFnC,gBAAAA,YAAY,CAAC0B,QAAS,CAAA,GAAGK,iBAAoB,GAAA,EAAE,GAAG,EAAC,CAAA;;gBAEnD,IAAK,IAAIQ,QAAQT,UAAY,CAAA;;;AAGzB9B,oBAAAA,YAAY,CAAC0B,QAAS,CAAA,CAACa,KAAK,GAAGT,UAAU,CAACS,IAAK,CAAA,CAAA;AACnD,iBAAA;gBACArC,kBAAkB,CAACwB,SAAS,GAAGK,iBAAAA,GAAoB,EAAE,GAAG;;;AAGxD,gBAAA,IAAI,CAACF,gBAAgB,CAACC,UAAAA,EAAY9B,YAAY,CAAC0B,QAAAA,CAAS,EAAEzB,UAAU,CAACyB,QAAAA,CAAS,EAAExB,kBAAkB,CAACwB,QAAS,CAAA,CAAA,CAAA;aAE3G,MAAA;;AAED,gBAAA,IAAI,OAAO1B,YAAY,CAAC0B,QAAAA,CAAS,KAAK,WAAa,EAAA;oBAC/C1B,YAAY,CAAC0B,SAAS,GAAGI,UAAAA,CAAAA;AAC7B,iBAAA;AACA,gBAAA,IAAI,CAACC,iBAAmB,EAAA;;;AAGpB/B,oBAAAA,YAAY,CAAC0B,QAAAA,CAAS,IAAI,GAAA,CAAA;AAC9B,iBAAA;AACA,gBAAA,IAAIS,mBAAqB,EAAA;;;oBAGrBjC,kBAAkB,CAACwB,SAAS,GAAGzB,UAAU,CAACyB,QAAS,CAAA,CAACc,KAAK,EAAA,CAAGC,OAAO,EAAA,CAAA;iBAElE,MAAA;AACDvC,oBAAAA,kBAAkB,CAACwB,QAAS,CAAA,GAAG1B,YAAY,CAAC0B,SAAS,IAAI,CAAA,CAAA;AAC7D,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA,CAAA;IACA/B,KAAMrF,CAAAA,SAAS,CAACoI,IAAI,GAAG,WAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC1B,eAAe,EAAE;YACvB,IAAI,CAACA,eAAe,GAAG,IAAA,CAAA;AACvB,YAAA,IAAI,CAAC2B,iBAAiB,EAAA,CAAA;AAC1B,SAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAACpC,UAAU,EAAE;AAClB,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;;QAEA,IAAI,CAACV,MAAM,IAAI,IAAI,CAACA,MAAM,CAACpC,MAAM,CAAC,IAAI,CAAA,CAAA;QACtC,IAAI,CAAC8C,UAAU,GAAG,KAAA,CAAA;QAClB,IAAI,CAACT,SAAS,GAAG,KAAA,CAAA;QACjB,IAAI,IAAI,CAAC8C,eAAe,EAAE;AACtB,YAAA,IAAI,CAACA,eAAe,CAAC,IAAI,CAAChD,OAAO,CAAA,CAAA;AACrC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;IACAD,KAAMrF,CAAAA,SAAS,CAACuI,GAAG,GAAG,WAAA;QAClB,IAAI,CAAC5B,QAAQ,GAAG,IAAA,CAAA;QAChB,IAAI,CAACvD,MAAM,CAACoF,QAAAA,CAAAA,CAAAA;AACZ,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAnD,IAAAA,KAAAA,CAAMrF,SAAS,CAACyI,KAAK,GAAG,SAAUvG,IAAI,EAAA;QAClC,IAAIA,IAAAA,KAAS,KAAK,CAAG,EAAA;YAAEA,IAAOI,GAAAA,KAAAA,EAAAA,CAAAA;AAAS,SAAA;QACvC,IAAI,IAAI,CAACkD,SAAS,IAAI,CAAC,IAAI,CAACS,UAAU,EAAE;AACpC,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;QACA,IAAI,CAACT,SAAS,GAAG,IAAA,CAAA;QACjB,IAAI,CAACC,WAAW,GAAGvD,IAAAA,CAAAA;;QAEnB,IAAI,CAACqD,MAAM,IAAI,IAAI,CAACA,MAAM,CAACpC,MAAM,CAAC,IAAI,CAAA,CAAA;AACtC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAkC,IAAAA,KAAAA,CAAMrF,SAAS,CAAC0I,MAAM,GAAG,SAAUxG,IAAI,EAAA;QACnC,IAAIA,IAAAA,KAAS,KAAK,CAAG,EAAA;YAAEA,IAAOI,GAAAA,KAAAA,EAAAA,CAAAA;AAAS,SAAA;QACvC,IAAI,CAAC,IAAI,CAACkD,SAAS,IAAI,CAAC,IAAI,CAACS,UAAU,EAAE;AACrC,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;QACA,IAAI,CAACT,SAAS,GAAG,KAAA,CAAA;AACjB,QAAA,IAAI,CAACY,UAAU,IAAIlE,IAAO,GAAA,IAAI,CAACuD,WAAW,CAAA;QAC1C,IAAI,CAACA,WAAW,GAAG,CAAA,CAAA;;QAEnB,IAAI,CAACF,MAAM,IAAI,IAAI,CAACA,MAAM,CAACvC,GAAG,CAAC,IAAI,CAAA,CAAA;AACnC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;IACAqC,KAAMrF,CAAAA,SAAS,CAACqI,iBAAiB,GAAG,WAAA;AAChC,QAAA,IAAK,IAAI5J,CAAAA,GAAI,CAAGkK,EAAAA,gBAAAA,GAAmB,IAAI,CAACpC,cAAc,CAACnJ,MAAM,EAAEqB,CAAIkK,GAAAA,gBAAAA,EAAkBlK,CAAK,EAAA,CAAA;AACtF,YAAA,IAAI,CAAC8H,cAAc,CAAC9H,CAAAA,CAAE,CAAC2J,IAAI,EAAA,CAAA;AAC/B,SAAA;QACA,IAAI,CAAC7B,cAAc,GAAG,EAAE,CAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAlB,IAAAA,KAAAA,CAAMrF,SAAS,CAAC4I,KAAK,GAAG,SAAUA,KAAK,EAAA;QACnC,IAAI,CAACrD,MAAM,GAAGqD,KAAAA,CAAAA;AACd,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAvD,IAAAA,KAAAA,CAAMrF,SAAS,CAAC6I,IAAI,GAAG,SAAUpL,QAAQ,EAAA;QACrC,IAAI,CAACqL,iBAAiB,GAAGrL,QAAAA,CAAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA4H,IAAAA,KAAAA,CAAMrF,SAAS,CAAC+I,IAAI,GAAG,SAAUC,UAAU,EAAA;AACvC,QAAA,IAAI,CAACtD,YAAY,GAAG5F,MAAAA,CAAOK,MAAM,CAAC6I,UAAAA,CAAAA,CAAAA;AAClC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA3D,IAAAA,KAAAA,CAAMrF,SAAS,CAACiJ,EAAE,GAAG,SAAUD,UAAU,EAAE/B,QAAQ,EAAA;;;;;AAK/C,QAAA,IAAI,CAACtB,UAAU,GAAG7F,MAAAA,CAAOK,MAAM,CAAC6I,UAAAA,CAAAA,CAAAA;AAChC,QAAA,IAAI/B,aAAa3I,SAAW,EAAA;YACxB,IAAI,CAACuH,SAAS,GAAGoB,QAAAA,CAAAA;AACrB,SAAA;QACA,IAAI,CAACiC,aAAa,GAAG,IAAI,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA7D,IAAAA,KAAAA,CAAMrF,SAAS,CAACmJ,KAAK,GAAG,SAAU1I,MAAM,EAAA;QACpC,IAAI,CAAC0F,UAAU,GAAG1F,MAAAA,CAAAA;AAClB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA4E,IAAAA,KAAAA,CAAMrF,SAAS,CAACoJ,KAAK,GAAG,SAAUC,SAAS,EAAEC,SAAS,EAAA;QAClD,IAAI,CAAC1C,UAAU,GAAGyC,SAAAA,CAAAA;AAClB,QAAA,IAAI,CAACxC,UAAU,GAAGyC,SAAUC,CAAAA,KAAK,CAAC,IAAI,CAAA,CAAA;QACtC,IAAI,CAACzC,UAAU,GAAG,IAAA,CAAA;AAClB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAzB,IAAAA,KAAAA,CAAMrF,SAAS,CAACwJ,MAAM,GAAG,SAAUC,KAAK,EAAA;QACpC,IAAI,CAAC3D,cAAc,GAAG2D,KAAAA,CAAAA;QACtB,IAAI,CAAC1D,OAAO,GAAG0D,KAAAA,CAAAA;AACf,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACApE,IAAAA,KAAAA,CAAMrF,SAAS,CAAC0J,WAAW,GAAG,SAAUjJ,MAAM,EAAA;QAC1C,IAAI,CAACkJ,gBAAgB,GAAGlJ,MAAAA,CAAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA4E,IAAAA,KAAAA,CAAMrF,SAAS,CAAC4J,IAAI,GAAG,SAAUA,IAAI,EAAA;QACjC,IAAI,CAAC5D,KAAK,GAAG4D,IAAAA,CAAAA;AACb,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAvE,IAAAA,KAAAA,CAAMrF,SAAS,CAAC6J,MAAM,GAAG,SAAUC,cAAc,EAAA;QAC7C,IAAI,CAACzD,eAAe,GAAGyD,cAAAA,CAAAA;AACvB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAzE,IAAAA,KAAAA,CAAMrF,SAAS,CAAC+J,aAAa,GAAG,SAAUC,qBAAqB,EAAA;QAC3D,IAAI,CAAC1D,sBAAsB,GAAG0D,qBAAAA,CAAAA;AAC9B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;IACA3E,KAAMrF,CAAAA,SAAS,CAACuJ,KAAK,GAAG,WAAA;AACpB,QAAA,IAAIU,SAAS,EAAE,CAAA;AACf,QAAA,IAAK,IAAIC,EAAK,GAAA,CAAA,EAAGA,KAAKC,SAAU/M,CAAAA,MAAM,EAAE8M,EAAM,EAAA,CAAA;AAC1CD,YAAAA,MAAM,CAACC,EAAAA,CAAG,GAAGC,SAAS,CAACD,EAAG,CAAA,CAAA;AAC9B,SAAA;QACA,IAAI,CAAC3D,cAAc,GAAG0D,MAAAA,CAAAA;AACtB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;IACA5E,KAAMrF,CAAAA,SAAS,CAACoK,OAAO,GAAG,WAAA;AACtB,QAAA,IAAK,IAAIF,EAAK,GAAA,CAAA,EAAGA,KAAKC,SAAU/M,CAAAA,MAAM,EAAE8M,EAAM,EAAA,CAAA;AAC1C,YAAA,IAAIjN,KAAQ,GAAA,IAAI,CAACsJ,cAAc,CAAC3I,SAAS,CAACC,CAAAA,CAAKA,GAAAA,CAAAA,IAAKsM,SAAS,CAACD,EAAG,CAAA,CAAA,CAAA;YACjE,IAAIjN,KAAAA,GAAQ,CAAC,CAAG,EAAA;AACZ,gBAAA,IAAI,CAACsJ,cAAc,CAACpJ,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AACtC,aAAA;AACJ,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAoI,IAAAA,KAAAA,CAAMrF,SAAS,CAACqK,OAAO,GAAG,SAAU5M,QAAQ,EAAA;QACxC,IAAI,CAAC6M,gBAAgB,GAAG7M,QAAAA,CAAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA4H,IAAAA,KAAAA,CAAMrF,SAAS,CAACuK,QAAQ,GAAG,SAAU9M,QAAQ,EAAA;QACzC,IAAI,CAAC+M,iBAAiB,GAAG/M,QAAAA,CAAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA4H,IAAAA,KAAAA,CAAMrF,SAAS,CAACyK,QAAQ,GAAG,SAAUhN,QAAQ,EAAA;QACzC,IAAI,CAACiN,iBAAiB,GAAGjN,QAAAA,CAAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA4H,IAAAA,KAAAA,CAAMrF,SAAS,CAAC2K,UAAU,GAAG,SAAUlN,QAAQ,EAAA;QAC3C,IAAI,CAACmN,mBAAmB,GAAGnN,QAAAA,CAAAA;AAC3B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA4H,IAAAA,KAAAA,CAAMrF,SAAS,CAAC6K,MAAM,GAAG,SAAUpN,QAAQ,EAAA;QACvC,IAAI,CAAC6K,eAAe,GAAG7K,QAAAA,CAAAA;AACvB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;QAKA4H,KAAAA,CAAMrF,SAAS,CAACoD,MAAM,GAAG,SAAUlB,IAAI,EAAEqB,SAAS,EAAA;QAC9C,IAAIrB,IAAAA,KAAS,KAAK,CAAG,EAAA;YAAEA,IAAOI,GAAAA,KAAAA,EAAAA,CAAAA;AAAS,SAAA;QACvC,IAAIiB,SAAAA,KAAc,KAAK,CAAG,EAAA;YAAEA,SAAY,GAAA,IAAA,CAAA;AAAM,SAAA;AAC9C,QAAA,IAAI,IAAI,CAACiC,SAAS,EACd,OAAO,IAAA,CAAA;QACX,IAAI4B,QAAAA,CAAAA;QACJ,IAAI0D,OAAAA,CAAAA;AACJ,QAAA,IAAIC,UAAU,IAAI,CAAC3E,UAAU,GAAG,IAAI,CAACP,SAAS,CAAA;QAC9C,IAAI,CAAC,IAAI,CAACc,QAAQ,IAAI,CAAC,IAAI,CAACV,UAAU,EAAE;YACpC,IAAI/D,IAAAA,GAAO6I,SACP,OAAO,KAAA,CAAA;AACX,YAAA,IAAIxH,SACA,EAAA,IAAI,CAAC4D,KAAK,CAACjF,IAAAA,CAAAA,CAAAA;AACnB,SAAA;QACA,IAAI,CAACyE,QAAQ,GAAG,KAAA,CAAA;AAChB,QAAA,IAAIzE,IAAO,GAAA,IAAI,CAACkE,UAAU,EAAE;YACxB,OAAO,IAAA,CAAA;AACX,SAAA;AACA,QAAA,IAAI,IAAI,CAACI,qBAAqB,KAAK,KAAO,EAAA;YACtC,IAAI,IAAI,CAAC8D,gBAAgB,EAAE;AACvB,gBAAA,IAAI,CAACA,gBAAgB,CAAC,IAAI,CAAChF,OAAO,CAAA,CAAA;AACtC,aAAA;YACA,IAAI,CAACkB,qBAAqB,GAAG,IAAA,CAAA;AACjC,SAAA;QACAsE,OAAU,GAAC5I,CAAAA,IAAAA,GAAO,IAAI,CAACkE,UAAU,IAAI,IAAI,CAACP,SAAS,CAAA;AACnDiF,QAAAA,OAAAA,GAAU,IAAI,CAACjF,SAAS,KAAK,CAAKiF,IAAAA,OAAAA,GAAU,IAAI,CAAIA,GAAAA,OAAAA,CAAAA;AACpD,QAAA,IAAIE,KAAQ,GAAA,IAAI,CAAC3E,eAAe,CAACyE,OAAAA,CAAAA,CAAAA;;AAEjC,QAAA,IAAI,CAACG,iBAAiB,CAAC,IAAI,CAAC3F,OAAO,EAAE,IAAI,CAACI,YAAY,EAAE,IAAI,CAACC,UAAU,EAAEqF,KAAAA,CAAAA,CAAAA;QACzE,IAAI,IAAI,CAACR,iBAAiB,EAAE;AACxB,YAAA,IAAI,CAACA,iBAAiB,CAAC,IAAI,CAAClF,OAAO,EAAEwF,OAAAA,CAAAA,CAAAA;AACzC,SAAA;AACA,QAAA,IAAIA,YAAY,CAAG,EAAA;YACf,IAAI,IAAI,CAAChC,iBAAiB,EAAE;AACxB,gBAAA,IAAI,CAACA,iBAAiB,CAAC,IAAI,CAACxD,OAAO,CAAA,CAAA;AACvC,aAAA;AACA,YAAA,IAAI,IAAI,CAACsB,UAAU,IAAI,IAAI,CAACE,UAAU,EAAE;gBACpC,IAAI,CAACF,UAAU,CAACO,KAAK,CAAC,IAAI,CAACf,UAAU,GAAG,IAAI,CAACP,SAAS,CAAA,CAAA;gBACtD,IAAI,CAACiB,UAAU,GAAG,KAAA,CAAA;gBAClB,IAAI,CAACb,UAAU,GAAG,KAAA,CAAA;gBAClB,OAAO,KAAA,CAAA;AACX,aAAA;AACA,YAAA,IAAI,IAAI,CAACF,OAAO,GAAG,CAAG,EAAA;AAClB,gBAAA,IAAImF,QAAS,CAAA,IAAI,CAACnF,OAAO,CAAG,EAAA;AACxB,oBAAA,IAAI,CAACA,OAAO,EAAA,CAAA;AAChB,iBAAA;;AAEA,gBAAA,IAAKqB,QAAY,IAAA,IAAI,CAACxB,kBAAkB,CAAE;AACtC,oBAAA,IAAI,CAAC,IAAI,CAACI,KAAK,IAAI,OAAO,IAAI,CAACL,UAAU,CAACyB,QAAS,CAAA,KAAK,QAAU,EAAA;AAC9D,wBAAA,IAAI,CAACxB,kBAAkB,CAACwB,QAAAA,CAAS;;wBAG7B,IAAI,CAACxB,kBAAkB,CAACwB,QAAS,CAAA,GAAGE,WAAW,IAAI,CAAC3B,UAAU,CAACyB,QAAS,CAAA,CAAA,CAAA;AAChF,qBAAA;oBACA,IAAI,IAAI,CAACpB,KAAK,EAAE;wBACZ,IAAI,CAACqB,yBAAyB,CAACD,QAAAA,CAAAA,CAAAA;AACnC,qBAAA;oBACA,IAAI,CAAC1B,YAAY,CAAC0B,QAAAA,CAAS,GAAG,IAAI,CAACxB,kBAAkB,CAACwB,QAAS,CAAA,CAAA;AACnE,iBAAA;gBACA,IAAI,IAAI,CAACpB,KAAK,EAAE;AACZ,oBAAA,IAAI,CAACE,SAAS,GAAG,CAAC,IAAI,CAACA,SAAS,CAAA;AACpC,iBAAA;AACA,gBAAA,IAAI,IAAI,CAACyD,gBAAgB,KAAKrL,SAAW,EAAA;AACrC,oBAAA,IAAI,CAAC8H,UAAU,GAAGlE,IAAO,GAAA,IAAI,CAACyH,gBAAgB,CAAA;iBAE7C,MAAA;AACD,oBAAA,IAAI,CAACvD,UAAU,GAAGlE,IAAO,GAAA,IAAI,CAACiE,UAAU,CAAA;AAC5C,iBAAA;gBACA,IAAI,IAAI,CAACuE,iBAAiB,EAAE;AACxB,oBAAA,IAAI,CAACA,iBAAiB,CAAC,IAAI,CAACpF,OAAO,CAAA,CAAA;AACvC,iBAAA;gBACA,IAAI,IAAI,CAACsB,UAAU,EAAE;oBACjB,IAAI,CAACE,UAAU,GAAG,IAAA,CAAA;AAClB,oBAAA,IAAI,CAAChB,cAAc,GAAG,IAAI,CAACC,OAAO,CAAA;AACtC,iBAAA;gBACA,OAAO,IAAA,CAAA;aAEN,MAAA;gBACD,IAAI,IAAI,CAACc,UAAU,EAAE;AACjB,oBAAA,IAAI,CAACA,UAAU,CAACuD,OAAO,CAAC,IAAI,CAAA,CAAA;AAChC,iBAAA;gBACA,IAAI,IAAI,CAACQ,mBAAmB,EAAE;AAC1B,oBAAA,IAAI,CAACA,mBAAmB,CAAC,IAAI,CAACtF,OAAO,CAAA,CAAA;AACzC,iBAAA;AACA,gBAAA,IAAK,IAAI7G,CAAAA,GAAI,CAAGkK,EAAAA,gBAAAA,GAAmB,IAAI,CAACpC,cAAc,CAACnJ,MAAM,EAAEqB,CAAIkK,GAAAA,gBAAAA,EAAkBlK,CAAK,EAAA,CAAA;;;AAGtF,oBAAA,IAAI,CAAC8H,cAAc,CAAC9H,CAAAA,CAAE,CAAC0I,KAAK,CAAC,IAAI,CAACf,UAAU,GAAG,IAAI,CAACP,SAAS,CAAA,CAAA;AACjE,iBAAA;gBACA,IAAI,CAACI,UAAU,GAAG,KAAA,CAAA;gBAClB,OAAO,KAAA,CAAA;AACX,aAAA;AACJ,SAAA;QACA,OAAO,IAAA,CAAA;AACX,KAAA,CAAA;IACAZ,KAAMrF,CAAAA,SAAS,CAACiL,iBAAiB,GAAG,SAAU3F,OAAO,EAAEI,YAAY,EAAEC,UAAU,EAAEqF,KAAK,EAAA;QAClF,IAAK,IAAI5D,YAAYzB,UAAY,CAAA;;AAE7B,YAAA,IAAID,YAAY,CAAC0B,QAAS,CAAA,KAAK9I,SAAW,EAAA;AACtC,gBAAA,SAAA;AACJ,aAAA;AACA,YAAA,IAAI6I,KAAQzB,GAAAA,YAAY,CAAC0B,QAAAA,CAAS,IAAI,CAAA,CAAA;YACtC,IAAImB,GAAAA,GAAM5C,UAAU,CAACyB,QAAS,CAAA,CAAA;AAC9B,YAAA,IAAI+D,eAAezD,KAAMC,CAAAA,OAAO,CAACrC,OAAO,CAAC8B,QAAS,CAAA,CAAA,CAAA;YAClD,IAAIgE,UAAAA,GAAa1D,KAAMC,CAAAA,OAAO,CAACY,GAAAA,CAAAA,CAAAA;YAC/B,IAAIV,mBAAAA,GAAsB,CAACsD,YAAgBC,IAAAA,UAAAA,CAAAA;AAC3C,YAAA,IAAIvD,mBAAqB,EAAA;AACrBvC,gBAAAA,OAAO,CAAC8B,QAAS,CAAA,GAAG,IAAI,CAACd,sBAAsB,CAACiC,GAAKyC,EAAAA,KAAAA,CAAAA,CAAAA;AACzD,aAAA,MACK,IAAI,OAAOzC,GAAQ,KAAA,QAAA,IAAYA,GAAK,EAAA;;;gBAGrC,IAAI,CAAC0C,iBAAiB,CAAC3F,OAAO,CAAC8B,QAAS,CAAA,EAAED,OAAOoB,GAAKyC,EAAAA,KAAAA,CAAAA,CAAAA;AACtD,gBAAA,IAAIK,GAAMvL,GAAAA,MAAAA,CAAOI,wBAAwB,CAACoF,OAAS8B,EAAAA,QAAAA,CAAAA,CAAAA;gBACnD,IAAIiE,GAAAA,IAAOA,GAAIC,CAAAA,GAAG,EAAE;AAChBhG,oBAAAA,OAAO,CAAC8B,QAAAA,CAAS,GAAG9B,OAAO,CAAC8B,QAAS,CAAA,CAAA;AACzC,iBAAA;aAEC,MAAA;;AAEDmB,gBAAAA,GAAAA,GAAM,IAAI,CAACR,oBAAoB,CAACZ,KAAOoB,EAAAA,GAAAA,CAAAA,CAAAA;;gBAEvC,IAAI,OAAOA,QAAQ,QAAU,EAAA;;;oBAGzBjD,OAAO,CAAC8B,SAAS,GAAGD,KAAAA,GAAQ,CAACoB,GAAAA,GAAMpB,KAAI,IAAK6D,KAAAA,CAAAA;AAChD,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA,CAAA;AACA3F,IAAAA,KAAAA,CAAMrF,SAAS,CAAC+H,oBAAoB,GAAG,SAAUZ,KAAK,EAAEoB,GAAG,EAAA;QACvD,IAAI,OAAOA,QAAQ,QAAU,EAAA;YACzB,OAAOA,GAAAA,CAAAA;AACX,SAAA;QACA,IAAIA,GAAAA,CAAIgD,MAAM,CAAC,CAAA,CAAA,KAAO,OAAOhD,GAAIgD,CAAAA,MAAM,CAAC,CAAA,CAAA,KAAO,GAAK,EAAA;AAChD,YAAA,OAAOpE,QAAQG,UAAWiB,CAAAA,GAAAA,CAAAA,CAAAA;SAEzB,MAAA;AACD,YAAA,OAAOjB,UAAWiB,CAAAA,GAAAA,CAAAA,CAAAA;AACtB,SAAA;AACJ,KAAA,CAAA;AACAlD,IAAAA,KAAAA,CAAMrF,SAAS,CAACqH,yBAAyB,GAAG,SAAUD,QAAQ,EAAA;AAC1D,QAAA,IAAIoE,GAAM,GAAA,IAAI,CAAC5F,kBAAkB,CAACwB,QAAS,CAAA,CAAA;AAC3C,QAAA,IAAIqE,QAAW,GAAA,IAAI,CAAC9F,UAAU,CAACyB,QAAS,CAAA,CAAA;QACxC,IAAI,OAAOqE,aAAa,QAAU,EAAA;YAC9B,IAAI,CAAC7F,kBAAkB,CAACwB,QAAS,CAAA,GAAG,IAAI,CAACxB,kBAAkB,CAACwB,QAAS,CAAA,GAAGE,UAAWmE,CAAAA,QAAAA,CAAAA,CAAAA;SAElF,MAAA;YACD,IAAI,CAAC7F,kBAAkB,CAACwB,QAAAA,CAAS,GAAG,IAAI,CAACzB,UAAU,CAACyB,QAAS,CAAA,CAAA;AACjE,SAAA;AACA,QAAA,IAAI,CAACzB,UAAU,CAACyB,QAAAA,CAAS,GAAGoE,GAAAA,CAAAA;AAChC,KAAA,CAAA;IACA,OAAOnG,KAAAA,CAAAA;AACX,CAAA;;ACryBO,MAAMqG,UAAAA,CAAAA;IAUTvE,KAAQ,GAAA;QACJ,IAAI,CAACwE,MAAM,CAACxE,KAAK,EAAA,CAAA;AACjB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAiB,IAAO,GAAA;QACH,IAAI,CAACuD,MAAM,CAACvD,IAAI,EAAA,CAAA;AAChB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAoB,IAAAA,MAAAA,CAAOC,KAAa,EAAE;AAClB,QAAA,IAAI,CAACP,aAAa,CAACM,MAAM,CAACC,KAAAA,CAAAA,CAAAA;AAC1B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAL,KAAQ,GAAA;QACJ,IAAI,CAACF,aAAa,GAAG,IAAI,CAACyC,MAAM,GAAG,IAAItG,KAAM,CAAA,IAAI,CAACC,OAAO,CAAA,CAAE8D,KAAK,CAAC,IAAI,CAACuC,MAAM,EAAE,IAAI,CAACzC,aAAa,CAAA,CAAA;AAChG,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAL,IAAAA,IAAAA,CAAKpL,QAAkC,EAAE;AACrC,QAAA,IAAI,CAACmO,WAAW,EAAG/C,CAAAA,IAAI,CAACpL,QAAAA,CAAAA,CAAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA0L,IAAAA,KAAAA,CAAM1I,MAAc,EAAE;AAClB,QAAA,IAAI,CAACmL,WAAW,EAAGzC,CAAAA,KAAK,CAAC1I,MAAAA,CAAAA,CAAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAwI,IAAAA,EAAAA,CAAGD,UAA+B,EAAE/B,QAAiB,EAAE4E,KAQtD,EAAE;AACC,QAAA,IAAI5I,QAAQ,IAAI,CAAC2I,WAAW,EAAG3C,CAAAA,EAAE,CAACD,UAAY/B,EAAAA,QAAAA,CAAAA,CAAAA;AAC9C,QAAA,IAAI4E,KAAO,EAAA;AACP,YAAA,IAAIA,MAAM9C,IAAI,EAAE9F,MAAM8F,IAAI,CAAC8C,MAAM9C,IAAI,CAAA,CAAA;AACrC,YAAA,IAAI8C,MAAMhC,MAAM,EAAE5G,MAAM4G,MAAM,CAACgC,MAAMhC,MAAM,CAAA,CAAA;AAC3C,YAAA,IAAIgC,MAAMxB,OAAO,EAAEpH,MAAMoH,OAAO,CAACwB,MAAMxB,OAAO,CAAA,CAAA;AAC9C,YAAA,IAAIwB,MAAMhB,MAAM,EAAE5H,MAAM4H,MAAM,CAACgB,MAAMhB,MAAM,CAAA,CAAA;AAC3C,YAAA,IAAIgB,MAAMlB,UAAU,EAAE1H,MAAM0H,UAAU,CAACkB,MAAMlB,UAAU,CAAA,CAAA;AACvD,YAAA,IAAIkB,MAAMtB,QAAQ,EAAEtH,MAAMsH,QAAQ,CAACsB,MAAMtB,QAAQ,CAAA,CAAA;AACjD,YAAA,IAAIsB,MAAMpB,QAAQ,EAAExH,MAAMwH,QAAQ,CAACoB,MAAMpB,QAAQ,CAAA,CAAA;AACrD,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAmB,WAAc,GAAA;QACV,IAAI3I,KAAAA,GAAQ,IAAI,CAAC0I,MAAM,CAAA;QACvB,IAAI,IAAI,CAACzC,aAAa,EAAE;AACpBjG,YAAAA,KAAAA,GAAQ,IAAIoC,KAAAA,CAAM,IAAI,CAACC,OAAO,CAAA,CAAA;AAC9B,YAAA,IAAI,CAAC4D,aAAa,CAACK,KAAK,CAACtG,KAAAA,CAAAA,CAAAA;AAC7B,SAAA;QACA,IAAI,CAACiG,aAAa,GAAGjG,KAAAA,CAAAA;QACrB,OAAOA,KAAAA,CAAAA;AACX,KAAA;IAjEA5C,WAAYyL,CAAAA,MAAc,EAAElD,KAAa,CAAE;QACvC,IAAI,CAACtD,OAAO,GAAGwG,MAAAA,CAAAA;AACf,QAAA,IAAI,CAACH,MAAM,GAAG,IAAItG,MAAMyG,MAAQlD,EAAAA,KAAAA,CAAAA,CAAAA;AACpC,KAAA;AA+DJ;;ACtEO,MAAMmD,YAAAA,CAAAA;IAGTC,OAAU,GAAA;QACN,IAAI,CAACzG,MAAM,CAACxC,SAAS,EAAA,CAAA;AACzB,KAAA;AAEAK,IAAAA,MAAAA,CAAOlB,IAAY,EAAE;AACjB,QAAA,IAAI,CAACqD,MAAM,CAACnC,MAAM,CAAClB,IAAAA,CAAAA,CAAAA;AACvB,KAAA;AAEAe,IAAAA,KAAAA,CAAMvF,MAAc,EAAE;AAClB,QAAA,OAAO,IAAI2H,KAAAA,CAAM3H,MAAQ,EAAA,IAAI,CAAC6H,MAAM,CAAA,CAAA;AACxC,KAAA;AAEA0G,IAAAA,QAAAA,CAASvO,MAAc,EAAE;AACrB,QAAA,OAAO,IAAIgO,UAAAA,CAAWhO,MAAQ,EAAA,IAAI,CAAC6H,MAAM,CAAA,CAAA;AAC7C,KAAA;AAEA2G,IAAAA,YAAAA,CAAaxO,MAAc,EAAE;AACzB,QAAA,IAAI,CAAC6H,MAAM,CAAC7C,MAAM,EAAG9C,CAAAA,OAAO,CAAC,CAACqD,KAAAA,GAAeA,KAAMqC,CAAAA,OAAO,KAAK5H,MAAU,IAAA,IAAI,CAAC6H,MAAM,CAACpC,MAAM,CAACF,KAAAA,CAAAA,CAAAA,CAAAA;AAChG,KAAA;;AApBQsC,QAAAA,IAAAA,CAAAA,MAAAA,GAAgB,IAAIhD,KAAAA,EAAAA,CAAAA;;AAqBhC;;ACbO,MAAe4J,OAAAA,CAAAA;IAKlB,OAAOC,YAAAA,CAAaC,IAAc,EAAE;QAChC,MAAMzJ,IAAAA,GAAOuJ,QAAQG,QAAQ,CAAA;AAE7B,QAAA,MAAMC,SAAS,EAAE,CAAA;AACjB,QAAA,MAAMC,WAAW,EAAC,CAAA;AAClB,QAAA,MAAMC,YAAY,EAAC,CAAA;AACnB,QAAA,MAAMC,KAAQ,GAAA;AAACL,YAAAA,IAAAA;AAAK,SAAA,CAAA;QAEpB,MAAOK,KAAAA,CAAMtP,MAAM,KAAK,CAAG,CAAA;YACvB,IAAI0O,MAAAA,GAASY,MAAMC,KAAK,EAAA,CAAA;YACxB,IAAIb,MAAAA,CAAOc,MAAM,EAAE;AACfL,gBAAAA,MAAAA,CAAOvO,IAAI,CAAC8N,MAAAA,CAAAA,CAAAA;gBAEZ,MAAMe,GAAAA,GAAMf,OAAOgB,QAAQ,CAAA;AAC3B,gBAAA,IAAIpF,KAAMC,CAAAA,OAAO,CAACkF,GAAAA,CAAAA,EAAMA,IAAIjN,OAAO,CAAC/B,CAAAA,CAAAA,GAAK4O,SAAS,CAAC5O,CAAEX,CAAAA,IAAI,CAAC,GAAGW,CAAAA,CAAAA,CAAAA;AACxD4O,qBAAAA,SAAS,CAACI,GAAAA,CAAI3P,IAAI,CAAC,GAAG2P,GAAAA,CAAAA;gBAE3BjK,IAAKhD,CAAAA,OAAO,CAAC6D,CAAAA,CAAAA,GAAAA;oBACT,IAAIsJ,GAAAA,GAAMF,GAAG,CAACpJ,CAAE,CAAA,CAAA;AAChB,oBAAA,IAAIsJ,GAAK,EAAA;AACLP,wBAAAA,QAAQ,CAACO,GAAAA,CAAIC,IAAI,CAAC,GAAGD,GAAAA,CAAAA;AACzB,qBAAA;AACJ,iBAAA,CAAA,CAAA;AACJ,aAAA;YACAjB,MAAOmB,CAAAA,QAAQ,CAACrN,OAAO,CAAC/B,CAAAA,CAAK6O,GAAAA,KAAAA,CAAM1O,IAAI,CAACH,CAAAA,CAAAA,CAAAA,CAAAA;AAC5C,SAAA;QAEAwO,IAAKa,CAAAA,QAAQ,CAACC,QAAQ,GAAG;AAAEZ,YAAAA,MAAAA;AAAQE,YAAAA,SAAAA;AAAWD,YAAAA,QAAAA;AAAS,SAAA,CAAA;QAEvD,OAAOH,IAAAA,CAAAA;AACX,KAAA;IAEAhM,WAAY,CAAO+M,OAAwB,CAAE;aAA1BA,OAAAA,GAAAA,OAAAA,CAAAA;AAA4B,KAAA;AAInD,CAAA;AAzCsBjB,OAAAA,CACXG,QAAW,GAAA;AACd,IAAA,UAAA;AAAY,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA,iBAAA;AAAmB,IAAA,aAAA;AACnD,IAAA,QAAA;AAAU,IAAA,UAAA;AAAY,IAAA,cAAA;AAAgB,IAAA,WAAA;AAAa,IAAA,cAAA;AAAgB,IAAA,aAAA;AACtE,CAAA;;ACbE,MAAMe,UAAmBlB,SAAAA,OAAAA,CAAAA;IAG5BmB,IAAK,CAAA,EAAEC,GAAG,EAAEC,MAAM,EAAEC,UAAU,EAAEC,OAAO,EAAEC,WAAW,EAAkB,EAAE;AACpE,QAAA,MAAMC,SAAS,IAAIC,SAAAA,CAAU,IAAI,CAACT,OAAO,CAACU,cAAc,CAAA,CAAA;AACxDF,QAAAA,MAAAA,CAAOG,OAAO,CAAC,IAAI,CAACX,OAAO,CAACY,IAAI,CAAA,CAAA;AAChCJ,QAAAA,MAAAA,CAAOK,eAAe,CAAC,IAAI,CAACb,OAAO,CAACc,YAAY,CAAA,CAAA;QAChDN,MAAON,CAAAA,IAAI,CAACC,GAAAA,EAAK,CAACR,GAAAA,GAAQS,MAAO1N,CAAAA,MAAAA,CAAOqO,MAAM,CAACpB,GAAKY,EAAAA,WAAAA,CAAAA,CAAAA,EAAeF,UAAYC,EAAAA,OAAAA,CAAAA,CAAAA;AACnF,KAAA;;;aAPAU,SAAsB,GAAA;AAAC,YAAA,KAAA;AAAM,SAAA,CAAA;;AAQjC;;ACPO,MAAMC,UAAmBlC,SAAAA,OAAAA,CAAAA;IAG5BmB,IAAK,CAAA,EAAEC,GAAG,EAAEC,MAAM,EAAEC,UAAU,EAAEC,OAAO,EAAkB,EAAE;AACvD,QAAA,MAAMY,eAAe,CAACjC,IAAAA,GAAAA;YAClBmB,MAAOrB,CAAAA,OAAAA,CAAQC,YAAY,CAACC,IAAAA,CAAAA,CAAAA,CAAAA;AAChC,SAAA,CAAA;AACA,QAAA,MAAMuB,SAAS,IAAIW,SAAAA,CAAU,IAAI,CAACnB,OAAO,CAACU,cAAc,CAAA,CAAA;AACxDF,QAAAA,MAAAA,CAAOG,OAAO,CAAC,IAAI,CAACX,OAAO,CAACY,IAAI,CAAA,CAAA;AAChCJ,QAAAA,MAAAA,CAAOK,eAAe,CAAC,IAAI,CAACb,OAAO,CAACc,YAAY,CAAA,CAAA;AAChDN,QAAAA,MAAAA,CAAON,IAAI,CAACC,GAAKe,EAAAA,YAAAA,EAAcb,UAAYC,EAAAA,OAAAA,CAAAA,CAAAA;AAC/C,KAAA;;;aAVAU,SAAsB,GAAA;AAAC,YAAA,KAAA;AAAM,SAAA,CAAA;;AAWjC;;ACXO,MAAMI,WAAoBrC,SAAAA,OAAAA,CAAAA;IAG7BmB,IAAK,CAAA,EAAEC,GAAG,EAAEC,MAAM,EAAEC,UAAU,EAAEC,OAAO,EAAkB,EAAE;AACvD,QAAA,MAAMY,eAAe,CAACG,IAAAA,GAAAA;YAClB,MAAMpC,IAAAA,GAAOoC,KAAKC,KAAK,CAAA;AACvB,YAAA,IAAID,KAAKE,UAAU,EAAEtC,KAAKsC,UAAU,GAAGF,KAAKE,UAAU,CAAA;YACtDnB,MAAOrB,CAAAA,OAAAA,CAAQC,YAAY,CAACC,IAAAA,CAAAA,CAAAA,CAAAA;AAChC,SAAA,CAAA;AACA,QAAA,IAAIuC,aAAa,IAAIC,UAAAA,CAAW,IAAI,CAACzB,OAAO,CAACU,cAAc,CAAA,CAAA;AAC3Dc,QAAAA,UAAAA,CAAWb,OAAO,CAAC,IAAI,CAACX,OAAO,CAACY,IAAI,CAAA,CAAA;AACpCY,QAAAA,UAAAA,CAAWX,eAAe,CAAC,IAAI,CAACb,OAAO,CAACc,YAAY,CAAA,CAAA;AAEpD,QAAA,IAAIY,cAAc,IAAIC,WAAAA,CAAY,IAAI,CAAC3B,OAAO,CAACU,cAAc,CAAA,CAAA;AAC7DgB,QAAAA,WAAAA,CAAYE,cAAc,CAAC,IAAI,CAAC5B,OAAO,CAAC6B,SAAS,CAAA,CAAA;AACjDL,QAAAA,UAAAA,CAAWM,cAAc,CAACJ,WAAAA,CAAAA,CAAAA;AAE1BF,QAAAA,UAAAA,CAAWO,iBAAiB,CAACC,cAAAA,CAAAA,CAAAA;AAC7BR,QAAAA,UAAAA,CAAWtB,IAAI,CAACC,GAAKe,EAAAA,YAAAA,EAAcb,UAAYC,EAAAA,OAAAA,CAAAA,CAAAA;AACnD,KAAA;;;aAlBAU,SAAsB,GAAA;AAAC,YAAA,MAAA;AAAQ,YAAA,KAAA;AAAM,SAAA,CAAA;;AAmBzC;;ACrBO,MAAMiB,UAAmBlD,SAAAA,OAAAA,CAAAA;IAG5BmB,IAAK,CAAA,EAAEC,GAAG,EAAEC,MAAM,EAAEC,UAAU,EAAEC,OAAO,EAAEC,WAAW,EAAkB,EAAQ;QAC1EA,WAAc7N,GAAAA,MAAAA,CAAOqO,MAAM,CAAC;YAAEmB,OAASC,EAAAA,gCAAAA;SAAoC5B,EAAAA,WAAAA,CAAAA,CAAAA;AAC3E,QAAA,MAAMC,SAAS,IAAI4B,UAAAA,CAAW,IAAI,CAACpC,OAAO,CAACU,cAAc,CAAA,CAAA;AACzDF,QAAAA,MAAAA,CAAOG,OAAO,CAAC,IAAI,CAACX,OAAO,CAACY,IAAI,CAAA,CAAA;AAChCJ,QAAAA,MAAAA,CAAOK,eAAe,CAAC,IAAI,CAACb,OAAO,CAACc,YAAY,CAAA,CAAA;QAChDN,MAAON,CAAAA,IAAI,CAACC,GAAAA,EAAKR,CAAAA,GAAAA,GAAOS,MAAO1N,CAAAA,MAAAA,CAAOqO,MAAM,CAACpB,GAAKY,EAAAA,WAAAA,CAAAA,CAAAA,EAAeF,UAAYC,EAAAA,OAAAA,CAAAA,CAAAA;AACjF,KAAA;;;aARAU,SAAsB,GAAA;AAAC,YAAA,KAAA;AAAM,SAAA,CAAA;;AAUjC;;ACbO,MAAMqB,WAAoBtD,SAAAA,OAAAA,CAAAA;IAG7BmB,IAAK,CAAA,EAAEC,GAAG,EAAEC,MAAM,EAAEC,UAAU,EAAEC,OAAO,EAAkB,EAAE;AACvD,QAAA,MAAME,SAAS,IAAI8B,UAAAA,CAAW,IAAI,CAACtC,OAAO,CAACU,cAAc,CAAA,CAAA;AACzDF,QAAAA,MAAAA,CAAOG,OAAO,CAAC,IAAI,CAACX,OAAO,CAACY,IAAI,CAAA,CAAA;AAChCJ,QAAAA,MAAAA,CAAOK,eAAe,CAAC,IAAI,CAACb,OAAO,CAACc,YAAY,CAAA,CAAA;QAChDN,MAAON,CAAAA,IAAI,CAACC,GAAAA,EAAK,CAACoC,IAAAA,GAAiBnC,OAAOoC,IAAKC,CAAAA,KAAK,CAACF,IAAAA,CAAAA,CAAAA,EAAQlC,UAAYC,EAAAA,OAAAA,CAAAA,CAAAA;AAC7E,KAAA;;;aAPAU,SAAsB,GAAA;AAAC,YAAA,MAAA;AAAO,SAAA,CAAA;;AAQlC;;ACTO,MAAM0B,cAAuB3D,SAAAA,OAAAA,CAAAA;IAGhCmB,IAAK,CAAA,EAAEC,GAAG,EAAEC,MAAM,EAAEC,UAAU,EAAEC,OAAO,EAAEC,WAAW,EAAkB,EAAQ;AAC1E,QAAA,MAAMW,eAAe,CAACvB,GAAAA,GAAAA;AAClBA,YAAAA,GAAAA,CAAIgD,UAAU,GAAGC,cAAAA,CAAAA;YACjBxC,MAAO1N,CAAAA,MAAAA,CAAOqO,MAAM,CAACpB,GAAKY,EAAAA,WAAAA,CAAAA,CAAAA,CAAAA;AAC9B,SAAA,CAAA;AACA,QAAA,MAAMC,SAAS,IAAIqC,aAAAA,CAAc,IAAI,CAAC7C,OAAO,CAACU,cAAc,CAAA,CAAA;AAC5DF,QAAAA,MAAAA,CAAOG,OAAO,CAAC,IAAI,CAACX,OAAO,CAACY,IAAI,CAAA,CAAA;AAChCJ,QAAAA,MAAAA,CAAOK,eAAe,CAAC,IAAI,CAACb,OAAO,CAACc,YAAY,CAAA,CAAA;AAChDN,QAAAA,MAAAA,CAAON,IAAI,CAACC,GAAKe,EAAAA,YAAAA,EAAcb,UAAYC,EAAAA,OAAAA,CAAAA,CAAAA;AAC/C,KAAA;;;aAXAU,SAAsB,GAAA;AAAC,YAAA,KAAA;AAAO,YAAA,KAAA;AAAO,YAAA,MAAA;AAAQ,YAAA,MAAA;AAAO,SAAA,CAAA;;AAaxD;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAsCA;AACO,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AAC1D,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AAC/H,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACjI,OAAO,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACpJ,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AA+PD;AACuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AACvH,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AACnF;;AC7TA,MAAM8B,eAAAA,CAAAA;AAGF9I,IAAAA,QAAAA,CAAS+I,WAAmB,EAAEC,OAAkB,GAAA,EAAE,EAAE;AAChD,QAAA,IAAI,CAACC,WAAW,CAACF,WAAAA,CAAY,GAAGC,OAAAA,CAAAA;AAChC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AACAE,IAAAA,eAAAA,CAAgB5S,MAAc,EAAE;AAC5BoC,QAAAA,MAAAA,CAAOqO,MAAM,CAACzQ,MAAQ,EAAA,IAAI,CAAC2S,WAAW,CAAA,CAAA;QACtC,OAAO3S,MAAAA,CAAAA;AACX,KAAA;IARA2C,WAAY,CAAOkQ,OAAe,CAAE;aAAjBA,OAAAA,GAAAA,OAAAA,CAAAA;aADXF,WAAsBvQ,GAAAA,MAAAA,CAAOK,MAAM,CAAC,IAAA,CAAA,CAAA;AACN,KAAA;AAS1C,CAAA;AAEO,MAAMqQ,eAAAA,CAAAA;IAIT,OAAOC,cAAAA,CAAepQ,WAAqB,EAAE;AACzC,QAAA,OAAOmQ,eAAgBE,CAAAA,YAAY,CAACnT,GAAG,CAAC8C,WAAAA,CAAAA,CAAAA;AAC5C,KAAA;AACA,IAAA,OAAOsQ,cAAetQ,CAAAA,WAAqB,EAAEuQ,OAAAA,GAAmB,IAAI,EAAE;AAClE,QAAA,IAAI/E,KAAQ2E,GAAAA,eAAAA,CAAgBE,YAAY,CAACG,GAAG,CAACxQ,WAAAA,CAAAA,CAAAA;QAC7C,IAAIwL,KAAAA,KAAUvN,aAAasS,OAAS,EAAA;YAChC/E,KAAQ/L,GAAAA,MAAAA,CAAOK,MAAM,CAAC,IAAA,CAAA,CAAA;AACtBqQ,YAAAA,eAAAA,CAAgBE,YAAY,CAACpF,GAAG,CAACjL,WAAawL,EAAAA,KAAAA,CAAAA,CAAAA;AAClD,SAAA;QACA,OAAOA,KAAAA,CAAAA;AACX,KAAA;IACA,OAAOiF,oBAAAA,CAAqBzQ,WAAqB,EAAE;AAC/C,QAAA,IAAIwL,KAAQ,GAAA,IAAA,CAAA;AACZ,QAAA,MAAOxL,WAAgBP,KAAAA,MAAAA,CAAOO,WAAW,CAACL,SAAS,CAAE;AACjD,YAAA,IAAI+Q,MAASP,GAAAA,eAAAA,CAAgBG,cAAc,CAACtQ,WAAa,EAAA,KAAA,CAAA,CAAA;AACzD,YAAA,IAAI0Q,MAAQ,EAAA;AACR,gBAAA,IAAIlF,UAAU,IAAM,EAAA;oBAChBA,KAAQ/L,GAAAA,MAAAA,CAAOK,MAAM,CAAC,IAAA,CAAA,CAAA;AAC1B,iBAAA;gBACAL,MAAOqO,CAAAA,MAAM,CAACtC,KAAOkF,EAAAA,MAAAA,CAAAA,CAAAA;AACzB,aAAA;YACA1Q,WAAcP,GAAAA,MAAAA,CAAOkR,cAAc,CAAC3Q,WAAAA,CAAAA,CAAAA;AACxC,SAAA;QACA,OAAOwL,KAAAA,CAAAA;AACX,KAAA;AACA,IAAA,OAAOoF,mBAAoBV,CAAAA,OAAe,EAAEK,OAAAA,GAAmB,IAAI,EAAE;AACjE,QAAA,IAAI/E,KAAQ2E,GAAAA,eAAAA,CAAgBU,SAAS,CAACL,GAAG,CAACN,OAAAA,CAAAA,CAAAA;QAC1C,IAAI1E,KAAAA,KAAUvN,aAAasS,OAAS,EAAA;AAChC/E,YAAAA,KAAAA,GAAQ,IAAIqE,eAAgBK,CAAAA,OAAAA,CAAAA,CAAAA;AAC5BC,YAAAA,eAAAA,CAAgBU,SAAS,CAAC5F,GAAG,CAACiF,OAAS1E,EAAAA,KAAAA,CAAAA,CAAAA;AAC3C,SAAA;QACA,OAAOA,KAAAA,CAAAA;AACX,KAAA;AACA,IAAA,OAAOsF,qBAAsBZ,CAAAA,OAAe,EAAElQ,WAAqB,EAAE;AACjE,QAAA,IAAI+Q,GAAMZ,GAAAA,eAAAA,CAAgBS,mBAAmB,CAACV,OAAS,EAAA,KAAA,CAAA,CAAA;AACvD,QAAA,IAAIa,GAAK,EAAA;AACL,YAAA,OAAOA,GAAId,CAAAA,eAAe,CAACE,eAAAA,CAAgBG,cAAc,CAACtQ,WAAAA,CAAAA,CAAAA,CAAAA;SAEzD,MAAA;YACD,OAAOmQ,eAAAA,CAAgBG,cAAc,CAACtQ,WAAa,EAAA,KAAA,CAAA,CAAA;AACvD,SAAA;AACJ,KAAA;AACJ,CAAA;AA9CamQ,eAAAA,CACFU,YAAY,IAAIG,GAAAA,EAAAA,CAAAA;AADdb,eAAAA,CAEFE,eAAe,IAAIW,GAAAA,EAAAA,CAAAA;AA2DvB,SAASjK,QAAAA,CAAS1J,MAAe,EAAEyS,WAAoB,EAAA;AAC1D,IAAA,IAAIC,OAAgD,GAAA,IAAA,CAAA;IACpD,SAASkB,UAAAA,CAAW5T,MAAc,EAAEyS,WAAmB,EAAA;AACnDK,QAAAA,eAAAA,CAAgBG,cAAc,CAACjT,MAAAA,CAAO2C,WAAW,CAAC,CAAC8P,YAAY,GAAGC,OAAAA,CAAAA;AACtE,KAAA;AACA,IAAA,IAAI1S,WAAWY,SAAW,EAAA;AACtB,QAAA,OAAO8I,SAAS,EAAC,CAAA,CAAA;KAEhB,MAAA,IAAI,OAAO+I,WAAAA,KAAgB,WAAa,EAAA;QACzCC,OAAU1S,GAAAA,MAAAA,CAAAA;QACV,OAAO4T,UAAAA,CAAAA;KAEN,MAAA;AACDlB,QAAAA,OAAAA,GAAU,EAAC,CAAA;AACXkB,QAAAA,UAAAA,CAAW5T,MAAQyS,EAAAA,WAAAA,CAAAA,CAAAA;AACvB,KAAA;AACJ;;ACxFO,MAAMoB,qBAAwB,GAAA;IACjChR,MAAQD,EAAAA,MAAAA,CAAOC,MAAM,CAACC,IAAI;IAC1BgR,WAAalR,EAAAA,MAAAA,CAAOI,SAAS,CAACC,EAAE;IAChC8Q,YAAcnR,EAAAA,MAAAA,CAAOI,SAAS,CAACE,GAAG;IAClC8Q,cAAgBpR,EAAAA,MAAAA,CAAOI,SAAS,CAACG,KAAK;AAC1C,CAAC,CAAA;AAIM,MAAM8Q,0BAAAA,CAAAA;;AAGTC,QAAAA,IAAAA,CAAAA,KAAAA,GAA+BL,sBAAsBG,cAAc,CAAA;aAGnExP,IAAe,GAAA,CAAA,CAAA;;AAEnB,CAAA;;IANKkF,QAAS,CAAA;QAAE4D,KAAOuG,EAAAA,qBAAAA;AAAsB,KAAA,CAAA;AAFhCI,CAAAA,EAAAA,0BAAAA,CAAAA,SAAAA,EAAAA,OAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAKRvK,IAAAA,QAAAA;AALQuK,CAAAA,EAAAA,0BAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;ACVN,MAAME,cAAAA,CAAAA;;AAETC,QAAAA,IAAAA,CAAAA,UAAAA,GAAqBD,eAAeE,cAAc,EAAA,CAAA;AAClD/E,QAAAA,IAAAA,CAAAA,IAAAA,GAAegF,UAAUC,YAAY,EAAA,CAAA;aACrC/U,IAAe,GAAA,EAAA,CAAA;aACfgV,IAAe,GAAA,gBAAA,CAAA;;AACnB,CAAA;AANaL,cAAAA,CACFE,cAAyB,GAAA,CAAA;;ACE7B,MAAMI,SAAiDN,SAAAA,cAAAA,CAAAA;AAE1D,IAAA,IAAIO,OAAU,GAAA;QACV,OAAO,IAAI,CAACC,QAAQ,CAAA;AACxB,KAAA;IACA,IAAID,OAAAA,CAAQvU,CAAU,EAAE;AACpB,QAAA,IAAI,IAAI,CAACwU,QAAQ,KAAKxU,CAAG,EAAA;YACrB,IAAI,CAACwU,QAAQ,GAAGxU,CAAAA,CAAAA;YAChB,IAAI,CAACuP,OAAO,CAACkF,kBAAkB,CAACC,eAAe,CAAC,IAAI,EAAE1U,CAAAA,CAAAA,CAAAA;AAC1D,SAAA;AACJ,KAAA;IAyBU2U,aAAgB,GAAA;AACtB,QAAA,IAAI,CAACC,aAAa,EAAA,CAAA;QAClB,IAAI,CAACrF,OAAO,CAACsF,eAAe,CAAC,IAAI,CAACrG,IAAI,EAAE,IAAI,CAAA,CAAA;QAE5C,IAAI,IAAI,CAACgG,QAAQ,EAAE;YACf,IAAI,CAACjF,OAAO,CAACkF,kBAAkB,CAACC,eAAe,CAAC,IAAI,EAAE,KAAA,CAAA,CAAA;AAC1D,SAAA;QACA,IAAI,IAAI,CAACI,SAAS,IAAI,IAAI,CAACC,KAAK,CAACC,YAAY,EAAE;AAC3C,YAAA,IAAI,CAACF,SAAS,EAAA,CAAA;AAClB,SAAA;AACJ,KAAA;AAEAG,IAAAA,QAAAA,CAASrV,QAAkB,EAAEsV,QAAgB,EAAEvJ,MAAiB,GAAA,CAAC,CAAC,EAAE;QAChE,IAAI,CAAC4D,OAAO,CAAC4F,SAAS,CAACF,QAAQ,CAAC,IAAI,EAAErV,QAAAA,EAAUsV,QAAUvJ,EAAAA,MAAAA,CAAAA,CAAAA;AAC9D,KAAA;AAEAyJ,IAAAA,SAAAA,CAAUxV,QAAkB,EAAE;QAC1B,IAAI,CAAC2P,OAAO,CAAC4F,SAAS,CAACC,SAAS,CAAC,IAAI,EAAExV,QAAAA,CAAAA,CAAAA;AAC3C,KAAA;IAEAgV,aAAgB,GAAA;AACZ,QAAA,IAAI,CAACrF,OAAO,CAAC4F,SAAS,CAACP,aAAa,CAAC,IAAI,CAAA,CAAA;AAC7C,KAAA;IAEAzG,OAAU,GAAA;AACN,QAAA,IAAI,IAAI,CAAC4G,KAAK,CAACM,SAAS,EAAE;YACtB,OAAO,KAAA,CAAA;AACX,SAAA;AACA,QAAA,IAAI,CAACC,gBAAgB,EAAA,CAAA;QACrB,OAAO,IAAA,CAAA;AACX,KAAA;IAEAA,gBAAmB,GAAA;QACf,IAAI,IAAI,CAACX,aAAa,EAAE;AACpB,YAAA,IAAI,CAACA,aAAa,EAAA,CAAA;AACtB,SAAA;AACA,QAAA,IAAI,CAACI,KAAK,CAACM,SAAS,GAAG,IAAA,CAAA;AAC3B,KAAA;;;aA7DQb,QAAoB,GAAA,IAAA,CAAA;aAK5BH,IAAe,GAAA,WAAA,CAAA;AAUfU,QAAAA,IAAAA,CAAAA,KAAAA,GAOI,EAAC,CAAA;;AAwCT;;ACxEA,MAAM,SAAEQ,OAAK,QAAEC,MAAI,EAAE,GAAGrB,SAAAA,CAAAA;AAEjB,MAAMsB,gBAAyBnB,SAAAA,SAAAA,CAAAA;AAYlC,IAAA,IAAIoB,IAAO,GAAA;QACP,OAAO,IAAI,CAACC,KAAK,CAAA;AACrB,KAAA;AAEA,IAAA,IAAIC,KAAQ,GAAA;QACR,OAAO,IAAI,CAACC,MAAM,CAAA;AACtB,KAAA;AAEAC,IAAAA,UAAAA,CAAWC,EAAU,EAAE;QACnB,IAAIL,IAAAA,GAAO,IAAI,CAACM,eAAe,EAAA,CAAA;AAC/B,QAAA,IAAIN,QAAQ,IAAM,EAAA,OAAA;QAElB,IAAI,CAACG,MAAM,CAAC9T,OAAO,CAAC/B,CAAAA,CAAKA,GAAAA,CAAAA,CAAEuU,OAAO,GAAGvU,CAAM0V,KAAAA,IAAAA,CAAAA,CAAAA;QAE3C,IAAI,IAAI,CAACO,SAAS,GAAG,IAAI,CAACC,UAAU,CAAC7R,IAAI,EAAE;YACvC,IAAI,CAAC4R,SAAS,IAAIF,EAAAA,CAAAA;AAClB,YAAA,IAAIpP,CAAI4O,GAAAA,OAAAA,CAAM,IAAI,CAACU,SAAS,GAAG,IAAI,CAACC,UAAU,CAAC7R,IAAI,EAAE,CAAG,EAAA,CAAA,CAAA,CAAA;YACxD,IAAI,CAAC8R,iBAAiB,CAACT,IAAAA,EAAM,IAAI,CAACQ,UAAU,CAACnC,KAAK,CAACpN,CAAAA,CAAAA,CAAAA,CAAAA;SAElD,MAAA;YACD,IAAI,CAACwP,iBAAiB,CAACT,IAAM,EAAA,CAAA,CAAA,CAAA;AACjC,SAAA;AACJ,KAAA;AAEAU,IAAAA,YAAAA,CAAaV,IAAmB,EAAErR,IAAe,GAAA,CAAC,EAAE;AAChD,QAAA,IAAI,IAAI,CAACgS,SAAS,KAAKX,IAAM,EAAA;YACzB,IAAI,CAACW,SAAS,GAAGX,IAAAA,CAAAA;YACjB,IAAI,CAACO,SAAS,GAAG,CAAA,CAAA;AACjB,YAAA,IAAI,CAACC,UAAU,CAAC7R,IAAI,GAAGA,IAAAA,CAAAA;AAC3B,SAAA;AACJ,KAAA;AAEAiS,IAAAA,SAAAA,CAAUZ,IAAmB,EAAE;AAC3B,QAAA,IAAItW,QAAQ,IAAI,CAACyW,MAAM,CAACU,OAAO,CAACb,IAAAA,CAAAA,CAAAA;QAChC,IAAItW,KAAAA,KAAU,CAAC,CAAG,EAAA;AACd,YAAA,IAAI,CAACyW,MAAM,CAAC1V,IAAI,CAACuV,IAAAA,CAAAA,CAAAA;AACrB,SAAA;AACJ,KAAA;AAEAc,IAAAA,YAAAA,CAAad,IAAmB,EAAE;AAC9B,QAAA,IAAItW,QAAQ,IAAI,CAACyW,MAAM,CAACU,OAAO,CAACb,IAAAA,CAAAA,CAAAA;QAChC,IAAItW,KAAAA,KAAU,CAAC,CAAG,EAAA;AACd,YAAA,IAAI,CAACyW,MAAM,CAACvW,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AAC9B,SAAA;AACJ,KAAA;IAEA4W,eAAkB,GAAA;QACd,OAAO,IAAI,CAACK,SAAS,IAAI,IAAI,CAACR,MAAM,CAACY,MAAM,CAACzW,CAAAA,CAAKA,GAAAA,CAAAA,CAAEuU,OAAO,CAAA,CAAEmC,IAAI,CAAC,CAACrW,CAAAA,EAAG8F,CAAMA,GAAAA,CAAAA,CAAEwQ,QAAQ,GAAGtW,CAAEsW,CAAAA,QAAQ,CAAC,CAAC,CAAE,CAAA,CAAA;AAC1G,KAAA;IAEQR,iBAAkBT,CAAAA,IAAmB,EAAE/O,CAAS,EAAE;AACtD,QAAA,MAAMuE,IAAO,GAAA,IAAI,CAACsD,IAAI,EAAEpD,EAAKsK,GAAAA,IAAAA,CAAAA;QAC7B,MAAM,EAAEkB,GAAG,EAAEC,IAAI,EAAEC,GAAG,EAAEC,aAAa,EAAEC,aAAa,EAAE,GAAG5L,EAAAA,CAAAA;QAEzD,MAAM6L,aAAAA,GAAgB/L,IAAK0L,CAAAA,GAAG,IAAIA,GAAAA,IAAO1L,IAAK2L,CAAAA,IAAI,IAAIA,IAAAA,IAAQ3L,IAAK4L,CAAAA,GAAG,IAAIA,GAAAA,CAAAA;AAC1E,QAAA,MAAMI,kBAAqB,GAAA,CAAChM,IAAKiM,CAAAA,QAAQ,CAACC,MAAM,CAACL,aAAAA,CAAAA,IAAkB,CAAC7L,IAAAA,CAAKmM,UAAU,CAACD,MAAM,CAACJ,aAAAA,CAAAA,CAAAA;AAC3F,QAAA,MAAMM,YAAYL,aAAiBC,IAAAA,kBAAAA,CAAAA;AAEnChM,QAAAA,IAAAA,CAAKiM,QAAQ,CAAC3B,IAAI,CAACuB,aAAepQ,EAAAA,CAAAA,CAAAA,CAAAA;AAClCuE,QAAAA,IAAAA,CAAKmM,UAAU,CAACE,KAAK,CAACP,aAAerQ,EAAAA,CAAAA,CAAAA,CAAAA;AACrCuE,QAAAA,IAAAA,CAAK0L,GAAG,GAAGpB,MAAAA,CAAKtK,IAAK0L,CAAAA,GAAG,EAAEA,GAAKjQ,EAAAA,CAAAA,CAAAA,CAAAA;AAC/BuE,QAAAA,IAAAA,CAAK2L,IAAI,GAAGrB,MAAAA,CAAKtK,IAAK2L,CAAAA,IAAI,EAAEA,IAAMlQ,EAAAA,CAAAA,CAAAA,CAAAA;AAClCuE,QAAAA,IAAAA,CAAK4L,GAAG,GAAGtB,MAAAA,CAAKtK,IAAK4L,CAAAA,GAAG,EAAEA,GAAKnQ,EAAAA,CAAAA,CAAAA,CAAAA;AAE/B,QAAA,IAAIsQ,aAAe,EAAA;AACf/L,YAAAA,IAAAA,CAAKsM,sBAAsB,EAAA,CAAA;AAC/B,SAAA;AAEA,QAAA,IAAI,IAAI,CAACC,UAAU,KAAKH,SAAW,EAAA;YAC/B,IAAI,CAACG,UAAU,GAAGH,SAAAA,CAAAA;AAClB,YAAA,IAAI,CAACI,SAAS,IAAI,IAAI,CAACA,SAAS,CAACJ,SAAAA,CAAAA,CAAAA;AACrC,SAAA;AACJ,KAAA;;;aAnFQ3B,KAA8B,GAAA,IAAA,CAAA;aAC9BU,SAAkC,GAAA,IAAA,CAAA;AAClCR,QAAAA,IAAAA,CAAAA,MAAAA,GAA0B,EAAE,CAAA;aAC5BI,SAAoB,GAAA,CAAA,CAAA;aACpBwB,UAAsB,GAAA,KAAA,CAAA;AAG9BvB,QAAAA,IAAAA,CAAAA,UAAAA,GAAyC,IAAIpC,0BAAAA,EAAAA,CAAAA;aAE7C4D,SAAkC,GAAA,IAAA,CAAA;;AA2EtC,CAAA;;AA9EKnO,IAAAA,QAAAA;AAPQkM,CAAAA,EAAAA,gBAAAA,CAAAA,SAAAA,EAAAA,YAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;ACHN,MAAMkC,aAAsBrD,SAAAA,SAAAA,CAAAA;AAqB/B,IAAA,IAAIyC,aAAgB,GAAA;AAChB,QAAA,OAAO,IAAI,CAACa,cAAc,CAACC,IAAI,CAAC,IAAI,CAACrJ,IAAI,CAAC2I,QAAQ,CAAEhS,CAAAA,GAAG,CAAC,IAAI,CAAC2S,eAAe,CAAA,CAAA;AAChF,KAAA;AAEA,IAAA,IAAId,aAAgB,GAAA;AAChB,QAAA,OAAO,IAAI,CAACe,cAAc,CAACF,IAAI,CAAC,IAAI,CAACrJ,IAAI,CAAC6I,UAAU,CAAEW,CAAAA,QAAQ,CAAC,IAAI,CAACC,eAAe,CAAA,CAAA;AACvF,KAAA;IAEAtI,MAAS,GAAA;AACL,QAAA,IAAI,CAACnB,IAAI,CAAC0J,QAAQ,GAAG,IAAA,CAAA;AAErB,QAAA,MAAMC,MAAS,GAAA,IAAI,CAACC,MAAM,CAACD,MAAM,CAAA;AACjC,QAAA,IAAI,CAACvB,GAAG,GAAGuB,MAAAA,CAAOvB,GAAG,CAAA;AACrB,QAAA,IAAI,CAACC,IAAI,GAAGsB,MAAAA,CAAOtB,IAAI,CAAA;AACvB,QAAA,IAAI,CAACC,GAAG,GAAGqB,MAAAA,CAAOrB,GAAG,CAAA;QACrB,IAAI,CAACtI,IAAI,CAAC2I,QAAQ,CAAC1J,GAAG,CAAC,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;QAE7B,IAAI,CAAC4K,KAAK,GAAG,IAAI,CAACD,MAAM,CAACE,YAAY,CAACH,MAAAA,EAAQ1C,gBAAkB,EAAA,IAAA,CAAA,CAAA;AAChE,QAAA,IAAI,CAAC4C,KAAK,CAAC/B,SAAS,CAAC,IAAI,CAAA,CAAA;AAC7B,KAAA;IAEAxB,SAAY,GAAA;AACR,QAAA,IAAI,CAACuD,KAAK,CAAC7B,YAAY,CAAC,IAAI,CAAA,CAAA;AAChC,KAAA;AAEAjR,IAAAA,MAAAA,CAAOwQ,EAAU,EAAE;QACf,IAAI,IAAI,CAACwC,MAAM,EAAE;YACb,IAAI,CAAC/J,IAAI,CAAC+J,MAAM,CAAC,IAAI,CAACA,MAAM,CAACpB,QAAQ,CAAA,CAAA;AACzC,SAAA;AACJ,KAAA;;;AAjDQS,QAAAA,IAAAA,CAAAA,cAAAA,GAA0B,IAAIY,OAAAA,EAAAA,CAAAA;AAC9BT,QAAAA,IAAAA,CAAAA,cAAAA,GAA6B,IAAIU,UAAAA,EAAAA,CAAAA;aAEzC9B,QAAmB,GAAA,EAAA,CAAA;aACnB4B,MAA0B,GAAA,IAAA,CAAA;aAC1BG,MAA0B,GAAA,IAAA,CAAA;aAG1B9B,GAAc,GAAA,EAAA,CAAA;aAEdC,IAAe,GAAA,GAAA,CAAA;aAEfC,GAAc,GAAA,IAAA,CAAA;AAEdgB,QAAAA,IAAAA,CAAAA,eAAAA,GAA2B,IAAIU,OAAAA,EAAAA,CAAAA;AAC/BP,QAAAA,IAAAA,CAAAA,eAAAA,GAA8B,IAAIQ,UAAAA,EAAAA,CAAAA;AAClCE,QAAAA,IAAAA,CAAAA,iBAAAA,GAA6B,IAAIH,OAAAA,EAAAA,CAAAA;AACjCI,QAAAA,IAAAA,CAAAA,mBAAAA,GAA+B,IAAIJ,OAAAA,EAAAA,CAAAA;;AAiCvC,CAAA;;IA3CKjP,QAAS,CAAA;QAACsP,GAAK,EAAA,MAAA;AAAM,KAAA,CAAA;AARblB,CAAAA,EAAAA,aAAAA,CAAAA,SAAAA,EAAAA,KAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IAURpO,QAAS,CAAA;QAACsP,GAAK,EAAA,MAAA;AAAM,KAAA,CAAA;AAVblB,CAAAA,EAAAA,aAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IAYRpO,QAAS,CAAA;QAACsP,GAAK,EAAA,MAAA;AAAM,KAAA,CAAA;AAZblB,CAAAA,EAAAA,aAAAA,CAAAA,SAAAA,EAAAA,KAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;ACHb,MAAMmB,UAAa,GAAA;AACfC,IAAAA,IAAAA,EAAM,CAAK,IAAA,CAAA;AACXC,IAAAA,QAAAA,EAAU,CAAK,IAAA,CAAA;AACfC,IAAAA,EAAAA,EAAI,CAAK,IAAA,CAAA;AACb,CAAA,CAAA;AASO,MAAMC,YAAAA,CAAAA;AAIFC,IAAAA,OAAAA,CAAQtZ,MAAkB,EAAE;QAC/B,IAAIuZ,SAAAA,GAAY,IAAI,CAACC,WAAW,CAACC,IAAI,CAACtZ,CAAAA,CAAAA,GAAKA,CAAEH,CAAAA,MAAM,KAAKA,MAAAA,CAAAA,CAAAA;AACxD,QAAA,IAAIuZ,cAAc3Y,SAAW,EAAA;YACzB2Y,SAAY,GAAA;AAAEvZ,gBAAAA,MAAAA;AAAQ0Z,gBAAAA,KAAAA,EAAOT,WAAWC,IAAI;AAAC,aAAA,CAAA;AAC7C,YAAA,IAAI,CAACM,WAAW,CAAClZ,IAAI,CAACiZ,SAAAA,CAAAA,CAAAA;AAC1B,SAAA;AACJ,KAAA;AAEOI,IAAAA,UAAAA,CAAW3Z,MAAkB,EAAE;QAClC,IAAIT,KAAAA,GAAQ,IAAI,CAACia,WAAW,CAACtZ,SAAS,CAACC,CAAAA,CAAAA,GAAKA,CAAEH,CAAAA,MAAM,KAAKA,MAAAA,CAAAA,CAAAA;QACzD,IAAIT,KAAAA,KAAU,CAAC,CAAG,EAAA;AACd,YAAA,IAAI,CAACia,WAAW,CAAC/Z,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AACnC,SAAA;AACJ,KAAA;IAEOqa,WAAYC,CAAAA,OAAgB,EAAEvB,MAAc,EAAE;AACjD,QAAA,IAAI,IAAI,CAACkB,WAAW,CAAC9Z,MAAM,KAAK,CAAG,EAAA,OAAA;AAEnC,QAAA,IAAI,CAACoa,UAAU,CAACC,aAAa,CAACF,OAASvB,EAAAA,MAAAA,CAAAA,CAAAA;AACvC,QAAA,KAAK,IAAI0B,IAAAA,IAAQ,IAAI,CAACR,WAAW,CAAE;YAC/B,IAAIQ,IAAAA,CAAKha,MAAM,CAACH,GAAG,CAAC,OAAYma,CAAAA,IAAAA,IAAAA,CAAKha,MAAM,CAACH,GAAG,CAAC,aAAgB,CAAA,EAAA;gBAC5D,IAAIoa,UAAAA,GAAa,IAAI,CAACH,UAAU,CAACI,eAAe,CAACF,IAAKha,CAAAA,MAAM,CAAC2O,IAAI,EAAE,IAAA,CAAA,CAAA;gBACnE,IAAIsL,UAAAA,CAAWva,MAAM,EAAE;oBACnBsa,IAAKN,CAAAA,KAAK,IAAIT,UAAAA,CAAWE,QAAQ,CAAA;AACjCa,oBAAAA,IAAAA,CAAKha,MAAM,CAACgB,IAAI,CAAC,aAAe,EAAA;AAAEiZ,wBAAAA,UAAAA;AAAW,qBAAA,CAAA,CAAA;AACjD,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;IAEOE,SAAUN,CAAAA,OAAgB,EAAEvB,MAAc,EAAE;AAC/C,QAAA,IAAI,IAAI,CAACkB,WAAW,CAAC9Z,MAAM,KAAK,CAAG,EAAA,OAAA;AAEnC,QAAA,IAAI,CAACoa,UAAU,CAACC,aAAa,CAACF,OAASvB,EAAAA,MAAAA,CAAAA,CAAAA;AACvC,QAAA,KAAK,IAAI0B,IAAAA,IAAQ,IAAI,CAACR,WAAW,CAAE;YAC/B,IAAIQ,IAAAA,CAAKha,MAAM,CAACH,GAAG,CAAC,OAAYma,CAAAA,IAAAA,IAAAA,CAAKha,MAAM,CAACH,GAAG,CAAC,WAAc,CAAA,EAAA;gBAC1D,IAAIoa,UAAAA,GAAa,IAAI,CAACH,UAAU,CAACI,eAAe,CAACF,IAAKha,CAAAA,MAAM,CAAC2O,IAAI,EAAE,IAAA,CAAA,CAAA;gBACnE,IAAIsL,UAAAA,CAAWva,MAAM,EAAE;AACnB,oBAAA,IAAIsa,IAAKN,CAAAA,KAAK,GAAGT,UAAAA,CAAWE,QAAQ,EAAE;AAClCa,wBAAAA,IAAAA,CAAKN,KAAK,IAAI,CAACT,UAAAA,CAAWE,QAAQ,CAAA;AAClCa,wBAAAA,IAAAA,CAAKha,MAAM,CAACgB,IAAI,CAAC,OAAS,EAAA;AAAEiZ,4BAAAA,UAAAA;AAAW,yBAAA,CAAA,CAAA;AAC3C,qBAAA;AACAD,oBAAAA,IAAAA,CAAKha,MAAM,CAACgB,IAAI,CAAC,WAAa,EAAA;AAAEiZ,wBAAAA,UAAAA;AAAW,qBAAA,CAAA,CAAA;AAC/C,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;IAEOG,WAAYP,CAAAA,OAAgB,EAAEvB,MAAc,EAAE;AACjD,QAAA,IAAI,IAAI,CAACkB,WAAW,CAAC9Z,MAAM,KAAK,CAAG,EAAA,OAAA;AAEnC,QAAA,IAAI,CAACoa,UAAU,CAACC,aAAa,CAACF,OAASvB,EAAAA,MAAAA,CAAAA,CAAAA;AACvC,QAAA,KAAK,IAAI0B,IAAAA,IAAQ,IAAI,CAACR,WAAW,CAAE;YAC/B,IAAIQ,IAAAA,CAAKha,MAAM,CAACH,GAAG,CAAC,aAAkBma,CAAAA,IAAAA,IAAAA,CAAKha,MAAM,CAACH,GAAG,CAAC,YAAe,CAAA,EAAA;gBACjE,IAAIoa,UAAAA,GAAa,IAAI,CAACH,UAAU,CAACI,eAAe,CAACF,IAAKha,CAAAA,MAAM,CAAC2O,IAAI,EAAE,IAAA,CAAA,CAAA;gBACnE,IAAIsL,UAAAA,CAAWva,MAAM,EAAE;oBACnB,IAAI,EAAEsa,IAAKN,CAAAA,KAAK,GAAGT,UAAWG,CAAAA,EAAE,CAAG,EAAA;wBAC/BY,IAAKN,CAAAA,KAAK,IAAIT,UAAAA,CAAWG,EAAE,CAAA;AAC3BY,wBAAAA,IAAAA,CAAKha,MAAM,CAACgB,IAAI,CAAC,aAAe,EAAA;AAAEiZ,4BAAAA,UAAAA;AAAW,yBAAA,CAAA,CAAA;AACjD,qBAAA;iBAEC,MAAA;AACD,oBAAA,IAAID,IAAKN,CAAAA,KAAK,GAAGT,UAAAA,CAAWG,EAAE,EAAE;AAC5BY,wBAAAA,IAAAA,CAAKN,KAAK,IAAI,CAACT,UAAAA,CAAWG,EAAE,CAAA;AAC5BY,wBAAAA,IAAAA,CAAKha,MAAM,CAACgB,IAAI,CAAC,YAAc,EAAA;AAAEiZ,4BAAAA,UAAAA;AAAW,yBAAA,CAAA,CAAA;AAChD,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;;AAxEQH,QAAAA,IAAAA,CAAAA,UAAAA,GAAwB,IAAIO,SAAAA,EAAAA,CAAAA;AAC5Bb,QAAAA,IAAAA,CAAAA,WAAAA,GAAuD,EAAE,CAAA;;AAyErE;;AC/EO,MAAMc,WAAAA,CAAAA;AA0BT,IAAA,IAAIC,aAAgB,GAAA;QAChB,OAAO,IAAI,CAACC,cAAc,CAAA;AAC9B,KAAA;AAEA,IAAA,IAAIX,OAAU,GAAA;QACV,OAAO,IAAI,CAACY,QAAQ,CAAA;AACxB,KAAA;AAEA,IAAA,IAAIC,eAAkB,GAAA;QAClB,OAAO,IAAI,CAACC,gBAAgB,CAAA;AAChC,KAAA;AAEA,IAAA,IAAIC,UAAa,GAAA;QACb,OAAO,IAAI,CAACC,WAAW,CAAA;AAC3B,KAAA;AAEA,IAAA,IAAIC,UAAa,GAAA;QACb,OAAO,IAAI,CAACC,WAAW,CAAA;AAC3B,KAAA;AAEA,IAAA,IAAIC,OAAU,GAAA;QACV,OAAO,IAAI,CAACC,QAAQ,CAAA;AACxB,KAAA;AAEA,IAAA,IAAI/V,IAAO,GAAA;QACP,OAAO,IAAI,CAACgW,KAAK,CAAA;AACrB,KAAA;IAIAC,iBAAoB,GAAA;AAChB,QAAA,MAAMC,UAAa,GAAA,IAAI,CAAC7C,MAAM,CAAC8C,MAAM,CAAA;QAAED,UAAWlH,CAAAA,KAAK,CAACoH,WAAW,GAAG,MAAA,CAAA;QACtE,IAAI,CAACC,iBAAiB,CAACH,UAAAA,EAAY,eAAeI,CAAAA,CAAAA,GAAKA,EAAEC,cAAc,EAAA,CAAA,CAAA;QACvE,IAAI,CAACF,iBAAiB,CAACH,UAAY,EAAA,aAAA,EAAeI,CAAAA,CAAAA,GAAK,IAAI,CAACE,cAAc,CAACF,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;QAChG,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,WAAA,EAAaI,CAAAA,CAAAA,GAAK,IAAI,CAACI,YAAY,CAACJ,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;QAC5F,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,eAAA,EAAiBI,CAAAA,CAAAA,GAAK,IAAI,CAACI,YAAY,CAACJ,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;QAChG,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,YAAA,EAAcI,CAAAA,CAAAA,GAAK,IAAI,CAACI,YAAY,CAACJ,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;QAC7F,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,aAAA,EAAeI,CAAAA,CAAAA,GAAK,IAAI,CAACK,cAAc,CAACL,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,IAAA;AAAK,SAAA,CAAA,CAAA;QAC/F,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,OAAA,EAASI,CAAAA,CAAAA,GAAK,IAAI,CAACM,aAAa,CAACN,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;QACzF,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,YAAA,EAAcI,CAAAA,CAAAA,GAAK,IAAI,CAACO,aAAa,CAACP,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,IAAA;AAAK,SAAA,CAAA,CAAA;QAC7F,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,UAAA,EAAYI,CAAAA,CAAAA,GAAK,IAAI,CAACQ,WAAW,CAACR,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,IAAA;AAAK,SAAA,CAAA,CAAA;QACzF,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,WAAA,EAAaI,CAAAA,CAAAA,GAAK,IAAI,CAACS,YAAY,CAACT,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,IAAA;AAAK,SAAA,CAAA,CAAA;;QAE3F,IAAI,CAACJ,iBAAiB,CAACW,MAAQ,EAAA,SAAA,EAAWV,CAAAA,CAAAA,GAAK,IAAI,CAACW,UAAU,CAACX,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;QACpF,IAAI,CAACJ,iBAAiB,CAACW,MAAQ,EAAA,UAAA,EAAYV,CAAAA,CAAAA,GAAK,IAAI,CAACY,WAAW,CAACZ,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;QACtF,IAAI,CAACJ,iBAAiB,CAACW,MAAQ,EAAA,OAAA,EAASV,CAAAA,CAAAA,GAAK,IAAI,CAACa,QAAQ,CAACb,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;AACpF,KAAA;IAEAW,kBAAqB,GAAA;AACjB,QAAA,KAAK,IAAI,EAAEtc,MAAM,EAAEwU,IAAI,EAAEzU,QAAQ,EAAE,IAAI,IAAI,CAACY,UAAU,CAAE;AACpD,YAAA,IAAIX,OAAOuc,mBAAmB,EAAEvc,MAAOuc,CAAAA,mBAAmB,CAAC/H,IAAMzU,EAAAA,QAAAA,CAAAA,CAAAA;AAC5D,iBAAA,IAAIC,OAAOO,GAAG,EAAEP,OAAOO,GAAG,CAACiU,MAAMzU,QAAUC,EAAAA,MAAAA,CAAAA,CAAAA;AACpD,SAAA;QACA,IAAI,CAACW,UAAU,GAAG,EAAE,CAAA;AACxB,KAAA;IAEA2Y,OAAQtZ,CAAAA,MAAkB,EAAEwc,KAAa,EAAE;QACvC,OAAQA,KAAAA;AACJ,YAAA,KAAKlC,YAAYmC,KAAK,CAAA;AACtB,YAAA,KAAKnC,YAAYoC,YAAY,CAAA;AAC7B,YAAA,KAAKpC,YAAYqC,UAAU,CAAA;AAC3B,YAAA,KAAKrC,YAAYsC,YAAY,CAAA;AAC7B,YAAA,KAAKtC,YAAYuC,WAAW;AACxB,gBAAA,IAAI,CAACC,aAAa,CAACxD,OAAO,CAACtZ,MAAAA,CAAAA,CAAAA;AAC3B,gBAAA,MAAA;AACR,SAAA;AACJ,KAAA;AAEA2Z,IAAAA,UAAAA,CAAW3Z,MAAkB,EAAE;AAC3B,QAAA,IAAI,CAAC8c,aAAa,CAACnD,UAAU,CAAC3Z,MAAAA,CAAAA,CAAAA;AAClC,KAAA;AAEQub,IAAAA,iBAAAA,CACJvb,MAAmB,EACnBwU,IAAgB,EAChBzU,QAAsE,EACtE2S,OAA2C,EAC7C;AACE,QAAA,IAAI1S,OAAO+c,gBAAgB,EAAE/c,OAAO+c,gBAAgB,CAACvI,MAAMzU,QAAU2S,EAAAA,OAAAA,CAAAA,CAAAA;AAChE,aAAA,IAAI1S,OAAOF,EAAE,EAAEE,OAAOF,EAAE,CAAC0U,MAAMzU,QAAUC,EAAAA,MAAAA,CAAAA,CAAAA;AAC9C,QAAA,IAAI,CAACW,UAAU,CAACL,IAAI,CAAC;AAAEN,YAAAA,MAAAA;AAAQwU,YAAAA,IAAAA;AAAMzU,YAAAA,QAAAA;AAAS,SAAA,CAAA,CAAA;AAClD,KAAA;AAEQid,IAAAA,aAAAA,CAAcxB,CAAe,EAAE;AACnC,QAAA,MAAMyB,KAAQ,GAAA,IAAI,CAAC1E,MAAM,CAAC0E,KAAK,CAAA;AAC/B,QAAA,OAAO,IAAI,CAAC1E,MAAM,CAAC2E,WAAW,GAAG;AAC7BC,YAAAA,MAAAA,EAAQ3B,EAAE2B,MAAM;AAChBC,YAAAA,OAAAA,EAAS5B,EAAE4B,OAAO;AAClBC,YAAAA,OAAAA,EAAS7B,EAAE8B,OAAO;YAClBA,OAASL,EAAAA,KAAAA,GAAQzB,EAAE6B,OAAO;AAC1BE,YAAAA,OAAAA,EAAS/B,EAAEgC,OAAO;YAClBA,OAASP,EAAAA,KAAAA,GAAQzB,EAAE+B,OAAO;AAC1BE,YAAAA,KAAAA,EAAOjC,EAAEkC,KAAK;YACdA,KAAOT,EAAAA,KAAAA,GAAQzB,EAAEiC,KAAK;AACtBE,YAAAA,OAAAA,EAASnC,EAAEoC,OAAO;YAClBA,OAASX,EAAAA,KAAAA,GAAQzB,EAAEmC,OAAO;AAC1BE,YAAAA,SAAAA,EAAWrC,EAAEsC,SAAS;AACtBA,YAAAA,SAAAA,EAAWtC,EAAEqC,SAAS;SACfrC,GAAAA,CAAAA,CAAAA;AACf,KAAA;AAEQuC,IAAAA,WAAAA,CAAYvC,CAAa,EAAE;AAC/B,QAAA,MAAMyB,KAAQ,GAAA,IAAI,CAAC1E,MAAM,CAAC0E,KAAK,CAAA;AAC/B,QAAA,OAAO,IAAI,CAAC1E,MAAM,CAAC2E,WAAW,GAAG;YAC7BlC,OAAShR,EAAAA,KAAAA,CAAMqB,IAAI,CAACmQ,CAAAA,CAAER,OAAO,CAAE7V,CAAAA,GAAG,CAAChF,CAAAA,CAAAA,GAAAA;gBAC/B,OAAO;AACH6d,oBAAAA,UAAAA,EAAY7d,EAAE6d,UAAU;AACxBX,oBAAAA,OAAAA,EAASld,EAAEmd,OAAO;oBAClBA,OAASL,EAAAA,KAAAA,GAAQ9c,EAAEkd,OAAO;AAC1BI,oBAAAA,KAAAA,EAAOtd,EAAEud,KAAK;oBACdA,KAAOT,EAAAA,KAAAA,GAAQ9c,EAAEsd,KAAK;AACtBE,oBAAAA,OAAAA,EAASxd,EAAEyd,OAAO;oBAClBA,OAASX,EAAAA,KAAAA,GAAQ9c,EAAEwd,OAAO;AAC9B,iBAAA,CAAA;AACJ,aAAA,CAAA;SACOnC,GAAAA,CAAAA,CAAAA;AACf,KAAA;AAEQyC,IAAAA,eAAAA,CAAgBzC,CAAe,EAAE;AACrC,QAAA,IAAI,CAACf,QAAQ,CAACyD,CAAC,GAAG1C,CAAE+B,CAAAA,OAAO,GAAG,IAAI,CAAChF,MAAM,CAAC0E,KAAK,GAAG,CAAI,GAAA,CAAA,CAAA;AACtD,QAAA,IAAI,CAACxC,QAAQ,CAAC0D,CAAC,GAAG,CAAI3C,GAAAA,CAAAA,CAAEgC,OAAO,GAAG,IAAI,CAACjF,MAAM,CAAC6F,MAAM,GAAG,CAAA,CAAA;QACvD,IAAI,CAACzD,gBAAgB,CAAC/M,GAAG,CAAC4N,CAAE+B,CAAAA,OAAO,EAAE/B,CAAAA,CAAEgC,OAAO,CAAA,CAAA;AAClD,KAAA;AAEQ9B,IAAAA,cAAAA,CAAeF,CAAe,EAAE;AACpCA,QAAAA,CAAAA,CAAEC,cAAc,EAAA,CAAA;QAChBD,CAAI,GAAA,IAAI,CAACwB,aAAa,CAACxB,CAAAA,CAAAA,CAAAA;AACvB,QAAA,IAAI,CAAChB,cAAc,GAAGgB,CAAAA,CAAE2B,MAAM,CAAA;QAC9B,IAAI,CAACc,eAAe,CAACzC,CAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAI,CAACsB,aAAa,CAAClD,WAAW,CAAC,IAAI,CAACa,QAAQ,EAAE,IAAI,CAAClC,MAAM,CAACD,MAAM,CAAA,CAAA;AAChE,QAAA,IAAI,CAACC,MAAM,CAACvX,IAAI,CAACsZ,WAAAA,CAAYoC,YAAY,EAAElB,CAAAA,CAAAA,CAAAA;AAC/C,KAAA;AAEQI,IAAAA,YAAAA,CAAaJ,CAAe,EAAE;AAClCA,QAAAA,CAAAA,CAAEC,cAAc,EAAA,CAAA;QAChBD,CAAI,GAAA,IAAI,CAACwB,aAAa,CAACxB,CAAAA,CAAAA,CAAAA;QACvB,IAAI,CAAChB,cAAc,GAAG,CAAC,CAAA,CAAA;QACvB,IAAI,CAACyD,eAAe,CAACzC,CAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAI,CAACsB,aAAa,CAAC3C,SAAS,CAAC,IAAI,CAACM,QAAQ,EAAE,IAAI,CAAClC,MAAM,CAACD,MAAM,CAAA,CAAA;AAC9D,QAAA,IAAI,CAACC,MAAM,CAACvX,IAAI,CAACsZ,WAAAA,CAAYqC,UAAU,EAAEnB,CAAAA,CAAAA,CAAAA;AAC7C,KAAA;AAEQK,IAAAA,cAAAA,CAAeL,CAAe,EAAE;QACpCA,CAAI,GAAA,IAAI,CAACwB,aAAa,CAACxB,CAAAA,CAAAA,CAAAA;QACvB,IAAI,CAACyC,eAAe,CAACzC,CAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAI,CAACsB,aAAa,CAAC1C,WAAW,CAAC,IAAI,CAACK,QAAQ,EAAE,IAAI,CAAClC,MAAM,CAACD,MAAM,CAAA,CAAA;AAChE,QAAA,IAAI,CAACC,MAAM,CAACvX,IAAI,CAACsZ,WAAAA,CAAY+D,YAAY,EAAE7C,CAAAA,CAAAA,CAAAA;AAC/C,KAAA;AAEQM,IAAAA,aAAAA,CAAcN,CAAuC,EAAE;AAC3DA,QAAAA,CAAAA,CAAEC,cAAc,EAAA,CAAA;AAChB,QAAA,IAAI,CAACZ,WAAW,GAAGW,EAAE8C,MAAM,IAAI9C,EAAE+C,UAAU,CAAA;AAC3C,QAAA,IAAI,CAAChG,MAAM,CAACvX,IAAI,CAACsZ,WAAAA,CAAYkE,WAAW,EAAEhD,CAAAA,CAAAA,CAAAA;AAC9C,KAAA;AAEQO,IAAAA,aAAAA,CAAcP,CAAa,EAAE;QACjCA,CAAI,GAAA,IAAI,CAACuC,WAAW,CAACvC,CAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAI,CAACjD,MAAM,CAACvX,IAAI,CAACsZ,WAAAA,CAAYmE,WAAW,EAAEjD,CAAAA,CAAAA,CAAAA;AAC9C,KAAA;AAEQQ,IAAAA,WAAAA,CAAYR,CAAa,EAAE;QAC/BA,CAAI,GAAA,IAAI,CAACuC,WAAW,CAACvC,CAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAI,CAACjD,MAAM,CAACvX,IAAI,CAACsZ,WAAAA,CAAYoE,SAAS,EAAElD,CAAAA,CAAAA,CAAAA;AAC5C,KAAA;AAEQS,IAAAA,YAAAA,CAAaT,CAAa,EAAE;QAChCA,CAAI,GAAA,IAAI,CAACuC,WAAW,CAACvC,CAAAA,CAAAA,CAAAA;QACrB,IAAIR,OAAAA,GAAUQ,EAAER,OAAO,CAAA;QACvB,IAAI2D,SAAAA,GAAY,IAAI,CAAC1D,QAAQ,CAAA;AAC7B,QAAA,IAAK,IAAIla,CAAAA,GAAIia,OAAQtb,CAAAA,MAAM,EAAEqB,CAAM,EAAA,EAAA;AAC/B,YAAA,IAAI4d,SAAS,CAAC5d,CAAE,CAAA,IAAIH,SAAW,EAAA;gBAC3B+d,SAAS,CAAC5d,EAAE,GAAG;AAAE6d,oBAAAA,EAAAA,EAAI,CAAC,CAAA;AAAGtH,oBAAAA,QAAAA,EAAU,IAAIuH,OAAAA,EAAAA;AAAU,iBAAA,CAAA;AACrD,aAAA;YACA,MAAMC,KAAAA,GAAQ9D,OAAO,CAACja,CAAE,CAAA,CAAA;AACxB4d,YAAAA,SAAS,CAAC5d,CAAE,CAAA,CAAC6d,EAAE,GAAGE,MAAMd,UAAU,CAAA;YAClCW,SAAS,CAAC5d,CAAE,CAAA,CAACuW,QAAQ,CAAC1J,GAAG,CAACkR,KAAMrB,CAAAA,KAAK,EAAEqB,KAAAA,CAAMpB,KAAK,CAAA,CAAA;AACtD,SAAA;AACA,QAAA,IAAI,CAAC3C,WAAW,GAAGC,OAAAA,CAAQtb,MAAM,CAAA;AACjC,QAAA,IAAI,CAAC6Y,MAAM,CAACvX,IAAI,CAACsZ,WAAAA,CAAYyE,UAAU,EAAEvD,CAAAA,CAAAA,CAAAA;AAC7C,KAAA;AAEQW,IAAAA,UAAAA,CAAWX,CAAgB,EAAE;AACjC,QAAA,IAAI,CAACN,KAAK,CAACM,CAAEwD,CAAAA,GAAG,CAAC,GAAG,IAAA,CAAA;AACpB,QAAA,IAAI,CAACzG,MAAM,CAACvX,IAAI,CAACsZ,WAAAA,CAAY2E,OAAO,EAAEzD,CAAAA,CAAAA,CAAAA;AAC1C,KAAA;AAEQY,IAAAA,WAAAA,CAAYZ,CAAgB,EAAE;AAClC,QAAA,IAAI,CAACN,KAAK,CAACM,CAAEwD,CAAAA,GAAG,CAAC,GAAG,IAAA,CAAA;AACpB,QAAA,IAAI,CAACzG,MAAM,CAACvX,IAAI,CAACsZ,WAAAA,CAAY4E,QAAQ,EAAE1D,CAAAA,CAAAA,CAAAA;AAC3C,KAAA;AAEQa,IAAAA,QAAAA,CAASb,CAAgB,EAAE;AAC/B,QAAA,IAAI,CAACN,KAAK,CAACM,CAAEwD,CAAAA,GAAG,CAAC,GAAG,KAAA,CAAA;AACpB,QAAA,IAAI,CAACzG,MAAM,CAACvX,IAAI,CAACsZ,WAAAA,CAAY6E,KAAK,EAAE3D,CAAAA,CAAAA,CAAAA;AACxC,KAAA;IAtKA7Y,WAAY,CAAO4V,MAAc,CAAE;aAAhBA,MAAAA,GAAAA,MAAAA,CAAAA;AAtCX5X,QAAAA,IAAAA,CAAAA,UAAAA,GAAqE,EAAE,CAAA;aACvEka,WAAsB,GAAA,CAAA,CAAA;AACtBI,QAAAA,IAAAA,CAAAA,QAAAA,GAAgD,EAAE,CAAA;aAClDF,WAAsB,GAAA,CAAA,CAAA;AACtBP,QAAAA,IAAAA,CAAAA,cAAAA,GAAyB,CAAC,CAAA,CAAA;AAC1BG,QAAAA,IAAAA,CAAAA,gBAAAA,GAA4B,IAAIkE,OAAAA,EAAAA,CAAAA;AAChCpE,QAAAA,IAAAA,CAAAA,QAAAA,GAAoB,IAAIoE,OAAAA,EAAAA,CAAAA;AACxB3D,QAAAA,IAAAA,CAAAA,KAAAA,GAAkC,EAAC,CAAA;AACnC4B,QAAAA,IAAAA,CAAAA,aAAAA,GAA8B,IAAIzD,YAAAA,EAAAA,CAAAA;AA8BL,KAAA;AAuKzC,CAAA;AA7NaiB,WAAAA,CACOmC,KAAQ,GAAA,OAAA,CAAA;AADfnC,WAAAA,CAEOkE,WAAc,GAAA,YAAA,CAAA;AAFrBlE,WAAAA,CAGOmE,WAAc,GAAA,YAAA,CAAA;AAHrBnE,WAAAA,CAIOoE,SAAY,GAAA,UAAA,CAAA;AAJnBpE,WAAAA,CAKOyE,UAAa,GAAA,WAAA,CAAA;AALpBzE,WAAAA,CAMOoC,YAAe,GAAA,aAAA,CAAA;AANtBpC,WAAAA,CAOOqC,UAAa,GAAA,WAAA,CAAA;AAPpBrC,WAAAA,CAQO+D,YAAe,GAAA,aAAA,CAAA;AARtB/D,WAAAA,CASOsC,YAAe,GAAA,aAAA,CAAA;AATtBtC,WAAAA,CAUOuC,WAAc,GAAA,YAAA,CAAA;AAVrBvC,WAAAA,CAWO2E,OAAU,GAAA,SAAA,CAAA;AAXjB3E,WAAAA,CAYO4E,QAAW,GAAA,UAAA,CAAA;AAZlB5E,WAAAA,CAaO6E,KAAQ,GAAA,OAAA,CAAA;AAbf7E,WAAAA,CAcO8E,MAAS,GAAA,QAAA;;ACzB7B,MAAMC,KAAAA,GAAQ,OAAOnD,MAAW,KAAA,WAAA,CAAA;AAWzB,MAAMoD,QAAAA,CAAAA;AAmCT;;;;AAIC,QACD,KAAQC,CAAMjI,QAAgB,EAAEkI,OAAe,EAAU;AACrD,QAAA,MAAMD,QAAQ,IAAI,CAACE,SAAS,CAACF,KAAK,CAACC,OAAAA,CAAAA,CAAAA;QAEnC,OAAQD,SAASA,KAAM7f,CAAAA,MAAM,GAAG,CAAK6f,IAAAA,KAAK,CAACjI,QAAAA,CAAS,IAAK,EAAA,CAAA;AAC7D,KAAA;AAEA;;AAEC,QACD,IAAIoI,QAAoB,GAAA;AACpB,QAAA;AAEI,QAAA,CAAC,IAAI,CAACC,QAAQ,KACb,WAAA,CAAYC,IAAI,CAAC,IAAI,CAACH,SAAS,CAAA;QAE5B,IAAI,CAACI,SAAS,KAAK,QAAA,IACnB,IAAI,CAACA,SAAS,KAAK,MAAA;QAEnB,IAAI,CAACC,eAAe;AAEpB,QAAA,mBAAA,CAAoBF,IAAI,CAAC,IAAI,CAACH,SAAS,CAAA,CAAA,EAAA;AAEnD,KAAA;AAEA;;AAEC,QACD,IAAIE,QAAoB,GAAA;AACpB,QAAA;AAEK,QAAA,SAAA,CAAUC,IAAI,CAAC,IAAI,CAACH,SAAS,CAAK,IAAA,CAAC,YAAaG,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS;AAEpE,QAAA,IAAI,CAACI,SAAS,KAAK,MAAA;QAElB,IAAI,CAACC,eAAe,IAAI,CAAC,WAAA,CAAYF,IAAI,CAAC,IAAI,CAACH,SAAS,CAAA;AAExD,QAAA,CAAC,mBAAoBG,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAK,IAAA,iBAAA,CAAkBG,IAAI,CAAC,IAAI,CAACH,SAAS,CAAA,EAAA;AAE3F,KAAA;AAEA;;AAEC,QACD,IAAIM,SAAqB,GAAA;QACrB,OAAO,CAAC,IAAI,CAACL,QAAQ,IAAI,CAAC,IAAI,CAACC,QAAQ,CAAA;AAC3C,KAAA;AAEA;;;;;;;;;;;;;;AAcC,QACD,IAAIK,OAAmC,GAAA;AACnC,QAAA,OACI,aAAaJ,IAAI,CAAC,IAAI,CAACH,SAAS,CAAK,IAAA;AACjCQ,YAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,4BAAA,CAAA,CAClBW,OAAO,CAAC,QAAA,EAAU,KAClBC,KAAK,CAAC,KACNhb,GAAG,CAAC,CAACib,aAAkCA,GAAAA,aAAAA,CAAc,CAAC,CAAE,CAAA;AACjE,SAAA,CAAA;AAER,KAAA;AAEA;;;;;;;;;;;;;AAaC,QACD,IAAIC,SAAqC,GAAA;AACrC,QAAA,OACI,YAAYT,IAAI,CAAC,IAAI,CAACH,SAAS,CAAK,IAAA;AAChCQ,YAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,gCAAA,CAAA;AAC3B,SAAA,CAAA;AAER,KAAA;AAEA;;AAEC,QACD,IAAIe,KAAiC,GAAA;AACjC,QAAA,OACI,CAAC,CAAC,IAAI,CAACT,SAAS,IAAI;AAChBI,YAAAA,OAAAA,EACI,IAAI,CAACV,KAAK,CAAC,GAAG,oCAAsCW,CAAAA,CAAAA,OAAO,CAAC,QAAA,EAAU,GACtE,CAAA,IAAA,IAAI,CAACX,KAAK,CAAC,CAAG,EAAA,yBAAA,CAAA;AACtB,SAAA,CAAA;AAER,KAAA;AAEA;;AAEC,QACD,IAAIgB,SAAqC,GAAA;QACrC,OACI,IAAI,CAACT,eAAe,IAAI;AACpBG,YAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,6BAAA,CAAA;AAC3B,SAAA,CAAA;AAER,KAAA;AAEA;;AAEC,QACD,IAAIiB,OAAoC,GAAA;AACpC,QAAA,MAAMC,iBAAoB,GAAA,IAAI,CAAClB,KAAK,CAAC,CAAG,EAAA,yBAAA,CAAA,CAAA;AAExC,QAAA,IAAI,SAASK,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAE/B,OAAO;gBACHjgB,IAAM,EAAA,OAAA;AACNygB,gBAAAA,OAAAA,EAASQ,iBAAqB,IAAA,IAAI,CAAClB,KAAK,CAAC,CAAG,EAAA,yCAAA,CAAA;AAChD,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,cAAeK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAE5C,OAAO;gBACHjgB,IAAM,EAAA,OAAA;AACNygB,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,GAAG,mCAAwCkB,CAAAA,IAAAA,iBAAAA;AACnE,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,iBAAkBb,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAE/C,OAAO;gBACHjgB,IAAM,EAAA,8BAAA;AACNygB,gBAAAA,OAAAA,EAASQ,iBAAqB,IAAA,IAAI,CAAClB,KAAK,CAAC,CAAG,EAAA,wCAAA,CAAA;AAChD,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,YAAaK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAE1C,OAAO;gBACHjgB,IAAM,EAAA,gBAAA;AACNygB,gBAAAA,OAAAA,EAASQ,iBAAqB,IAAA,IAAI,CAAClB,KAAK,CAAC,CAAG,EAAA,mCAAA,CAAA;AAChD,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,YAAaK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAE1C,OAAO;gBACHjgB,IAAM,EAAA,YAAA;AACNygB,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,mCAAA,CAAA;AAC3B,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,eAAgBK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAE7C,OAAO;gBACHjgB,IAAM,EAAA,mBAAA;AACNygB,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,6BAAA,CAAA;AAC3B,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,yBAA0BK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAEvD,OAAO;gBACHjgB,IAAM,EAAA,gBAAA;AACNygB,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,wCAAA,CAAA;AAC3B,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,0BAA2BK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAExD,OAAO;gBACHjgB,IAAM,EAAA,SAAA;AACNygB,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,gDAAA,CAAA;AAC3B,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,WAAYK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAEzC,OAAO;gBACHjgB,IAAM,EAAA,UAAA;AACNygB,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,GAAG,oCAAyCkB,CAAAA,IAAAA,iBAAAA;AACpE,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,oBAAqBb,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAElD,OAAO;gBACHjgB,IAAM,EAAA,QAAA;AACNygB,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,uCAAA,CAAA;AAC3B,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,qBAAsBK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAEnD,OAAO;gBACHjgB,IAAM,EAAA,QAAA;gBACNygB,OAASQ,EAAAA,iBAAAA;AACb,aAAA,CAAA;SACG,MAAA;;YAEH,OAAO;AACHjhB,gBAAAA,IAAAA,EAAM,IAAI,CAAC+f,KAAK,CAAC,CAAG,EAAA,cAAA,CAAA;AACpBU,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,cAAA,CAAA;AAC3B,aAAA,CAAA;AACJ,SAAA;AACJ,KAAA;AAvOA;;;;QAKA5c,WAAAA,CAAY+d,cAAuB,CAAE;AACjC,QAAA,IAAI,CAACjB,SAAS,GAAGiB,cAAAA,GACXA,iBACA,CAACrB,KAAAA,IAASnD,MAAOyE,CAAAA,SAAS,GACtBzE,MAAAA,CAAOyE,SAAS,CAAClB,SAAS,GAC1B,EAAA,CAAA;AAEV,QAAA,IAAI,CAACK,eAAe,GAAG,CAAC,eAAA,CAAgBF,IAAI,CAAC,IAAI,CAACH,SAAS,KAAK,UAAWG,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAA,CAAA;QAC9F,IAAI,CAACI,SAAS,GAAG,IAAI,CAACN,KAAK,CAAC,CAAG,EAAA,qBAAA,CAAA,CAAuBqB,WAAW,EAAA,CAAA;;;;AAKjE,QAAA,IACI,CAACvB,KAAAA,IACDsB,SAAUE,CAAAA,QAAQ,KAAK,UACvBF,IAAAA,SAAAA,CAAUG,cAAc,GAAG,CAC3B,IAAA,CAAC,MAAC5E,CAAe6E,QAAQ,EAC3B;YACE,IAAI,CAAClB,SAAS,GAAG,MAAA,CAAA;AACrB,SAAA;AACJ,KAAA;AA8MJ;;ACxPA,MAAMmB,WAAW,IAAI1B,QAAAA,EAAAA,CAAAA;AACrB,MAAMG,SAAAA,GAAY,CAACkB,SAAUlB,CAAAA,SAAS,IAAIkB,SAAUM,CAAAA,MAAM,EAAEL,WAAW,EAAA,CAAA;AACvE,MAAMM,WAAAA,GAAc,OAAOF,QAAAA,CAASR,OAAO,KAAK,YAAY,EAAKQ,GAAAA,QAAAA,CAASR,OAAO,CAAChhB,IAAI,CAAA;AACtF,MAAM2hB,SAAAA,GAAYC,QAASC,CAAAA,aAAa,CAAC,OAAA,CAAA,CAAA;AAElC,MAAMC,UAAAA,CAAAA;AAuBb,CAAA;AAvBaA,UAAAA,CACF5B,QAAWsB,GAAAA,QAAAA,CAAStB,QAAQ,IAAIsB,SAASrB,QAAQ,CAAA;AAD/C2B,UAEFvB,CAAAA,SAAAA,GAAYiB,SAASjB,SAAS,CAAA;AAF5BuB,UAAAA,CAGFC,MAASD,GAAAA,UAAAA,CAAW5B,QAAQ,GAAG,QAAW,GAAA,SAAA,CAAA;AAHxC4B,UAAAA,CAIFf,SAAY,GAAA,CAAC,CAACS,QAAAA,CAAST,SAAS,CAAA;AAJ9Be,UAAAA,CAKFE,KAAQ,GAAA,CAAC,CAACR,QAAAA,CAASV,KAAK,CAAA;AALtBgB,UAAAA,CAMFtB,OAAU,GAAA,CAAC,CAACgB,QAAAA,CAAShB,OAAO,CAAA;AAN1BsB,UAAAA,CAOFjB,SAAY,GAAA,OAAOW,QAASX,CAAAA,SAAS,KAAK,SAAA,GAAYW,QAASX,CAAAA,SAAS,GAAGW,QAAAA,CAASX,SAAS,CAACJ,OAAO,KAAK,IAAA,CAAA;AAPxGqB,UAAAA,CAQFG,OAAUhC,GAAAA,SAAAA,CAAU/I,OAAO,CAAC,YAAY,CAAC,CAAA,CAAA;AARvC4K,UAAAA,CASFI,EAAKjC,GAAAA,SAAAA,CAAAA;AATH6B,UAAAA,CAUFK,SAAST,WAAgB,KAAA,gBAAA,CAAA;AAVvBI,UAAAA,CAWFM,OAAOV,WAAgB,KAAA,mBAAA,CAAA;AAXrBI,UAAAA,CAYFO,YAAYX,WAAgB,KAAA,SAAA,CAAA;AAZ1BI,UAAAA,CAaFQ,WAAWZ,WAAgB,KAAA,QAAA,CAAA;AAbzBI,UAAAA,CAcFS,UAAUb,WAAgB,KAAA,OAAA,CAAA;AAdxBI,UAAAA,CAeFU,WAAWd,WAAgB,KAAA,QAAA,CAAA;AAfzBI,UAAAA,CAgBFW,aAAgB,GAAA,CAACxC,SAAUF,CAAAA,KAAK,CAAC,eAAA,CAAA,CAAA;AAhB/B+B,UAAAA,CAiBFY,YAAe,GAAA,CAAC,CAACf,SAAAA,CAAUgB,WAAW,CAAC,WAAA,CAAA,CAAA;AAjBrCb,UAAAA,CAkBFc,WAAWlG,MAAOmG,CAAAA,gBAAgB,IAAInG,MAAAA,CAAOmG,gBAAgB,IAAI,GAAA,CAAA;AAlB/Df,UAmBFe,CAAAA,gBAAAA,GAAmBnG,MAAOmG,CAAAA,gBAAgB,IAAI,CAAA,CAAA;AAnB5Cf,UAoBFgB,CAAAA,YAAAA,GAAe3B,SAAU4B,CAAAA,mBAAmB,IAAI,CAAA,CAAA;AApB9CjB,UAAAA,CAqBFkB,OAAUpB,GAAAA,QAAAA,CAASqB,QAAQ,CAACC,MAAM,CAAA;AArBhCpB,UAAAA,CAsBFqB,QAAWzG,GAAAA,MAAAA,CAAO7X,IAAI,KAAK6X,OAAO0G,GAAG;;AC3BhD,MAAM,SAAElN,OAAK,EAAE,GAAGpB,SAAAA,CAAAA;AAClB,MAAM,EAAEuO,GAAG,OAAEC,KAAG,EAAEC,GAAG,EAAE,GAAGvf,IAAAA,CAAAA;AAE1B,MAAMwf,mBAAsB,GAAA,IAAA,CAAA;AAC5B,MAAMC,sBAAyBzf,GAAAA,IAAAA,CAAKjC,GAAG,CAACyhB;;AAEjC,SAASE,gBAAgBC,OAAe,EAAEnjB,MAAc,EAAEojB,QAAgB,EAAEC,SAAiB,EAAA;IAChG,IAAItd,CAAAA,GAAI,CAACkd,sBAAyBG,GAAAA,QAAAA,CAAAA;IAClC,OAAOD,OAAAA,GAAU,CAACnjB,MAASmjB,GAAAA,OAAM,KAAM,CAAIJ,GAAAA,GAAAA,CAAI,CAAChd,CAAAA,GAAIsd,SAAS,CAAA,CAAA,CAAA;AACjE,CAAA;AAEA;AACO,SAASC,YAAYH,OAAe,EAAEnjB,MAAc,EAAEojB,QAAgB,EAAEC,SAAiB,EAAA;AAC5F,IAAA,IAAIvc,CAAK,GAAA,CAAA,GAAI+b,GAAIQ,CAAAA,SAAAA,EAAWD,QAAYA,CAAAA,GAAAA,QAAAA,CAAAA;AACxC,IAAA,IAAIG,KAAKzc,CAAIA,GAAAA,CAAAA,CAAAA;IACb,OAAOqc,OAAAA,GAAU,CAACnjB,MAAAA,GAASmjB,OAAM,KAAM,CAAII,GAAAA,EAAAA,GAAKA,EAAC,CAAA,CAAA;AACrD,CAAA;AAEO,SAASC,UAAAA,CACZ9J,KAAsC,EACtCyJ,OAAe,EACfnjB,MAAc,EACdyjB,UAAkB,EAClBC,QAAgB,EAChBL,SAAiB,EAAA;IAEjB,IAAI3J,KAAAA,CAAMiK,SAAS,KAAK/iB,SAAW,EAAA;AAC/B8Y,QAAAA,KAAAA,CAAMiK,SAAS,GAAG,CAAA,CAAA;AACtB,KAAA;AACAF,IAAAA,UAAAA,GAAaX,MAAI,MAAQW,EAAAA,UAAAA,CAAAA,CAAAA;AACzB,IAAA,IAAIG,MAAM,CAAIH,GAAAA,UAAAA,CAAAA;AACd,IAAA,IAAII,OAAOD,GAAMP,GAAAA,SAAAA,CAAAA;IACjB,IAAIS,IAAAA,GAAO,CAAK,IAAA,CAAID,GAAAA,IAAAA,GAAO,IAAOA,GAAAA,IAAAA,GAAOA,IAAO,GAAA,KAAA,GAAQA,IAAOA,GAAAA,IAAAA,GAAOA,IAAG,CAAA,CAAA;AACzE,IAAA,IAAIE,OAAOZ,OAAUnjB,GAAAA,MAAAA,CAAAA;AACrB,IAAA,IAAIgkB,IAAOhkB,GAAAA,MAAAA,CAAAA;AACX,IAAA,IAAIikB,OAAOP,QAAWD,GAAAA,UAAAA,CAAAA;IACtBM,IAAOrO,GAAAA,OAAAA,CAAMqO,IAAM,EAAA,CAACE,IAAMA,EAAAA,IAAAA,CAAAA,CAAAA;AAC1BjkB,IAAAA,MAAAA,GAASmjB,OAAUY,GAAAA,IAAAA,CAAAA;IACnB,IAAIG,IAAAA,GAAO,CAACxK,KAAAA,CAAMiK,SAAS,GAAGC,GAAAA,GAAMG,IAAG,IAAKV,SAAAA,CAAAA;IAC5C3J,KAAMiK,CAAAA,SAAS,GAAG,CAACjK,MAAMiK,SAAS,GAAGC,GAAMM,GAAAA,IAAG,IAAKJ,IAAAA,CAAAA;AACnD,IAAA,IAAIK,OAAOnkB,MAAS,GAAC+jB,CAAAA,IAAAA,GAAOG,IAAG,IAAKJ,IAAAA,CAAAA;AACpC,IAAA,IAAIE,IAAOb,GAAAA,OAAAA,GAAU,CAAKgB,IAAAA,IAAAA,GAAOH,IAAM,EAAA;QACnCG,IAAOH,GAAAA,IAAAA,CAAAA;AACPtK,QAAAA,KAAAA,CAAMiK,SAAS,GAAIQ,CAAAA,IAAAA,GAAOH,IAAG,IAAKX,SAAAA,CAAAA;AACtC,KAAA;IACA,OAAOc,IAAAA,CAAAA;AACX,CAAA;AAEO,SAASC,oBAAqBjB,CAAAA,OAAmB,EAAEnjB,MAAkB,EAAEojB,QAAgB,EAAEC,SAAiB,EAAEgB,GAAAA,GAAkBlB,OAAO,EAAA;IACxI,OAAOkB,GAAAA,CAAIrM,IAAI,CAACmL,OAASzL,CAAAA,CAAAA,KAAK,CAAC1X,MAAQkjB,EAAAA,eAAAA,CAAgB,CAAG,EAAA,CAAA,EAAGE,QAAUC,EAAAA,SAAAA,CAAAA,CAAAA,CAAAA;AAC3E,CAAA;AAEO,SAASiB,gBAAiBnB,CAAAA,OAAmB,EAAEnjB,MAAkB,EAAEojB,QAAgB,EAAEC,SAAiB,EAAEgB,GAAAA,GAAkBlB,OAAO,EAAA;IACpI,OAAOkB,GAAAA,CAAIrM,IAAI,CAACmL,OAASzL,CAAAA,CAAAA,KAAK,CAAC1X,MAAQsjB,EAAAA,WAAAA,CAAY,CAAG,EAAA,CAAA,EAAGF,QAAUC,EAAAA,SAAAA,CAAAA,CAAAA,CAAAA;AACvE,CAAA;AAEO,SAASkB,eAAgBpB,CAAAA,OAAmB,EAAEnjB,MAAkB,EAAEojB,QAAgB,EAAEC,SAAiB,EAAEgB,GAAAA,GAAkBlB,OAAO,EAAA;AACnI,IAAA,OAAOkB,GAAIrM,CAAAA,IAAI,CAACmL,OAAAA,CAAAA,CAASzL,KAAK,CAAC1X,MAAQwjB,EAAAA,UAAAA,CAAWa,GAAK,EAAA,CAAA,EAAG,CAAGjB,EAAAA,QAAAA,EAAUtY,QAAUuY,EAAAA,SAAAA,CAAAA,CAAAA,CAAAA;AACrF,CAAA;AAEO,SAASmB,eAAgBrB,CAAAA,OAAgB,EAAEnjB,MAAe,EAAEojB,QAAgB,EAAEC,SAAiB,EAAEgB,GAAAA,GAAelB,OAAO,EAAA;AAC1H,IAAA,OAAOkB,GAAIrM,CAAAA,IAAI,CAACmL,OAAAA,CAAAA,CAASxN,IAAI,CAAC3V,MAAQwjB,EAAAA,UAAAA,CAAWa,GAAK,EAAA,CAAA,EAAG,CAAGjB,EAAAA,QAAAA,EAAUtY,QAAUuY,EAAAA,SAAAA,CAAAA,CAAAA,CAAAA;AACpF;;AC9DO,MAAMoB,iBAAiBriB,MAAOsiB,CAAAA,MAAM,CAAC,IAAI/L,OAAAA,CAAQ,CAAG,EAAA,CAAA,EAAG,CAAI,CAAA,EAAA;AAC3D,MAAMgM,iBAAiBviB,MAAOsiB,CAAAA,MAAM,CAAC,IAAI/L,OAAAA,CAAQ,CAAG,EAAA,CAAA,EAAG,CAAI,CAAA,EAAA;AAC3D,MAAMiM,iBAAiBxiB,MAAOsiB,CAAAA,MAAM,CAAC,IAAI/L,OAAAA,CAAQ,CAAG,EAAA,CAAA,EAAG,CAAI,CAAA,EAAA;AAC3D,MAAMkM,gBAAgBziB,MAAOsiB,CAAAA,MAAM,CAAC,IAAI/L,OAAAA,CAAQ,CAAG,EAAA,CAAA,EAAG,CAAI,CAAA,EAAA;AAC1D,MAAMmM,aAAa1iB,MAAOsiB,CAAAA,MAAM,CAAC,IAAI/L,OAAAA,CAAQ,CAAG,EAAA,CAAA,EAAG,CAAI,CAAA,EAAA;AACvD,MAAMoM,eAAe3iB,MAAOsiB,CAAAA,MAAM,CAAC,IAAI/L,OAAAA,CAAQ,CAAG,EAAA,CAAA,EAAG,CAAI,CAAA,EAAA;AACzD,MAAMqM,cAAc5iB,MAAOsiB,CAAAA,MAAM,CAAC,IAAI/L,OAAAA,CAAQ,CAAG,EAAA,CAAA,EAAG,CAAI,CAAA,EAAA;AAClDsM,MAAAA,eAAAA,GAAkB7iB,MAAOsiB,CAAAA,MAAM,CAAC,IAAI/L,OAAQ,CAAA,CAAC,CAAG,EAAA,CAAC,CAAG,EAAA,CAAC,CAAI,CAAA;;ACPtE,MAAM,SAAEjD,OAAK,EAAE,GAAGpB,SAAAA,CAAAA;AAClB,MAAM,EAAEwO,GAAG,OAAEoC,KAAG,EAAEC,IAAI,EAAE,GAAG3hB,IAAAA,CAAAA;AAE3B,MAAM4hB,OAAU,GAAA,KAAA,CAAA;AAChB,MAAMC,UAAU,IAAI1M,OAAAA,EAAAA,CAAAA;AAEb,SAAS2M,SAAUnC,CAAAA,OAAO,EAAEnjB,MAAM,EAAEqjB,SAAS,EAAEkC,KAAK,EAAElB,GAAAA,GAAMlB,OAAO,EAAA;AACtE,IAAA,IAAIoC,SAAS,CAAG,EAAA;QACZ,OAAOlB,GAAAA,CAAIrM,IAAI,CAAChY,MAAAA,CAAAA,CAAAA;AACpB,KAAA;AACA,IAAA,IAAIwlB,OAAOH,OAAQrN,CAAAA,IAAI,CAAChY,MAAAA,CAAAA,CAAQylB,GAAG,CAACtC,OAAAA,CAAAA,CAAAA;IACpC,IAAIqC,IAAAA,CAAKE,QAAQ,EAAA,GAAKN,OAAS,EAAA;QAC3B,OAAOf,GAAAA,CAAIrM,IAAI,CAAChY,MAAAA,CAAAA,CAAAA;AACpB,KAAA;AACA,IAAA,OAAOqkB,GAAIrM,CAAAA,IAAI,CAACmL,OAAAA,CAAAA,CAAS7d,GAAG,CAACkgB,IAAKG,CAAAA,cAAc,CAACjQ,OAAAA,CAAM2N,SAAYkC,GAAAA,KAAAA,EAAO,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACjF,CAAA;AAEO,SAASK,iBAAkBzC,CAAAA,OAAO,EAAEnjB,MAAM,EAAEqjB,SAAS,EAAEkC,KAAK,EAAElB,GAAAA,GAAMlB,OAAO,EAAA;AAC9E,IAAA,IAAI0C,QAAQR,OAAQrN,CAAAA,IAAI,CAAChY,MAAAA,CAAAA,CAAQylB,GAAG,CAACtC,OAAAA,CAAAA,CAAAA;IACrC,IAAI2C,MAAAA,GAASD,MAAMnmB,MAAM,EAAA,CAAA;AACzB,IAAA,IAAIqmB,UAAUR,KAAQlC,GAAAA,SAAAA,CAAAA;AACtB,IAAA,IAAIyC,SAASC,OAAS,EAAA;AAClB,QAAA,IAAIA,UAAU,CAAG,EAAA;AACb,YAAA,IAAIC,MAASH,GAAAA,KAAAA,CAAMF,cAAc,CAAC,CAAIG,GAAAA,MAAAA,CAAAA,CAAAA;AACtC,YAAA,OAAOzB,GAAIrM,CAAAA,IAAI,CAACmL,OAAAA,CAAAA,CAAS7d,GAAG,CAAC0gB,MAAAA,CAAAA,CAAAA;SAE5B,MAAA;YACD,OAAO3B,GAAAA,CAAIrM,IAAI,CAACmL,OAAAA,CAAAA,CAAAA;AACpB,SAAA;AACJ,KAAA;IACA,OAAOkB,GAAAA,CAAIrM,IAAI,CAAChY,MAAAA,CAAAA,CAAAA;AACpB,CAAA;AAEO,SAASimB,WAAYzlB,CAAAA,CAAa,EAAE8F,CAAa,EAAE4f,UAAkBd,OAAO,EAAA;AAC/E,IAAA,OAAOF,KAAI1kB,CAAAA,CAAAA,CAAE0d,CAAC,GAAG5X,EAAE4X,CAAC,CAAA,IAAKgI,OAAUpD,GAAAA,GAAAA,CAAI,EAAIoC,EAAAA,KAAAA,CAAI1kB,CAAE0d,CAAAA,CAAC,GAAGgH,KAAI5e,CAAAA,CAAAA,CAAE4X,CAAC,CAAA,CAAA,IACxDgH,KAAI1kB,CAAAA,CAAAA,CAAE2d,CAAC,GAAG7X,EAAE6X,CAAC,CAAA,IAAK+H,OAAUpD,GAAAA,GAAAA,CAAI,IAAIoC,KAAI1kB,CAAAA,CAAAA,CAAE2d,CAAC,CAAA,EAAG+G,MAAI5e,CAAE6X,CAAAA,CAAC,CACrD+G,CAAAA,IAAAA,KAAAA,CAAI1kB,CAAE2lB,CAAAA,CAAC,GAAG7f,CAAAA,CAAE6f,CAAC,CAAKD,IAAAA,OAAAA,GAAUpD,GAAI,CAAA,EAAA,EAAIoC,KAAI1kB,CAAAA,CAAAA,CAAE2lB,CAAC,CAAA,EAAGjB,MAAI5e,CAAE6f,CAAAA,CAAC,CACrDjB,CAAAA,IAAAA,KAAAA,CAAI1kB,CAAE4lB,CAAAA,CAAC,GAAG9f,CAAAA,CAAE8f,CAAC,CAAKF,IAAAA,OAAAA,GAAUpD,GAAI,CAAA,EAAA,EAAIoC,MAAI1kB,CAAE4lB,CAAAA,CAAC,CAAGlB,EAAAA,KAAAA,CAAI5e,EAAE8f,CAAC,CAAA,CAAA,CAAA;AAC7D,CAAA;AAEO,SAASC,oBAAAA,CAAqB7lB,CAAa,EAAE8F,CAAa,EAAA;IAC7D,IAAIggB,SAAAA,GAAY9lB,EAAE0d,CAAC,GAAG5X,EAAE4X,CAAC,GAAG1d,CAAE2d,CAAAA,CAAC,GAAG7X,CAAAA,CAAE6X,CAAC,GAAG3d,CAAAA,CAAE2lB,CAAC,GAAG7f,CAAE6f,CAAAA,CAAC,GAAG3lB,CAAE4lB,CAAAA,CAAC,GAAG9f,CAAAA,CAAE8f,CAAC,CAAA;IAC7D,OAAOjB,IAAAA,CAAK,CAAImB,GAAAA,SAAAA,GAAYA,SAAY,GAAA,CAAA,CAAA,CAAA;AAC5C,CAAA;AAEO,SAASC,UAAUpD,OAAmB,EAAEnjB,MAAkB,EAAEqjB,SAAiB,EAAEkC,KAAa,EAAA;AAC/F,IAAA,IAAIA,SAAS,CAAG,EAAA;QACZ,OAAOvlB,MAAAA,CAAAA;AACX,KAAA;IACA,IAAIimB,WAAAA,CAAY9C,SAASnjB,MAAS,CAAA,EAAA;QAC9B,OAAOA,MAAAA,CAAAA;AACX,KAAA;AACA,IAAA,OAAOmjB,QAAQzL,KAAK,CAAC1X,QAAQ0V,OAAM6P,CAAAA,KAAAA,GAAQlC,WAAW,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AAC7D,CAAA;AAEO,SAASmD,iBAAkBrD,CAAAA,OAAO,EAAEnjB,MAAM,EAAEqjB,SAAS,EAAEkC,KAAK,EAAElB,GAAAA,GAAMlB,OAAO,EAAA;AAC9E,IAAA,IAAIoC,SAAS,CAAG,EAAA;QACZ,OAAOlB,GAAAA,CAAIrM,IAAI,CAAChY,MAAAA,CAAAA,CAAAA;AACpB,KAAA;IACA,IAAIimB,WAAAA,CAAY9C,SAASnjB,MAAS,CAAA,EAAA;QAC9B,OAAOqkB,GAAAA,CAAIrM,IAAI,CAAChY,MAAAA,CAAAA,CAAAA;AACpB,KAAA;AACA,IAAA,IAAIymB,UAAa/Q,GAAAA,OAAAA,CAAM6P,KAAQlC,GAAAA,SAAAA,EAAW,CAAG,EAAA,CAAA,CAAA,CAAA;AAC7C,IAAA,IAAIqD,WAAc5D,GAAAA,GAAAA,CAAIuD,oBAAqBlD,CAAAA,OAAAA,EAASnjB,MAASolB,CAAAA,EAAAA,OAAAA,CAAAA,CAAAA;IAC7D,OAAOf,GAAAA,CAAIrM,IAAI,CAACmL,OAASzL,CAAAA,CAAAA,KAAK,CAAC1X,MAAQ0V,EAAAA,OAAAA,CAAM+Q,UAAaC,GAAAA,WAAAA,EAAa,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AAC9E,CAAA;AAEA;AACO,SAASC,UAAUxD,OAAO,EAAEnjB,MAAM,EAAEqjB,SAAS,EAAEkC,KAAK,EAAA;AACvD,IAAA,IAAIA,SAAS,CAAG,EAAA;QACZ,OAAOvlB,MAAAA,CAAAA;AACX,KAAA;AACA,IAAA,IAAIwlB,OAAOxlB,MAASmjB,GAAAA,OAAAA,CAAAA;IACpB,IAAI+B,KAAAA,CAAIM,QAAQJ,OAAS,EAAA;QACrB,OAAOplB,MAAAA,CAAAA;AACX,KAAA;AACA,IAAA,OAAOmjB,OAAUqC,GAAAA,IAAAA,GAAO9P,OAAM6P,CAAAA,KAAAA,GAAQlC,WAAW,CAAG,EAAA,CAAA,CAAA,CAAA;AACxD,CAAA;AAEA;AACO,SAASuD,kBAAkBzD,OAAO,EAAEnjB,MAAM,EAAEqjB,SAAS,EAAEkC,KAAK,EAAA;AAC/D,IAAA,IAAIC,OAAOxlB,MAASmjB,GAAAA,OAAAA,CAAAA;IACpB,IAAI+B,KAAAA,CAAIM,QAAQJ,OAAS,EAAA;QACrB,OAAOplB,MAAAA,CAAAA;AACX,KAAA;AACA,IAAA,IAAI6mB,OAAOtB,KAAQlC,GAAAA,SAAAA,CAAAA;AACnB,IAAA,OAAOF,OAAUzN,GAAAA,OAAAA,CAAM8P,IAAM,EAAA,CAACqB,IAAMA,EAAAA,IAAAA,CAAAA,CAAAA;AACxC;;ACvFA,MAAM,EAAElR,IAAI,SAAED,OAAK,EAAE,GAAGpB,SAAAA,CAAAA;AAExB,SAASwS,UAAAA,CAAWhgB,CAAS,EAAEF,EAAU,EAAEC,EAAU,EAAEI,EAAU,EAAEC,EAAU,EAAA;AACzE,IAAA,MAAMC,EAAK,GAACF,CAAAA,EAAAA,GAAKL,EAAC,IAAK,GAAA,CAAA;AACvB,IAAA,MAAMQ,EAAK,GAACF,CAAAA,EAAAA,GAAKL,EAAC,IAAK,GAAA,CAAA;AACvB,IAAA,MAAMQ,KAAKP,CAAIA,GAAAA,CAAAA,CAAAA;AACf,IAAA,MAAMQ,KAAKR,CAAIO,GAAAA,EAAAA,CAAAA;IACf,OAAQ,CAAA,CAAIR,GAAAA,EAAAA,GAAK,IAAII,EAAKE,GAAAA,EAAAA,GAAKC,EAAC,IAAKE,EAAK,GAAC,CAAA,CAAE,CAAA,GAAIT,EAAK,GAAA,CAAA,GAAII,EAAK,GAAA,CAAA,GAAIE,KAAKC,EAAC,IAAKC,EAAKF,GAAAA,EAAAA,GAAKL,CAAID,GAAAA,EAAAA,CAAAA;AAChG,CAAA;AAEA,MAAMkgB,UAAAA,CAAAA;IAOFnZ,GAAIsQ,CAAAA,CAAS,EAAEC,CAAS,EAAE;QACtB,IAAI,CAACD,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACC,CAAC,GAAGA,CAAAA,CAAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAxI,IAAAA,IAAAA,CAAKqR,CAAa,EAAElgB,CAAS,EAAEud,GAAAA,GAAkB,IAAI,EAAE;QACnDA,GAAInG,CAAAA,CAAC,GAAGvI,IAAK,CAAA,IAAI,CAACuI,CAAC,EAAE8I,CAAE9I,CAAAA,CAAC,EAAEpX,CAAAA,CAAAA,CAAAA;QAC1Bud,GAAIlG,CAAAA,CAAC,GAAGxI,IAAK,CAAA,IAAI,CAACwI,CAAC,EAAE6I,CAAE7I,CAAAA,CAAC,EAAErX,CAAAA,CAAAA,CAAAA;QAC1B,OAAOud,GAAAA,CAAAA;AACX,KAAA;IAfA1hB,WACI,CAAOub,CAAY,GAAA,CAAC,EACbC,CAAY,GAAA,CAAC,EACb8I,IAAe,GAAA,CAAC,CAAE;aAFlB/I,CAAAA,GAAAA,CAAAA,CAAAA;aACAC,CAAAA,GAAAA,CAAAA,CAAAA;aACA8I,IAAAA,GAAAA,IAAAA,CAAAA;AAAoB,KAAA;AAanC,CAAA;AAEO,MAAMC,cAAAA,CAAAA;AAcDC,IAAAA,eAAAA,CAAgBC,OAAe,EAAE;AACrC,QAAA,IAAI,IAAI,CAACC,QAAQ,KAAKD,OAAS,EAAA;YAC3B,IAAI,CAACC,QAAQ,GAAGD,OAAAA,CAAAA;AAChB,YAAA,IAAI,CAACE,YAAY,GAAG,IAAIC,iBACpB,CAAA,IAAIC,YAAaJ,CAAAA,OAAAA,CAAAA,EAAU,IAAII,YAAAA,CAAaJ,OAAU,CAAA,EAAA,CAAA,EAAG,IAAII,YAAaJ,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA;AAElF,SAAA;QACA,OAAO,IAAI,CAACE,YAAY,CAAA;AAC5B,KAAA;AAEAG,IAAAA,gBAAAA,CAAiBvJ,CAAU,EAAEC,CAAU,EAAE8I,IAAa,EAAE;QACpD,OAAO,IAAIF,UAAW7I,CAAAA,CAAAA,EAAGC,CAAG8I,EAAAA,IAAAA,CAAAA,CAAAA;AAChC,KAAA;IAEAS,QAASN,CAAAA,OAAAA,GAAkB,GAAG,EAAE;AAC5B,QAAA,MAAMP,IAAO,GAAA,CAAA,IAAKO,OAAAA,GAAU,CAAA,CAAA,CAAA;AAC5B,QAAA,MAAMO,WAAc,GAAA,IAAI,CAACR,eAAe,CAACC,OAAAA,CAAAA,CAAAA;QACzC,MAAMrb,KAAAA,GAAQ4b,YAAYC,kBAAkB,CAAA;QAC5C,MAAMvU,MAAAA,GAASsU,YAAYE,YAAY,CAAA;QACvC,MAAMC,KAAAA,GAAQ,IAAI,CAACL,gBAAgB,EAAA,CAAA;AAEnC,QAAA,IAAK,IAAI1mB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIqmB,SAASrmB,CAAK,EAAA,CAAA;AAC9B,YAAA,IAAI,CAACgnB,QAAQ,CAAChnB,CAAAA,GAAI8lB,IAAMiB,EAAAA,KAAAA,CAAAA,CAAAA;AACxB/b,YAAAA,KAAK,CAAChL,CAAAA,CAAE,GAAG+mB,KAAAA,CAAM5J,CAAC,CAAA;AAClB7K,YAAAA,MAAM,CAACtS,CAAAA,CAAE,GAAG+mB,KAAAA,CAAM3J,CAAC,CAAA;AACvB,SAAA;AACJ,KAAA;AAEA6J,IAAAA,QAAAA,CAASlhB,CAAS,EAAE;QAChB,IAAI,IAAI,CAACmhB,WAAW,EAAE;YAClB,IAAI,CAACA,WAAW,GAAG,KAAA,CAAA;AACnB,YAAA,IAAI,CAACP,QAAQ,EAAA,CAAA;AACjB,SAAA;QACA,OAAO,IAAI,CAACJ,YAAY,CAACU,QAAQ,CAAClhB,CAAAA,CAAE,CAAC,CAAE,CAAA,CAAA;AAC3C,KAAA;IAEAihB,QAASjhB,CAAAA,CAAS,EAAEud,GAAe,EAAE;QACjC,MAAM6D,MAAAA,GAAS,IAAI,CAACA,MAAM,CAAA;AAE1B,QAAA,IAAIphB,KAAK,CAAG,EAAA;YACR,OAAOud,GAAAA,CAAIzW,GAAG,CAAC9G,CAAAA,EAAGohB,MAAM,CAAC,CAAA,CAAE,CAAC/J,CAAC,CAAA,CAAA;AACjC,SAAA;AACA,QAAA,IAAIrX,KAAK,CAAG,EAAA;YACR,OAAOud,GAAAA,CAAIzW,GAAG,CAAC9G,CAAGohB,EAAAA,MAAM,CAACA,MAAAA,CAAOxoB,MAAM,GAAG,CAAE,CAAA,CAACye,CAAC,CAAA,CAAA;AACjD,SAAA;AAEA,QAAA,MAAM6I,IAAI,CAACkB,OAAOxoB,MAAM,GAAG,CAAA,IAAKoH,CAAAA,CAAAA;QAEhC,MAAMqhB,QAAAA,GAAW3kB,IAAK0C,CAAAA,KAAK,CAAC8gB,CAAAA,CAAAA,CAAAA;AAC5B,QAAA,MAAMoB,SAASpB,CAAImB,GAAAA,QAAAA,CAAAA;AAEnB,QAAA,MAAMvhB,KAAKshB,MAAM,CAACC,aAAa,CAAIA,GAAAA,QAAAA,GAAWA,WAAW,CAAE,CAAA,CAAA;QAC3D,MAAMthB,EAAAA,GAAKqhB,MAAM,CAACC,QAAS,CAAA,CAAA;AAC3B,QAAA,MAAMlhB,EAAKihB,GAAAA,MAAM,CAACC,QAAAA,GAAWD,MAAOxoB,CAAAA,MAAM,GAAG,CAAA,GAAIwoB,MAAOxoB,CAAAA,MAAM,GAAG,CAAA,GAAIyoB,WAAW,CAAE,CAAA,CAAA;AAClF,QAAA,MAAMjhB,EAAKghB,GAAAA,MAAM,CAACC,QAAAA,GAAWD,MAAOxoB,CAAAA,MAAM,GAAG,CAAA,GAAIwoB,MAAOxoB,CAAAA,MAAM,GAAG,CAAA,GAAIyoB,WAAW,CAAE,CAAA,CAAA;QAElF,IAAKthB,EAAGogB,CAAAA,IAAI,KAAK,CAAA,IAAOrgB,OAAOC,EAAMI,IAAAA,EAAAA,CAAGggB,IAAI,KAAK,CAAI,EAAA;AACjD,YAAA,OAAOpgB,EAAG8O,CAAAA,IAAI,CAAC1O,EAAAA,EAAImhB,MAAQ/D,EAAAA,GAAAA,CAAAA,CAAAA;AAC/B,SAAA;AACA,QAAA,OAAOA,GAAIzW,CAAAA,GAAG,CACV8H,OAAAA,CAAMoR,WAAWsB,MAAQxhB,EAAAA,EAAAA,CAAGsX,CAAC,EAAErX,GAAGqX,CAAC,EAAEjX,EAAGiX,CAAAA,CAAC,EAAEhX,EAAGgX,CAAAA,CAAC,CAAG,EAAA,CAAA,EAAG,IACrDxI,OAAMoR,CAAAA,UAAAA,CAAWsB,MAAQxhB,EAAAA,EAAAA,CAAGuX,CAAC,EAAEtX,EAAAA,CAAGsX,CAAC,EAAElX,GAAGkX,CAAC,EAAEjX,EAAGiX,CAAAA,CAAC,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AAE7D,KAAA;AApEAxb,IAAAA,WAAAA,CACI,IAAOnD,GAAe,EAAE,EACxB,MAA8B,GAAA;AAAC,QAAA,IAAIunB,WAAW,CAAG,EAAA,CAAA,CAAA;AAAI,QAAA,IAAIA,WAAW,CAAG,EAAA,CAAA,CAAA;KAAG,CAC5E;aAFSvnB,IAAAA,GAAAA,IAAAA,CAAAA;aACA0oB,MAAAA,GAAAA,MAAAA,CAAAA;aAVXD,WAAuB,GAAA,IAAA,CAAA;aACvBI,gBAA4B,GAAA,IAAA,CAAA;aAEpBhB,QAAmB,GAAA,GAAA,CAAA;aACnBC,YAAkC,GAAA,IAAIC,iBAC1C,CAAA,IAAIC,YAAa,CAAA,GAAA,CAAA,EAAM,IAAIA,YAAa,CAAA,GAAA,CAAA,EAAM,CAAG,EAAA,IAAIA,YAAa,CAAA,GAAA,CAAA,CAAA,CAAA;AAMlE,KAAA;AAmER;;AC/GA,MAAM,EAAEthB,KAAK,EAAE,GAAG1C,IAAAA,CAAAA;AAElB;AACA;AACO,MAAM8kB,MAAAA,CAAAA;AAIT,IAAA,OAAcC,MAAMrK,CAAS,EAAEC,CAAU,EAAEgI,CAAU,EAAE;QACnD,IAAIqC,IAAAA,GAAOF,OAAOG,KAAK,CAAA;QACvB,IAAIC,IAAAA,GAAOJ,OAAOK,KAAK,CAAA;QACvB,IAAIhT,IAAAA,GAAO2S,OAAOM,KAAK,CAAA;QACvB,IAAI5B,CAAAA,GAAIsB,OAAOO,YAAY,CAAA;QAE3B,IAAI1K,CAAAA,KAAMvd,SAAaulB,IAAAA,CAAAA,KAAMvlB,SAAW,EAAA;AACpC,YAAA,IAAIkoB,KAAK5iB,KAAMgY,CAAAA,CAAAA,CAAAA,CAAAA;AACf,YAAA,IAAI6K,KAAK7iB,KAAMiY,CAAAA,CAAAA,CAAAA,CAAAA;AACf,YAAA,IAAI6K,KAAK9iB,KAAMigB,CAAAA,CAAAA,CAAAA,CAAAA;YACf,IAAI8C,CAAAA,GAAIH,EAAK,GAAA,IAAA,CAAA;YACb,IAAII,CAAAA,GAAIH,EAAK,GAAA,IAAA,CAAA;AACb,YAAA,IAAII,IAAIH,EAAK,GAAA,IAAA,CAAA;AACb9K,YAAAA,CAAAA,IAAK4K;AACL3K,YAAAA,CAAAA,IAAK4K;YACL5C,CAAK6C,IAAAA,EAAAA,CAAAA;YACL,IAAII,CAAAA,GAAIZ,IAAKtK,CAAAA,CAAAA,CAAAA,CAAAA;YACb,IAAI/d,CAAAA,GAAIqoB,IAAKrK,CAAAA,CAAAA,CAAAA,CAAAA;AACb,YAAA,IAAIiI,IAAIoC,IAAKrC,CAAAA,CAAAA,CAAAA,CAAAA;AACb,YAAA,IAAIkD,IAAIrC,CAAC,CAACiC,EAAE,GAAGC,CAAAA,EAAGI,KAAKtC,CAAC,CAACqC,EAAE,GAAGF,CAAAA,EAAGI,KAAKvC,CAAC,CAACqC,IAAI,CAAE,CAAA,GAAGF;YACjD,IAAIK,CAAAA,GAAIxC,CAAC,CAACiC,CAAAA,GAAI,EAAE,GAAGC,CAAAA,EAAGO,KAAKzC,CAAC,CAACwC,EAAE,GAAGL,CAAAA,EAAGO,KAAK1C,CAAC,CAACwC,IAAI,CAAE,CAAA,GAAGL;YAErD,OAAOxT,IAAAA,CAAKyQ,GAAGzQ,IAAKxV,CAAAA,CAAAA,EAAGwV,KAAKyT,CAAGV,EAAAA,IAAAA,CAAK1B,CAAC,CAACsC,EAAAA,CAAG,EAAEpL,CAAGC,EAAAA,CAAAA,EAAGgI,IAC7CuC,IAAK1B,CAAAA,CAAC,CAACyC,EAAG,CAAA,EAAEvL,IAAI,CAAGC,EAAAA,CAAAA,EAAGgI,KACtBxQ,IAAKyT,CAAAA,CAAAA,EAAGV,KAAK1B,CAAC,CAACuC,GAAG,EAAErL,CAAAA,EAAGC,IAAI,CAAGgI,EAAAA,CAAAA,CAAAA,EAC1BuC,KAAK1B,CAAC,CAAC0C,GAAG,EAAExL,CAAAA,GAAI,GAAGC,CAAI,GAAA,CAAA,EAAGgI,MAC9BxQ,IAAKxV,CAAAA,CAAAA,EAAGwV,KAAKyT,CAAGV,EAAAA,IAAAA,CAAK1B,CAAC,CAACsC,EAAAA,GAAK,EAAE,EAAEpL,CAAAA,EAAGC,GAAGgI,CAAI,GAAA,CAAA,CAAA,EACtCuC,KAAK1B,CAAC,CAACyC,KAAK,CAAE,CAAA,EAAEvL,IAAI,CAAGC,EAAAA,CAAAA,EAAGgI,IAAI,CAC9BxQ,CAAAA,CAAAA,EAAAA,IAAAA,CAAKyT,GAAGV,IAAK1B,CAAAA,CAAC,CAACuC,EAAK,GAAA,CAAA,CAAE,EAAErL,CAAGC,EAAAA,CAAAA,GAAI,GAAGgI,CAAI,GAAA,CAAA,CAAA,EAClCuC,KAAK1B,CAAC,CAAC0C,KAAK,CAAE,CAAA,EAAExL,IAAI,CAAGC,EAAAA,CAAAA,GAAI,GAAGgI,CAAI,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;SAE7C,MAAA,IAAIhI,MAAMvd,SAAW,EAAA;AACtB,YAAA,IAAIkoB,KAAK5iB,KAAMgY,CAAAA,CAAAA,CAAAA,CAAAA;AACf,YAAA,IAAI6K,KAAK7iB,KAAMiY,CAAAA,CAAAA,CAAAA,CAAAA;AACf,YAAA,IAAI8K,IAAIH,EAAK,GAAA,IAAA,CAAA;AACb,YAAA,IAAII,IAAIH,EAAK,GAAA,IAAA,CAAA;YACb7K,CAAK4K,IAAAA,EAAAA,CAAAA;YACL3K,CAAK4K,IAAAA,EAAAA,CAAAA;AACL,YAAA,IAAIK,IAAIZ,IAAKtK,CAAAA,CAAAA,CAAAA,CAAAA;AACb,YAAA,IAAI/d,IAAIqoB,IAAKrK,CAAAA,CAAAA,CAAAA,CAAAA;AACb,YAAA,IAAIkL,IAAI,CAAE,CAACJ,CAAAA,CAAE,GAAGC,CAAK,GAAA,IAAA,CAAA;AACrB,YAAA,IAAIM,IAAI,CAAE,CAACP,CAAI,GAAA,CAAA,CAAE,GAAGC,CAAK,GAAA,IAAA,CAAA;AACzB,YAAA,OAAOvT,KAAKxV,CAAGwV,EAAAA,IAAAA,CAAKyT,CAAGV,EAAAA,IAAAA,CAAK1B,CAAC,CAACqC,CAAAA,CAAE,EAAEnL,CAAAA,EAAGC,IACjCuK,IAAK1B,CAAAA,CAAC,CAACwC,CAAE,CAAA,EAAEtL,IAAI,CAAGC,EAAAA,CAAAA,CAAAA,CAAAA,EAClBxI,IAAKyT,CAAAA,CAAAA,EAAGV,KAAK1B,CAAC,CAACqC,CAAI,GAAA,CAAA,CAAE,EAAEnL,CAAGC,EAAAA,CAAAA,GAAI,CAC1BuK,CAAAA,EAAAA,IAAAA,CAAK1B,CAAC,CAACwC,CAAAA,GAAI,EAAE,EAAEtL,CAAAA,GAAI,GAAGC,CAAI,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA;SAEjC,MAAA;AACD,YAAA,IAAI2K,KAAK5iB,KAAMgY,CAAAA,CAAAA,CAAAA,CAAAA;AACf,YAAA,IAAI+K,IAAIH,EAAK,GAAA,IAAA,CAAA;YACb5K,CAAK4K,IAAAA,EAAAA,CAAAA;AACL,YAAA,IAAIM,IAAIZ,IAAKtK,CAAAA,CAAAA,CAAAA,CAAAA;AACb,YAAA,OAAOvI,IAAKyT,CAAAA,CAAAA,EAAGV,IAAK1B,CAAAA,CAAC,CAACiC,CAAE,CAAA,EAAE/K,CACtBwK,CAAAA,EAAAA,IAAAA,CAAK1B,CAAC,CAACiC,CAAI,GAAA,CAAA,CAAE,EAAE/K,CAAI,GAAA,CAAA,CAAA,CAAA,CAAA;AAC3B,SAAA;AACJ,KAAA;IAKA,OAAcyL,GAAAA,CAAIC,MAAc,EAAE1L,CAAS,EAAEC,CAAU,EAAEgI,CAAU,EAAE;AACjE,QAAA,IAAIlgB,CAAI,GAAA,CAAA,CAAA;AACR,QAAA,IAAImgB,CAAI,GAAA,GAAA,CAAA;QACR,IAAIyD,KAAAA,GAAQvB,OAAOC,KAAK,CAAA;QACxB,IAAIpK,CAAAA,KAAMvd,SAAaulB,IAAAA,CAAAA,KAAMvlB,SAAW,EAAA;AACpC,YAAA,IAAK,IAAIG,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI6oB,QAAQ7oB,CAAK,EAAA,CAAA;gBAC7BkF,CAAKmgB,IAAAA,CAAAA,GAAIyD,KAAM3L,CAAAA,CAAAA,EAAGC,CAAGgI,EAAAA,CAAAA,CAAAA,CAAAA;gBACrBjI,CAAK,IAAA,GAAA,CAAA;gBACLC,CAAK,IAAA,GAAA,CAAA;gBACLgI,CAAK,IAAA,GAAA,CAAA;gBACLC,CAAK,IAAA,GAAA,CAAA;AACT,aAAA;SAEC,MAAA,IAAIjI,MAAMvd,SAAW,EAAA;AACtB,YAAA,IAAK,IAAIG,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI6oB,QAAQ7oB,CAAK,EAAA,CAAA;gBAC7BkF,CAAKmgB,IAAAA,CAAAA,GAAIyD,MAAM3L,CAAGC,EAAAA,CAAAA,CAAAA,CAAAA;gBAClBD,CAAK,IAAA,GAAA,CAAA;gBACLC,CAAK,IAAA,GAAA,CAAA;gBACLiI,CAAK,IAAA,GAAA,CAAA;AACT,aAAA;SAEC,MAAA;AACD,YAAA,IAAK,IAAIrlB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI6oB,QAAQ7oB,CAAK,EAAA,CAAA;AAC7BkF,gBAAAA,CAAAA,IAAKmgB,IAAIyD,KAAM3L,CAAAA,CAAAA,CAAAA,CAAAA;gBACfA,CAAK,IAAA,GAAA,CAAA;gBACLkI,CAAK,IAAA,GAAA,CAAA;AACT,aAAA;AACJ,SAAA;QACA,OAAOngB,CAAAA,CAAAA;AACX,KAAA;IAEA,OAAewiB,KAAAA,CAAM3hB,CAAS,EAAE;QAC5B,OAAOA,CAAAA,GAAIA,CAAIA,GAAAA,CAAAA,IAAKA,CAAAA,IAAKA,CAAI,GAAA,CAAA,GAAI,EAAC,CAAA,GAAK,EAAC,CAAA,CAAA;AAC5C,KAAA;AAEA,IAAA,OAAe8hB,MAAM9hB,CAAS,EAAEtG,CAAS,EAAE8F,CAAS,EAAE;AAClD,QAAA,OAAO9F,CAAIsG,GAAAA,CAAAA,IAAKR,CAAAA,GAAI9F,CAAAA,CAAAA,CAAAA;AACxB,KAAA;IAKA,OAAemoB,KAAAA,CAAMmB,IAAY,EAAE5L,CAAS,EAAEC,CAAU,EAAEgI,CAAU,EAAE;QAClE,IAAIhI,CAAAA,KAAMvd,SAAaulB,IAAAA,CAAAA,KAAMvlB,SAAW,EAAA;YACpC,IAAImpB,CAAAA,GAAID,IAAO,GAAA,EAAA,CAAA;AACf,YAAA,IAAIV,CAAIW,GAAAA,CAAAA,GAAI,CAAI7L,GAAAA,CAAAA,GAAIC,CAChBhe,EAAAA,CAAAA,GAAI4pB,CAAI,GAAA,CAAA,GAAI5L,CAAK4L,GAAAA,CAAAA,IAAK,EAAMA,IAAAA,CAAAA,IAAK,KAAK7L,CAAIiI,GAAAA,CAAAA,CAAAA;YAC9C,OAAQ,CAAA,CAAC4D,IAAI,CAAA,KAAM,IAAIX,CAAI,GAAA,CAACA,CAAAA,KAAM,CAACW,CAAAA,GAAI,CAAA,KAAM,CAAA,GAAI5pB,CAAI,GAAA,CAACA,CAAAA,CAAAA,CAAAA;SAErD,MAAA,IAAIge,MAAMvd,SAAW,EAAA;YACtB,OAAQ,CAAA,CAACkpB,OAAO,CAAA,KAAM,IAAI5L,CAAI,GAAA,CAACA,CAAAA,KAAM,CAAC4L,IAAAA,GAAO,CAAA,KAAM,CAAA,GAAI3L,CAAI,GAAA,CAACA,CAAAA,CAAAA,CAAAA;SAE3D,MAAA;AACD,YAAA,OAAO,CAAC2L,IAAAA,GAAO,CAAA,KAAM,CAAA,GAAI5L,IAAI,CAACA,CAAAA,CAAAA;AAClC,SAAA;AACJ,KAAA;AAkBJ,CAAA;AAzIaoK,MAAAA,CAyHMO,YAAe,GAAA;AAC1B,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AACvB,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,CAAA;AAAG,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,CAAA;AAAG,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAC/F,IAAA,GAAA;AAAK,IAAA,CAAA;AAAG,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,CAAA;AAAG,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,EAAA;AAC7F,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAC3F,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAC5F,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,CAAA;AAAG,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AACzF,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,CAAA;AAAG,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAC1F,IAAA,CAAA;AAAG,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAC9F,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,CAAA;AAAG,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,CAAA;AAC1F,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AACzF,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAC1F,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,CAAA;AAAG,IAAA,GAAA;AAAK,IAAA,GAAA;AACxF,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,EAAA;AAAI,IAAA,GAAA;AAAK,IAAA,GAAA;AACvF,IAAA,GAAA;AACH,CAAA;;ACpIL,MAAM,EAAEnT,KAAK,EAAEsU,QAAQ,EAAE,GAAG1V,SAAAA,CAAAA;AAC5B,MAAM,EAAE4Q,GAAG,EAAE+E,GAAG,EAAE,GAAGzmB,IAAAA,CAAAA;AAEd,MAAM0mB,gBAAmB,GAAA;IAC5BC,IAAM,EAAA,CAAA;IACNC,SAAW,EAAA,CAAA;AACf,CAAC,CAAA;AAGM,MAAMC,qBAA8BvS,SAAAA,aAAAA,CAAAA;IAmDvCwS,QAAW,GAAA;AACP,QAAA,IAAI,CAAC/R,MAAM,CAACzY,EAAE,CAACwa,WAAAA,CAAYoC,YAAY,EAAE,IAAI,CAAChB,cAAc,EAAE,IAAI,CAAA,CAAA;AAClE,QAAA,IAAI,CAACnD,MAAM,CAACzY,EAAE,CAACwa,WAAAA,CAAYqC,UAAU,EAAE,IAAI,CAACf,YAAY,EAAE,IAAI,CAAA,CAAA;AAC9D,QAAA,IAAI,CAACrD,MAAM,CAACzY,EAAE,CAACwa,WAAAA,CAAY+D,YAAY,EAAE,IAAI,CAACxC,cAAc,EAAE,IAAI,CAAA,CAAA;AAClE,QAAA,IAAI,CAACtD,MAAM,CAACzY,EAAE,CAACwa,WAAAA,CAAYkE,WAAW,EAAE,IAAI,CAAC1C,aAAa,EAAE,IAAI,CAAA,CAAA;AAChE,QAAA,IAAI,CAACvD,MAAM,CAACzY,EAAE,CAACwa,WAAAA,CAAYmE,WAAW,EAAE,IAAI,CAAC1C,aAAa,EAAE,IAAI,CAAA,CAAA;AAChE,QAAA,IAAI,CAACxD,MAAM,CAACzY,EAAE,CAACwa,WAAAA,CAAYyE,UAAU,EAAE,IAAI,CAAC9C,YAAY,EAAE,IAAI,CAAA,CAAA;AAC9D,QAAA,IAAI,CAACsO,KAAK,EAAA,CAAA;AACd,KAAA;IAEAC,SAAY,GAAA;AACR,QAAA,IAAI,CAACjS,MAAM,CAAChY,GAAG,CAAC+Z,WAAAA,CAAYoC,YAAY,EAAE,IAAI,CAAChB,cAAc,EAAE,IAAI,CAAA,CAAA;AACnE,QAAA,IAAI,CAACnD,MAAM,CAAChY,GAAG,CAAC+Z,WAAAA,CAAYqC,UAAU,EAAE,IAAI,CAACf,YAAY,EAAE,IAAI,CAAA,CAAA;AAC/D,QAAA,IAAI,CAACrD,MAAM,CAAChY,GAAG,CAAC+Z,WAAAA,CAAY+D,YAAY,EAAE,IAAI,CAACxC,cAAc,EAAE,IAAI,CAAA,CAAA;AACnE,QAAA,IAAI,CAACtD,MAAM,CAAChY,GAAG,CAAC+Z,WAAAA,CAAYkE,WAAW,EAAE,IAAI,CAAC1C,aAAa,EAAE,IAAI,CAAA,CAAA;AACjE,QAAA,IAAI,CAACvD,MAAM,CAAChY,GAAG,CAAC+Z,WAAAA,CAAYmE,WAAW,EAAE,IAAI,CAAC1C,aAAa,EAAE,IAAI,CAAA,CAAA;AACjE,QAAA,IAAI,CAACxD,MAAM,CAAChY,GAAG,CAAC+Z,WAAAA,CAAYyE,UAAU,EAAE,IAAI,CAAC9C,YAAY,EAAE,IAAI,CAAA,CAAA;AACnE,KAAA;IAEAsO,KAAQ,GAAA;QACJ,IAAI,CAACE,OAAO,GAAG,CAAC,CAAA,CAAA;QAChB,IAAI,CAACC,QAAQ,GAAG,CAAC,CAAA,CAAA;AACjB,QAAA,IAAI,CAACC,YAAY,CAAC/c,GAAG,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;AACzB,QAAA,IAAI,CAACgd,SAAS,CAAChd,GAAG,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;QACtB,IAAI,CAACid,cAAc,GAAG,CAAA,CAAA;AAC1B,KAAA;AAWAC,IAAAA,OAAAA,CACIxT,QAAiB,EACjBoB,MAAe,EACfnP,QAAmB,GAAA,CAAC,EACpB4C,MAAAA,GAAqCvJ,MAAOI,CAAAA,SAAS,CAACG,KAAK,EAC7D;AACE,QAAA,IAAI,CAACoV,MAAM,CAAC/J,YAAY,CAAC,IAAI,CAACuc,SAAS,CAAA,CAAA;QACvC,IAAI,CAACxS,MAAM,CAAChT,KAAK,CAAC,IAAI,CAACwlB,SAAS,CAAExf,CAAAA,EAAE,CAAC;AAAE+L,YAAAA,QAAAA;AAAUoB,YAAAA,MAAAA;YAAQK,mBAAqBgM,EAAAA,YAAAA;AAAa,SAAA,EAAGxb,QAAU4C,CAAAA,CAAAA,MAAM,CAACA,MAAAA,CAAAA,CAAQ1C,KAAK,EAAA,CAAA;AAChI,KAAA;AAEQiS,IAAAA,cAAAA,CAAeF,CAAe,EAAE;QACpC,IAAI8F,UAAAA,CAAW5B,QAAQ,EAAE,OAAA;AAEzB,QAAA,IAAI,CAAC+K,OAAO,GAAGjP,CAAAA,CAAE2B,MAAM,CAAA;QACvB,IAAI,CAAC6N,QAAQ,CAACpd,GAAG,CAAC4N,CAAEiC,CAAAA,KAAK,EAAEjC,CAAAA,CAAEkC,KAAK,CAAA,CAAA;AACtC,KAAA;AAEQ9B,IAAAA,YAAAA,CAAaJ,CAAe,EAAE;QAClC,IAAI8F,UAAAA,CAAW5B,QAAQ,EAAE,OAAA;QAEzB,IAAI,CAAC+K,OAAO,GAAG,CAAC,CAAA,CAAA;AACpB,KAAA;AAEQ5O,IAAAA,cAAAA,CAAeL,CAAe,EAAE;QACpC,IAAI8F,UAAAA,CAAW5B,QAAQ,EAAE,OAAA;QAEzB2K,qBAAsBY,CAAAA,MAAM,CAACrd,GAAG,CAAC4N,EAAEiC,KAAK,EAAEjC,EAAEkC,KAAK,CAAA,CAAA;QACjD,OAAQ,IAAI,CAAC+M,OAAO;YAChB,KAAK,CAAA;AAAG,gBAAA,IAAI,CAACE,YAAY,CAACrlB,GAAG,CAAC,IAAI,CAAC4lB,qBAAqB,CAACb,qBAAAA,CAAsBc,WAAW,EAAE,IAAI,CAACH,QAAQ,EAAEX,sBAAsBY,MAAM,CAAA,CAAA,CAAA;AAAI,gBAAA,MAAA;YAC3I,KAAK,CAAA,CAAA;YACL,KAAK,CAAA;AACD,gBAAA,IAAI,CAACL,SAAS,CAACtlB,GAAG,CAAC,IAAI,CAAC8lB,kBAAkB,CAACf,qBAAAA,CAAsBc,WAAW,EAAE,IAAI,CAACH,QAAQ,EAAEX,sBAAsBY,MAAM,CAAA,CAAA,CAAA;AAAI,gBAAA,MAAA;AACrI,SAAA;AACA,QAAA,IAAI,CAACD,QAAQ,CAAChT,IAAI,CAACqS,sBAAsBY,MAAM,CAAA,CAAA;AACnD,KAAA;AAEQnP,IAAAA,aAAAA,CAAcN,CAAa,EAAE;QACjC,IAAI,IAAI,CAAC9C,MAAM,EAAE;YACb,IAAI8M,IAAAA,GAAO6E,qBAAsBgB,CAAAA,UAAU,CAACrT,IAAI,CAAC,IAAI,CAACU,MAAM,CAACpB,QAAQ,CAAA,CAAEhS,GAAG,CAAC,IAAI,CAACyT,mBAAmB,CAAEuS,CAAAA,UAAU,CAAC,IAAI,CAAC3c,IAAI,CAAC2I,QAAQ,CAAA,CAAA;AAClI,YAAA,IAAIiU,OAAU/F,GAAAA,IAAAA,GAAO,IAAI,CAACqF,cAAc,CAAA;YACxC,IAAIrP,CAAAA,CAAE8C,MAAM,GAAG,CAAG,EAAA;AACdiN,gBAAAA,OAAAA,IAAW,IAAI,CAACC,uBAAuB,CAAC,CAAI,GAAA,IAAA,CAAA,CAAA;AAChD,aAAA,MACK,IAAIhQ,CAAAA,CAAE8C,MAAM,GAAG,CAAG,EAAA;gBACnBiN,OAAW,IAAA,IAAI,CAACC,uBAAuB,CAAC,IAAA,CAAA,CAAA;AAC5C,aAAA;YACA,IAAI,CAACX,cAAc,GAAGU,OAAU/F,GAAAA,IAAAA,CAAAA;AACpC,SAAA;AACJ,KAAA;AAEQzJ,IAAAA,aAAAA,CAAcP,CAAa,EAAE;QACjC,IAAI,CAAC8F,UAAW5B,CAAAA,QAAQ,EAAE,OAAA;QAE1B,IAAI1E,OAAAA,GAAUQ,EAAER,OAAO,CAAA;QACvB,IAAIyQ,aAAAA,GAAgB,IAAI,CAACA,aAAa,CAAA;AACtC,QAAA,IAAIzQ,OAAQtb,CAAAA,MAAM,GAAG+rB,aAAAA,GAAgB,CAAG,EAAA;AACpC,YAAA,IAAI,CAACT,QAAQ,CAACpd,GAAG,CAACoN,OAAO,CAACyQ,aAAc,CAAA,CAAChO,KAAK,EAAEzC,OAAO,CAACyQ,aAAAA,CAAc,CAAC/N,KAAK,CAAA,CAAA;AAC5E,YAAA,IAAI,CAACgO,QAAQ,CAAC9d,GAAG,CAACoN,OAAO,CAACyQ,aAAAA,GAAgB,CAAE,CAAA,CAAChO,KAAK,EAAEzC,OAAO,CAACyQ,aAAgB,GAAA,CAAA,CAAE,CAAC/N,KAAK,CAAA,CAAA;AACxF,SAAA,MACK,IAAI1C,OAAAA,CAAQtb,MAAM,GAAG+rB,aAAe,EAAA;AACrC,YAAA,IAAI,CAACf,QAAQ,GAAG1P,OAAO,CAACyQ,aAAAA,CAAc,CAACzN,UAAU,CAAA;AACjD,YAAA,IAAI,CAACgN,QAAQ,CAACpd,GAAG,CAACoN,OAAO,CAACyQ,aAAc,CAAA,CAAChO,KAAK,EAAEzC,OAAO,CAACyQ,aAAAA,CAAc,CAAC/N,KAAK,CAAA,CAAA;AAChF,SAAA;AACJ,KAAA;AAEQzB,IAAAA,YAAAA,CAAaT,CAAa,EAAE;QAChC,IAAI,CAAC8F,UAAW5B,CAAAA,QAAQ,EAAE,OAAA;AAE1B,QAAA,MAAM,EAAEuL,MAAM,EAAEU,MAAM,EAAEN,UAAU,EAAEF,WAAW,EAAES,WAAW,EAAEC,QAAQ,EAAE,GAAGxB,qBAAAA,CAAAA;QAE3E,IAAIrP,OAAAA,GAAUQ,EAAER,OAAO,CAAA;QACvB,IAAIyQ,aAAAA,GAAgB,IAAI,CAACA,aAAa,CAAA;AACtC,QAAA,IAAIzQ,OAAQtb,CAAAA,MAAM,GAAG+rB,aAAAA,GAAgB,CAAG,EAAA;AACpCR,YAAAA,MAAAA,CAAOrd,GAAG,CAACoN,OAAO,CAACyQ,aAAc,CAAA,CAAChO,KAAK,EAAEzC,OAAO,CAACyQ,aAAc,CAAA,CAAC/N,KAAK,CAAA,CAAA;AACrEiO,YAAAA,MAAAA,CAAO/d,GAAG,CAACoN,OAAO,CAACyQ,gBAAgB,CAAE,CAAA,CAAChO,KAAK,EAAEzC,OAAO,CAACyQ,aAAgB,GAAA,CAAA,CAAE,CAAC/N,KAAK,CAAA,CAAA;YAC7E,IAAI,IAAI,CAAChF,MAAM,EAAE;gBACb,IAAI8M,IAAAA,GAAO6F,WAAWrT,IAAI,CAAC,IAAI,CAACU,MAAM,CAACpB,QAAQ,CAAEhS,CAAAA,GAAG,CAAC,IAAI,CAACyT,mBAAmB,CAAEuS,CAAAA,UAAU,CAAC,IAAI,CAAC3c,IAAI,CAAC2I,QAAQ,CAAA,CAAA;gBAC5G,IAAIiU,OAAAA,GAAU,CAAC/F,IAAO,GAAA,IAAI,CAACqF,cAAa,IAAK,IAAI,CAACW,uBAAuB,CAAC,IAAI,CAACR,QAAQ,CAACM,UAAU,CAAC,IAAI,CAACI,QAAQ,CAAA,GAAIT,MAAOK,CAAAA,UAAU,CAACK,MAAAA,CAAAA,CAAAA,CAAAA;gBACtI,IAAI,CAACd,cAAc,GAAGU,OAAU/F,GAAAA,IAAAA,CAAAA;AACpC,aAAA;AACA,YAAA,IAAI,CAACoF,SAAS,CAACtlB,GAAG,CAAC,IAAI,CAAC8lB,kBAAkB,CAACD,aAAaS,WAAY5T,CAAAA,IAAI,CAAC,IAAI,CAACgT,QAAQ,CAAA,CAAE1lB,GAAG,CAAC,IAAI,CAAComB,QAAQ,CAAA,CAAE/F,cAAc,CAAC,GAAA,CAAA,EAAMkG,QAAS7T,CAAAA,IAAI,CAACiT,MAAQ3lB,CAAAA,CAAAA,GAAG,CAACqmB,MAAAA,CAAAA,CAAQhG,cAAc,CAAC,GAAA,CAAA,CAAA,CAAA,CAAA;AACjL,YAAA,IAAI,CAACqF,QAAQ,CAAChT,IAAI,CAACiT,MAAAA,CAAAA,CAAAA;AACnB,YAAA,IAAI,CAACS,QAAQ,CAAC1T,IAAI,CAAC2T,MAAAA,CAAAA,CAAAA;AACvB,SAAA,MACK,IAAI3Q,OAAAA,CAAQtb,MAAM,GAAG+rB,aAAe,EAAA;YACrC,IAAI,IAAI,CAACf,QAAQ,KAAK1P,OAAO,CAACyQ,aAAAA,CAAc,CAACzN,UAAU,EAAE;AACrDiN,gBAAAA,MAAAA,CAAOrd,GAAG,CAACoN,OAAO,CAACyQ,aAAc,CAAA,CAAChO,KAAK,EAAEzC,OAAO,CAACyQ,aAAc,CAAA,CAAC/N,KAAK,CAAA,CAAA;AACrE,gBAAA,IAAI,CAACiN,YAAY,CAACrlB,GAAG,CAAC,IAAI,CAAC4lB,qBAAqB,CAACC,WAAAA,EAAa,IAAI,CAACH,QAAQ,EAAEC,MAAAA,CAAAA,CAAAA,CAAAA;AAC7E,gBAAA,IAAI,CAACD,QAAQ,CAAChT,IAAI,CAACiT,MAAAA,CAAAA,CAAAA;AACvB,aAAA;AACJ,SAAA;AACJ,KAAA;AAEQO,IAAAA,uBAAAA,CAAwBM,KAAa,EAAE;QAC3C,IAAI,IAAI,CAACC,OAAO,EAAE;YACdD,KAAQ,GAAA,CAAA,CAAA;AACZ,SAAA;QACA,OAAOA,KAAAA,CAAAA;AACX,KAAA;AAEQZ,IAAAA,qBAAAA,CAAsB7G,GAAY,EAAE2H,IAAa,EAAEC,IAAa,EAAE;AACtE,QAAA,MAAM7Q,UAAa,GAAA,IAAI,CAAC7C,MAAM,CAAC8C,MAAM,CAAA;AACrCgJ,QAAAA,GAAAA,CAAIrM,IAAI,CAACiU,IAAAA,CAAAA,CAAMxG,GAAG,CAACuG,MAAMrG,cAAc,CAAC,IAAI,CAACuG,WAAW,GAAG,CAAA,GAAI1oB,KAAKE,EAAE,GAAG0X,WAAWgD,MAAM,CAAA,CAAA;AAC1FiG,QAAAA,GAAAA,CAAIlG,CAAC,GAAG,CAACkG,GAAAA,CAAIlG,CAAC,CAAA;QACd,IAAI,IAAI,CAACgO,OAAO,EAAE;AACd9H,YAAAA,GAAAA,CAAInG,CAAC,GAAG,CAAA,CAAA;AACZ,SAAA;QACA,IAAI,IAAI,CAACkO,OAAO,EAAE;AACd/H,YAAAA,GAAAA,CAAIlG,CAAC,GAAG,CAAA,CAAA;AACZ,SAAA;QACA,OAAOkG,GAAAA,CAAAA;AACX,KAAA;AAEQ+G,IAAAA,kBAAAA,CAAmB/G,GAAY,EAAE2H,IAAa,EAAEC,IAAa,EAAE;AACnE,QAAA,MAAM7Q,UAAa,GAAA,IAAI,CAAC7C,MAAM,CAAC8C,MAAM,CAAA;AACrCgJ,QAAAA,GAAAA,CAAIrM,IAAI,CAACiU,IAAMxG,CAAAA,CAAAA,GAAG,CAACuG,IAAAA,CAAAA,CAAMrG,cAAc,CAAC,IAAI,CAAC0G,QAAQ,GAAGjR,WAAWgD,MAAM,CAAA,CAAA;QACzE,IAAI,IAAI,CAACkO,UAAU,EAAE;AACjBjI,YAAAA,GAAAA,CAAInG,CAAC,GAAG,CAAA,CAAA;AACZ,SAAA;QACA,IAAI,IAAI,CAACqO,UAAU,EAAE;AACjBlI,YAAAA,GAAAA,CAAIlG,CAAC,GAAG,CAAA,CAAA;AACZ,SAAA;QACA,OAAOkG,GAAAA,CAAAA;AACX,KAAA;AAEA3e,IAAAA,MAAAA,CAAOwQ,EAAU,EAAE;AACf,QAAA,IAAI,CAAC,IAAI,CAACwC,MAAM,EAAE,OAAA;AAElB,QAAA,MAAM,EAAE8T,UAAU,EAAEC,WAAW,EAAEpB,UAAU,EAAEqB,MAAM,EAAEC,WAAW,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGxC,qBAAAA,CAAAA;AAEvFgB,QAAAA,UAAAA,CAAWrT,IAAI,CAAC,IAAI,CAACU,MAAM,CAACpB,QAAQ,CAAA,CAAEhS,GAAG,CAAC,IAAI,CAACyT,mBAAmB,CAAA,CAAA;QAElE,OAAQ,IAAI,CAACkO,IAAI;AACb,YAAA,KAAKiD,iBAAiBC,IAAI;gBACtB,IAAKjF,IAAI,IAAI,CAACyF,YAAY,CAACzM,CAAC,IAAIgH,GAAI,CAAA,IAAI,CAACyF,YAAY,CAACxM,CAAC,CAAI+G,GAAAA,GAAAA,CAAI,IAAI,CAAC2F,cAAc,IAAK,KAAO,EAAA;AAC1F,oBAAA,MAAM,EAAE2B,UAAU,EAAEC,WAAW,EAAEpB,UAAU,EAAE,GAAGhB,qBAAAA,CAAAA;oBAChDqC,MAAOI,CAAAA,kBAAkB,CAAC,IAAI,CAACne,IAAI,CAACoe,EAAE,EAAEC,QAAAA,CAASC,UAAU,CAAA,CAAA;oBAC3DT,UAAWxU,CAAAA,IAAI,CAAC,IAAI,CAACrJ,IAAI,CAAC2I,QAAQ,CAAEmO,CAAAA,GAAG,CAAC4F,UAAAA,CAAAA,CAAAA;AACxCmB,oBAAAA,UAAAA,CAAWU,eAAe,CAACR,MAAAA,CAAAA,CAAAA;AAC3BC,oBAAAA,WAAAA,CAAYQ,cAAc,CAACX,UAAAA,CAAAA,CAAAA;AAE3B,oBAAA,IAAIY,aAAa9J,WAAY,CAAA,CAAA,EAAG,GAAG,IAAI,CAAC+J,eAAe,EAAEnX,EAAAA,CAAAA,CAAAA;oBACzD,IAAI,CAACyU,YAAY,CAACzM,CAAC,GAAGyO,YAAYW,KAAK,GAAG5X,KAAMiX,CAAAA,WAAAA,CAAYW,KAAK,GAAG,IAAI,CAAC3C,YAAY,CAACzM,CAAC,EAAE,IAAI,CAACqP,QAAQ,EAAE,IAAI,CAACC,QAAQ,CAAA,CAAA;AACrHb,oBAAAA,WAAAA,CAAYW,KAAK,GAAGX,WAAYW,CAAAA,KAAK,GAAG,IAAI,CAAC3C,YAAY,CAACzM,CAAC,IAAI,IAAIkP,UAAS,CAAA,CAAA;oBAE5E,IAAI,CAACzC,YAAY,CAACxM,CAAC,GAAGzI,MAAMiX,WAAYc,CAAAA,GAAG,GAAG,IAAI,CAAC9C,YAAY,CAACxM,CAAC,EAAE,IAAI,CAACuP,MAAM,EAAE,IAAI,CAACC,MAAM,CAAIhB,GAAAA,WAAAA,CAAYc,GAAG,CAAA;AAC9Gd,oBAAAA,WAAAA,CAAYc,GAAG,GAAG/X,KAAAA,CAAMiX,YAAYc,GAAG,GAAG,IAAI,CAAC9C,YAAY,CAACxM,CAAC,IAAI,CAAIiP,GAAAA,UAAS,GAAI,KAAO5pB,EAAAA,IAAAA,CAAKE,EAAE,GAAG,KAAA,CAAA,CAAA;oBAEnG,IAAI,CAACmnB,cAAc,GAAGnV,KAAAA,CAAMiX,YAAYiB,MAAM,GAAG,IAAI,CAAC/C,cAAc,EAAE,IAAI,CAACgD,WAAW,EAAE,IAAI,CAACC,WAAW,CAAA,GAAInB,YAAYiB,MAAM,CAAA;oBAC9HjB,WAAYiB,CAAAA,MAAM,GAAGjB,WAAAA,CAAYiB,MAAM,GAAG,IAAI,CAAC/C,cAAc,IAAI,CAAA,GAAIuC,UAAS,CAAA,CAAA;AAE9E,oBAAA,IAAI,CAACzC,YAAY,CAAChF,cAAc,CAACyH,UAAAA,CAAAA,CAAAA;oBACjC,IAAI,CAACvC,cAAc,IAAIuC,UAAAA,CAAAA;AAEvBZ,oBAAAA,UAAAA,CAAWuB,gBAAgB,CAACpB,WAAAA,CAAAA,CAAAA;oBAC5BH,UAAWU,CAAAA,eAAe,CAACR,MAAAA,CAAOsB,MAAM,EAAA,CAAA,CAAA;oBAExC,IAAI,CAACrf,IAAI,CAAC2I,QAAQ,CAACU,IAAI,CAACwU,UAAWlnB,CAAAA,GAAG,CAAC+lB,UAAAA,CAAAA,CAAAA,CAAAA;AAC3C,iBAAA;AACA,gBAAA,MAAA;AACJ,YAAA,KAAKnB,iBAAiBE,SAAS;AAC3B,gBAAA,IAAIlF,GAAI,CAAA,IAAI,CAAC2F,cAAc,IAAI,KAAO,EAAA;AAClC2B,oBAAAA,UAAAA,CAAWxU,IAAI,CAAC,IAAI,CAACrJ,IAAI,CAAC2I,QAAQ,CAAEmO,CAAAA,GAAG,CAAC,IAAI,CAAC/M,MAAM,CAACpB,QAAQ,CAAA,CAAA;AAE5D,oBAAA,IAAI8V,aAAa9J,WAAY,CAAA,CAAA,EAAG,GAAG,IAAI,CAAC+J,eAAe,EAAEnX,EAAAA,CAAAA,CAAAA;oBACzD,IAAI+X,KAAAA,GAAQzB,WAAW9sB,MAAM,EAAA,CAAA;AAC7B,oBAAA,IAAI,CAACmrB,cAAc,GAAGnV,KAAMuY,CAAAA,KAAAA,GAAQ,IAAI,CAACpD,cAAc,EAAE,IAAI,CAACgD,WAAW,EAAE,IAAI,CAACC,WAAW,CAAIG,GAAAA,KAAAA,CAAAA;oBAC/F,IAAIzI,IAAAA,GAAOyI,QAAQ,IAAI,CAACpD,cAAc,IAAI,IAAIuC,UAAS,CAAA,CAAA;oBACvD,IAAI,CAACvC,cAAc,IAAIuC,UAAAA,CAAAA;AAEvB,oBAAA,IAAIc,GAAM1B,GAAAA,UAAAA,CAAW2B,SAAS,EAAA,CAAGxI,cAAc,CAACH,IAAMlgB,CAAAA,CAAAA,GAAG,CAAC,IAAI,CAACoT,MAAM,CAACpB,QAAQ,CAAA,CAAA;oBAC9EmV,WAAYzU,CAAAA,IAAI,CAACkW,GAAKzI,CAAAA,CAAAA,GAAG,CAAC,IAAI,CAAC9W,IAAI,CAAC2I,QAAQ,CAAA,CAAA;AAC5C,oBAAA,IAAI,CAACyB,mBAAmB,CAACzT,GAAG,CAACmnB,WAAAA,CAAAA,CAAAA;AAC7B,oBAAA,IAAI,CAAC9d,IAAI,CAAC2I,QAAQ,CAACU,IAAI,CAACkW,GAAAA,CAAAA,CAAAA;AAExB7C,oBAAAA,UAAAA,CAAWrT,IAAI,CAAC,IAAI,CAACU,MAAM,CAACpB,QAAQ,CAAA,CAAEhS,GAAG,CAAC,IAAI,CAACyT,mBAAmB,CAAA,CAAA;AACtE,iBAAA;AACA,gBAAA,MAAA;AACR,SAAA;AAEA,QAAA,IAAImM,GAAI,CAAA,IAAI,CAAC0F,SAAS,CAAC1M,CAAC,CAAA,GAAIgH,GAAI,CAAA,IAAI,CAAC0F,SAAS,CAACzM,CAAC,IAAI,KAAO,EAAA;YACvDqO,UAAWxU,CAAAA,IAAI,CAAC,IAAI,CAACrJ,IAAI,CAAC2I,QAAQ,CAAEmO,CAAAA,GAAG,CAAC4F,UAAAA,CAAAA,CAAAA;AAExCuB,YAAAA,OAAAA,CAAQwB,mBAAmB,CAAC,IAAI,CAACzf,IAAI,CAAC0f,MAAM,EAAE,CAAA,CAAA,CAAA;AAC9CxB,YAAAA,OAAAA,CAAQuB,mBAAmB,CAAC,IAAI,CAACzf,IAAI,CAAC0f,MAAM,EAAE,CAAA,CAAA,CAAA;YAE9C,IAAI,IAAI,CAACC,gBAAgB,EAAE;AACvBzB,gBAAAA,OAAAA,CAAQ1O,CAAC,GAAG,CAAA,CAAA;AACZ0O,gBAAAA,OAAAA,CAAQsB,SAAS,EAAA,CAAA;AACrB,aAAA;YAEA,IAAIzuB,MAAAA,GAAS8sB,UAAW9sB,CAAAA,MAAM,EAAK,GAAA,CAAA,GAAIuqB,IAAID,QAAS,CAAA,IAAI,CAACjT,GAAG,GAAG,GAAA,CAAA,CAAA,CAAA;AAE/D,YAAA,IAAIqW,aAAa9J,WAAY,CAAA,CAAA,EAAG,GAAG,IAAI,CAACiL,YAAY,EAAErY,EAAAA,CAAAA,CAAAA;YAEtD,IAAI6C,mBAAAA,GAAsB,IAAI,CAACA,mBAAmB,CAAA;AAClDA,YAAAA,mBAAAA,CAAoB0M,GAAG,CAACmH,OAAQjH,CAAAA,cAAc,CAAC,IAAI,CAACiF,SAAS,CAAC1M,CAAC,GAAGxe,MAAU,IAAA,IAAI0tB,UAAS,CAAA,CAAA,CAAA,CAAA;AACzFrU,YAAAA,mBAAAA,CAAoBzT,GAAG,CAACunB,OAAQlH,CAAAA,cAAc,CAAC,IAAI,CAACiF,SAAS,CAACzM,CAAC,GAAGze,MAAU,IAAA,IAAI0tB,UAAS,CAAA,CAAA,CAAA,CAAA;AAEzF,YAAA,IAAI,CAACxC,SAAS,CAACjF,cAAc,CAACyH,UAAAA,CAAAA,CAAAA;YAE9B/B,UAAWrT,CAAAA,IAAI,CAAC,IAAI,CAACU,MAAM,CAACpB,QAAQ,CAAEhS,CAAAA,GAAG,CAACyT,mBAAAA,CAAAA,CAAAA;YAC1C,IAAI,CAACpK,IAAI,CAAC2I,QAAQ,CAACU,IAAI,CAACwU,UAAWlnB,CAAAA,GAAG,CAAC+lB,UAAAA,CAAAA,CAAAA,CAAAA;AAC3C,SAAA;AAEA,QAAA,IAAI,CAAC1c,IAAI,CAAC+J,MAAM,CAAC2S,UAAAA,CAAAA,CAAAA;AACrB,KAAA;;;AAvRQZ,QAAAA,IAAAA,CAAAA,OAAAA,GAAkB,CAAC,CAAA,CAAA;AACnBC,QAAAA,IAAAA,CAAAA,QAAAA,GAAmB,CAAC,CAAA,CAAA;aACpBG,cAAyB,GAAA,CAAA,CAAA;AACzBG,QAAAA,IAAAA,CAAAA,QAAAA,GAAoB,IAAInM,OAAAA,EAAAA,CAAAA;AACxB6M,QAAAA,IAAAA,CAAAA,QAAAA,GAAoB,IAAI7M,OAAAA,EAAAA,CAAAA;AACxB8L,QAAAA,IAAAA,CAAAA,YAAAA,GAAwB,IAAI9L,OAAAA,EAAAA,CAAAA;AAC5B+L,QAAAA,IAAAA,CAAAA,SAAAA,GAAqB,IAAI/L,OAAAA,EAAAA,CAAAA;AAGjCoI,QAAAA,IAAAA,CAAAA,IAAAA,GAAyBiD,iBAAiBC,IAAI,CAAA;aAE9CgC,OAAmB,GAAA,KAAA,CAAA;aAEnBC,OAAmB,GAAA,KAAA,CAAA;aAEnBL,OAAmB,GAAA,KAAA,CAAA;aAEnBO,UAAsB,GAAA,KAAA,CAAA;aAEtBC,UAAsB,GAAA,KAAA,CAAA;aAEtB+B,gBAA4B,GAAA,KAAA,CAAA;aAE5BpC,WAAsB,GAAA,CAAA,CAAA;aACtBmB,eAA0B,GAAA,GAAA,CAAA;aAC1BhB,QAAmB,GAAA,CAAA,CAAA;aACnBkC,YAAuB,GAAA,GAAA,CAAA;aACvBC,QAAoB,GAAA,IAAI7V,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;aACtC+U,MAAiB,GAAA,KAAA,CAAA;aACjBC,MAAiBnqB,GAAAA,IAAAA,CAAKE,EAAE,GAAG,KAAA,CAAA;AAC3B6pB,QAAAA,IAAAA,CAAAA,QAAAA,GAAmB,CAACziB,QAAAA,CAAAA;aACpB0iB,QAAmB1iB,GAAAA,QAAAA,CAAAA;aACnB+iB,WAAsB,GAAA,KAAA,CAAA;aACtBC,WAAsBhjB,GAAAA,QAAAA,CAAAA;aACtB2gB,aAAwB,GAAA,CAAA,CAAA;AACxB/S,QAAAA,IAAAA,CAAAA,MAAAA,GAAS,IAAIsU,QAAAA,EAAAA,CAAAA;aA6BLjC,SAAY,GAAA;AAChB,YAAA,IAAIzT,QAAW,CAAA,GAAA;AAAE,gBAAA,OAAO,IAAI,CAAC3I,IAAI,CAAC2I,QAAQ,CAAA;AAAE,aAAA;AAC5C,YAAA,IAAIA,UAASnX,CAAY,CAAA;AAAE,gBAAA,IAAI,CAACwO,IAAI,CAAC2I,QAAQ,CAACU,IAAI,CAAC7X,CAAAA,CAAAA,CAAAA;AAAI,aAAA;AACvD,YAAA,IAAIuY,MAAS,CAAA,GAAA;AAAE,gBAAA,OAAO,IAAI,CAACA,MAAM,CAACpB,QAAQ,CAAA;AAAE,aAAA;AAC5C,YAAA,IAAIoB,QAAOvY,CAAY,CAAA;AAAE,gBAAA,IAAI,CAACuY,MAAM,CAACpB,QAAQ,CAACU,IAAI,CAAC7X,CAAAA,CAAAA,CAAAA;AAAI,aAAA;AACvD,YAAA,IAAI4Y,mBAAsB,CAAA,GAAA;gBAAE,OAAO,IAAI,CAACA,mBAAmB,CAAA;AAAE,aAAA;AAC7D,YAAA,IAAIA,qBAAoB5Y,CAAY,CAAA;AAAE,gBAAA,IAAI,CAAC4Y,mBAAmB,CAACf,IAAI,CAAC7X,CAAAA,CAAAA,CAAAA;AAAI,aAAA;AAC5E,SAAA,CAAA;;AAiNJ,CAAA;AAtSakqB,qBAAAA,CACFY,SAAS,IAAIpM,OAAAA,EAAAA,CAAAA;AADXwL,qBAAAA,CAEFsB,SAAS,IAAI9M,OAAAA,EAAAA,CAAAA;AAFXwL,qBAAAA,CAGFwB,WAAW,IAAIhN,OAAAA,EAAAA,CAAAA;AAHbwL,qBAAAA,CAIFuB,cAAc,IAAI/M,OAAAA,EAAAA,CAAAA;AAJhBwL,qBAAAA,CAKFc,cAAc,IAAItM,OAAAA,EAAAA,CAAAA;AALhBwL,qBAAAA,CAMFgB,aAAa,IAAI1S,OAAAA,EAAAA,CAAAA;AANf0R,qBAAAA,CAOFmC,aAAa,IAAI7T,OAAAA,EAAAA,CAAAA;AAPf0R,qBAAAA,CAQFoC,cAAc,IAAI9T,OAAAA,EAAAA,CAAAA;AARhB0R,qBAAAA,CASFuC,UAAU,IAAIjU,OAAAA,EAAAA,CAAAA;AATZ0R,qBAAAA,CAUFwC,UAAU,IAAIlU,OAAAA,EAAAA,CAAAA;AAVZ0R,qBAAAA,CAWFqC,SAAS,IAAI9T,UAAAA,EAAAA,CAAAA;AAXXyR,qBAAAA,CAYFsC,cAAc,IAAI8B,SAAAA,EAAAA,CAAAA;;IAUxB/kB,QAAS,CAAA;QAAE4D,KAAO4c,EAAAA,gBAAAA;AAAiB,KAAA,CAAA;AAtB3BG,CAAAA,EAAAA,qBAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IAwBR3gB,QAAS,CAAA;QAAEsP,GAAK,EAAA,KAAA;AAAM,KAAA,CAAA;AAxBdqR,CAAAA,EAAAA,qBAAAA,CAAAA,SAAAA,EAAAA,SAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IA0BR3gB,QAAS,CAAA;QAAEsP,GAAK,EAAA,KAAA;AAAM,KAAA,CAAA;AA1BdqR,CAAAA,EAAAA,qBAAAA,CAAAA,SAAAA,EAAAA,SAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IA4BR3gB,QAAS,CAAA;QAAEsP,GAAK,EAAA,KAAA;AAAM,KAAA,CAAA;AA5BdqR,CAAAA,EAAAA,qBAAAA,CAAAA,SAAAA,EAAAA,SAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IA8BR3gB,QAAS,CAAA;QAAEsP,GAAK,EAAA,KAAA;AAAM,KAAA,CAAA;AA9BdqR,CAAAA,EAAAA,qBAAAA,CAAAA,SAAAA,EAAAA,YAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IAgCR3gB,QAAS,CAAA;QAAEsP,GAAK,EAAA,KAAA;AAAM,KAAA,CAAA;AAhCdqR,CAAAA,EAAAA,qBAAAA,CAAAA,SAAAA,EAAAA,YAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IAkCR3gB,QAAS,CAAA;QAAEsP,GAAK,EAAA,KAAA;AAAM,KAAA,CAAA;AAlCdqR,CAAAA,EAAAA,qBAAAA,CAAAA,SAAAA,EAAAA,kBAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;ACfN,MAAMqE,GAAqEC,SAAAA,IAAAA,CAAAA;IAC9EhsB,WAAY,CAAA,GAAG1B,IAA+C,CAAE;QAC5D,KAAK,CAAC,IAAI2tB,WAAe3tB,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAC7B,KAAA;AACJ;;ACJO,MAAM4tB,MAAwEF,SAAAA,IAAAA,CAAAA;IACjFhsB,WAAY,CAAA,GAAG1B,IAAkD,CAAE;QAC/D,KAAK,CAAC,IAAI6tB,cAAkB7tB,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAChC,KAAA;AACJ;;ACJO,MAAM8tB,KAAuEJ,SAAAA,IAAAA,CAAAA;IAChFhsB,WAAY,CAAA,GAAG1B,IAAiD,CAAE;QAC9D,KAAK,CAAC,IAAI+tB,aAAiB/tB,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAC/B,KAAA;AACJ;;ACaA,MAAMguB,eAAkB,GAAA;IACpBzvB,IAAM,EAAA,iBAAA;IACN0vB,QAAU,EAAA;QACNC,KAAO,EAAA;YAAE7hB,KAAO,EAAA,IAAA;AAAK,SAAA;QACrB8hB,QAAU,EAAA;YAAE9hB,KAAO,EAAA,IAAA;AAAK,SAAA;QACxB+hB,aAAe,EAAA;YAAE/hB,KAAO,EAAA,IAAA;AAAK,SAAA;AACjC,KAAA;IAEAgiB,YAAc,aAAU,CAAC;;;;;;;;;;;GAW1B,CAAC;IAEAC,cAAgB,aAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;GAuB5B,CAAC;AACJ,CAAA,CAAA;AAEO,MAAMC,SAAkBb,SAAAA,IAAAA,CAAAA;IAG3BhsB,WAAY+P,CAAAA,OAAAA,GAUR,EAAE,CAAE;AACJ,QAAA,KAAK,CAACA,OAAAA,CAAQ+c,QAAQ,IAAI,IAAIT,aAAAA,EAAAA,CAAAA,CAAAA;aAblCU,WAAuB,GAAA,IAAA,CAAA;AAenB,QAAA,MAAMP,KAAQ,GAACzc,OAAQyc,CAAAA,KAAK,KAAKvuB,SAAAA,GAAa,IAAI+uB,KAAAA,CAAMjd,OAAQyc,CAAAA,KAAK,CAAI,GAAA,IAAIQ,KAAM,CAAA,QAAA,CAAA,CAAA;QACnF,MAAMC,YAAAA,GAAeld,OAAQkd,CAAAA,YAAY,IAAI,GAAA,CAAA;QAC7C,MAAMC,aAAAA,GAAgBnd,OAAQmd,CAAAA,aAAa,IAAI,GAAA,CAAA;QAC/C,MAAMC,QAAAA,GAAWpd,OAAQod,CAAAA,QAAQ,IAAI,CAAA,CAAA;QACrC,MAAMC,WAAAA,GAAc,OAASA,CAAAA,WAAW,KAAKnvB,SAAa8R,GAAAA,OAAAA,CAAQqd,WAAW,GAAG,CAAA,CAAA;AAChF,QAAA,MAAMC,gBAAgBtd,OAAQud,CAAAA,MAAM,IAAI,IAAItX,OAAAA,CAAQ,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAE1D,QAAA,MAAMuX,iBAAiB,IAAInB,OAAAA,EAAAA,CAAAA;AAC3B,QAAA,MAAMkB,SAAS,IAAItX,OAAAA,EAAAA,CAAAA;AACnB,QAAA,MAAMwX,yBAAyB,IAAIxX,OAAAA,EAAAA,CAAAA;AACnC,QAAA,MAAMyX,sBAAsB,IAAIzX,OAAAA,EAAAA,CAAAA;AAChC,QAAA,MAAM0X,iBAAiB,IAAIC,OAAAA,EAAAA,CAAAA;AAC3B,QAAA,MAAMC,cAAiB,GAAA,IAAI5X,OAAQ,CAAA,CAAA,EAAG,GAAG,CAAE,CAAA,CAAA,CAAA;AAC3C,QAAA,MAAM6X,YAAY,IAAIC,OAAAA,EAAAA,CAAAA;AAEtB,QAAA,MAAMC,OAAO,IAAI/X,OAAAA,EAAAA,CAAAA;AACjB,QAAA,MAAM3Y,SAAS,IAAI2Y,OAAAA,EAAAA,CAAAA;AACnB,QAAA,MAAMgY,IAAI,IAAIF,OAAAA,EAAAA,CAAAA;AAEd,QAAA,MAAMpB,gBAAgB,IAAIiB,OAAAA,EAAAA,CAAAA;AAC1B,QAAA,MAAMM,gBAAgB,IAAIC,iBAAAA,EAAAA,CAAAA;AAC1BD,QAAAA,aAAAA,CAAcE,MAAM,CAACljB,GAAG,CAAC8E,OAAAA,CAAQqe,KAAK,IAAI,CAAA,CAAA,CAAA;AAE1C,QAAA,MAAMC,YAAe,GAAA,IAAIC,iBAAkBrB,CAAAA,YAAAA,EAAcC,aAAe,EAAA;YAAEzI,OAAS2I,EAAAA,WAAAA;YAAavb,IAAM0c,EAAAA,aAAAA;AAAc,SAAA,CAAA,CAAA;AAEpH,QAAA,MAAMC,MAASlC,GAAAA,eAAAA,CAAAA;AACf,QAAA,MAAM7f,QAAWsD,GAAAA,OAAAA,CAAQtD,QAAQ,IAAI,IAAIgiB,cAAe,CAAA;AACpD5xB,YAAAA,IAAAA,EAAoC2xB,MAAAA,CAAO3xB,IAAI,CAAG;AAClD0vB,YAAAA,QAAAA,EAAUmC,aAAcC,CAAAA,KAAK,CAACH,MAAAA,CAAOjC,QAAQ,CAAA;AAC7CK,YAAAA,cAAAA,EAAgB4B,OAAO5B,cAAc;AACrCD,YAAAA,YAAAA,EAAc6B,OAAO7B,YAAY;AACrC,SAAA,CAAA,CAAA;AAEA,QAAA,IAAIlgB,QAAS8f,CAAAA,QAAQ,CAACE,QAAQ,EAAE;AAC5BhgB,YAAAA,QAAAA,CAAS8f,QAAQ,CAACE,QAAQ,CAAC9hB,KAAK,GAAG0jB,aAAaO,OAAO,CAAA;AAC3D,SAAA;AACA,QAAA,IAAIniB,QAAS8f,CAAAA,QAAQ,CAACG,aAAa,EAAE;AACjCjgB,YAAAA,QAAAA,CAAS8f,QAAQ,CAACG,aAAa,CAAC/hB,KAAK,GAAG+hB,aAAAA,CAAAA;AAC5C,SAAA;AACA,QAAA,IAAIjgB,QAAS8f,CAAAA,QAAQ,CAACC,KAAK,EAAE;AACzB/f,YAAAA,QAAAA,CAAS8f,QAAQ,CAACC,KAAK,CAAC7hB,KAAK,GAAG6hB,KAAAA,CAAAA;AACpC,SAAA;QAEA,IAAI,CAAC/f,QAAQ,GAAGA,QAAAA,CAAAA;AAEhB,QAAA,MAAMoiB,QAAQ,IAAI,CAAA;QAClB,IAAI,CAACC,cAAc,GAAG,SAAUC,QAAuB,EAAE1gB,KAAY,EAAEsH,MAAyB,EAAA;YAE5F6X,sBAAuBwB,CAAAA,qBAAqB,CAACH,KAAAA,CAAMI,WAAW,CAAA,CAAA;YAC9DxB,mBAAoBuB,CAAAA,qBAAqB,CAACrZ,MAAAA,CAAOsZ,WAAW,CAAA,CAAA;YAE5DvB,cAAewB,CAAAA,eAAe,CAACL,KAAAA,CAAMI,WAAW,CAAA,CAAA;AAEhD3B,YAAAA,MAAAA,CAAOjY,IAAI,CAACgY,aAAAA,CAAAA,CAAAA;AACZC,YAAAA,MAAAA,CAAO6B,YAAY,CAACzB,cAAAA,CAAAA,CAAAA;YAEpBK,IAAKqB,CAAAA,UAAU,CAAC5B,sBAAwBC,EAAAA,mBAAAA,CAAAA,CAAAA;;AAIxC,YAAA,IAAIM,IAAKsB,CAAAA,GAAG,CAAC/B,MAAAA,CAAAA,GAAU,CAAG,EAAA,OAAA;YAE1BS,IAAKuB,CAAAA,OAAO,CAAChC,MAAAA,CAAAA,CAAQiC,MAAM,EAAA,CAAA;AAC3BxB,YAAAA,IAAAA,CAAKprB,GAAG,CAAC6qB,sBAAAA,CAAAA,CAAAA;YAETE,cAAewB,CAAAA,eAAe,CAACvZ,MAAAA,CAAOsZ,WAAW,CAAA,CAAA;AAEjDrB,YAAAA,cAAAA,CAAe3iB,GAAG,CAAC,CAAG,EAAA,CAAA,EAAG,CAAC,CAAA,CAAA,CAAA;AAC1B2iB,YAAAA,cAAAA,CAAeuB,YAAY,CAACzB,cAAAA,CAAAA,CAAAA;AAC5BE,YAAAA,cAAAA,CAAejrB,GAAG,CAAC8qB,mBAAAA,CAAAA,CAAAA;YAEnBpwB,MAAO+xB,CAAAA,UAAU,CAAC5B,sBAAwBI,EAAAA,cAAAA,CAAAA,CAAAA;YAC1CvwB,MAAOiyB,CAAAA,OAAO,CAAChC,MAAAA,CAAAA,CAAQiC,MAAM,EAAA,CAAA;AAC7BlyB,YAAAA,MAAAA,CAAOsF,GAAG,CAAC6qB,sBAAAA,CAAAA,CAAAA;YAEXS,aAActZ,CAAAA,QAAQ,CAACU,IAAI,CAAC0Y,IAAAA,CAAAA,CAAAA;AAC5BE,YAAAA,aAAAA,CAAc7D,EAAE,CAACnf,GAAG,CAAC,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;YAC3BgjB,aAAc7D,CAAAA,EAAE,CAAC+E,YAAY,CAACzB,cAAAA,CAAAA,CAAAA;YAC9BO,aAAc7D,CAAAA,EAAE,CAACkF,OAAO,CAAChC,MAAAA,CAAAA,CAAAA;AACzBW,YAAAA,aAAAA,CAAclY,MAAM,CAAC1Y,MAAAA,CAAAA,CAAAA;AAErB4wB,YAAAA,aAAAA,CAAc3Z,GAAG,GAAGqB,MAAOrB,CAAAA,GAAG;AAE9B2Z,YAAAA,aAAAA,CAAcuB,iBAAiB,EAAA,CAAA;AAC/BvB,YAAAA,aAAAA,CAAcwB,gBAAgB,CAACpa,IAAI,CAACM,OAAO8Z,gBAAgB,CAAA,CAAA;;AAG3D/C,YAAAA,aAAAA,CAAczhB,GAAG,CACb,GAAA,EAAK,GAAK,EAAA,GAAA,EAAK,KACf,GAAK,EAAA,GAAA,EAAK,GAAK,EAAA,GAAA,EACf,KAAK,GAAK,EAAA,GAAA,EAAK,GACf,EAAA,GAAA,EAAK,KAAK,GAAK,EAAA,GAAA,CAAA,CAAA;YAEnByhB,aAAclX,CAAAA,QAAQ,CAACyY,aAAAA,CAAcwB,gBAAgB,CAAA,CAAA;YACrD/C,aAAclX,CAAAA,QAAQ,CAACyY,aAAAA,CAAcyB,kBAAkB,CAAA,CAAA;YACvDhD,aAAclX,CAAAA,QAAQ,CAACqZ,KAAAA,CAAMI,WAAW,CAAA,CAAA;;;YAIxC1B,cAAeoC,CAAAA,6BAA6B,CAACrC,MAAQE,EAAAA,sBAAAA,CAAAA,CAAAA;YACrDD,cAAe4B,CAAAA,YAAY,CAAClB,aAAAA,CAAcyB,kBAAkB,CAAA,CAAA;AAE5D7B,YAAAA,SAAAA,CAAU5iB,GAAG,CAACsiB,cAAAA,CAAeD,MAAM,CAAC/R,CAAC,EAAEgS,cAAeD,CAAAA,MAAM,CAAC9R,CAAC,EAAE+R,cAAeD,CAAAA,MAAM,CAAC9J,CAAC,EAAE+J,eAAeqC,QAAQ,CAAA,CAAA;YAEhH,MAAMH,gBAAAA,GAAmBxB,cAAcwB,gBAAgB,CAAA;AAEvDzB,YAAAA,CAAAA,CAAEzS,CAAC,GAAI1a,CAAAA,IAAKgvB,CAAAA,IAAI,CAAChC,SAAUtS,CAAAA,CAAC,IAAIkU,gBAAiBK,CAAAA,QAAQ,CAAC,CAAE,CAAD,IAAKL,gBAAiBK,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC5F9B,YAAAA,CAAAA,CAAExS,CAAC,GAAI3a,CAAAA,IAAKgvB,CAAAA,IAAI,CAAChC,SAAUrS,CAAAA,CAAC,IAAIiU,gBAAiBK,CAAAA,QAAQ,CAAC,CAAE,CAAD,IAAKL,gBAAiBK,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC5F9B,CAAExK,CAAAA,CAAC,GAAG,CAAE,GAAA,CAAA;AACRwK,YAAAA,CAAAA,CAAEvK,CAAC,GAAG,CAAC,MAAMgM,gBAAiBK,CAAAA,QAAQ,CAAC,EAAA,CAAG,IAAIL,gBAAiBK,CAAAA,QAAQ,CAAC,EAAG,CAAA,CAAA;;AAG3EjC,YAAAA,SAAAA,CAAU7K,cAAc,CAAC,GAAM6K,GAAAA,SAAAA,CAAUwB,GAAG,CAACrB,CAAAA,CAAAA,CAAAA,CAAAA;;AAG7CyB,YAAAA,gBAAAA,CAAiBK,QAAQ,CAAC,CAAE,CAAA,GAAGjC,UAAUtS,CAAC,CAAA;AAC1CkU,YAAAA,gBAAAA,CAAiBK,QAAQ,CAAC,CAAE,CAAA,GAAGjC,UAAUrS,CAAC,CAAA;AAC1CiU,YAAAA,gBAAAA,CAAiBK,QAAQ,CAAC,EAAA,CAAG,GAAGjC,SAAUrK,CAAAA,CAAC,GAAG,GAAM2J,GAAAA,QAAAA,CAAAA;AACpDsC,YAAAA,gBAAAA,CAAiBK,QAAQ,CAAC,EAAG,CAAA,GAAGjC,UAAUpK,CAAC,CAAA;;AAG3CoL,YAAAA,KAAAA,CAAMkB,OAAO,GAAG,KAAA,CAAA;YAEhB,MAAMC,mBAAAA,GAAsBjB,SAASkB,eAAe,EAAA,CAAA;YACpD,MAAMC,qBAAAA,GAAwBnB,SAASoB,iBAAiB,EAAA,CAAA;YACxD,MAAMC,wBAAAA,GAA2BrB,SAASsB,oBAAoB,EAAA,CAAA;AAE9D,YAAA,MAAMC,gBAAmBvB,GAAAA,QAAAA,CAASwB,EAAE,CAACxe,OAAO,CAAA;AAC5C,YAAA,MAAMye,uBAA0BzB,GAAAA,QAAAA,CAAS0B,SAAS,CAACC,UAAU,CAAA;AAE7D3B,YAAAA,QAAAA,CAASwB,EAAE,CAACxe,OAAO,GAAG;AACtBgd,YAAAA,QAAAA,CAAS0B,SAAS,CAACC,UAAU,GAAG;AAEhC3B,YAAAA,QAAAA,CAAS4B,eAAe,CAACtC,YAAAA,CAAAA,CAAAA;YAEzBU,QAAShY,CAAAA,KAAK,CAAC6Z,OAAO,CAACC,KAAK,CAACC,OAAO,CAAC,IAAA,CAAA,CAAA;AAErC,YAAA,IAAI/B,QAASgC,CAAAA,SAAS,KAAK,KAAA,EAAOhC,SAAS9xB,KAAK,EAAA,CAAA;YAChD8xB,QAASiC,CAAAA,MAAM,CAAC3iB,KAAO4f,EAAAA,aAAAA,CAAAA,CAAAA;YAEvBc,QAASwB,CAAAA,EAAE,CAACxe,OAAO,GAAGue,gBAAAA,CAAAA;YACtBvB,QAAS0B,CAAAA,SAAS,CAACC,UAAU,GAAGF,uBAAAA,CAAAA;YAEhCzB,QAAS4B,CAAAA,eAAe,CAACX,mBAAAA,EAAqBE,qBAAuBE,EAAAA,wBAAAA,CAAAA,CAAAA;;YAIrE,MAAMa,QAAAA,GAAWtb,OAAOsb,QAAQ,CAAA;AAEhC,YAAA,IAAIA,aAAahzB,SAAW,EAAA;gBACxB8wB,QAAShY,CAAAA,KAAK,CAACka,QAAQ,CAACA,QAAAA,CAAAA,CAAAA;AAC5B,aAAA;AAEApC,YAAAA,KAAAA,CAAMkB,OAAO,GAAG,IAAA,CAAA;AAEpB,SAAA,CAAA;QAEA,IAAI,CAACE,eAAe,GAAG,WAAA;YACnB,OAAO5B,YAAAA,CAAAA;AACX,SAAA,CAAA;QACA,IAAI,CAAC6C,gBAAgB,GAAG,WAAA;YACpB,OAAOxE,aAAAA,CAAAA;AACX,SAAA,CAAA;QACA,IAAI,CAACyE,OAAO,GAAG,WAAA;AACX9C,YAAAA,YAAAA,CAAa8C,OAAO,EAAA,CAAA;YACpBtC,KAAMpiB,CAAAA,QAAQ,CAAC0kB,OAAO,EAAA,CAAA;AAC1B,SAAA,CAAA;AACJ,KAAA;AAKJ;;AC9PaC,MAAAA,eAAAA,YAA0B,CAAC;;;;;;AAMxC;;ACLO,MAAMC,qBAAqB,CAAC;;;;;;;;;;;;;AAanC;;ACdO,MAAMC,yBAAyB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BvC,EAAC;AAEM,MAAMC,yBAAyB,CAAC;;;;;;;;;;;;;AAavC;;AC7BO,SAASC,kBAkBdjF,QAAW,EACXI,YAAoB,EACpBC,cAAsB,EACtB6E,MAA4C,EAAA;AAE5C,IAAA,MAAMhlB,WAAW,cAAcgiB,cAAAA,CAAAA;QAC7BzuB,WAAY0xB,CAAAA,UAAAA,GAAa,EAAE,CAAE;YAC3B,MAAMC,OAAAA,GAAUlyB,MAAOkyB,CAAAA,OAAO,CAACpF,QAAAA,CAAAA,CAAAA;;AAE/B,YAAA,KAAK,CAAC;AACJA,gBAAAA,QAAAA,EAAUoF,QAAQC,MAAM,CAAC,CAACC,GAAK,EAAA,CAACh1B,MAAM8N,KAAM,CAAA,GAAA;oBAC1C,MAAMmnB,OAAAA,GAAUpD,aAAcC,CAAAA,KAAK,CAAC;AAAE,wBAAA,CAAC9xB,OAAO;AAAE8N,4BAAAA,KAAAA;AAAM,yBAAA;AAAE,qBAAA,CAAA,CAAA;oBACxD,OAAO;AACL,wBAAA,GAAGknB,GAAG;AACN,wBAAA,GAAGC,OAAO;AACZ,qBAAA,CAAA;AACF,iBAAA,EAAG,EAAC,CAAA;AACJnF,gBAAAA,YAAAA;AACAC,gBAAAA,cAAAA;AACF,aAAA,CAAA,CAAA;;YAEA+E,OAAQpyB,CAAAA,OAAO,CAAC,CAAC,CAAC1C,IAAAA,CAAK,GACrB4C,MAAAA,CAAOG,cAAc,CAAC,IAAI,EAAE/C,IAAM,EAAA;AAChC2T,oBAAAA,GAAAA,EAAK,IAAM,IAAI,CAAC+b,QAAQ,CAAC1vB,IAAAA,CAAK,CAAC8N,KAAK;oBACpCM,GAAK,EAAA,CAACzN,IAAO,IAAI,CAAC+uB,QAAQ,CAAC1vB,IAAAA,CAAK,CAAC8N,KAAK,GAAGnN,CAAAA;AAC3C,iBAAA,CAAA,CAAA,CAAA;;YAIFiC,MAAOqO,CAAAA,MAAM,CAAC,IAAI,EAAE4jB,UAAAA,CAAAA,CAAAA;;YAEpB,IAAID,MAAAA,EAAQA,OAAO,IAAI,CAAA,CAAA;AACzB,SAAA;AACF,KAAA,CAAA;IACA,OAAOhlB,QAAAA,CAAAA;AACT;;AChEA,MAAMslB,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDxB,CAAC,CAAA;AAED,MAAMC,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiFxB,CAAC,CAAA;AAEM,MAAMC,iBAA0BxD,SAAAA,cAAAA,CAAAA;IAwBnCyD,eAAgB1D,CAAAA,MAA0C,EAAEO,QAAuB,EAAQ;AACvF,QAAA,MAAMoD,WAAW,EAAE,CAAA;QACnB,IAAI,IAAI,CAACC,KAAK,IAAI,IAAI,CAACA,KAAK,CAACC,OAAO,EAAE;AAClCF,YAAAA,QAAAA,CAASx0B,IAAI,CAAC;AAAC,gBAAA,OAAA;gBAAS,IAAI,CAACy0B,KAAK,CAACC,OAAO;AAAC,aAAA,CAAA,CAAA;AAC/C,SAAA;QACA,IAAI,IAAI,CAACC,QAAQ,IAAI,IAAI,CAACA,QAAQ,CAACD,OAAO,EAAE;AACxCF,YAAAA,QAAAA,CAASx0B,IAAI,CAAC;AAAC,gBAAA,aAAA;gBAAe,IAAI,CAAC20B,QAAQ,CAACD,OAAO;AAAC,aAAA,CAAA,CAAA;AACxD,SAAA;QACA,IAAI,IAAI,CAACE,YAAY,IAAI,IAAI,CAACA,YAAY,CAACF,OAAO,EAAE;AAChDF,YAAAA,QAAAA,CAASx0B,IAAI,CAAC;AAAC,gBAAA,cAAA;gBAAgB,IAAI,CAAC40B,YAAY,CAACF,OAAO;AAAC,aAAA,CAAA,CAAA;AAC7D,SAAA;QACA,IAAI,IAAI,CAACG,SAAS,IAAI,IAAI,CAACA,SAAS,CAACH,OAAO,EAAE;AAC1CF,YAAAA,QAAAA,CAASx0B,IAAI,CAAC;AAAC,gBAAA,WAAA;gBAAa,IAAI,CAAC60B,SAAS,CAACH,OAAO;AAAC,aAAA,CAAA,CAAA;AACvD,SAAA;AACAF,QAAAA,QAAAA,CAAS5yB,OAAO,CAAC,CAAC,CAAC8c,KAAKgW,OAAQ,CAAA,GAAA;AAC5B,YAAA,IAAI,CAACI,OAAO,CAACpW,GAAAA,CAAI,GAAG,KAAQgW,GAAAA,OAAAA,CAAAA;AAChC,SAAA,CAAA,CAAA;AACJ,KAAA;AAEA,IAAA,IACIK,SAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAACnG,QAAQ,CAACmG,SAAS,CAAC/nB,KAAK,CAAA;AACxC,KAAA;IACA,IAAI+nB,SAAAA,CAAUl1B,CAAS,EAAE;AACrB,QAAA,IAAI,CAAC+uB,QAAQ,CAACmG,SAAS,CAAC/nB,KAAK,GAAGnN,CAAAA,CAAAA;AACpC,KAAA;AAEA,IAAA,IACIm1B,SAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAACpG,QAAQ,CAACoG,SAAS,CAAChoB,KAAK,CAAA;AACxC,KAAA;IACA,IAAIgoB,SAAAA,CAAUn1B,CAAS,EAAE;AACrB,QAAA,IAAI,CAAC+uB,QAAQ,CAACoG,SAAS,CAAChoB,KAAK,GAAGnN,CAAAA,CAAAA;AACpC,KAAA;AAEA,IAAA,IAAI+0B,YAAe,GAAA;AACf,QAAA,OAAO,IAAI,CAAChG,QAAQ,CAACgG,YAAY,CAAC5nB,KAAK,CAAA;AAC3C,KAAA;IACA,IAAI4nB,YAAAA,CAAa/0B,CAAU,EAAE;AACzB,QAAA,IAAI,CAAC+uB,QAAQ,CAACgG,YAAY,CAAC5nB,KAAK,GAAGnN,CAAAA,CAAAA;QACnC,IAAI,CAAC8nB,WAAW,GAAG,IAAA,CAAA;AACvB,KAAA;AAEA,IAAA,IAAIkN,SAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAACjG,QAAQ,CAACiG,SAAS,CAAC7nB,KAAK,CAAA;AACxC,KAAA;IACA,IAAI6nB,SAAAA,CAAUh1B,CAAU,EAAE;AACtB,QAAA,IAAI,CAAC+uB,QAAQ,CAACiG,SAAS,CAAC7nB,KAAK,GAAGnN,CAAAA,CAAAA;QAChC,IAAI,CAAC8nB,WAAW,GAAG,IAAA,CAAA;AACvB,KAAA;AAEA,IAAA,IAAI8M,KAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC7F,QAAQ,CAAC6F,KAAK,CAACznB,KAAK,CAAA;AACpC,KAAA;IACA,IAAIynB,KAAAA,CAAM50B,CAAU,EAAE;AAClB,QAAA,IAAI,CAAC+uB,QAAQ,CAAC6F,KAAK,CAACznB,KAAK,GAAGnN,CAAAA,CAAAA;QAC5B,IAAI,CAAC8nB,WAAW,GAAG,IAAA,CAAA;AACvB,KAAA;AAEA,IAAA,IAAIgN,QAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC/F,QAAQ,CAAC+F,QAAQ,CAAC3nB,KAAK,CAAA;AACvC,KAAA;IACA,IAAI2nB,QAAAA,CAAS90B,CAAU,EAAE;AACrB,QAAA,IAAI,CAAC+uB,QAAQ,CAAC+F,QAAQ,CAAC3nB,KAAK,GAAGnN,CAAAA,CAAAA;QAC/B,IAAI,CAAC8nB,WAAW,GAAG,IAAA,CAAA;AACvB,KAAA;;;aAvFAqH,YAAuBoF,GAAAA,cAAAA,CAAAA;aACvBnF,cAAyBoF,GAAAA,cAAAA,CAAAA;aACzBS,OAAmC,GAAA;YAC/BG,KAAO,EAAA,KAAA;YACPC,WAAa,EAAA,KAAA;YACbC,YAAc,EAAA,KAAA;YACdC,SAAW,EAAA,KAAA;AACf,SAAA,CAAA;aACAxG,QAAkD,GAAA;YAC9CC,KAAO,EAAA;AAAE7hB,gBAAAA,KAAAA,EAAO,IAAIqiB,KAAM,CAAA,QAAA,CAAA;AAAU,aAAA;YACpCP,QAAU,EAAA;gBAAE9hB,KAAO,EAAA,IAAA;AAAK,aAAA;YACxB+hB,aAAe,EAAA;gBAAE/hB,KAAO,EAAA,IAAA;AAAK,aAAA;YAC7B+nB,SAAW,EAAA;gBAAE/nB,KAAO,EAAA,CAAA;AAAE,aAAA;YACtBgoB,SAAW,EAAA;gBAAEhoB,KAAO,EAAA,CAAA;AAAE,aAAA;YACtB4nB,YAAc,EAAA;gBAAE5nB,KAAO,EAAA,IAAA;AAAK,aAAA;YAC5B6nB,SAAW,EAAA;gBAAE7nB,KAAO,EAAA,IAAA;AAAK,aAAA;YACzBynB,KAAO,EAAA;gBAAEznB,KAAO,EAAA,IAAA;AAAK,aAAA;YACrBqoB,cAAgB,EAAA;gBAAEroB,KAAO,EAAA,CAAA;AAAE,aAAA;YAC3B2nB,QAAU,EAAA;gBAAE3nB,KAAO,EAAA,IAAA;AAAK,aAAA;YACxBsoB,iBAAmB,EAAA;gBAAEtoB,KAAO,EAAA,CAAA;AAAE,aAAA;AAClC,SAAA,CAAA;;AAoEJ,CAAA;;IA/CK5D,QAAS,CAAA;QAAEmZ,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAG+D,IAAM,EAAA,IAAA;AAAK,KAAA,CAAA;AA3C9B+N,CAAAA,EAAAA,iBAAAA,CAAAA,SAAAA,EAAAA,WAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;IAmDRlrB,QAAS,CAAA;QAAEmZ,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAG+D,IAAM,EAAA,IAAA;AAAK,KAAA,CAAA;AAnD9B+N,CAAAA,EAAAA,iBAAAA,CAAAA,SAAAA,EAAAA,WAAAA,EAAAA,IAAAA,CAAAA;;ACzIN,MAAMiB,MAAe1hB,SAAAA,cAAAA,CAAAA;;;aAExBK,IAAe,GAAA,QAAA,CAAA;;AAKnB;;ACNO,MAAMshB,WAAoBD,SAAAA,MAAAA,CAAAA;IAE7B,OAAOE,QAAAA,CAASxd,MAAc,EAAE;QAC5B,OAAOA,MAAAA,CAAOyd,SAAS,CAACF,WAAa,EAAA,IAAA,CAAA,CAAA;AACzC,KAAA;AAIAxwB,IAAAA,GAAAA,CAAIqJ,IAAc,EAAE;AAChB,QAAA,IAAI,CAACqC,KAAK,CAAC1L,GAAG,CAACqJ,IAAAA,CAAAA,CAAAA;QACf,OAAOA,IAAAA,CAAAA;AACX,KAAA;AAEAlJ,IAAAA,MAAAA,CAAOkJ,IAAc,EAAE;AACnB,QAAA,IAAI,CAACqC,KAAK,CAACvL,MAAM,CAACkJ,IAAAA,CAAAA,CAAAA;QAClB,OAAOA,IAAAA,CAAAA;AACX,KAAA;AAEAsnB,IAAAA,QAAAA,CAAS/f,EAAU,EAAQ;QACvB,MAAM,EAAEwb,QAAQ,EAAEpZ,MAAM,EAAE,GAAG,IAAI,CAACC,MAAM,CAAA;QACxC,MAAMmb,SAAAA,GAAYhC,SAASgC,SAAS,CAAA;AACpChC,QAAAA,QAAAA,CAASgC,SAAS,GAAG,KAAA,CAAA;AACrBhC,QAAAA,QAAAA,CAASiC,MAAM,CAAC,IAAI,CAAC3iB,KAAK,EAAEsH,MAAAA,CAAAA,CAAAA;AAC5BoZ,QAAAA,QAAAA,CAASgC,SAAS,GAAGA,SAAAA,CAAAA;AACzB,KAAA;;;AAlBA1iB,QAAAA,IAAAA,CAAAA,KAAAA,GAAe,IAAIklB,KAAAA,EAAAA,CAAAA;;AAmBvB;;AC1BO,MAAMC,UAAU,CAAE,CAAA;AAClB,MAAMC,WAAAA,iBAA4B,IAAIC,kBAAqB,EAAA,CAAA;AAE3D,SAASC,YACZt2B,CAAAA,MAAyB,EACzBke,CAAS,EACTC,CAAS,EACTlB,KAAa,EACbmB,MAAc,EAAA;AAEdpe,IAAAA,MAAAA,CAAO4zB,QAAQ,CAAChmB,GAAG,CAACsQ,CAAAA,EAAGC,GAAGlB,KAAOmB,EAAAA,MAAAA,CAAAA,CAAAA;AACjCpe,IAAAA,MAAAA,CAAOu2B,OAAO,CAAC3oB,GAAG,CAACsQ,CAAAA,EAAGC,GAAGlB,KAAOmB,EAAAA,MAAAA,CAAAA,CAAAA;AACpC,CAAA;AAEO,SAASoY,sBAAAA,GAAAA;IAEZ,kBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCrB,CAAC,CAAA;AACF,CAAA;AAEO,SAASC,iBAAAA,GAAAA;AACZ,IAAA,OAAO,IAAIrF,cAAe,CAAA;QACtB5xB,IAAM,EAAA,OAAA;QACN0vB,QAAU,EAAA;YACN/pB,GAAK,EAAA;gBAAEmI,KAAO,EAAA,IAAA;AAAK,aAAA;YACnBopB,SAAW,EAAA;gBAAEppB,KAAO,EAAA,CAAA;AAAE,aAAA;AAC1B,SAAA;QACAgiB,YAAcyE,EAAAA,eAAAA;QACdxE,cAAgB,aAAW,CAAC;;;;;;;;YAQxB,CAAC;QACLoH,QAAUC,EAAAA,UAAAA;QACVC,UAAY,EAAA,KAAA;QACZC,SAAW,EAAA,KAAA;AACf,KAAA,CAAA,CAAA;AACJ,CAAA;AAEO,SAASC,mBAAAA,GAAAA;AACZ,IAAA,OAAO,IAAI3F,cAAe,CAAA;QACtB5xB,IAAM,EAAA,iBAAA;QACN0vB,QAAU,EAAA;YACN8H,MAAQ,EAAA;gBAAE1pB,KAAO,EAAA,IAAA;AAAK,aAAA;YACtB2pB,GAAK,EAAA;gBAAE3pB,KAAO,EAAA,CAAA;AAAE,aAAA;AACpB,SAAA;QACAgiB,YAAckH,EAAAA,sBAAAA,EAAAA;QACdjH,cAAgB,aAAU,CAAC;;;;;;;;;;;QAW3B,CAAC;QACDoH,QAAUO,EAAAA,gBAAAA;QACVL,UAAY,EAAA,KAAA;QACZC,SAAW,EAAA,KAAA;AACf,KAAA,CAAA,CAAA;AACJ,CAAA;AAEO,SAASK,mBACZC,CAAAA,MAAc,EACdna,KAAa,EACbmB,MAAc,EAAA;AAEd,IAAA,OAAO,IAAIgT,cAAe,CAAA;QACtB5xB,IAAM,EAAA,iBAAA;QACN41B,OAAS,EAAA;AACLiC,YAAAA,kBAAAA,EAAoB,GAAMpa,GAAAA,KAAAA;AAC1Bqa,YAAAA,mBAAAA,EAAqB,GAAMlZ,GAAAA,MAAAA;AAC3BmZ,YAAAA,cAAAA,EAAgB,CAAC,EAAEH,MAAO,CAAA,EAAE,CAAC;AACjC,SAAA;QACAlI,QAAU,EAAA;YACNsI,SAAW,EAAA;gBAAElqB,KAAO,EAAA,IAAA;AAAK,aAAA;YACzB2pB,GAAK,EAAA;gBAAE3pB,KAAO,EAAA,CAAA;AAAE,aAAA;AACpB,SAAA;QACAgiB,YAAckH,EAAAA,sBAAAA,EAAAA;QACdjH,cAAgB,aAAW,CAAC;;;;;;;;;;;;;;;;QAgB5B,CAAC;QACDoH,QAAUO,EAAAA,gBAAAA;QACVL,UAAY,EAAA,KAAA;QACZC,SAAW,EAAA,KAAA;AACf,KAAA,CAAA,CAAA;AACJ,CAAA;AAEO,SAASW,mBACZL,CAAAA,MAAc,EACdna,KAAa,EACbmB,MAAc,EAAA;AAEd,IAAA,OAAO,IAAIgT,cAAe,CAAA;QACtB5xB,IAAM,EAAA,iBAAA;QACN41B,OAAS,EAAA;AACLiC,YAAAA,kBAAAA,EAAoB,GAAMpa,GAAAA,KAAAA;AAC1Bqa,YAAAA,mBAAAA,EAAqB,GAAMlZ,GAAAA,MAAAA;AAC3BmZ,YAAAA,cAAAA,EAAgB,CAAC,EAAEH,MAAO,CAAA,EAAE,CAAC;AACjC,SAAA;QACAlI,QAAU,EAAA;YACN8H,MAAQ,EAAA;gBAAE1pB,KAAO,EAAA,IAAA;AAAK,aAAA;YACtBkqB,SAAW,EAAA;gBAAElqB,KAAO,EAAA,IAAA;AAAK,aAAA;YACzB8a,MAAQ,EAAA;gBAAE9a,KAAO,EAAA,CAAA;AAAE,aAAA;YACnB2pB,GAAK,EAAA;gBAAE3pB,KAAO,EAAA,CAAA;AAAE,aAAA;YAChBoqB,QAAU,EAAA;gBAAEpqB,KAAO,EAAA,CAAA;AAAE,aAAA;AACzB,SAAA;QACAgiB,YAAckH,EAAAA,sBAAAA,EAAAA;QACdjH,cAAgB,aAAW,CAAC;;;;;;;;;;;;;;;;;;;;QAoB5B,CAAC;QACDoH,QAAUC,EAAAA,UAAAA;QACVC,UAAY,EAAA,KAAA;QACZC,SAAW,EAAA,KAAA;AACf,KAAA,CAAA,CAAA;AACJ;;AC/LA,MAAMa,MAAAA,CAAAA;AAWF,IAAA,IAAI5sB,KAAQ,GAAA;QACR,OAAO,IAAI,CAAC6sB,MAAM,CAAA;AACtB,KAAA;IAEA,IAAI7sB,KAAAA,CAAM5K,CAAU,EAAE;QAClB,IAAI,CAACy3B,MAAM,GAAGz3B,CAAAA,CAAAA;AAClB,KAAA;AAEA,IAAA,IAAIH,MAAS,GAAA;QACT,OAAO,IAAI,CAAC63B,OAAO,CAAA;AACvB,KAAA;AAEA,IAAA,IAAI93B,QAAW,GAAA;QACX,OAAO,IAAI,CAAC+3B,SAAS,CAAA;AACzB,KAAA;AAUA,IAAA,IAAIC,KAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC1vB,OAAO,GAAG,CAAK,IAAA,IAAI,CAAC2vB,cAAc,CAAA;AAClD,KAAA;AAEAtyB,IAAAA,MAAAA,CAAOwQ,EAAU,EAAE;QACf,IAAI,IAAI,CAAC0hB,MAAM,EAAE,OAAA;QACjB,IAAI,IAAI,CAACvvB,OAAO,GAAG,KAAK,IAAI,CAAC2vB,cAAc,EAAE;YACzC,IAAI,CAACC,QAAQ,IAAI/hB,EAAAA,CAAAA;AACjB,YAAA,IAAI,IAAI,CAAC+hB,QAAQ,IAAI,IAAI,CAACC,SAAS,EAAE;gBACjC,IAAI,CAACC,OAAO,CAAC,IAAI,CAACF,QAAQ,GAAG,IAAI,CAACG,SAAS,CAAA,CAAA;AAC3C,gBAAA,IAAI,CAACH,QAAQ,IAAI,IAAI,CAACC,SAAS,CAAA;AAC/B,gBAAA,IAAI,CAACE,SAAS,GAAG,IAAI,CAACH,QAAQ,CAAA;AAC9B,gBAAA,IAAI,CAAC5vB,OAAO,EAAA,CAAA;AAChB,aAAA;AACJ,SAAA;AACJ,KAAA;AAEA8vB,IAAAA,OAAAA,CAAQjiB,EAAU,EAAE;AAChB,QAAA,IAAI,IAAI,CAAC2hB,OAAO,IAAI,IAAI,CAACC,SAAS,EAAE;AAChC,YAAA,IAAI,CAACA,SAAS,CAAC3sB,IAAI,CAAC,IAAI,CAAC0sB,OAAO,EAAE3hB,EAAAA,EAAI,IAAI,CAAC+hB,QAAQ,CAAA,CAAA;AACvD,SAAA;AACJ,KAAA;AA7BAt1B,IAAAA,WAAAA,CAAY3C,MAAmB,EAAED,QAAkB,EAAEsV,QAAgB,EAAEvJ,MAAc,CAAE;aA1B/E+rB,OAA8B,GAAA,IAAA,CAAA;aAC9BC,SAA6B,GAAA,IAAA,CAAA;aAC7BI,SAAoB,GAAA,CAAA,CAAA;aACpB7vB,OAAkB,GAAA,CAAA,CAAA;aAElB4vB,QAAmB,GAAA,CAAA,CAAA;aACnBG,SAAoB,GAAA,CAAA,CAAA;aACpBJ,cAA0B,GAAA,KAAA,CAAA;aAC1BJ,MAAkB,GAAA,KAAA,CAAA;QAmBtB,IAAI,CAACC,OAAO,GAAG73B,MAAAA,CAAAA;QACf,IAAI,CAAC83B,SAAS,GAAG/3B,QAAAA,CAAAA;QACjB,IAAI,CAACm4B,SAAS,GAAG7iB,QAAAA,CAAAA;QACjB,IAAI,CAAChN,OAAO,GAAGyD,MAAAA,CAAAA;AACf,QAAA,IAAI,CAACksB,cAAc,GAAGlsB,MAAAA,KAAW,CAAC,CAAA,CAAA;AACtC,KAAA;AAwBJ,CAAA;AAEA,MAAMusB,OAAAA,CAAAA;AAIF,IAAA,IAAIr4B,MAAS,GAAA;QACT,OAAO,IAAI,CAAC63B,OAAO,CAAA;AACvB,KAAA;AAEA,IAAA,IAAIS,OAAU,GAAA;QACV,OAAO,IAAI,CAACC,QAAQ,CAAA;AACxB,KAAA;IAEA51B,WAAY3C,CAAAA,MAAmB,EAAEs4B,OAAiB,CAAE;QAChD,IAAI,CAACT,OAAO,GAAG73B,MAAAA,CAAAA;QACf,IAAI,CAACu4B,QAAQ,GAAGD,OAAAA,CAAAA;AACpB,KAAA;AACJ,CAAA;AAEO,MAAME,SAAAA,CAAAA;AAITztB,IAAAA,KAAAA,CAAM/K,MAAmB,EAAE;AACvB,QAAA,IAAIs4B,UAAU,IAAI,CAACC,QAAQ,CAACv4B,MAAAA,CAAOsP,IAAI,CAAC,CAAA;QACxC,IAAIgpB,OAAAA,EAASA,QAAQp2B,OAAO,CAAC/B,CAAAA,CAAKA,GAAAA,CAAAA,CAAE4K,KAAK,GAAG,IAAA,CAAA,CAAA;AAChD,KAAA;AAEAC,IAAAA,MAAAA,CAAOhL,MAAmB,EAAE;AACxB,QAAA,IAAIs4B,UAAU,IAAI,CAACC,QAAQ,CAACv4B,MAAAA,CAAOsP,IAAI,CAAC,CAAA;QACxC,IAAIgpB,OAAAA,EAASA,QAAQp2B,OAAO,CAAC/B,CAAAA,CAAKA,GAAAA,CAAAA,CAAE4K,KAAK,GAAG,KAAA,CAAA,CAAA;AAChD,KAAA;AAEAqK,IAAAA,QAAAA,CAASpV,MAAmB,EAAED,QAAkB,EAAEsV,QAAgB,EAAEvJ,MAAc,EAAE;AAChF,QAAA,IAAIwsB,UAAU,IAAI,CAACC,QAAQ,CAACv4B,MAAAA,CAAOsP,IAAI,CAAC,CAAA;AACxC,QAAA,IAAIgpB,YAAY13B,SAAW,EAAA;YACvB03B,OAAU,GAAA,IAAI,CAACC,QAAQ,CAACv4B,OAAOsP,IAAI,CAAC,GAAG,EAAE,CAAA;AACzC,YAAA,IAAI,CAACmpB,aAAa,CAACn4B,IAAI,CAAC,IAAI+3B,QAAQr4B,MAAQs4B,EAAAA,OAAAA,CAAAA,CAAAA,CAAAA;AAChD,SAAA;AACAA,QAAAA,OAAAA,CAAQh4B,IAAI,CAAC,IAAIq3B,MAAO33B,CAAAA,MAAAA,EAAQD,UAAUsV,QAAUvJ,EAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AACxD,KAAA;IAEAyJ,SAAUvV,CAAAA,MAAmB,EAAED,QAAkB,EAAE;AAC/C,QAAA,IAAIu4B,UAAU,IAAI,CAACC,QAAQ,CAACv4B,MAAAA,CAAOsP,IAAI,CAAC,CAAA;AACxC,QAAA,IAAIgpB,OAAS,EAAA;YACT,IAAI/4B,KAAAA,GAAQ+4B,QAAQp4B,SAAS,CAACC,CAAAA,CAAKA,GAAAA,CAAAA,CAAEJ,QAAQ,KAAKA,QAAAA,CAAAA,CAAAA;AAClD,YAAA,IAAIR,UAAU,CAAC,CAAA,EAAG+4B,OAAQ74B,CAAAA,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AAC5C,SAAA;AACJ,KAAA;AAEAwV,IAAAA,aAAAA,CAAc/U,MAAmB,EAAE;AAC/B,QAAA,OAAO,IAAI,CAACu4B,QAAQ,CAACv4B,MAAAA,CAAOsP,IAAI,CAAC,CAAA;QACjC,IAAI/P,KAAAA,GAAQ,IAAI,CAACk5B,aAAa,CAACv4B,SAAS,CAACC,CAAAA,CAAAA,GAAKA,CAAEH,CAAAA,MAAM,KAAKA,MAAAA,CAAAA,CAAAA;QAC3D,IAAIT,KAAAA,KAAU,CAAC,CAAG,EAAA,IAAI,CAACk5B,aAAa,CAACh5B,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AACvD,KAAA;AAEAmG,IAAAA,MAAAA,CAAOwQ,EAAU,EAAE;QACf,IAAIoiB,OAAAA,CAAAA;QACJ,IAAII,YAAAA,GAAe,IAAI,CAACD,aAAa,CAAA;AACrC,QAAA,IAAK,IAAIE,CAAAA,GAAID,YAAah5B,CAAAA,MAAM,EAAEi5B,CAAM,EAAA,EAAA;AACpCL,YAAAA,OAAAA,GAAUI,YAAY,CAACC,CAAE,CAAA,CAACL,OAAO,CAAA;AACjC,YAAA,IAAK,IAAIv3B,CAAAA,GAAIu3B,OAAQ54B,CAAAA,MAAM,EAAEqB,CAAM,EAAA,EAAA;gBAC/B,IAAIu3B,OAAO,CAACv3B,CAAAA,CAAE,CAACg3B,KAAK,EAAEO,OAAO,CAACv3B,CAAAA,CAAE,CAAC2E,MAAM,CAACwQ,EAAAA,CAAAA,CAAAA;qBACnCoiB,OAAQ74B,CAAAA,MAAM,CAACsB,CAAG,EAAA,CAAA,CAAA,CAAA;AAC3B,aAAA;AACJ,SAAA;AACJ,KAAA;;AA9CQw3B,QAAAA,IAAAA,CAAAA,QAAAA,GAAsC,EAAC,CAAA;AACvCE,QAAAA,IAAAA,CAAAA,aAAAA,GAA2B,EAAE,CAAA;;AA8CzC;;AC/HA,MAAMG,OAAAA,CAAAA;AAQFtzB,IAAAA,GAAAA,CAAItF,MAAW,EAAE;AACb,QAAA,IAAI,CAAC64B,QAAQ,CAACv4B,IAAI,CAACN,MAAAA,CAAAA,CAAAA;AACvB,KAAA;AAEAyF,IAAAA,MAAAA,CAAOzF,MAAW,EAAE;AAChB,QAAA,IAAIT,QAAQ,IAAI,CAACs5B,QAAQ,CAACniB,OAAO,CAAC1W,MAAAA,CAAAA,CAAAA;QAClC,IAAIT,KAAAA,KAAU,CAAC,CAAG,EAAA;AACd,YAAA,IAAI,CAACs5B,QAAQ,CAACp5B,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AAChC,SAAA;AACJ,KAAA;AAEAu5B,IAAAA,MAAAA,CAAO5iB,EAAU,EAAE;QACf,IAAInW,QAAAA,GAAW,IAAI,CAAC+3B,SAAS,CAAA;AAC7B,QAAA,KAAK,IAAI33B,CAAAA,IAAK,IAAI,CAAC04B,QAAQ,CAAE;AACzB94B,YAAAA,QAAAA,CAASI,CAAG+V,EAAAA,EAAAA,CAAAA,CAAAA;AAChB,SAAA;AACJ,KAAA;AApBAvT,IAAAA,WAAAA,CAAY5C,QAAwC,CAAE;AAH5C84B,QAAAA,IAAAA,CAAAA,QAAAA,GAAgB,EAAE,CAAA;QAIxB,IAAI,CAACf,SAAS,GAAG/3B,QAAAA,CAAAA;AACrB,KAAA;AAmBJ,CAAA;AAEA,MAAMg5B,cAA0BH,SAAAA,OAAAA,CAAAA;AAC5BE,IAAAA,MAAAA,CAAO5iB,EAAU,EAAE;AACf,QAAA,IAAI,IAAI,CAAC2iB,QAAQ,CAACn5B,MAAM,GAAG,CAAG,EAAA;YAC1B,IAAIK,QAAAA,GAAW,IAAI,CAAC+3B,SAAS,CAAA;AAC7B,YAAA,KAAK,IAAI33B,CAAAA,IAAK,IAAI,CAAC04B,QAAQ,CAAE;AACzB94B,gBAAAA,QAAAA,CAASI,CAAG+V,EAAAA,EAAAA,CAAAA,CAAAA;AAChB,aAAA;AACA,YAAA,IAAI,CAAC2iB,QAAQ,CAACn5B,MAAM,GAAG,CAAA,CAAA;AAC3B,SAAA;AACJ,KAAA;AACJ,CAAA;AAEO,MAAMs5B,kBAAAA,CAAAA;IAKTvvB,KAAQ,GAAA;AACJ,QAAA,IAAI,CAACwvB,YAAY,CAACH,MAAM,CAAC,CAAA,CAAA,CAAA;AAC7B,KAAA;AAEApzB,IAAAA,MAAAA,CAAOwQ,EAAU,EAAE;AACf,QAAA,IAAI,CAACgjB,aAAa,CAACJ,MAAM,CAAC5iB,EAAAA,CAAAA,CAAAA;AAC9B,KAAA;AAEAD,IAAAA,UAAAA,CAAWC,EAAU,EAAE;AACnB,QAAA,IAAI,CAACijB,iBAAiB,CAACL,MAAM,CAAC5iB,EAAAA,CAAAA,CAAAA;AAClC,KAAA;IAEArB,eAAgBukB,CAAAA,IAAe,EAAEv3B,MAAe,EAAE;AAC9C,QAAA,IAAIA,MAAQ,EAAA;AACR,YAAA,IAAI,CAACu3B,IAAAA,CAAKlkB,KAAK,CAACmkB,cAAc,EAAE;gBAC5BD,IAAKlkB,CAAAA,KAAK,CAACmkB,cAAc,GAAG,IAAA,CAAA;gBAC5B,IAAID,IAAAA,CAAK9O,QAAQ,EAAE;AACf8O,oBAAAA,IAAAA,CAAK9O,QAAQ,EAAA,CAAA;AACjB,iBAAA;gBACA,IAAI,OAAO8O,IAAK3vB,CAAAA,KAAK,KAAK,UAAA,IAAc,CAAC2vB,IAAKlkB,CAAAA,KAAK,CAACokB,aAAa,EAAE;oBAC/DF,IAAKlkB,CAAAA,KAAK,CAACokB,aAAa,GAAG,IAAA,CAAA;AAC3B,oBAAA,IAAI,CAACL,YAAY,CAAC3zB,GAAG,CAAC8zB,IAAAA,CAAAA,CAAAA;AAC1B,iBAAA;AACA,gBAAA,IAAI,OAAOA,IAAAA,CAAK1zB,MAAM,KAAK,UAAY,EAAA;AACnC,oBAAA,IAAI,CAACwzB,aAAa,CAAC5zB,GAAG,CAAC8zB,IAAAA,CAAAA,CAAAA;AAC3B,iBAAA;AACA,gBAAA,IAAI,OAAOA,IAAAA,CAAKnjB,UAAU,KAAK,UAAY,EAAA;AACvC,oBAAA,IAAI,CAACkjB,iBAAiB,CAAC7zB,GAAG,CAAC8zB,IAAAA,CAAAA,CAAAA;AAC/B,iBAAA;AACJ,aAAA;SAEC,MAAA;AACD,YAAA,IAAIA,IAAKlkB,CAAAA,KAAK,CAACmkB,cAAc,EAAE;gBAC3BD,IAAKlkB,CAAAA,KAAK,CAACmkB,cAAc,GAAG,KAAA,CAAA;gBAC5B,IAAID,IAAAA,CAAK5O,SAAS,EAAE;AAChB4O,oBAAAA,IAAAA,CAAK5O,SAAS,EAAA,CAAA;AAClB,iBAAA;gBACA,IAAI,OAAO4O,IAAK3vB,CAAAA,KAAK,KAAK,UAAA,IAAc,CAAC2vB,IAAKlkB,CAAAA,KAAK,CAACokB,aAAa,EAAE;AAC/D,oBAAA,IAAI,CAACL,YAAY,CAACxzB,MAAM,CAAC2zB,IAAAA,CAAAA,CAAAA;AAC7B,iBAAA;AACA,gBAAA,IAAI,OAAOA,IAAAA,CAAK1zB,MAAM,KAAK,UAAY,EAAA;AACnC,oBAAA,IAAI,CAACwzB,aAAa,CAACzzB,MAAM,CAAC2zB,IAAAA,CAAAA,CAAAA;AAC9B,iBAAA;AACA,gBAAA,IAAI,OAAOA,IAAAA,CAAKnjB,UAAU,KAAK,UAAY,EAAA;AACvC,oBAAA,IAAI,CAACkjB,iBAAiB,CAAC1zB,MAAM,CAAC2zB,IAAAA,CAAAA,CAAAA;AAClC,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;;AApDAH,QAAAA,IAAAA,CAAAA,YAAAA,GAAmC,IAAIF,cAAAA,CAAeK,CAAAA,IAAAA,GAAQA,KAAK3vB,KAAK,EAAA,CAAA,CAAA;AACxEyvB,QAAAA,IAAAA,CAAAA,aAAAA,GAAoC,IAAIN,OAAQ,CAAA,CAACQ,MAAMljB,EAAOkjB,GAAAA,IAAAA,CAAK1zB,MAAM,CAAEwQ,EAAAA,CAAAA,CAAAA,CAAAA;AAC3EijB,QAAAA,IAAAA,CAAAA,iBAAAA,GAAwC,IAAIP,OAAQ,CAAA,CAACQ,MAAMljB,EAAOkjB,GAAAA,IAAAA,CAAKnjB,UAAU,CAAEC,EAAAA,CAAAA,CAAAA,CAAAA;;AAmDvF;;;ACjFYqjB,CAAAA,SAAAA,aAAAA,EAAAA;yEAC0D,aAAA,CAAA,aAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA,CAAA;0DAEf,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;GAH3CA,aAAAA,KAAAA,aAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAiBL,MAAMC,gBAAAA,CAAAA;AAQT,IAAA,IAAIjhB,MAAS,GAAA;QACT,OAAO,IAAI,CAACkhB,OAAO,CAAA;AACvB,KAAA;AAEA,IAAA,IAAInkB,SAAY,GAAA;QACZ,OAAO,IAAI,CAACokB,UAAU,CAAA;AAC1B,KAAA;AAEA,IAAA,IAAI9kB,kBAAqB,GAAA;QACrB,OAAO,IAAI,CAAC+kB,mBAAmB,CAAA;AACnC,KAAA;IAMArrB,OAAU,GAAA;AACN,QAAA,IAAI,CAACsrB,cAAc,CAAC13B,OAAO,CAAC23B,CAAAA,UAAcA,GAAAA,UAAAA,CAAW33B,OAAO,CAACk3B,CAAAA,IAAAA,GAAQA,KAAK9qB,OAAO,EAAA,CAAA,CAAA,CAAA;QACjF,IAAI,CAACsrB,cAAc,CAACh6B,KAAK,EAAA,CAAA;AAC7B,KAAA;AAEA8F,IAAAA,MAAAA,CAAOwQ,EAAU,EAAE;AACf,QAAA,IAAI,CAACwjB,UAAU,CAACh0B,MAAM,CAACwQ,EAAAA,CAAAA,CAAAA;QACvB,IAAI,CAACyjB,mBAAmB,CAAClwB,KAAK,EAAA,CAAA;AAC9B,QAAA,IAAI,CAACkwB,mBAAmB,CAACj0B,MAAM,CAACwQ,EAAAA,CAAAA,CAAAA;AAChC,QAAA,IAAI,CAACyjB,mBAAmB,CAAC1jB,UAAU,CAACC,EAAAA,CAAAA,CAAAA;AACxC,KAAA;AAEA4jB,IAAAA,iBAAAA,CAAkBnrB,IAAc,EAAE;AAC9B,QAAA,IAAIkrB,aAAa,IAAI,CAACD,cAAc,CAACzmB,GAAG,CAACxE,IAAAA,CAAAA,CAAAA;AACzC,QAAA,IAAIkrB,UAAY,EAAA;AACZA,YAAAA,UAAAA,CAAW33B,OAAO,CAACk3B,CAAAA,IAAAA,GAAQA,KAAK9qB,OAAO,EAAA,CAAA,CAAA;AACvC,YAAA,IAAI,CAACsrB,cAAc,CAACG,MAAM,CAACprB,IAAAA,CAAAA,CAAAA;AAC/B,SAAA;AACA,QAAA,KAAK,IAAIqrB,KAAAA,IAASrrB,IAAKY,CAAAA,QAAQ,CAAE;YAC7B,IAAI,CAACuqB,iBAAiB,CAACE,KAAAA,CAAAA,CAAAA;AAC3B,SAAA;AACJ,KAAA;AAEAC,IAAAA,gBAAAA,CAAiBtrB,IAAc,EAAE;AAC7B,QAAA,IAAIkrB,aAAa,IAAI,CAACD,cAAc,CAACzmB,GAAG,CAACxE,IAAAA,CAAAA,CAAAA;AACzC,QAAA,IAAIkrB,UAAY,EAAA;YACZA,UAAW33B,CAAAA,OAAO,CAACk3B,CAAAA,IAAQ,GAAA,IAAI,CAACc,gBAAgB,CAACd,IAAMzqB,EAAAA,IAAAA,CAAK+jB,OAAO,CAAA,CAAA,CAAA;AACvE,SAAA;AACA,QAAA,KAAK,IAAIsH,KAAAA,IAASrrB,IAAKY,CAAAA,QAAQ,CAAE;YAC7B,IAAI,CAAC0qB,gBAAgB,CAACD,KAAAA,CAAAA,CAAAA;AAC1B,SAAA;AACJ,KAAA;IAIAG,YAAkCxrB,CAAAA,IAA0B,EAAEhM,WAAgB,EAAK;AAC/E,QAAA,IAAIy3B,IAAOzrB,GAAAA,IAAAA,YAAgB8F,SAAY9F,GAAAA,IAAAA,CAAKA,IAAI,GAAGA,IAAAA,CAAAA;QACnD,IAAI0rB,IAAAA,GAAO,OAAO13B,WAAgB,KAAA,UAAA,CAAA;QAClC,IAAI23B,SAAAA,GAAY,IAAI,CAACC,cAAc,CAACH,IAAMC,EAAAA,IAAAA,GAAO13B,WAAcA,GAAAA,WAAAA,CAAYA,WAAW,CAAA,CAAA;AACtF,QAAA,IAAI23B,cAAc15B,SAAW,EAAA;YACzB05B,SAAYD,GAAAA,IAAAA,GAAO,IAAI13B,WAAgBA,EAAAA,GAAAA,WAAAA,CAAAA;AACvC23B,YAAAA,SAAAA,CAAU3rB,IAAI,GAAGyrB,IAAAA,CAAAA;YACjBE,SAAU5qB,CAAAA,OAAO,GAAG,IAAI,CAAA;AACxB4qB,YAAAA,SAAAA,CAAU/hB,MAAM,GAAG,IAAI,CAACkhB,OAAO,CAAA;AAE/B,YAAA,IAAI,CAACe,cAAc,CAACJ,IAAAA,EAAME,UAAU33B,WAAW,CAAA,CAAA;AAE/C,YAAA,IAAI,CAAC23B,SAAAA,CAAUplB,KAAK,CAACC,YAAY,EAAE;gBAC/BmlB,SAAUplB,CAAAA,KAAK,CAACC,YAAY,GAAG,IAAA,CAAA;gBAC/B,IAAImlB,SAAAA,CAAUxqB,MAAM,EAAE;AAClBwqB,oBAAAA,SAAAA,CAAUxqB,MAAM,EAAA,CAAA;AACpB,iBAAA;AACJ,aAAA;AAEA,YAAA,IAAI+pB,aAAa,IAAI,CAACD,cAAc,CAACzmB,GAAG,CAACinB,IAAAA,CAAAA,CAAAA;AACzC,YAAA,IAAIP,eAAej5B,SAAW,EAAA;AAC1B,gBAAA,IAAI,CAACg5B,cAAc,CAAChsB,GAAG,CAACwsB,IAAM,EAAA;AAACE,oBAAAA,SAAAA;AAAU,iBAAA,CAAA,CAAA;aAExC,MAAA;AACDT,gBAAAA,UAAAA,CAAWv5B,IAAI,CAACg6B,SAAAA,CAAAA,CAAAA;AACpB,aAAA;AAEA,YAAA,IAAI,CAACJ,gBAAgB,CAACI,SAAAA,EAAWA,UAAU5lB,OAAO,CAAA,CAAA;AACtD,SAAA;QACA,OAAO4lB,SAAAA,CAAAA;AACX,KAAA;IAEAtlB,eAAgBrG,CAAAA,IAAc,EAAE2rB,SAAoB,EAAE;AAClD,QAAA,IAAIT,aAAa,IAAI,CAACD,cAAc,CAACzmB,GAAG,CAACxE,IAAAA,CAAAA,CAAAA;AACzC,QAAA,IAAIkrB,UAAY,EAAA;AACZA,YAAAA,UAAAA,CAAWp6B,MAAM,CAACo6B,UAAWnjB,CAAAA,OAAO,CAAC4jB,SAAY,CAAA,EAAA,CAAA,CAAA,CAAA;AACrD,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA7hB,IAAAA,YAAAA,CAAkC9J,IAAc,EAAEhM,WAAyB,EAAEuQ,OAAAA,GAAmB,KAAK,EAAK;AACtG,QAAA,IAAIkmB,IAAO,GAAA,IAAI,CAACmB,cAAc,CAAC5rB,IAAMhM,EAAAA,WAAAA,CAAAA,CAAAA;QACrC,IAAIy2B,IAAAA,KAASx4B,aAAasS,OAAS,EAAA;AAC/BkmB,YAAAA,IAAAA,GAAO,IAAI,CAACe,YAAY,CAACxrB,IAAMhM,EAAAA,WAAAA,CAAAA,CAAAA;AACnC,SAAA;QACA,OAAOy2B,IAAAA,CAAAA;AACX,KAAA;AAEAqB,IAAAA,sBAAAA,CAA4C9rB,IAAc,EAAEhM,WAAyB,EAAE0hB,GAAAA,GAAW,EAAE,EAAO;AACvG,QAAA,IAAIwV,aAAa,IAAI,CAACD,cAAc,CAACzmB,GAAG,CAACxE,IAAAA,CAAAA,CAAAA;AACzC,QAAA,IAAIkrB,UAAY,EAAA;AACZ,YAAA,IAAK,IAAI94B,CAAAA,GAAI84B,UAAWn6B,CAAAA,MAAM,EAAEqB,CAAM,EAAA,EAAA;gBAClC,IAAI84B,UAAU,CAAC94B,CAAAA,CAAE,YAAa4B,WAAAA,EAAqB0hB,IAAI/jB,IAAI,CAACu5B,UAAU,CAAC94B,CAAE,CAAA,CAAA,CAAA;AAC7E,aAAA;AACA,YAAA,KAAK,IAAIi5B,KAAAA,IAASrrB,IAAKY,CAAAA,QAAQ,CAAE;AAC7B,gBAAA,IAAI,CAACkrB,sBAAsB,CAACT,KAAAA,EAAOr3B,WAAa0hB,EAAAA,GAAAA,CAAAA,CAAAA;AACpD,aAAA;AACJ,SAAA;QACA,OAAOA,GAAAA,CAAAA;AACX,KAAA;AAEAqW,IAAAA,kBAAAA,CAAmB36B,QAAmC,EAAE;QACpD,IAAI,CAAC65B,cAAc,CAAC13B,OAAO,CAAC/B,CAAAA,CAAAA,GAAKA,CAAE+B,CAAAA,OAAO,CAACnC,QAAAA,CAAAA,CAAAA,CAAAA;AAC/C,KAAA;IAEQy6B,cAAe7rB,CAAAA,IAAc,EAAEhM,WAAiC,EAAE;AACtE,QAAA,MAAOA,gBAAgB8R,SAAW,CAAA;AAC9B,YAAA,IAAIkmB,aAAgBnB,GAAAA,gBAAAA,CAAiBoB,gBAAgB,CAACznB,GAAG,CAACxQ,WAAAA,CAAAA,CAAAA;AAC1D,YAAA,IAAIg4B,aAAe,EAAA;AACf,gBAAA,MAAM,EAAEd,UAAU,EAAE5S,IAAI,EAAE,GAAG0T,aAAAA,CAAAA;gBAC7B,KAAK,MAAME,OAAOhB,UAAY,CAAA;AAC1B,oBAAA,IAAI,CAAC,IAAI,CAACphB,YAAY,CAAC9J,MAAMksB,GAAM,CAAA,EAAA;AAC/B,wBAAA,IAAI5T,IAAgC,KAAA,CAAA,EAAA;4BAChC,IAAI,CAACkT,YAAY,CAACxrB,IAAMksB,EAAAA,GAAAA,CAAAA,CAAAA;yBACrB,MAAA;4BACH,MAAM,CAAC,WAAW,EAAEA,GAAIr7B,CAAAA,IAAI,CAAC,eAAe,EAAEmD,WAAAA,CAAYnD,IAAI,CAAC,CAAC,CAAA;AACpE,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;YACAmD,WAAcP,GAAAA,MAAAA,CAAOkR,cAAc,CAAC3Q,WAAAA,CAAAA,CAAAA;AACxC,SAAA;AACJ,KAAA;IAEQ43B,cAAe5rB,CAAAA,IAAc,EAAEhM,WAAgB,EAAE;AACrD,QAAA,IAAIk3B,aAAa,IAAI,CAACD,cAAc,CAACzmB,GAAG,CAACxE,IAAAA,CAAAA,CAAAA;AACzC,QAAA,IAAIkrB,UAAY,EAAA;AACZ,YAAA,IAAK,IAAI94B,CAAAA,GAAI84B,UAAWn6B,CAAAA,MAAM,EAAEqB,CAAM,EAAA,EAAA;gBAClC,IAAIu5B,SAAAA,GAAYT,UAAU,CAAC94B,CAAE,CAAA,CAAA;AAC7B,gBAAA,IAAIu5B,qBAAqB33B,WAAa,EAAA;oBAClC,OAAO23B,SAAAA,CAAAA;AACX,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;IAEUJ,gBAAiBd,CAAAA,IAAe,EAAE0B,MAAe,EAAE;AACzD,QAAA,IAAI,CAACnB,mBAAmB,CAAC9kB,eAAe,CAACukB,IAAM0B,EAAAA,MAAAA,CAAAA,CAAAA;AACnD,KAAA;AAzIAn4B,IAAAA,WAAAA,CAAY4V,MAAc,CAAE;AAhBpBmhB,QAAAA,IAAAA,CAAAA,UAAAA,GAAwB,IAAIlB,SAAAA,EAAAA,CAAAA;AAC5BmB,QAAAA,IAAAA,CAAAA,mBAAAA,GAA0C,IAAIX,kBAAAA,EAAAA,CAAAA;AAC9CY,QAAAA,IAAAA,CAAAA,cAAAA,GAAiB,IAAIjmB,GAAAA,EAAAA,CAAAA;QAezB,IAAI,CAAC8lB,OAAO,GAAGlhB,MAAAA,CAAAA;AACnB,KAAA;AAwIJ,CAAA;AA9JaihB,gBAAAA,CACFoB,mBAAmB,IAAIjnB,GAAAA,EAAAA;;AC5B3B,MAAMonB,WAAoB37B,SAAAA,YAAAA,CAAAA;AAK7B,IAAA,IAAI47B,OAAU,GAAA;QACV,OAAO,IAAI,CAACC,QAAQ,CAAA;AACxB,KAAA;IAUA3sB,OAAU,GAAA;AACN,QAAA,IAAI,CAAC4sB,MAAM,CAACx7B,MAAM,GAAG,CAAA,CAAA;QACrB,IAAI,CAACy7B,UAAU,GAAG,CAAA,CAAA;QAClB,IAAI,CAACF,QAAQ,GAAG,CAAA,CAAA;AACpB,KAAA;AAEA31B,IAAAA,GAAAA,CAAI81B,IAAU,EAAE;AACZ,QAAA,IAAI,CAACF,MAAM,CAAC56B,IAAI,CAAC86B,IAAAA,CAAAA,CAAAA;AACrB,KAAA;IAEA11B,MAAS,GAAA;QACL,IAAI01B,IAAAA,GAAO,IAAI,CAACF,MAAM,CAAC,IAAI,CAACC,UAAU,CAAC,CAAA;AACvC,QAAA,IAAIC,IAAM,EAAA;YACN,IAAI;AACAA,gBAAAA,IAAAA,CAAKC,MAAM,EAAA,CAAA;AACf,aAAA,CACA,OAAO7f,CAAG,EAAA;AACNpb,gBAAAA,OAAAA,CAAQsB,KAAK,CAAC8Z,CAAAA,CAAAA,CAAAA;AACd,gBAAA,IAAI,CAACxL,OAAO,IAAI,IAAI,CAACA,OAAO,CAACorB,IAAAA,CAAAA,CAAAA;AACjC,aAAA;AACA,YAAA,IAAI,CAACH,QAAQ,GAAG,EAAE,IAAI,CAACE,UAAU,GAAG,IAAI,CAACD,MAAM,CAACx7B,MAAM,CAAA;AACtD,YAAA,IAAI,CAACqQ,UAAU,IAAI,IAAI,CAACA,UAAU,CAACqrB,IAAAA,EAAM,IAAI,CAACD,UAAU,EAAE,IAAI,CAACD,MAAM,CAACx7B,MAAM,CAAA,CAAA;YAE5E,IAAI,IAAI,CAACy7B,UAAU,KAAK,IAAI,CAACD,MAAM,CAACx7B,MAAM,EAAE;gBACxC,IAAI,CAACu7B,QAAQ,GAAG,CAAA,CAAA;AAChB,gBAAA,IAAI,CAAChuB,UAAU,IAAI,IAAI,CAACA,UAAU,EAAA,CAAA;AACtC,aAAA;AACJ,SAAA;AACJ,KAAA;IApCAtK,WACI,CAAOsK,UAAuB,EACvB8C,UAAgE,EAChEC,OAA8B,CACvC;QACE,KAAK,EAAA,CAAA;aAJE/C,UAAAA,GAAAA,UAAAA,CAAAA;aACA8C,UAAAA,GAAAA,UAAAA,CAAAA;aACAC,OAAAA,GAAAA,OAAAA,CAAAA;AAXHkrB,QAAAA,IAAAA,CAAAA,MAAAA,GAAiB,EAAE,CAAA;aACnBC,UAAqB,GAAA,CAAA,CAAA;aACrBF,QAAmB,GAAA,CAAA,CAAA;AAY3B,KAAA;AA+BJ;;AC9CO,SAASK,aAAAA,CAAcjgB,MAAyB,EAAElN,KAA8B,EAAA;IACnF,IAAIotB,kBAAAA,GAAqB,CAACja,UAAAA,CAAWQ,QAAQ,IAAIR,UAAAA,CAAWU,QAAQ,IAAIV,UAAAA,CAAWK,MAAM,IAAIL,UAAAA,CAAWO,SAAS,IAAIP,UAAAA,CAAWS,OAAO,KAAK,CAACT,UAAAA,CAAWM,IAAI,CAAA;AAC5J,IAAA,IAAI,CAAC2Z,kBAAoB,EAAA;AACrB55B,QAAAA,MAAAA,CAAOD,KAAK,CAAC,oBAAA,CAAA,CAAA;QACb,OAAO,IAAA,CAAA;AACX,KAAA;AACA,IAAA,IAAI,EAAE2Z,MAAkBmgB,YAAAA,iBAAgB,CAAI,EAAA;AACxC75B,QAAAA,MAAAA,CAAOD,KAAK,CAAC,gBAAA,CAAA,CAAA;QACb,OAAO,IAAA,CAAA;AACX,KAAA;IAEA,IAAI+5B,SAAAA,GAAYr5B,MAAOqO,CAAAA,MAAM,CAAC;QAC1BirB,KAAO,EAAA,KAAA;QACPlI,KAAO,EAAA,IAAA;QACPmI,OAAS,EAAA,IAAA;QACTC,SAAW,EAAA,KAAA;QACXC,kBAAoB,EAAA,IAAA;QACpBC,qBAAuB,EAAA,KAAA;QACvBC,eAAiB,EAAA,kBAAA;QACjBC,4BAA8B,EAAA,KAAA;KAC/B7tB,EAAAA,KAAAA,CAAAA,CAAAA;IAEH,IAAI+N,MAAAA,CAAO+f,sBAAsB,EAAE;QAC/B,IAAI;AACA,YAAA,MAAMC,EAAK7gB,GAAAA,MAAAA,CAAO8gB,UAAU,CAAC,QAAUV,EAAAA,SAAAA,CAAAA,CAAAA;YACvC,OAAO;AACHS,gBAAAA,EAAAA;gBACAE,wBAA0BlL,EAAAA,aAAAA;gBAC1BmL,eAAiBC,EAAAA,SAAAA;AACrB,aAAA,CAAA;AACJ,SAAA,CACA,OAAOC,GAAK,EAAA;AACR56B,YAAAA,MAAAA,CAAOD,KAAK,CAAC66B,GAAAA,CAAAA,CAAAA;YACb,OAAO,IAAA,CAAA;AACX,SAAA;KAEC,MAAA,IAAIrgB,MAAOsgB,CAAAA,qBAAqB,EAAE;AACnC,QAAA,MAAMN,EAAM7gB,GAAAA,MAAAA,CAAO8gB,UAAU,CAAC,SAASV,SAAcpgB,CAAAA,IAAAA,MAAAA,CAAO8gB,UAAU,CAAC,QAAUV,EAAAA,SAAAA,CAAAA,IAAcpgB,MAAO8gB,CAAAA,UAAU,CAAC,oBAAsBV,EAAAA,SAAAA,CAAAA,CAAAA;AACvI,QAAA,IAAI,CAACS,EAAAA,CAAGO,YAAY,CAAC,wBAAwBP,EAAGO,CAAAA,YAAY,CAAC,wBAAA,CAAwB,KAAMP,EAAGQ,CAAAA,YAAY,CAACR,EAAAA,CAAGS,8BAA8B,CAAG,EAAA;YAC3I,OAAO;AACHT,gBAAAA,EAAAA;AACAE,gBAAAA,wBAAAA,EAA0B9a,WAAWE,KAAK,IAAI0a,GAAGO,YAAY,CAAC,4BAA4BvL,aAAgBoL,GAAAA,SAAAA;gBAC1GD,eAAiBC,EAAAA,SAAAA;AACrB,aAAA,CAAA;AACJ,SAAA,MACK,IAAI,IAAI,CAACM,aAAa,EAAE;YACzB,OAAO;AACHV,gBAAAA,EAAAA;gBACAE,wBAA0BS,EAAAA,gBAAAA;gBAC1BR,eAAiBQ,EAAAA,gBAAAA;AACrB,aAAA,CAAA;AACJ,SAAA;AACAl7B,QAAAA,MAAAA,CAAOL,KAAK,CAAC,yCAAA,CAAA,CAAA;QACb,OAAO,IAAA,CAAA;AACX,KAAA;IACA,OAAO,IAAA,CAAA;AACX;;;AC5DYw7B,CAAAA,SAAAA,WAAAA,EAAAA;;;;GAAAA,WAAAA,KAAAA,WAAAA,GAAAA,EAAAA,CAAAA,CAAAA;;ACYL,MAAMC,eAAAA,CAAAA;IAET,OAAOrsB,SAAAA,CAAUJ,IAAY,EAAE;QAC3B,IAAI0sB,GAAAA,GAAM1sB,IAAK6P,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAA;QACrB,IAAI6c,GAAAA,CAAIt9B,MAAM,GAAG,CAAG,EAAA;AAChB,YAAA,OAAOs9B,IAAIC,GAAG,EAAA,CAAA;AAClB,SAAA;QACA,OAAO,EAAA,CAAA;AACX,KAAA;IAEA,OAAOC,OAAAA,CAAQ5sB,IAAY,EAAE;QACzB,IAAI/Q,KAAAA,GAAQ+Q,IAAK6sB,CAAAA,WAAW,CAAC,GAAA,CAAA,CAAA;AAC7B,QAAA,OAAO59B,UAAU,CAAC,CAAA,GAAI+Q,KAAK8sB,SAAS,CAAC,GAAG79B,KAAS,CAAA,GAAA,EAAA,CAAA;AACrD,KAAA;AAEA,IAAA,OAAO89B,QAAS/sB,CAAAA,IAAY,EAAEgtB,GAAY,EAAE;AACxC,QAAA,IAAIN,GAAM1sB,GAAAA,IAAAA,CAAK6P,KAAK,CAAC,KAAK8c,GAAG,EAAA,CAAA;AAC7B,QAAA,OAAOK,MAAMN,GAAI9c,CAAAA,OAAO,CAAC,GAAA,GAAMod,KAAK,EAAMN,CAAAA,GAAAA,GAAAA,CAAAA;AAC9C,KAAA;IAEA,OAAOO,SAAAA,CAAUC,GAAQ,EAAE;AACvB,QAAA,IAAI3tB,GAAM,GAAA,EAAA,CAAA;AACV,QAAA,IAAIoC,IAAO,GAAA,IAAA,CAAA;AACX,QAAA,IAAIqrB,GAAM,GAAA,EAAA,CAAA;AACV,QAAA,IAAI,OAAQG,IAAAA,KAAU,WAAeD,IAAAA,GAAAA,YAAeC,IAAM,EAAA;AACtD5tB,YAAAA,GAAAA,GAAM2tB,IAAIh+B,IAAI,CAAA;YACd89B,GAAMP,GAAAA,eAAAA,CAAgBrsB,SAAS,CAACb,GAAAA,CAAAA,CAAAA;YAChCoC,IAAOurB,GAAAA,GAAAA,CAAAA;SAEN,MAAA,IAAI,OAAQA,GAAAA,KAAS,QAAU,EAAA;YAChC3tB,GAAM2tB,GAAAA,GAAAA,CAAIE,QAAQ,CAACl+B,IAAI,CAAA;YACvB89B,GAAMP,GAAAA,eAAAA,CAAgBrsB,SAAS,CAACb,GAAAA,CAAAA,CAAAA;YAChCoC,IAAOurB,GAAAA,GAAAA,CAAAA;SAEN,MAAA;YACD3tB,GAAO2tB,IAAAA,GAAAA,CAAAA;YACPF,GAAMP,GAAAA,eAAAA,CAAgBrsB,SAAS,CAACb,GAAAA,CAAAA,CAAAA;AACpC,SAAA;QACA,OAAO;AAAEA,YAAAA,GAAAA;AAAKoC,YAAAA,IAAAA;AAAMqrB,YAAAA,GAAAA;AAAI,SAAA,CAAA;AAC5B,KAAA;AAEA,IAAA,OAAOK,cAAe9tB,CAAAA,GAAW,EAAE+tB,QAAyB,EAAE;AAC1D,QAAA,IAAI14B,IAAO,GAAA;AAAC2K,YAAAA,GAAAA;AAAI,SAAA,CAAA;QAChB,IAAK,IAAI9J,KAAK63B,QAAU,CAAA;AACpB,YAAA,IAAIA,QAAQ,CAAC73B,CAAE,CAAA,KAAKnF,SAAWsE,EAAAA,IAAAA,CAAK5E,IAAI,CAACyF,CAAI,GAAA,GAAA,GAAM63B,QAAQ,CAAC73B,CAAE,CAAA,CAAA,CAAA;AAClE,SAAA;QACA,OAAOb,IAAAA,CAAK24B,IAAI,CAAC,GAAA,CAAA,CAAA;AACrB,KAAA;IAMA,OAAOC,qBAAAA,CAAsB3vB,KAA6C,EAAE;AACxE,QAAA,IAAIyvB,WAAW,EAAC,CAAA;AAChB,QAAA,KAAK,IAAIz9B,CAAAA,IAAK48B,eAAgBgB,CAAAA,eAAe,CAAE;AAC3C,YAAA,IAAI5vB,KAAK,CAAChO,CAAE,CAAA,KAAKS,SAAW,EAAA;AACxB,gBAAA,IAAIT,MAAM,UAAY,EAAA;AAClBy9B,oBAAAA,QAAQ,CAAC,MAAA,CAAO,GAAGzvB,KAAK,CAAChO,CAAE,CAAA,CAAA;iBAE1B,MAAA;AACDy9B,oBAAAA,QAAQ,CAACz9B,CAAAA,CAAE,GAAGgO,KAAK,CAAChO,CAAE,CAAA,CAAA;AAC1B,iBAAA;AACJ,aAAA;AACJ,SAAA;QACA,OAAOy9B,QAAAA,CAAAA;AACX,KAAA;IAsBAtvB,OAAU,GAAA;QACN,IAAI,CAAC0vB,OAAO,CAACp+B,KAAK,EAAA,CAAA;QAClB,IAAI,CAACq+B,QAAQ,CAACr+B,KAAK,EAAA,CAAA;AACvB,KAAA;AAEAs+B,IAAAA,SAAAA,CAAUC,MAAyB,EAAE;QACjC,IAAIjuB,MAAAA,GAAS,IAAIiuB,MAAAA,CAAO,IAAI,CAAA,CAAA;AAC5B,QAAA,KAAK,IAAIb,GAAAA,IAAOptB,MAAOQ,CAAAA,SAAS,CAAE;AAC9B,YAAA,IAAI,CAACutB,QAAQ,CAACrwB,GAAG,CAAC0vB,GAAKptB,EAAAA,MAAAA,CAAAA,CAAAA;AAC3B,SAAA;AACJ,KAAA;IAEAkuB,SAAmB,CAAA,EAAEvuB,GAAG,EAAEytB,GAAG,EAAEvtB,UAAU,EAAE,GAAG5B,KAAAA,EAA0C,EAAE;QACtF,OAAO,IAAIkwB,OAAW,CAAA,CAACC,OAASC,EAAAA,MAAAA,GAAAA;YAC5B,MAAM98B,IAAAA,GAAOs7B,eAAgBQ,CAAAA,SAAS,CAAC1tB,GAAAA,CAAAA,CAAAA;YACvC,MAAMI,WAAAA,GAAc8sB,eAAgBe,CAAAA,qBAAqB,CAAC3vB,KAAAA,CAAAA,CAAAA;AAC1D,YAAA,MAAM6Q,MAAM+d,eAAgBY,CAAAA,cAAc,CAACl8B,IAAAA,CAAKoO,GAAG,EAAEI,WAAAA,CAAAA,CAAAA;AACrD,YAAA,IAAIuuB,SAAS,IAAI,CAACR,OAAO,CAAC7qB,GAAG,CAAC6L,GAAAA,CAAAA,CAAAA;AAC9B,YAAA,IAAIwf,MAAQ,EAAA;gBACRF,OAAQE,CAAAA,MAAAA,CAAAA,CAAAA;aAEP,MAAA;AACD,gBAAA,MAAM1uB,SAAS,CAACmC,IAAAA,GAAAA;AACZ,oBAAA,IAAI,CAAC+rB,OAAO,CAACpwB,GAAG,CAACoR,GAAK/M,EAAAA,IAAAA,CAAAA,CAAAA;oBACtBqsB,OAAQrsB,CAAAA,IAAAA,CAAAA,CAAAA;AACZ,iBAAA,CAAA;gBACA,IAAIwsB,GAAAA,GAAMnB,GAAO77B,IAAAA,IAAAA,CAAK67B,GAAG,CAAA;AACzB,gBAAA,IAAI,IAAI,CAACW,QAAQ,CAACp+B,GAAG,CAAC4+B,GAAM,CAAA,EAAA;AACxB,oBAAA,IAAI,CAACR,QAAQ,CAAC9qB,GAAG,CAACsrB,GAAAA,CAAAA,CAAK7uB,IAAI,CAAC;AACxBC,wBAAAA,GAAAA,EAAKpO,KAAKoO,GAAG;AACbI,wBAAAA,WAAAA;AACAF,wBAAAA,UAAAA;AACAD,wBAAAA,MAAAA;wBACAE,OAASuuB,EAAAA,MAAAA;AACb,qBAAA,CAAA,CAAA;iBAEC,MAAA;AACDA,oBAAAA,MAAAA,CAAO,gDAAmDjB,GAAAA,GAAAA,CAAAA,CAAAA;AAC9D,iBAAA;AACJ,aAAA;AACJ,SAAA,CAAA,CAAA;AACJ,KAAA;AArDA36B,IAAAA,WAAAA,CAAYwL,KAKX,CAAE;aAbHmC,IAAe,GAAA,EAAA,CAAA;aACfE,YAAuB,GAAA,EAAA,CAAA;aACvBe,SAAoB,GAAA,EAAA,CAAA;AAGZysB,QAAAA,IAAAA,CAAAA,OAAAA,GAA4B,IAAIrqB,GAAAA,EAAAA,CAAAA;AAChCsqB,QAAAA,IAAAA,CAAAA,QAAAA,GAAiC,IAAItqB,GAAAA,EAAAA,CAAAA;AAQzC,QAAA,IAAI,CAACrD,IAAI,GAAGnC,KAAAA,CAAMmC,IAAI,CAAA;AACtB,QAAA,IAAI,CAACE,YAAY,GAAGrC,KAAAA,CAAMqC,YAAY,CAAA;AACtC,QAAA,IAAI,CAACe,SAAS,GAAGpD,KAAAA,CAAMoD,SAAS,CAAA;AAChC,QAAA,IAAI,CAACnB,cAAc,GAAGjC,KAAAA,CAAMiC,cAAc,CAAA;AAC9C,KAAA;AA4CJ,CAAA;AAlIa2sB,eAAAA,CAiDFgB,eAAkB,GAAA;AACrB,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA,OAAA;AAAS,IAAA,OAAA;AAAS,IAAA,UAAA;AACtC,IAAA,WAAA;AAAa,IAAA,WAAA;AAAa,IAAA,QAAA;AAAU,IAAA,YAAA;AAAc,IAAA,QAAA;AAAU,IAAA,YAAA;AAAc,IAAA,SAAA;AAC7E,CAAA;;AC9DE,SAASW,UAAAA,CACZ1+B,MAA+B,EAC/BmO,KAAgB,EAAA;IAEhB,IAAK,IAAIpI,KAAKoI,KAAO,CAAA;QACjB,IAAI5D,IAAAA,GAAO4D,KAAK,CAACpI,CAAE,CAAA,CAAA;AACnB,QAAA,IAAIwE,SAAS3J,SAAW,EAAA;AACpB,YAAA,SAAA;AACJ,SAAA;AACA,QAAA,IAAIZ,MAAM,CAAC+F,CAAE,CAAA,KAAKnF,SAAW,EAAA;AACzB,YAAA,IAAI+M,GAAMvL,GAAAA,MAAAA,CAAOI,wBAAwB,CAACxC,MAAQ+F,EAAAA,CAAAA,CAAAA,CAAAA;AAClD,YAAA,IAAI,CAAC4H,GAAQA,IAAAA,GAAAA,CAAIgxB,QAAQ,IAAIhxB,GAAAA,CAAIC,GAAG,EAAG;gBACnC5N,MAAM,CAAC+F,EAAE,GAAGwE,IAAAA,CAAAA;aAEX,MAAA;gBACD,IAAI+C,KAAAA,GAAQtN,MAAM,CAAC+F,CAAE,CAAA,CAAA;gBACrB,IAAIuH,KAAAA,IAASA,KAAM0K,CAAAA,IAAI,EAAE;AACrB1K,oBAAAA,KAAAA,CAAM0K,IAAI,CAACzN,IAAAA,CAAAA,CAAAA;AACf,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;IACA,OAAOvK,MAAAA,CAAAA;AACX;;ACnBO,MAAM4+B,aAAAA,CAAAA;AAKT,IAAA,IAAIrmB,MAAS,GAAA;QACT,OAAO,IAAI,CAACkhB,OAAO,CAAA;AACvB,KAAA;IAMAnrB,OAAU,GAAA;QACN,IAAI,CAACuwB,QAAQ,CAAC38B,OAAO,CAAC48B,CAAAA,MAAAA,GAAUA,MAAOC,CAAAA,SAAS,IAAID,MAAAA,CAAOC,SAAS,EAAA,CAAA,CAAA;AACpE,QAAA,IAAI,CAACF,QAAQ,CAACn/B,MAAM,GAAG,CAAA,CAAA;QACvB,IAAI,CAACs/B,WAAW,CAACp/B,KAAK,EAAA,CAAA;AAC1B,KAAA;AAEA8F,IAAAA,MAAAA,CAAOwQ,EAAU,EAAE;AACf,QAAA,IAAI,CAAC2oB,QAAQ,CAAC38B,OAAO,CAAC48B,CAAAA,MAAUA,GAAAA,MAAAA,CAAOjyB,QAAQ,IAAIiyB,MAAOjyB,CAAAA,QAAQ,CAACqJ,EAAAA,CAAAA,CAAAA,CAAAA;AACvE,KAAA;AAEAyd,IAAAA,MAAAA,CAAOzd,EAAU,EAAE;AACf,QAAA,IAAI,CAAC2oB,QAAQ,CAAC38B,OAAO,CAAC48B,CAAAA,MAAUA,GAAAA,MAAAA,CAAO7I,QAAQ,IAAI6I,MAAO7I,CAAAA,QAAQ,CAAC/f,EAAAA,CAAAA,CAAAA,CAAAA;AACvE,KAAA;AAEA+oB,IAAAA,eAAAA,CAAgBl/B,QAAkC,EAAE;AAChD,QAAA,IAAI,CAAC8+B,QAAQ,CAAC38B,OAAO,CAACnC,QAAAA,CAAAA,CAAAA;AAC1B,KAAA;AAEAi2B,IAAAA,SAAAA,CAA4B8I,MAAiC,EAAE5rB,OAAmB,GAAA,KAAK,EAAK;AACxF,QAAA,IAAIgsB,MAAM,IAAI,CAACF,WAAW,CAAC7rB,GAAG,CAAC2rB,MAAAA,CAAAA,CAAAA;QAC/B,IAAII,GAAAA,KAAQt+B,aAAasS,OAAS,EAAA;YAC9BgsB,GAAM,GAAA,IAAI,CAACC,SAAS,CAACL,MAAAA,CAAAA,CAAAA;AACzB,SAAA;QACA,OAAOI,GAAAA,CAAAA;AACX,KAAA;AAGAC,IAAAA,SAAAA,CAAUL,MAAW,EAAE;AACnB,QAAA,MAAMI,MAAMx8B,gBAAiBo8B,CAAAA,MAAAA,CAAAA,CAAAA;QAC7B,IAAI,IAAI,CAACE,WAAW,CAACn/B,GAAG,CAACq/B,GAAAA,CAAIv8B,WAAW,CAAG,EAAA;AACvChB,YAAAA,MAAAA,CAAOtB,IAAI,CAAC,sBAAA,CAAA,CAAA;SAEX,MAAA;AACD6+B,YAAAA,GAAAA,CAAI3mB,MAAM,GAAG,IAAI,CAACkhB,OAAO,CAAA;YACzByF,GAAIE,CAAAA,OAAO,IAAIF,GAAAA,CAAIE,OAAO,EAAA,CAAA;AAC1B,YAAA,IAAI,CAACP,QAAQ,CAACv+B,IAAI,CAAC4+B,GAAAA,CAAAA,CAAAA;AACnB,YAAA,IAAI,CAACF,WAAW,CAACpxB,GAAG,CAACsxB,GAAAA,CAAIv8B,WAAW,EAAEu8B,GAAAA,CAAAA,CAAAA;AACtCpsB,YAAAA,eAAAA,CAAgBW,qBAAqB,CAACyrB,GAAAA,CAAI1qB,IAAI,EAAE0qB,IAAIv8B,WAAW,CAAA,CAAA;AACnE,SAAA;QACA,OAAOu8B,GAAAA,CAAAA;AACX,KAAA;AAGAG,IAAAA,YAAAA,CAAaP,MAAW,EAAE;AACtB,QAAA,MAAM9f,MAAM,OAAO8f,MAAAA,KAAW,UAAaA,GAAAA,MAAAA,GAASA,OAAOn8B,WAAW,CAAA;AACtE,QAAA,MAAMu8B,MAAM,IAAI,CAACF,WAAW,CAAC7rB,GAAG,CAAC6L,GAAAA,CAAAA,CAAAA;AACjC,QAAA,IAAIkgB,GAAK,EAAA;YACLA,GAAIH,CAAAA,SAAS,IAAIG,GAAAA,CAAIH,SAAS,EAAA,CAAA;YAC9B,IAAI,CAACF,QAAQ,CAACp/B,MAAM,CAAC,IAAI,CAACo/B,QAAQ,CAACnoB,OAAO,CAACwoB,GAAM,CAAA,EAAA,CAAA,CAAA,CAAA;AACjD,YAAA,IAAI,CAACF,WAAW,CAACjF,MAAM,CAAC/a,GAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACJ,KAAA;AAvDArc,IAAAA,WAAAA,CAAY4V,MAAc,CAAE;AAPpBsmB,QAAAA,IAAAA,CAAAA,QAAAA,GAAqB,EAAE,CAAA;AACvBG,QAAAA,IAAAA,CAAAA,WAAAA,GAAmC,IAAIrrB,GAAAA,EAAAA,CAAAA;QAO3C,IAAI,CAAC8lB,OAAO,GAAGlhB,MAAAA,CAAAA;AACnB,KAAA;AAuDJ;;AChBO,MAAM+mB,MAAelgC,SAAAA,YAAAA,CAAAA;AAKxB,IAAA,OAAOmgC,qBAAsBC,CAAAA,MAA8B,EAAErxB,KAAe,EAAE;QAC1E,MAAMsxB,YAAAA,GAAeD,OAAOlnB,MAAM,CAAA;QAClC,IAAK,IAAIvX,IAAI,CAAGA,EAAAA,CAAAA,GAAIoN,MAAMzO,MAAM,IAAIqB,CAAI,GAAA,CAAA,EAAGA,CAAK,EAAA,CAAA;YAC5C0+B,YAAY,CAACH,OAAOI,iBAAiB,CAAC3+B,EAAE,CAAC,GAAGoN,KAAK,CAACpN,CAAE,CAAA,CAAA;AACxD,SAAA;QACA,IAAIoN,KAAAA,CAAMzO,MAAM,GAAG,CAAG,EAAA;AAClB8/B,YAAAA,MAAAA,CAAOG,IAAI,GAAGxxB,KAAK,CAAC,CAAE,CAAA,CAAA;AAC1B,SAAA;QACA,IAAIA,KAAAA,CAAMzO,MAAM,GAAG,CAAG,EAAA;YAClB8/B,MAAOI,CAAAA,OAAO,CAAChyB,GAAG,CAACO,KAAK,CAAC,CAAE,CAAA,EAAEA,KAAK,CAAC,CAAE,CAAA,CAAA,CAAA;AACzC,SAAA;QACA,OAAOqxB,MAAAA,CAAAA;AACX,KAAA;IAEA,OAAOK,eAAAA,CACHnO,QAAuB,EACvB1gB,KAAY,EACZsH,MAAc,EACdtY,MAA6B,EAC/B;QACEs/B,MAAOQ,CAAAA,cAAc,CAAC1wB,QAAQ,GAAGpP,MAAAA,CAAAA;AACjC0xB,QAAAA,QAAAA,CAASqO,OAAO,CAACT,MAAOQ,CAAAA,cAAc,EAAExnB,MAAQtH,EAAAA,KAAAA,CAAAA,CAAAA;AACpD,KAAA;IAEA,OAAOgvB,eAAAA,CACHtO,QAAuB,EACvB1gB,KAAY,EACZsH,MAAc,EACdtY,MAAgB,EAClB;QACE0xB,QAASqO,CAAAA,OAAO,CAAC//B,MAAAA,EAAQsY,MAAQtH,EAAAA,KAAAA,CAAAA,CAAAA;AACrC,KAAA;AAEA,IAAA,OAAOivB,cACHvO,CAAAA,QAAuB,EACvB1xB,MAA2B,EAC7B;QACE,IAAIgK,KAAAA,CAAMC,OAAO,CAACjK,MAAS,CAAA,EAAA;YACvB,KAAK,IAAIG,KAAKH,MAAQ,CAAA;AAClB0xB,gBAAAA,QAAAA,CAASwO,WAAW,CAAC//B,CAAAA,CAAAA,CAAAA;AACzB,aAAA;SAEC,MAAA;AACDuxB,YAAAA,QAAAA,CAASwO,WAAW,CAAClgC,MAAAA,CAAAA,CAAAA;AACzB,SAAA;AACJ,KAAA;IAEA,OAAOmgC,IAAAA,CACHzO,QAAuB,EACvBV,YAA+B,EAC/B5hB,QAAkB,EAClB6nB,GAAY,EACZmJ,IAAa,EACf;QACEd,MAAOQ,CAAAA,cAAc,CAAC1wB,QAAQ,GAAGA,QAAAA,CAAAA;QACjC,MAAMixB,EAAAA,GAAK3O,SAASkB,eAAe,EAAA,CAAA;QACnClB,QAAS4B,CAAAA,eAAe,CAACtC,YAAAA,EAAcoP,IAAMnJ,EAAAA,GAAAA,CAAAA,CAAAA;AAC7CvF,QAAAA,QAAAA,CAASiC,MAAM,CAAC2L,MAAAA,CAAOQ,cAAc,EAAER,OAAOgB,gBAAgB,CAAA,CAAA;AAC9D5O,QAAAA,QAAAA,CAAS4B,eAAe,CAAC+M,EAAAA,CAAAA,CAAAA;AAC7B,KAAA;AAEA,IAAA,OAAOE,wBAA2B,GAAA;AAC9B,QAAA,IAAI9Q,WAAW,IAAI+Q,cAAAA,EAAAA,CAAAA;AACnB/Q,QAAAA,QAAAA,CAASgR,YAAY,CAAC,UAAY,EAAA,IAAIC,sBAAuB,CAAA;YAAC,CAAE,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;YAAG,CAAE,CAAA;YAAG,CAAE,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;YAAG,CAAE,CAAA;AAAG,YAAA,CAAA;SAAE,EAAE,CAAA,CAAA,CAAA,CAAA;AAClGjR,QAAAA,QAAAA,CAASgR,YAAY,CAAC,IAAM,EAAA,IAAIC,sBAAuB,CAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;SAAE,EAAE,CAAA,CAAA,CAAA,CAAA;QAC3E,OAAOjR,QAAAA,CAAAA;AACX,KAAA;AAEA,IAAA,OAAOkR,SAA8BhyB,CAAAA,IAAO,EAAE2B,IAAY,EAAK;AAC3D,QAAA,IAAI0pB,KAAQ,GAAA,IAAA,CAAA;QACZ,IAAI4G,KAAAA,GAAQtwB,IAAK6P,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAA;QACvB,IAAI5Q,QAAAA,GAAWZ,KAAKY,QAAQ,CAAA;QAE5B,KAAK,IAAIsxB,QAAQD,KAAO,CAAA;AACpB5G,YAAAA,KAAAA,GAAQzqB,SAASkK,IAAI,CAACtZ,CAAAA,CAAKA,GAAAA,CAAAA,CAAEX,IAAI,KAAKqhC,IAAAA,CAAAA,CAAAA;AACtC,YAAA,IAAI7G,KAAO,EAAA;AACPzqB,gBAAAA,QAAAA,GAAWyqB,MAAMzqB,QAAQ,CAAA;aAExB,MAAA;gBACD,OAAO,IAAA,CAAA;AACX,aAAA;AACJ,SAAA;QAEA,OAAOyqB,KAAAA,CAAAA;AACX,KAAA;AAEA,IAAA,OAAO8G,cAAmCnyB,CAAAA,IAAO,EAAEnP,IAAY,EAAK;QAChE,OAAO8/B,MAAAA,CAAOyB,SAAS,CAACpyB,IAAMxO,EAAAA,CAAAA,IAAK,CAACA,CAAEX,IAAI,KAAKA,IAASW,IAAAA,CAAAA,CAAAA,CAAAA;AAC5D,KAAA;AAEA,IAAA,OAAO4gC,SAA8BpyB,CAAAA,IAAO,EAAEiI,MAAyB,EAAE;AACrE,QAAA,MAAM5H,KAAQ,GAAA;AAACL,YAAAA,IAAAA;AAAK,SAAA,CAAA;QACpB,MAAOK,KAAAA,CAAMtP,MAAM,KAAK,CAAG,CAAA;YACvB,IAAI0O,MAAAA,GAASY,MAAMC,KAAK,EAAA,CAAA;AACxB,YAAA,IAAIjP,SAAS4W,MAAOxI,CAAAA,MAAAA,CAAAA,CAAAA;AACpB,YAAA,IAAIpO,MAAQ,EAAA;gBACR,OAAOA,MAAAA,CAAAA;AACX,aAAA;YACAoO,MAAOmB,CAAAA,QAAQ,CAACrN,OAAO,CAAC,CAAC/B,CAAS6O,GAAAA,KAAAA,CAAM1O,IAAI,CAACH,CAAAA,CAAAA,CAAAA,CAAAA;AACjD,SAAA;AACJ,KAAA;AAEA,IAAA,OAAO6gC,UAA+BryB,CAAAA,IAAO,EAAEiI,MAAyB,EAAE;AACtE,QAAA,MAAM5H,KAAQ,GAAA;AAACL,YAAAA,IAAAA;AAAK,SAAA,CAAA;AACpB,QAAA,MAAMsyB,UAAU,EAAE,CAAA;QAElB,MAAOjyB,KAAAA,CAAMtP,MAAM,KAAK,CAAG,CAAA;YACvB,IAAI0O,MAAAA,GAASY,MAAMC,KAAK,EAAA,CAAA;AACxB,YAAA,IAAIjP,SAAS4W,MAAOxI,CAAAA,MAAAA,CAAAA,CAAAA;AACpB,YAAA,IAAIpO,MAAQ,EAAA;AACRihC,gBAAAA,OAAAA,CAAQ3gC,IAAI,CAAC8N,MAAAA,CAAAA,CAAAA;AACjB,aAAA;YACAA,MAAOmB,CAAAA,QAAQ,CAACrN,OAAO,CAAC,CAAC/B,CAAS6O,GAAAA,KAAAA,CAAM1O,IAAI,CAACH,CAAAA,CAAAA,CAAAA,CAAAA;AACjD,SAAA;QAEA,OAAO8gC,OAAAA,CAAAA;AACX,KAAA;AAoCA,IAAA,IAAI7G,IAAO,GAAA;QACP,OAAO,IAAI,CAAC8G,KAAK,CAAA;AACrB,KAAA;AACA,IAAA,IAAI18B,IAAO,GAAA;QACP,OAAO,IAAI,CAAC28B,KAAK,CAAA;AACrB,KAAA;AACA,IAAA,IAAInwB,KAAQ,GAAA;QACR,OAAO,IAAI,CAACowB,MAAM,CAAA;AACtB,KAAA;AACA,IAAA,IAAI9oB,MAAS,GAAA;QACT,OAAO,IAAI,CAAC+oB,OAAO,CAAA;AACvB,KAAA;AACA,IAAA,IAAI3P,QAAW,GAAA;QACX,OAAO,IAAI,CAAC4P,SAAS,CAAA;AACzB,KAAA;AACA,IAAA,IAAIjmB,MAAS,GAAA;QACT,OAAO,IAAI,CAACkmB,OAAO,CAAA;AACvB,KAAA;AACA,IAAA,IAAIrF,EAAK,GAAA;QACL,OAAO,IAAI,CAACsF,GAAG,CAAA;AACnB,KAAA;AACA,IAAA,IAAIpF,wBAA2B,GAAA;QAC3B,OAAO,IAAI,CAACqF,yBAAyB,CAAA;AACzC,KAAA;AACA,IAAA,IAAIpF,eAAkB,GAAA;QAClB,OAAO,IAAI,CAACqF,gBAAgB,CAAA;AAChC,KAAA;AACA,IAAA,IAAIC,GAAM,GAAA;QACN,OAAO,IAAI,CAACC,IAAI,CAAA;AACpB,KAAA;AACA,IAAA,IAAI3kB,KAAQ,GAAA;QACR,OAAO,IAAI,CAAC4kB,MAAM,CAAA;AACtB,KAAA;AACA,IAAA,IAAIzjB,MAAS,GAAA;QACT,OAAO,IAAI,CAAC0jB,OAAO,CAAA;AACvB,KAAA;AACA,IAAA,IAAIlO,QAAW,GAAA;QACX,OAAO,IAAI,CAACmO,SAAS,CAAA;AACzB,KAAA;AACA,IAAA,IAAI7kB,WAAc,GAAA;QACd,OAAO,IAAI,CAAC8kB,YAAY,CAAA;AAC5B,KAAA;IA+FA1zB,OAAU,GAAA;QACN,IAAI,CAACgzB,SAAS,CAACxN,OAAO,EAAA,CAAA;QACtB,IAAI,CAACmO,YAAY,CAAC3zB,OAAO,EAAA,CAAA;QACzB,IAAI,CAAC4zB,gBAAgB,CAAC5zB,OAAO,EAAA,CAAA;QAC7B,IAAI,CAAC6zB,iBAAiB,CAAC7zB,OAAO,EAAA,CAAA;QAC9B,IAAI,CAAC8zB,cAAc,CAAC9zB,OAAO,EAAA,CAAA;QAC3B,IAAI,CAAC+zB,aAAa,CAAC/zB,OAAO,EAAA,CAAA;QAC1B,IAAI,CAACg0B,MAAM,CAAChmB,kBAAkB,EAAA,CAAA;AAClC,KAAA;IAEQimB,kBAAqB,GAAA;QACzB,IAAI,CAACrE,SAAS,CAACptB,WAAAA,CAAAA,CAAAA;QACf,IAAI,CAACotB,SAAS,CAACvsB,UAAAA,CAAAA,CAAAA;QACf,IAAI,CAACusB,SAAS,CAAC9rB,cAAAA,CAAAA,CAAAA;QACf,IAAI,CAAC8rB,SAAS,CAACnsB,WAAAA,CAAAA,CAAAA;AACnB,KAAA;AAEQywB,IAAAA,MAAAA,CAAOh+B,IAAY,EAAE;QACzB,IAAI,CAAC28B,KAAK,GAAG38B,IAAAA,CAAAA;AAEb,QAAA,IAAI,IAAI,CAACi+B,gBAAgB,GAAG,CAAC,CAAG,EAAA;AAC5B,YAAA,MAAMptB,QAAW,GAAA,CAAA,GAAI,IAAI,CAACotB,gBAAgB,CAAA;AAC1C,YAAA,MAAM5c,KAAQrhB,GAAAA,IAAAA,GAAO,IAAI,CAAC4zB,SAAS,CAAA;AAEnC,YAAA,IAAIvS,SAASxQ,QAAU,EAAA;gBACnB,IAAI,CAACqtB,IAAI,CAAC7c,KAAAA,CAAAA,CAAAA;AACV,gBAAA,IAAI,CAACuS,SAAS,GAAG5zB,IAAAA,GAAQqhB,KAAQxQ,GAAAA,QAAAA,CAAAA;AACrC,aAAA;SAEC,MAAA;AACD,YAAA,IAAI,CAACqtB,IAAI,CAACl+B,IAAO,GAAA,IAAI,CAAC4zB,SAAS,CAAA,CAAA;YAC/B,IAAI,CAACA,SAAS,GAAG5zB,IAAAA,CAAAA;AACrB,SAAA;AACJ,KAAA;AAEAk+B,IAAAA,IAAAA,CAAKxsB,EAAU,EAAE;AACb,QAAA,IAAI,IAAI,CAACysB,WAAW,EAAE,IAAI,CAACC,MAAM,EAAA,CAAA;QAEjC1sB,EAAK1S,GAAAA,IAAAA,CAAKqf,GAAG,CAAC3M,EAAI,EAAA,KAAA,CAAA,CAAA;QAClB,IAAI,CAACxQ,MAAM,CAACwQ,EAAAA,CAAAA,CAAAA;QACZ,IAAI,CAACyd,MAAM,CAACzd,EAAAA,CAAAA,CAAAA;AAChB,KAAA;AAEAxQ,IAAAA,MAAAA,CAAOwQ,EAAU,EAAE;QACf,IAAI,CAAC+rB,YAAY,CAACv8B,MAAM,EAAA,CAAA;AACxB,QAAA,IAAI,CAAC28B,aAAa,CAAC38B,MAAM,CAAC,IAAI,CAACy7B,KAAK,CAAA,CAAA;AACpC,QAAA,IAAI,CAACgB,iBAAiB,CAACz8B,MAAM,CAACwQ,EAAAA,CAAAA,CAAAA;AAC9B,QAAA,IAAI,CAACksB,cAAc,CAAC18B,MAAM,CAACwQ,EAAAA,CAAAA,CAAAA;AAC/B,KAAA;AAEAyd,IAAAA,MAAAA,CAAOzd,EAAU,EAAE;AACf,QAAA,IAAI,CAACorB,SAAS,CAAC7/B,IAAI,CAAC8oB,KAAK,EAAA,CAAA;QACzB,IAAI,CAACsY,SAAS,CAAC3sB,EAAAA,CAAAA,CAAAA;AACf,QAAA,IAAI,CAACksB,cAAc,CAACzO,MAAM,CAACzd,EAAAA,CAAAA,CAAAA;AAC/B,KAAA;AAEA2sB,IAAAA,SAAAA,CAAU3sB,EAAU,EAAE;QAClB,IAAI,CAACorB,SAAS,CAAC3N,MAAM,CAAC,IAAI,CAACyN,MAAM,EAAE,IAAI,CAACC,OAAO,CAAA,CAAA;AACnD,KAAA;IAEAyB,SAAU7lB,CAAAA,KAAa,EAAEmB,MAAc,EAAE;AACrC,QAAA,IAAI,CAACkjB,SAAS,CAACyB,OAAO,CAAC9lB,KAAOmB,EAAAA,MAAAA,CAAAA,CAAAA;AAClC,KAAA;IAEA3U,KAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAACu5B,QAAQ,IAAI,KAAO,EAAA;YACxB,IAAI,CAACA,QAAQ,GAAG,IAAA,CAAA;AAChB,YAAA,MAAMC,gBAAgB,CAACz+B,IAAAA,GAAAA;gBACnB,IAAI,IAAI,CAACw+B,QAAQ,EAAE;oBACf,IAAI,CAACR,MAAM,CAACh+B,IAAO,GAAA,KAAA,CAAA,CAAA;oBACnB0+B,qBAAsBD,CAAAA,aAAAA,CAAAA,CAAAA;AAC1B,iBAAA;AACJ,aAAA,CAAA;YACAC,qBAAsBD,CAAAA,aAAAA,CAAAA,CAAAA;AAC1B,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAv4B,IAAO,GAAA;QACH,IAAI,CAACs4B,QAAQ,GAAG,KAAA,CAAA;AAChB,QAAA,IAAI,CAAC7B,KAAK,GAAG,IAAI,CAAC/I,SAAS,GAAG,CAAA,CAAA;AAC9B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAwK,IAAAA,MAAAA,CACI3lB,QAAgBf,MAAOinB,CAAAA,UAAU,EACjC/kB,MAAiBlC,GAAAA,MAAAA,CAAOknB,WAAW,EACrC;QACE,IAAI,CAACpB,YAAY,GACb,IAAI,CAACqB,YAAY,KAAKvG,YAAYwG,SAAS,GAAGrmB,QAAQmB,MAClD,GAAA,IAAI,CAACilB,YAAY,KAAKvG,YAAYyG,QAAQ,GAAGtmB,QAAQmB,MAAS,GAAA,KAAA,CAAA;QAEtE,IAAI,IAAI,CAAC4jB,YAAY,EAAE;AACnB,YAAA,IAAIl0B,GAAMmP,GAAAA,KAAAA,CAAAA;YACVA,KAAQmB,GAAAA,MAAAA,CAAAA;YACRA,MAAStQ,GAAAA,GAAAA,CAAAA;AACb,SAAA;QAEA,IAAI,IAAI,CAAC+zB,MAAM,KAAK5kB,SAChB,IAAI,CAAC6kB,OAAO,KAAK1jB,MACnB,EAAA;YACE,IAAI,CAACyjB,MAAM,GAAG5kB,KAAAA,CAAAA;YACd,IAAI,CAAC6kB,OAAO,GAAG1jB,MAAAA,CAAAA;YAEf,IAAIgc,IAAAA,GAAO,IAAI,CAAC8G,KAAK,CAAA;YACrB,IAAI,IAAI,CAACc,YAAY,EAAE;gBACnB5H,IAAKlmB,CAAAA,KAAK,CAAC,mBAAA,CAAoB,GAAG,eAAA,CAAA;gBAClCkmB,IAAKlmB,CAAAA,KAAK,CAACsvB,SAAS,GAAG,eAAA,CAAA;gBACvBpJ,IAAKlmB,CAAAA,KAAK,CAAC,0BAAA,CAA2B,GAAG,aAAA,CAAA;gBACzCkmB,IAAKlmB,CAAAA,KAAK,CAACuvB,eAAe,GAAG,aAAA,CAAA;gBAC7BrJ,IAAKlmB,CAAAA,KAAK,CAACwvB,MAAM,GAAG,CAAC,MAAM,EAAEtlB,MAAO,CAAA,EAAE,CAAC,CAAA;gBACvCgc,IAAKlmB,CAAAA,KAAK,CAAC+I,KAAK,GAAG,CAAC,EAAEA,KAAAA,CAAM,EAAE,CAAC,CAAA;gBAC/Bmd,IAAKlmB,CAAAA,KAAK,CAACkK,MAAM,GAAG,CAAC,EAAEA,MAAAA,CAAO,EAAE,CAAC,CAAA;aAEhC,MAAA;gBACDgc,IAAKlmB,CAAAA,KAAK,CAAC,mBAAA,CAAoB,GAAG,cAAA,CAAA;gBAClCkmB,IAAKlmB,CAAAA,KAAK,CAACsvB,SAAS,GAAG,cAAA,CAAA;gBACvBpJ,IAAKlmB,CAAAA,KAAK,CAACwvB,MAAM,GAAG,UAAA,CAAA;gBACpBtJ,IAAKlmB,CAAAA,KAAK,CAAC+I,KAAK,GAAG,CAAC,EAAEA,KAAAA,CAAM,EAAE,CAAC,CAAA;gBAC/Bmd,IAAKlmB,CAAAA,KAAK,CAACkK,MAAM,GAAG,CAAC,EAAEA,MAAAA,CAAO,EAAE,CAAC,CAAA;AACrC,aAAA;YAEA,IAAI9F,MAAAA,GAAS,IAAI,CAAC+oB,OAAO,CAAA;YACzB,IAAI/oB,MAAAA,CAAOqrB,oBAAoB,EAAE;gBAC7B,IAAI,CAAC5B,SAAS,GAAG;oBAAE9kB,KAAOA,EAAAA,KAAAA,GAAQ3E,OAAOsrB,IAAI;oBAAExlB,MAAQA,EAAAA,MAAAA,GAAS9F,OAAOsrB,IAAI;oBAAEC,MAAQ,EAAA,CAAA;AAAE,iBAAA,CAAA;aAEtF,MAAA,IAAIvrB,MAAOwrB,CAAAA,mBAAmB,EAAE;gBACjC,IAAI,CAACxrB,MAAOyrB,CAAAA,MAAM,EAAE;oBAChBzrB,MAAO0rB,CAAAA,MAAM,GAAG/mB,KAAQmB,GAAAA,MAAAA,CAAAA;AACxB9F,oBAAAA,MAAAA,CAAOX,sBAAsB,EAAA,CAAA;AACjC,iBAAA;gBACA,IAAIssB,QAAAA,GAAW3rB,MAAO4rB,CAAAA,gBAAgB,CAAC5E,MAAAA,CAAOjU,UAAU,CAAEC,CAAAA,UAAU,CAACgU,MAAAA,CAAO6E,QAAQ,CAAA,CAAA;gBACpF,IAAIpa,CAAAA,GAAI,CAAIvmB,GAAAA,IAAAA,CAAKymB,GAAG,CAAC3V,SAAU0V,CAAAA,QAAQ,CAAC1R,MAAAA,CAAOvB,GAAG,GAAG,GAAQktB,CAAAA,CAAAA,GAAAA,QAAAA,CAAAA;gBAC7D,IAAI7d,CAAAA,GAAI2D,IAAI9M,KAAQmB,GAAAA,MAAAA,CAAAA;gBACpB,IAAI,CAAC2jB,SAAS,GAAG;oBAAE9kB,KAAOmJ,EAAAA,CAAAA;oBAAGhI,MAAQ2L,EAAAA,CAAAA;AAAG8Z,oBAAAA,MAAAA,EAAQ5mB,KAAQmJ,GAAAA,CAAAA;AAAE,iBAAA,CAAA;AAC9D,aAAA;YAEA,IAAI,CAAC0c,SAAS,CAAC7lB,KAAOmB,EAAAA,MAAAA,CAAAA,CAAAA;AACtB,YAAA,IAAI,CAACpd,IAAI,CAACsZ,WAAY8E,CAAAA,MAAM,EAAEnC,KAAOmB,EAAAA,MAAAA,CAAAA,CAAAA;AACzC,SAAA;AACJ,KAAA;AAEAggB,IAAAA,SAAAA,CAAUjwB,KAAwC,EAAE;AAChD,QAAA,OAAO,IAAI,CAAC+zB,gBAAgB,CAAC9D,SAAS,CAACjwB,KAAAA,CAAAA,CAAAA;AAC3C,KAAA;AAEA+vB,IAAAA,SAAAA,CAAUC,MAAyB,EAAE;AACjC,QAAA,IAAI,CAAC+D,gBAAgB,CAAChE,SAAS,CAACC,MAAAA,CAAAA,CAAAA;AACpC,KAAA;AAEA,IAAA,MAAMvuB,KAAK,EACPC,GAAG,EAAEytB,GAAG,EAAEvtB,UAAU,EACpBq0B,UAAa,GAAA,KAAK,EAClBC,aAAgB,GAAA,KAAK,EACrB,GAAGl2B,OAC4C,EAAE;AACjD,QAAA,MAAMQ,IAAO,GAAA,MAAM,IAAI,CAACyvB,SAAS,CAAC;AAAEvuB,YAAAA,GAAAA;AAAKytB,YAAAA,GAAAA;AAAKvtB,YAAAA,UAAAA;AAAW,SAAA,CAAA,CAAA;AACzD,QAAA,IAAIq0B,cAAcC,aAAe,EAAA;YAC7B11B,IAAKa,CAAAA,QAAQ,CAACC,QAAQ,CAACZ,MAAM,CAAC3M,OAAO,CAAC/B,CAAAA,CAAAA,GAAAA;AAAOA,gBAAAA,CAAAA,CAAEikC,UAAU,GAAGA,UAAAA,CAAAA;AAAYjkC,gBAAAA,CAAAA,CAAEkkC,aAAa,GAAGA,aAAAA,CAAAA;AAAe,aAAA,CAAA,CAAA;AAC7G,SAAA;QACA,IAAI,CAACC,OAAO,CAAC31B,IAAMR,EAAAA,KAAAA,CAAAA,CAAAA;QACnB,OAAOQ,IAAAA,CAAAA;AACX,KAAA;AAEApJ,IAAAA,KAAAA,CAAMvF,MAAc,EAAE;AAClB,QAAA,OAAO,IAAI,CAACqiC,aAAa,CAAC98B,KAAK,CAACvF,MAAAA,CAAAA,CAAAA;AACpC,KAAA;AAEAuO,IAAAA,QAAAA,CAASvO,MAAc,EAAE;AACrB,QAAA,OAAO,IAAI,CAACqiC,aAAa,CAAC9zB,QAAQ,CAACvO,MAAAA,CAAAA,CAAAA;AACvC,KAAA;AAEAwO,IAAAA,YAAAA,CAAaxO,MAAc,EAAE;AACzB,QAAA,IAAI,CAACqiC,aAAa,CAAC7zB,YAAY,CAACxO,MAAAA,CAAAA,CAAAA;AACpC,KAAA;AAEAukC,IAAAA,iBAAAA,CAAkBxkC,QAAiC,EAAE;AACjDu/B,QAAAA,MAAAA,CAAO0B,UAAU,CAAC,IAAI,CAACI,MAAM,EAAE,CAACoD,IAAAA,GAAAA;YAC5B,IAAIA,IAAAA,CAAKt1B,MAAM,EAAE;gBACb,IAAIlF,KAAAA,CAAMC,OAAO,CAACu6B,IAAKp1B,CAAAA,QAAQ,GAAGo1B,IAAKp1B,CAAAA,QAAQ,CAAClN,OAAO,CAACnC,QAAAA,CAAAA,CAAAA;AACnDA,qBAAAA,QAAAA,CAASykC,KAAKp1B,QAAQ,CAAA,CAAA;AAC/B,aAAA;AACJ,SAAA,CAAA,CAAA;AACJ,KAAA;AAEA6vB,IAAAA,eAAAA,CAAgBl/B,QAAkC,EAAE;AAChD,QAAA,OAAO,IAAI,CAACqiC,cAAc,CAACnD,eAAe,CAACl/B,QAAAA,CAAAA,CAAAA;AAC/C,KAAA;IAEAi2B,SAA4B8I,CAAAA,MAAiC,EAAE5rB,OAAiB,EAAK;AACjF,QAAA,OAAO,IAAI,CAACkvB,cAAc,CAACpM,SAAS,CAAC8I,MAAQ5rB,EAAAA,OAAAA,CAAAA,CAAAA;AACjD,KAAA;IAGAisB,SAAUL,CAAAA,MAAW,EAAE3wB,KAAU,EAAE;AAC/B,QAAA,MAAM+wB,MAAM,IAAI,CAACkD,cAAc,CAACjD,SAAS,CAACL,MAAAA,CAAAA,CAAAA;AAC1CJ,QAAAA,UAAAA,CAAWQ,GAAK/wB,EAAAA,KAAAA,CAAAA,CAAAA;QAChB,OAAO+wB,GAAAA,CAAAA;AACX,KAAA;AAGAG,IAAAA,YAAAA,CAAaP,MAAW,EAAE;AACtB,QAAA,IAAI,CAACsD,cAAc,CAAC/C,YAAY,CAACP,MAAAA,CAAAA,CAAAA;AACrC,KAAA;AAEArmB,IAAAA,YAAAA,CAAkC9J,IAAc,EAAEhM,WAAyB,EAAEuQ,OAAiB,EAAK;AAC/F,QAAA,OAAO,IAAI,CAACivB,iBAAiB,CAAC1pB,YAAY,CAAC9J,MAAMhM,WAAauQ,EAAAA,OAAAA,CAAAA,CAAAA;AAClE,KAAA;AAEAwnB,IAAAA,kBAAAA,CAAmB36B,QAAmC,EAAE;AACpD,QAAA,OAAO,IAAI,CAACoiC,iBAAiB,CAACzH,kBAAkB,CAAC36B,QAAAA,CAAAA,CAAAA;AACrD,KAAA;IAIAo6B,YAAkCxrB,CAAAA,IAA0B,EAAEhM,WAAgB,EAAK;AAC/E,QAAA,OAAO,IAAI,CAACw/B,iBAAiB,CAAChI,YAAY,CAACxrB,IAAMhM,EAAAA,WAAAA,CAAAA,CAAAA;AACrD,KAAA;IAEAqS,eAAgBrG,CAAAA,IAAc,EAAE2rB,SAAoB,EAAE;AAClD,QAAA,OAAO,IAAI,CAAC6H,iBAAiB,CAACntB,eAAe,CAACrG,IAAM2rB,EAAAA,SAAAA,CAAAA,CAAAA;AACxD,KAAA;AAGAgK,IAAAA,OAAAA,CAAQl2B,MAAW,EAAE,EACjBnN,IAAI,EACJK,KAAK,EACLwqB,KAAK,EACLxU,QAAQ,EACRmtB,QAAQ,EACRC,UAAU,EACVC,WAAW,EACXrK,SAAS,EACTsK,MAAAA,GAAS,IAAI,CAACxD,MAAM,EACpB,GAAGjzB,KAAAA,EACD,GAAG,EAAE,EACT;AACE,QAAA,IAAIQ,IAAO,GAAA,IAAA,CAAA;QACX,IAAIuwB,GAAAA,GAAMx8B,iBAAiB0L,MAAQnN,EAAAA,IAAAA,CAAAA,CAAAA;QACnC,IAAIi+B,GAAAA,CAAI2F,UAAU,EAAE;YAChBl2B,IAAOuwB,GAAAA,GAAAA,CAAAA;AACP0F,YAAAA,MAAAA,CAAOt/B,GAAG,CAAC45B,GAAAA,CAAAA,CAAAA;SAEV,MAAA,IAAIA,eAAezqB,SAAW,EAAA;YAC/B9F,IAAOuwB,GAAAA,GAAAA,CAAIvwB,IAAI,IAAI,IAAIqe,QAAAA,EAAAA,CAAAA;AACvB4X,YAAAA,MAAAA,CAAOt/B,GAAG,CAACqJ,IAAAA,CAAAA,CAAAA;AACX,YAAA,IAAI,CAACwzB,iBAAiB,CAAChI,YAAY,CAACxrB,IAAMuwB,EAAAA,GAAAA,CAAAA,CAAAA;SAEzC,MAAA;AACD,YAAA,MAAM4F,KAAM,CAAA,iCAAA,CAAA,CAAA;AAChB,SAAA;AAEA,QAAA,IAAIxK,SAAW,EAAA;AACX,YAAA,MAAMT,UAAa7vB,GAAAA,KAAAA,CAAMC,OAAO,CAACqwB,aAAaA,SAAY,GAAA;AAACA,gBAAAA,SAAAA;AAAU,aAAA,CAAA;YACrE,KAAK,IAAI4E,OAAOrF,UAAY,CAAA;AACxB,gBAAA,IAAI,CAACsI,iBAAiB,CAAChI,YAAY,CAACxrB,IAAMuwB,EAAAA,GAAAA,CAAAA,CAAAA;AAC9C,aAAA;AACJ,SAAA;QAEA,IAAIpT,KAAAA,IAASxU,YAAYmtB,QAAU,EAAA;AAC/B/F,YAAAA,UAAAA,CAAW/vB,IAAM,EAAA;AAAEmd,gBAAAA,KAAAA;AAAOxU,gBAAAA,QAAAA;AAAUmtB,gBAAAA,QAAAA;AAAS,aAAA,CAAA,CAAA;AACjD,SAAA;AACA,QAAA,IAAIt2B,KAAO,EAAA;AACPuwB,YAAAA,UAAAA,CAAWQ,GAAK/wB,EAAAA,KAAAA,CAAAA,CAAAA;AACpB,SAAA;QAEA,IAAI+wB,GAAAA,CAAI7mB,QAAQ,IAAIssB,WAAa,EAAA;YAC7BzF,GAAI6E,CAAAA,MAAM,GAAG7E,GAAI8E,CAAAA,MAAM,KAAK,IAAI,CAAC3C,OAAO,CAAC2C,MAAM,CAAA;YAC/C,IAAI,CAAC3C,OAAO,GAAGnC,GAAAA,CAAAA;AACnB,SAAA;AACA,QAAA,IAAIwF,UAAY,EAAA;YACZ,IAAI/1B,IAAAA,CAAKo2B,kBAAkB,EAAEzF,MAAAA,CAAOC,qBAAqB,CAAC5wB,IAAAA,CAAK6wB,MAAM,EAAEkF,UAAAA,CAAAA,CAAAA;AAC3E,SAAA;QAEA,OAAOxF,GAAAA,CAAAA;AACX,KAAA;AAEA8F,IAAAA,UAAAA,CAAWr2B,IAAc,EAAE;AACvB,QAAA,IAAI,CAACwzB,iBAAiB,CAACrI,iBAAiB,CAACnrB,IAAAA,CAAAA,CAAAA;AACzCA,QAAAA,IAAAA,CAAKs2B,gBAAgB,EAAA,CAAA;AACzB,KAAA;IAEAC,UAAWv2B,CAAAA,IAAc,EAAEmsB,MAAe,EAAE;AACxC,QAAA,IAAI,CAACqH,iBAAiB,CAAClI,gBAAgB,CAACtrB,IAAAA,CAAAA,CAAAA;AACxCA,QAAAA,IAAAA,CAAK+jB,OAAO,GAAGoI,MAAAA,CAAAA;QACf,OAAOnsB,IAAAA,CAAAA;AACX,KAAA;AAEAw2B,IAAAA,kBAAAA,CACIloB,KAAa,EACbmB,MAAc,EACdgnB,UAAmB,KAAK,EACxBC,SAAuC,GAAA,KAAK,EAC5CC,IAAe,GAAA,CAAC,EAChBC,MAAAA,GAAkB,KAAK,EACzB;QACE,OAAO,IAAItU,iBAAkBhU,CAAAA,KAAAA,EAAOmB,MAAQ,EAAA;YACxConB,KAAOC,EAAAA,mBAAAA;YACPC,KAAOD,EAAAA,mBAAAA;AACPE,YAAAA,SAAAA,EAAWP,UAAUQ,aAAgBC,GAAAA,YAAAA;YACrCC,SAAWV,EAAAA,OAAAA,GAAUQ,aAAgBL,GAAAA,MAAAA,GAASQ,wBAA2BF,GAAAA,YAAAA;YACzErxB,IAAM,EAAA,OAAO6wB,cAAc,SAAYA,GAAAA,SAAAA,GAAY,IAAI,CAAChJ,eAAe,GAAGQ,gBAAmBwI,GAAAA,SAAAA;YAC7FW,UAAY,EAAA,CAAA;YACZ3zB,UAAY4zB,EAAAA,oBAAAA;YACZC,WAAa,EAAA,KAAA;YACbC,aAAe,EAAA,KAAA;YACf/e,OAAS9F,EAAAA,UAAAA,CAAWW,aAAa,GAAGqjB,IAAO,GAAA,CAAA;YAC3Cc,eAAiBb,EAAAA,MAAAA;AACrB,SAAA,CAAA,CAAA;AACJ,KAAA;AAEAc,IAAAA,sBAAAA,CACIC,IAAY,EACZlB,OAAmB,GAAA,KAAK,EACxBC,SAAAA,GAAuC,KAAK,EAC5CC,IAAe,GAAA,CAAC,EAChBC,MAAAA,GAAkB,KAAK,EACzB;QACE,OAAO,IAAIgB,sBAAsBD,IAAM,EAAA;YACnCd,KAAOC,EAAAA,mBAAAA;YACPC,KAAOD,EAAAA,mBAAAA;AACPE,YAAAA,SAAAA,EAAWP,UAAUQ,aAAgBC,GAAAA,YAAAA;YACrCC,SAAWV,EAAAA,OAAAA,GAAUQ,aAAgBL,GAAAA,MAAAA,GAASQ,wBAA2BF,GAAAA,YAAAA;YACzErxB,IAAM,EAAA,OAAO6wB,cAAc,SAAYA,GAAAA,SAAAA,GAAY,IAAI,CAAChJ,eAAe,GAAGQ,gBAAmBwI,GAAAA,SAAAA;YAC7FW,UAAY,EAAA,CAAA;YACZ3zB,UAAY4zB,EAAAA,oBAAAA;YACZC,WAAa,EAAA,KAAA;YACbC,aAAe,EAAA,KAAA;YACf/e,OAAS9F,EAAAA,UAAAA,CAAWW,aAAa,GAAGqjB,IAAO,GAAA,CAAA;YAC3Cc,eAAiBb,EAAAA,MAAAA;AACrB,SAAA,CAAA,CAAA;AACJ,KAAA;IAEAiB,iBACIC,CAAAA,IAAkB,EAClBxpB,KAAa,EACbmB,MAAc,EACdinB,SAAAA,GAAqB,KAAK,EAC1BD,OAAmB,GAAA,IAAI,EACzB;AACE,QAAA,OAAO,IAAIsB,WACPD,CAAAA,IAAAA,EAAMxpB,KAAOmB,EAAAA,MAAAA,EACbuoB,YACAtB,SAAY/I,GAAAA,SAAAA,GAAYO,gBACxB+J,EAAAA,SAAAA,EAAWnB,qBAAqBA,mBAChCL,EAAAA,OAAAA,GAAUQ,gBAAgBC,YAC1BT,EAAAA,OAAAA,GAAUQ,gBAAgBC,YAC1B,EAAA,CAAA,CAAA,CAAA;AAER,KAAA;AAEA;;;;QAKAgB,MAAAA,CAAgB9mC,QAAiB,EAAE;QAC/B,MAAMiR,KAAAA,GAAQ,IAAI,CAACowB,MAAM,CAAA;QACzB,MAAM9oB,MAAAA,GAAS,IAAI,CAAC+oB,OAAO,CAAA;QAC3B,IAAI,CAACD,MAAM,GAAG,IAAIlL,KAAAA,EAAAA,CAAAA;AAClB,QAAA,MAAMsI,MAASz+B,GAAAA,QAAAA,EAAAA,CAAAA;QACf,IAAI,CAACqhC,MAAM,GAAGpwB,KAAAA,CAAAA;QACd,IAAI,CAACqwB,OAAO,GAAG/oB,MAAAA,CAAAA;QACf,OAAOkmB,MAAAA,CAAAA;AACX,KAAA;AAEAsI,IAAAA,IAAAA,CACI9V,YAA+B,EAC/B5hB,QAAkB,EAClB6nB,GAAY,EACZmJ,IAAa,EACf;QACEd,MAAOa,CAAAA,IAAI,CAAC,IAAI,CAACmB,SAAS,EAAEtQ,YAAAA,EAAc5hB,UAAU6nB,GAAKmJ,EAAAA,IAAAA,CAAAA,CAAAA;AAC7D,KAAA;AAIAL,IAAAA,OAAAA,CAAQ//B,MAAY,EAAE;QAClB,IAAIgK,KAAAA,CAAMC,OAAO,CAACjK,MAAS,CAAA,EAAA;AACvB,YAAA,IAAIA,OAAO+mC,KAAK,CAAC5mC,CAAAA,CAAKA,GAAAA,CAAAA,CAAE6mC,UAAU,CAAG,EAAA;AACjC1H,gBAAAA,MAAAA,CAAOO,eAAe,CAAC,IAAI,CAACyB,SAAS,EAAE,IAAI,CAACF,MAAM,EAAE,IAAI,CAACC,OAAO,EAAErhC,MAAAA,CAAAA,CAAAA;aAEjE,MAAA;AACD,gBAAA,MAAM8kC,KAAM,CAAA,mCAAA,CAAA,CAAA;AAChB,aAAA;SAEC,MAAA,IAAI,OAAO9kC,MAAAA,KAAW,QAAU,EAAA;YACjC,IAAIA,MAAAA,CAAOgnC,UAAU,EAAE;AACnB1H,gBAAAA,MAAAA,CAAOO,eAAe,CAAC,IAAI,CAACyB,SAAS,EAAE,IAAI,CAACF,MAAM,EAAE,IAAI,CAACC,OAAO,EAAErhC,MAAAA,CAAAA,CAAAA;aAEjE,MAAA,IAAIA,MAAO6kC,CAAAA,UAAU,EAAE;AACxB,gBAAA,IAAI7kC,MAAOyP,CAAAA,QAAQ,CAACV,SAAS,EAAE;oBAC3BuwB,MAAOO,CAAAA,eAAe,CAAC,IAAI,CAACyB,SAAS,EAAE,IAAI,CAACF,MAAM,EAAE,IAAI,CAACC,OAAO,EAAEj/B,MAAOiR,CAAAA,MAAM,CAACrT,MAAOyP,CAAAA,QAAQ,CAACV,SAAS,CAAA,CAAA,CAAA;AAC7G,iBAAA;AACA,gBAAA,IAAI/O,MAAOyP,CAAAA,QAAQ,CAACX,QAAQ,EAAE;AAC1BwwB,oBAAAA,MAAAA,CAAOW,cAAc,CAAC,IAAI,CAACqB,SAAS,EAAEl/B,MAAOiR,CAAAA,MAAM,CAACrT,MAAAA,CAAOyP,QAAQ,CAACX,QAAQ,CAAA,CAAA,CAAA;AAChF,iBAAA;AACA,gBAAA,IAAI,CAAC9O,MAAAA,CAAOyP,QAAQ,CAACZ,MAAM,EAAE;AACzBywB,oBAAAA,MAAAA,CAAOU,eAAe,CAAC,IAAI,CAACsB,SAAS,EAAE,IAAI,CAACF,MAAM,EAAE,IAAI,CAACC,OAAO,EAAErhC,MAAAA,CAAAA,CAAAA;AACtE,iBAAA;aAEC,MAAA,IAAIA,MAAOinC,CAAAA,SAAS,EAAE;AACvB3H,gBAAAA,MAAAA,CAAOW,cAAc,CAAC,IAAI,CAACqB,SAAS,EAAEthC,MAAAA,CAAAA,CAAAA;AAC1C,aAAA;SAEC,MAAA;AACDs/B,YAAAA,MAAAA,CAAOU,eAAe,CAAC,IAAI,CAACsB,SAAS,EAAE,IAAI,CAACF,MAAM,EAAE,IAAI,CAACC,OAAO,EAAE,IAAI,CAACD,MAAM,CAAA,CAAA;AACjF,SAAA;AACJ,KAAA;AArfAz+B,IAAAA,WAAAA,CAAY,EACRy3B,IAAI,EACJ/e,MAAM,EACNxV,SAAY,GAAA,IAAI,EAChBqhC,UAAAA,GAAa,IAAI,EACjBC,OAAU,GAAA,KAAK,EACf7uB,MAAS,GAAA;QAAEvB,GAAK,EAAA,EAAA;QAAIC,IAAM,EAAA,GAAA;QAAKC,GAAK,EAAA,IAAA;QAAMK,QAAU,EAAA,IAAIqB,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA;AAAG,KAAC,EAC1EyuB,eAAkB,GAAA,CAAC,CAAC,EACpB/0B,aAAaC,cAAc,EAC3B+0B,WAAcC,GAAAA,iBAAiB,EAC/BC,mBAAsB,GAAA,CAAC,EACvBC,MAAS,GAAA,GAAG,EACZl3B,IAAO,GAAA,EAAE,EACTE,YAAAA,GAAe,EAAE,EACjBe,SAAAA,GAAY,4CAA4C,EACxDrB,MAAAA,GAAS,EAAE,EACXu3B,MAAS,GAAA,EAAE,EACX,GAAGhM,WAiCoB,GAAG,EAAE,CAAE;QAC9B,KAAK,EAAA,CAAA;aAlHDmG,IAAe,GAAA,CAAA,CAAA;aACfC,MAAiB,GAAA,CAAA,CAAA;aACjBC,OAAkB,GAAA,CAAA,CAAA;aAClBC,SAA+D,GAAA;YAAE9kB,KAAO,EAAA,CAAA;YAAGmB,MAAQ,EAAA,CAAA;YAAGylB,MAAQ,EAAA,CAAA;AAAE,SAAA,CAAA;AAChGR,QAAAA,IAAAA,CAAAA,YAAAA,GAA4BvG,YAAY4K,IAAI,CAAA;aAE5C1E,QAAoB,GAAA,KAAA,CAAA;aACpBhB,YAAwB,GAAA,KAAA,CAAA;aAExBb,KAAgB,GAAA,CAAA,CAAA;aAChB/I,SAAoB,GAAA,CAAA,CAAA;AACpBqK,QAAAA,IAAAA,CAAAA,gBAAAA,GAA2B,CAAC,CAAA,CAAA;aAC5BE,WAAuB,GAAA,IAAA,CAAA;AAuG3B,QAAA,MAAMgF,EAAKtsB,GAAAA,MAAAA,IAAU+F,QAASwmB,CAAAA,cAAc,CAAC,QAAA,CAAA,CAAA;QAC7C,MAAMC,KAAAA,GAAQvM,cAAcqM,EAAIlM,EAAAA,SAAAA,CAAAA,CAAAA;AAChC,QAAA,IAAI,CAACoM,KAAO,EAAA;AACR,YAAA,MAAM/C,KAAM,CAAA,qCAAA,CAAA,CAAA;AAChB,SAAA;QAEA,IAAI,CAAC5D,KAAK,GAAG9G,IAAQuN,IAAAA,EAAAA,CAAAA;QACrB,IAAI,CAACpG,OAAO,GAAGoG,EAAAA,CAAAA;AACf,QAAA,IAAI,CAACnG,GAAG,GAAGqG,KAAAA,CAAM3L,EAAE,CAAA;AACnB,QAAA,IAAI,CAACuF,yBAAyB,GAAGoG,KAAAA,CAAMzL,wBAAwB,CAAA;AAC/D,QAAA,IAAI,CAACsF,gBAAgB,GAAGmG,KAAAA,CAAMxL,eAAe,CAAA;QAC7C,IAAI,CAACuF,IAAI,GAAGp+B,IAAAA,CAAKqf,GAAG,CAAC2kB,MAAAA,EAAQtrB,OAAOmG,gBAAgB,CAAA,CAAA;QAEpD,IAAI,CAAC+e,MAAM,GAAG,IAAIlL,KAAAA,EAAAA,CAAAA;AAClB,QAAA,IAAI,CAACmL,OAAO,GAAG3C,UAAAA,CAAW,IAAI7N,iBAAqBvY,EAAAA,EAAAA,MAAAA,CAAAA,CAAAA;AACnD,QAAA,IAAI,CAACgpB,SAAS,GAAG,IAAIwG,aAAc,CAAA;YAAEzsB,MAAQssB,EAAAA,EAAAA;AAAII,YAAAA,OAAAA,EAASF,MAAM3L,EAAE;AAAC,SAAA,CAAA,CAAA;AACnE,QAAA,IAAI,CAACoF,SAAS,CAAC0G,aAAa,CAAC,IAAI,CAACpG,IAAI,CAAA,CAAA;AACtC,QAAA,IAAI,CAACN,SAAS,CAAC2G,gBAAgB,GAAG51B,UAAAA,CAAAA;AAClC,QAAA,IAAI,CAACivB,SAAS,CAAC+F,WAAW,GAAGA,WAAAA,CAAAA;AAC7B,QAAA,IAAI,CAAC/F,SAAS,CAACiG,mBAAmB,GAAGA,mBAAAA,CAAAA;QACrC,IAAI,CAACjG,SAAS,CAAClO,SAAS,CAAC1e,OAAO,GAAG,CAAC,CAACyyB,OAAAA,CAAAA;QACrC,IAAI,CAAC7F,SAAS,CAAClO,SAAS,CAAC5e,IAAI,GAAG,OAAO2yB,OAAY,KAAA,SAAA,GAAYe,gBAAmBf,GAAAA,OAAAA,CAAAA;AAClF,QAAA,IAAI,CAAC7F,SAAS,CAAC7/B,IAAI,CAAC0mC,SAAS,GAAG,KAAA,CAAA;QAEhC,MAAM/3B,cAAAA,GAAiB,IAAIg4B,cAAAA,CAAel4B,MAAOJ,CAAAA,MAAM,EAAEI,MAAOH,CAAAA,UAAU,EAAEG,MAAAA,CAAOF,OAAO,CAAA,CAAA;AAC1F,QAAA,IAAI,CAACkyB,gBAAgB,GAAG,IAAInF,eAAgB,CAAA;AAAEzsB,YAAAA,IAAAA;AAAME,YAAAA,YAAAA;AAAce,YAAAA,SAAAA;AAAWnB,YAAAA,cAAAA;AAAe,SAAA,CAAA,CAAA;AAC5F,QAAA,IAAI,CAAC6xB,YAAY,GAAG,IAAIlH,WAAY0M,CAAAA,MAAAA,CAAOx6B,UAAU,EAAEw6B,MAAO13B,CAAAA,UAAU,EAAE03B,MAAAA,CAAOz3B,OAAO,CAAA,CAAA;AACxF,QAAA,IAAI,CAACmyB,iBAAiB,GAAG,IAAI3I,iBAAiB,IAAI,CAAA,CAAA;AAClD,QAAA,IAAI,CAAC4I,cAAc,GAAG,IAAIxD,cAAc,IAAI,CAAA,CAAA;QAC5C,IAAI,CAACyD,aAAa,GAAG,IAAIh0B,YAAAA,EAAAA,CAAAA;QAEzB,IAAI,CAACs0B,WAAW,GAAGuE,UAAAA,CAAAA;QACnB,IAAI,CAACzE,gBAAgB,GAAG2E,eAAAA,CAAAA;AACxB,QAAA,IAAI,CAAC9E,MAAM,GAAG,IAAIhoB,YAAY,IAAI,CAAA,CAAA;QAClC,IAAI,CAACgoB,MAAM,CAACnnB,iBAAiB,EAAA,CAAA;AAE7B,QAAA,IAAI,CAAConB,kBAAkB,EAAA,CAAA;QAEvB,IAAI18B,SAAAA,EAAW,IAAI,CAAC4D,KAAK,EAAA,CAAA;AAC7B,KAAA;AA2ZJ,CAAA;AA9rBa61B,MAAAA,CACF6E,WAAoB,IAAIxrB,OAAAA,EAAAA,CAAAA;AADtB2mB,MAAAA,CAEFjU,aAAsB,IAAI1S,OAAAA,EAAAA,CAAAA;AAFxB2mB,MAAAA,CAIFI,iBAAoB,GAAA;AAAC,IAAA,KAAA;AAAO,IAAA,QAAA;AAAU,IAAA,MAAA;AAAQ,IAAA,OAAA;AAAS,IAAA,MAAA;AAAQ,IAAA,KAAA;AAAM,CAAA,CAAA;AAJnEJ,MAAAA,CA2HFQ,cAAuB,GAAA,IAAInR,IAAK2Q,CAAAA,MAAAA,CAAOiB,wBAAwB,EAAA,CAAA,CAAA;AA3H7DjB,MA4HFgB,CAAAA,gBAAAA,GAAuC,IAAIjK,kBAAmB,CAAA,CAAE,GAAG,CAAG,EAAA,CAAA,EAAG,CAAE,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA;;AC/KrF,MAAMgS,eAAAA,CAAAA;AAOT,IAAA,IAAIC,YAAe,GAAA;QACf,OAAO,IAAI,CAACC,aAAa,CAAA;AAC7B,KAAA;IAkBAzU,OAAU,GAAA;QACN,IAAI,CAACyU,aAAa,CAACzU,OAAO,EAAA,CAAA;QAC1B,IAAI,CAAC0U,eAAe,CAAC1U,OAAO,EAAA,CAAA;AAChC,KAAA;AAEA2U,IAAAA,YAAAA,CAAahnC,IAAe,EAAE;QAC1B,IAAI,CAAC+mC,eAAe,CAACE,aAAa,CAAC,IAAI,CAACH,aAAa,EAAE,IAAI,CAACI,eAAe,CAAA,CAAA;QAC3E,IAAI,CAACH,eAAe,CAACI,aAAa,CAAC,IAAI,CAACL,aAAa,EAAE,IAAI,CAACM,WAAW,CAAA,CAAA;AAEvEpnC,QAAAA,IAAAA,CAAK6mC,YAAY,GAAG,IAAI,CAACC,aAAa,CAAA;QACtC9mC,IAAK21B,CAAAA,MAAM,GAAG,IAAI,CAACoR,eAAe,CAACM,UAAU,CAACppC,MAAM,GAAG,CAAA,CAAA;AAC3D,KAAA;AAEQqpC,IAAAA,kBAAAA,CAAmBrX,QAAuB,EAAE;QAChD,MAAMsX,cAAAA,GAAiB,IAAIC,cAAevX,CAAAA,QAAAA,CAAAA,CAAAA;AAC1CsX,QAAAA,cAAAA,CAAeE,qBAAqB,GAAG,SAAUC,UAAuB,EAAEnS,MAAgB,EAAA;YACtF,MAAMh3B,MAAAA,GAASg3B,MAAS,GAAA,IAAI,CAACoS,YAAY,CAACpS,MAAU,CAAA,GAAA,IAAI,CAACqS,gBAAgB,CAACF,UAAAA,CAAAA,CAAAA;YAC1E,IAAI,CAACG,gBAAgB,GAAGvS,mBAAAA,EAAAA,CAAAA;YACxB,IAAI,CAACwS,gBAAgB,GAAG9S,iBAAAA,EAAAA,CAAAA;AACxB,YAAA,IAAI,CAAC+S,SAAS,GAAG,IAAI7a,IAAK2Q,CAAAA,MAAAA,CAAOQ,cAAc,CAACrQ,QAAQ,EAAE,IAAI,CAAC8Z,gBAAgB,CAAA,CAAA;AAC/E,YAAA,IAAI,CAACT,UAAU,GAAG,IAAI,CAACW,UAAU,CAACtkC,GAAG,CAAChF,CAAAA,IAAK,IAAIwuB,IAAAA,CAAKxuB,CAAG,EAAA,IAAI,CAACmpC,gBAAgB,CAAA,CAAA,CAAA;YAC5E,IAAI,CAACI,WAAW,GAAG,KAAA,CAAA;YACnB,OAAO1pC,MAAAA,CAAAA;AACX,SAAA,CAAA;QACAgpC,cAAeK,CAAAA,gBAAgB,GAAG,SAAU9X,OAAoB,EAAA;YAC5D,IAAI,CAACoY,QAAQ,CAACpY,OAAQqY,CAAAA,KAAK,CAAClqC,MAAM,KAAK,CAAI,GAAA,EAAA,GAAM6xB,OAAQqY,CAAAA,KAAK,CAAC,CAAE,CAAA,CAAC3sB,KAAK,IAAIsU,OAAQqY,CAAAA,KAAK,CAAC,CAAE,CAAA,CAACA,KAAK,CAAC3sB,KAAK,CAAA,CAAA;YACvG,OAAO,IAAI,CAAC4sB,gBAAgB,EAAA,CAAA;AAChC,SAAA,CAAA;QACAb,cAAec,CAAAA,YAAY,GAAG,SAC1BC,SAA4B,EAC5BxY,OAAgB,EAChBmF,YAAoB,CAAC,EAAA;AAErB,YAAA,MAAMxH,QAAW,GAAA,IAAI,CAACqa,gBAAgB,CAACra,QAAQ,CAAA;YAC/CA,QAAS/pB,CAAAA,GAAG,CAACmI,KAAK,GAAGikB,OAAAA,CAAAA;YACrBrC,QAASwH,CAAAA,SAAS,CAACppB,KAAK,GAAGopB,SAAAA,CAAAA;YAE3B,MAAMhF,QAAAA,GAAW,IAAI,CAAC4P,SAAS,CAAA;AAC/B5P,YAAAA,QAAAA,CAASgC,SAAS,GAAG,IAAA,CAAA;AACrBhC,YAAAA,QAAAA,CAAS4B,eAAe,CAACyW,SAAAA,CAAAA,CAAAA;AACzBrY,YAAAA,QAAAA,CAASiC,MAAM,CAAC,IAAI,CAAC6V,SAAS,EAAEpT,WAAAA,CAAAA,CAAAA;AAChC1E,YAAAA,QAAAA,CAAS4B,eAAe,CAAC,IAAA,CAAA,CAAA;AAC7B,SAAA,CAAA;AACA0V,QAAAA,cAAAA,CAAeN,aAAa,GAAG,SAC3BqB,SAA4B,EAC5BrT,SAAkB,EAAA;YAElB,MAAMsT,MAAAA,GAAS,IAAI,CAACC,qBAAqB,CAAA;AACzC,YAAA,IAAI,IAAI,CAACP,WAAW,KAAK,KAAO,EAAA;gBAC5B,IAAI,CAACA,WAAW,GAAG,IAAA,CAAA;AACnBM,gBAAAA,MAAAA,CAAOE,WAAW,GAAG,KAAA,CAAA;AACrB5T,gBAAAA,YAAAA,CAAa0T,QAAQ,CAAG,EAAA,CAAA,EAAGA,OAAO/sB,KAAK,EAAE+sB,OAAO5rB,MAAM,CAAA,CAAA;AACtD,gBAAA,IAAI,CAAC0rB,YAAY,CAACE,MAAAA,EAAQD,UAAUxY,OAAO,CAAA,CAAA;aAE1C,MAAA;AACD,gBAAA,IAAI,CAACuY,YAAY,CAACC,SAAWC,EAAAA,MAAAA,CAAOzY,OAAO,EAAEmF,SAAAA,CAAAA,CAAAA;AACjD,aAAA;AACJ,SAAA,CAAA;QACAsS,cAAeJ,CAAAA,aAAa,GAAG,SAC3BuB,YAA+B,EAC/BhB,UAAuB,EACvBvpC,QAAiB,KAAK,EAAA;YAEtB,MAAM8xB,QAAAA,GAAW,IAAI,CAAC4P,SAAS,CAAA;YAC/B,MAAM5N,SAAAA,GAAYhC,SAASgC,SAAS,CAAA;YACpC,MAAM0W,eAAAA,GAAkB,IAAI,CAACd,gBAAgB,CAAA;AAE7C,YAAA,MAAMpa,QAAW,GAAA,IAAI,CAACoa,gBAAgB,CAACpa,QAAQ,CAAA;YAC/CA,QAAS8H,CAAAA,MAAM,CAAC1pB,KAAK,GAAG67B,UAAAA,CAAAA;AAExBzX,YAAAA,QAAAA,CAASgC,SAAS,GAAG9zB,KAAAA,CAAAA;YAErB,IAAK,IAAImB,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAAC+nC,UAAU,CAACppC,MAAM,GAAG,CAAA,EAAGqB,CAAK,EAAA,CAAA;AACjDmuB,gBAAAA,QAAAA,CAAS+H,GAAG,CAAC3pB,KAAK,GAAGvM,CAAAA,GAAI,IAAI,CAAIA,GAAAA,CAAAA,CAAAA;AACjC,gBAAA,IAAI,CAACspC,KAAK,CAACF,YAAAA,EAAcppC,CAAGqpC,EAAAA,eAAAA,CAAAA,CAAAA;AAChC,aAAA;AAEAD,YAAAA,YAAAA,CAAaD,WAAW,GAAG,KAAA,CAAA;AAC3B5T,YAAAA,YAAAA,CAAa6T,cAAc,CAAG,EAAA,CAAA,EAAGA,aAAaltB,KAAK,EAAEktB,aAAa/rB,MAAM,CAAA,CAAA;AAExEsT,YAAAA,QAAAA,CAASgC,SAAS,GAAGA,SAAAA,CAAAA;AACzB,SAAA,CAAA;AACAsV,QAAAA,cAAAA,CAAeqB,KAAK,GAAG,SACnBN,SAA4B,EAC5BO,MAAc,EACdl7B,QAAwB,EAAA;YAExB,MAAMsiB,QAAAA,GAAW,IAAI,CAAC4P,SAAS,CAAA;YAC/B,MAAMiJ,OAAAA,GAAU,IAAI,CAACA,OAAO,CAAA;AAC5B,YAAA,MAAMC,UAAa,GAAA,IAAI,CAACC,SAAS,CAACH,MAAO,CAAA,CAAA;YACzC,MAAMpsB,CAAAA,GAAI,CAAIssB,GAAAA,UAAAA,IAAcF,MAAAA,GAASC,UAAUpU,OAAUmU,GAAAA,MAAAA,GAASC,OAAUpU,GAAAA,OAAAA,GAAU,CAAA,CAAA,CAAA;AACtF,YAAA,MAAMhY,IAAI,CAAK,IAAA,IAAI,CAACusB,SAAS,GAAGF,UAAS,CAAA,CAAA;AACzClU,YAAAA,YAAAA,CAAayT,SAAW7rB,EAAAA,CAAAA,EAAGC,CAAG,EAAA,CAAA,GAAIqsB,YAAY,CAAIA,GAAAA,UAAAA,CAAAA,CAAAA;AAClD,YAAA,MAAMG,OAAU,GAAA,IAAI,CAAC7B,UAAU,CAACwB,MAAO,CAAA,CAAA;AACvCK,YAAAA,OAAAA,CAAQv7B,QAAQ,GAAGA,QAAAA,CAAAA;AACnBsiB,YAAAA,QAAAA,CAASgC,SAAS,GAAG,KAAA,CAAA;AACrBhC,YAAAA,QAAAA,CAAS4B,eAAe,CAACyW,SAAAA,CAAAA,CAAAA;YACzBrY,QAASiC,CAAAA,MAAM,CAACgX,OAASvU,EAAAA,WAAAA,CAAAA,CAAAA;AAC7B,SAAA,CAAA;QACA,OAAO4S,cAAAA,CAAAA;AACX,KAAA;AApHArmC,IAAAA,WAAAA,CAAY,EACRq0B,MAAM,EACNmS,UAAU,EACV5wB,MAAM,EAKT,CAAE;aAdHowB,eAA0B,GAAA,CAAA,CAAA;QAetB,IAAI,CAACE,WAAW,GAAGM,UAAAA,CAAAA;QACnB,IAAI,CAACX,eAAe,GAAG,IAAI,CAACO,kBAAkB,CAACxwB,OAAOmZ,QAAQ,CAAA,CAAA;QAC9D,IAAI,CAAC6W,aAAa,GAAG,IAAI,CAACC,eAAe,CAACU,qBAAqB,CAACC,UAAYnS,EAAAA,MAAAA,CAAAA,CAAAA;QAE5Eze,MAAOvH,CAAAA,KAAK,CAAC45B,WAAW,GAAG,IAAI,CAACrC,aAAa,CAAChX,OAAO,CAAA;AACzD,KAAA;AAuGJ;;ACnIO,SAASsZ,sBAAAA,CAAuBC,KAAa,EAAE7T,GAAW,EAAA;AAC7D,IAAA,IAAI8T,SAASD,KAAQA,GAAAA,KAAAA,CAAAA;AACrB,IAAA,IAAIE,CAAI,GAAA,GAAA,GAAMxnC,IAAKE,CAAAA,EAAE,GAAGqnC,MAAAA,CAAAA;AACxB,IAAA,IAAIE,YAAYznC,IAAKK,CAAAA,GAAG,CAAC,EAAIozB,EAAAA,GAAAA,CAAAA,GAAO;IACpC,IAAIiU,YAAAA,GAAeF,KAAKxnC,IAAAA,CAAKK,GAAG,CAAC,CAAA,EAAGozB,OAAO+T,CAAAA,CAAAA,CAAAA;AAC3C,IAAA,OAAO12B,SAAUoB,CAAAA,KAAK,CAACu1B,SAAAA,GAAYC,cAAc,CAAG,EAAA,CAAA,CAAA,CAAA;AACxD;;ACFA,MAAMC,OAAU,GAAA,EAAA,CAAA;AAET,MAAMC,gBAAAA,CAAAA;AAWT,IAAA,IAAIC,aAAgB,GAAA;QAChB,OAAO,IAAI,CAACC,cAAc,CAAA;AAC9B,KAAA;IACA,IAAID,aAAAA,CAAclrC,CAAS,EAAE;AACzB,QAAA,IAAI,IAAI,CAACmrC,cAAc,KAAKnrC,CAAG,EAAA;YAC3B,IAAI,CAACmrC,cAAc,GAAGnrC,CAAAA,CAAAA;YACtB,IAAI,CAACorC,MAAM,GAAGj3B,SAAUqB,CAAAA,IAAI,CAAC,CAAA,EAAG,EAAI,EAAA,IAAI,CAAC21B,cAAc,GAAG,EAAA,CAAA,CAAA;AAC1D,YAAA,IAAK,IAAIrU,GAAAA,GAAM,CAAGA,EAAAA,GAAAA,IAAOkU,SAASlU,GAAO,EAAA,CAAA;AACrC,gBAAA,IAAI7Q,CAAIykB,GAAAA,sBAAAA,CAAuB,IAAI,CAACU,MAAM,EAAEtU,GAAAA,CAAAA,CAAAA;AAC5C,gBAAA,IAAI7Q,IAAI,KAAO,EAAA;oBACX,IAAI,CAAColB,WAAW,GAAGvU,GAAAA,CAAAA;AACvB,iBAAA;AACA,gBAAA,IAAI7Q,KAAK,CAAG,EAAA;oBACR,IAAI,CAACqlB,WAAW,GAAGxU,GAAAA,CAAAA;AACnB,oBAAA,MAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;AAEA,IAAA,IAAIqR,YAAe,GAAA;QACf,OAAO,IAAI,CAACC,aAAa,CAAA;AAC7B,KAAA;IAcAzU,OAAU,GAAA;QACN,IAAI,CAACyU,aAAa,CAACzU,OAAO,EAAA,CAAA;QAC1B,IAAI,CAAC0U,eAAe,CAAC1U,OAAO,EAAA,CAAA;AAChC,KAAA;AAEA4X,IAAAA,YAAAA,CAAajqC,IAAe,EAAE;AAC1B,QAAA,MAAMkqC,QAAW,GAAA,IAAI,CAACnD,eAAe,CAACoD,aAAa,CAC/C,IAAI,CAACrD,aAAa,EAClB,IAAI,CAACM,WAAW,EAChB,IAAI,CAAC2C,WAAW,EAChB,IAAI,CAACC,WAAW,EAChB,IAAI,CAACF,MAAM,EACX,IAAI,CAAC7T,QAAQ,CAAA,CAAA;AAEjB,QAAA,IAAI,CAAC8Q,eAAe,CAACqD,QAAQ,CAACpqC,IAAK6mC,CAAAA,YAAY,EAAEqD,QAAAA,EAAUlqC,IAAK21B,CAAAA,MAAM,EAAE,IAAI,CAACoU,WAAW,CAAA,CAAA;AAC5F,KAAA;AAEQzC,IAAAA,kBAAAA,CAAmBrX,QAAuB,EAAE;QAChD,MAAMsX,cAAAA,GAAiB,IAAIC,cAAevX,CAAAA,QAAAA,CAAAA,CAAAA;QAC1CsX,cAAeE,CAAAA,qBAAqB,GAAG,SAAU3X,OAAgB,EAAA;YAC7D,IAAI,CAACoY,QAAQ,CAACpY,OAAQqY,CAAAA,KAAK,CAAClqC,MAAM,KAAK,CAAI,GAAA,EAAA,GAAM6xB,OAAQqY,CAAAA,KAAK,CAAC,CAAE,CAAA,CAAC3sB,KAAK,IAAIsU,OAAQqY,CAAAA,KAAK,CAAC,CAAE,CAAA,CAACA,KAAK,CAAC3sB,KAAK,CAAA,CAAA;YACvG,MAAMjd,MAAAA,GAAS,IAAI,CAAC6pC,gBAAgB,EAAA,CAAA;AACpC,YAAA,IAAI,CAACiC,gBAAgB,GAAGrU,mBAAAA,CAAoB,IAAI,CAAC8S,OAAO,EAAEvqC,MAAOid,CAAAA,KAAK,EAAEjd,MAAAA,CAAOoe,MAAM,CAAA,CAAA;AACrF,YAAA,IAAI,CAAC2tB,gBAAgB,GAAG5U,mBAAAA,CAAoB,IAAI,CAACoT,OAAO,EAAEvqC,MAAOid,CAAAA,KAAK,EAAEjd,MAAAA,CAAOoe,MAAM,CAAA,CAAA;AACrF,YAAA,IAAI,CAAC0qB,UAAU,GAAG,IAAI,CAACW,UAAU,CAACtkC,GAAG,CAAChF,CAAAA,IAAK,IAAIwuB,IAAAA,CAAKxuB,CAAG,EAAA,IAAI,CAAC2rC,gBAAgB,CAAA,CAAA,CAAA;YAC5E,OAAO9rC,MAAAA,CAAAA;AACX,SAAA,CAAA;AACAgpC,QAAAA,cAAAA,CAAe4C,aAAa,GAAG,SAC3BzB,YAA+B,EAC/B5Y,OAAoB,EACpBya,UAAkB,EAClBC,UAAkB,EAClBnB,KAAa,EACbpT,QAAgB,EAAA;YAEhB,MAAMwU,oBAAAA,GAAuB,IAAI,CAACjC,qBAAqB,CAAA;AACvD,YAAA,MAAM/a,QAAW,GAAA,IAAI,CAAC4c,gBAAgB,CAAC5c,QAAQ,CAAA;YAC/CA,QAAS8H,CAAAA,MAAM,CAAC1pB,KAAK,GAAGikB,OAAAA,CAAAA;YACxBrC,QAASwI,CAAAA,QAAQ,CAACpqB,KAAK,GAAGoqB,QAAAA,CAAAA;AAE1B,YAAA,IAAIT,GAAMgV,GAAAA,UAAAA,CAAAA;AACV,YAAA,IAAIlC,SAAYI,GAAAA,YAAAA,CAAAA;AAChB,YAAA,IAAIwB,QAAWO,GAAAA,oBAAAA,CAAAA;AAEf,YAAA,IAAI,CAACC,QAAQ,CAAChC,YAAAA,EAAc+B,sBAAsBjV,GAAK,EAAA,CAAA,CAAA,CAAA;AACvD,YAAA,IAAK,IAAIl2B,CAAAA,GAAI,CAAGk2B,EAAAA,GAAAA,EAAAA,GAAQ+U,YAAYjrC,CAAK,EAAA,CAAA;AACrCgpC,gBAAAA,SAAAA,GAAY,CAAChpC,CAAAA,GAAI,CAAA,MAAO,IAAImrC,oBAAuB/B,GAAAA,YAAAA,CAAAA;AACnDwB,gBAAAA,QAAAA,GAAW,CAAC5qC,CAAAA,GAAI,CAAA,MAAO,IAAImrC,oBAAuB/B,GAAAA,YAAAA,CAAAA;AAClD,gBAAA,IAAI,CAACgC,QAAQ,CAACpC,WAAW4B,QAAU1U,EAAAA,GAAAA,EAAK4T,uBAAuBC,KAAO7T,EAAAA,GAAAA,CAAAA,CAAAA,CAAAA;AAC1E,aAAA;AAEAkT,YAAAA,YAAAA,CAAaD,WAAW,GAAG,KAAA,CAAA;AAC3B5T,YAAAA,YAAAA,CAAa6T,cAAc,CAAG,EAAA,CAAA,EAAGA,aAAaltB,KAAK,EAAEktB,aAAa/rB,MAAM,CAAA,CAAA;YAExE,OAAO2rB,SAAAA,CAAAA;AACX,SAAA,CAAA;QACAf,cAAemD,CAAAA,QAAQ,GAAG,SACtBpC,SAA4B,EAC5B4B,QAA2B,EAC3BrB,MAAc,EACdliB,MAAc,EAAA;AAEd,YAAA,MAAM8G,QAAW,GAAA,IAAI,CAAC4c,gBAAgB,CAAC5c,QAAQ,CAAA;AAC/CA,YAAAA,QAAAA,CAASsI,SAAS,CAAClqB,KAAK,GAAGq+B,SAASpa,OAAO,CAAA;YAC3CrC,QAAS9G,CAAAA,MAAM,CAAC9a,KAAK,GAAG8a,MAAAA,CAAAA;YACxB8G,QAAS+H,CAAAA,GAAG,CAAC3pB,KAAK,GAAGg9B,MAAAA,CAAAA;AAErB,YAAA,IAAI,CAACD,KAAK,CAACN,WAAWO,MAAQ,EAAA,IAAI,CAACwB,gBAAgB,CAAA,CAAA;AACvD,SAAA,CAAA;QACA9C,cAAe6C,CAAAA,QAAQ,GAAG,SACtB9B,SAA4B,EAC5B4B,QAA2B,EAC3BrB,MAAc,EACd8B,KAAAA,GAAgB9B,MAAM,EAAA;AAEtB,YAAA,MAAMpb,QAAW,GAAA,IAAI,CAAC6c,gBAAgB,CAAC7c,QAAQ,CAAA;AAC/CA,YAAAA,QAAAA,CAASsI,SAAS,CAAClqB,KAAK,GAAGq+B,SAASpa,OAAO,CAAA;YAC3CrC,QAAS+H,CAAAA,GAAG,CAAC3pB,KAAK,GAAG8+B,KAAAA,CAAAA;AAErB,YAAA,IAAI,CAAC/B,KAAK,CAACN,WAAWO,MAAQ,EAAA,IAAI,CAACyB,gBAAgB,CAAA,CAAA;AAEnDhC,YAAAA,SAAAA,CAAUG,WAAW,GAAG,KAAA,CAAA;AACxB5T,YAAAA,YAAAA,CAAayT,WAAW,CAAG,EAAA,CAAA,EAAGA,UAAU9sB,KAAK,EAAE8sB,UAAU3rB,MAAM,CAAA,CAAA;AACnE,SAAA,CAAA;AACA4qB,QAAAA,cAAAA,CAAeqB,KAAK,GAAG,SACnBN,SAA4B,EAC5BO,MAAc,EACdl7B,QAAwB,EAAA;YAExB,MAAMsiB,QAAAA,GAAW,IAAI,CAAC4P,SAAS,CAAA;YAC/B,MAAMiJ,OAAAA,GAAU,IAAI,CAACA,OAAO,CAAA;AAC5B,YAAA,MAAMC,UAAa,GAAA,IAAI,CAACC,SAAS,CAACH,MAAO,CAAA,CAAA;YACzC,MAAMpsB,CAAAA,GAAI,CAAIssB,GAAAA,UAAAA,IAAcF,MAAAA,GAASC,UAAUpU,OAAUmU,GAAAA,MAAAA,GAASC,OAAUpU,GAAAA,OAAAA,GAAU,CAAA,CAAA,CAAA;AACtF,YAAA,MAAMhY,IAAI,CAAK,IAAA,IAAI,CAACusB,SAAS,GAAGF,UAAS,CAAA,CAAA;AACzClU,YAAAA,YAAAA,CAAayT,SAAW7rB,EAAAA,CAAAA,EAAGC,CAAG,EAAA,CAAA,GAAIqsB,YAAY,CAAIA,GAAAA,UAAAA,CAAAA,CAAAA;AAClD,YAAA,MAAMG,OAAU,GAAA,IAAI,CAAC7B,UAAU,CAACwB,MAAO,CAAA,CAAA;AACvCK,YAAAA,OAAAA,CAAQv7B,QAAQ,GAAGA,QAAAA,CAAAA;AACnBsiB,YAAAA,QAAAA,CAASgC,SAAS,GAAG,KAAA,CAAA;AACrBhC,YAAAA,QAAAA,CAAS4B,eAAe,CAACyW,SAAAA,CAAAA,CAAAA;YACzBrY,QAASiC,CAAAA,MAAM,CAACgX,OAASvU,EAAAA,WAAAA,CAAAA,CAAAA;AAC7B,SAAA,CAAA;QAEA,OAAO4S,cAAAA,CAAAA;AACX,KAAA;AAnHArmC,IAAAA,WAAAA,CAAY,EACR4V,MAAM,EACN4wB,UAAU,EAIb,CAAE;aAvCKoC,MAAiB,GAAA,CAAA,CAAA;aACjBC,WAAsB,GAAA,CAAA,CAAA;aACtBC,WAAsBN,GAAAA,OAAAA,CAAAA;AACtBG,QAAAA,IAAAA,CAAAA,cAAAA,GAAyB,CAAC,CAAA,CAAA;aAIlC5T,QAAmB,GAAA,CAAA,CAAA;QAiCf,IAAI,CAACmR,WAAW,GAAGM,UAAAA,CAAAA;QACnB,IAAI,CAACX,eAAe,GAAG,IAAI,CAACO,kBAAkB,CAACxwB,OAAOmZ,QAAQ,CAAA,CAAA;QAC9D,IAAI,CAAC6W,aAAa,GAAG,IAAI,CAACC,eAAe,CAACU,qBAAqB,CAACC,UAAAA,CAAAA,CAAAA;AACpE,KAAA;AA0GJ;;AC5IO,MAAMkD,iBAA0BxW,SAAAA,MAAAA,CAAAA;AAUnC,IAAA,IACIv0B,KAAQ,GAAA;QACR,OAAO,IAAI,CAACgrC,MAAM,CAAA;AACtB,KAAA;IACA,IAAIhrC,KAAAA,CAAMnB,CAAU,EAAE;AAClB,QAAA,IAAI,IAAI,CAACmsC,MAAM,KAAKnsC,CAAG,EAAA;YACnB,IAAI,CAACmsC,MAAM,GAAGnsC,CAAAA,CAAAA;AACd,YAAA,IAAIA,CAAG,EAAA;AACH,gBAAA,IAAI,IAAI,CAACosC,UAAU,KAAK,IAAM,EAAA;oBAC1B,MAAMh0B,MAAAA,GAAS,IAAI,CAACA,MAAM,CAAA;AAC1B,oBAAA,MAAMi0B,UAAa1W,GAAAA,WAAAA,CAAYC,QAAQ,CAACxd,QAAQvH,KAAK,CAAA;AACrD,oBAAA,IAAI,CAACu7B,UAAU,GAAGh0B,MAAO+rB,CAAAA,OAAO,CAACtX,QAAU,EAAA;wBAAE4X,MAAQ4H,EAAAA,UAAAA;AAAW,qBAAA,CAAA,CAAA;oBAChEj0B,MAAO+rB,CAAAA,OAAO,CAACvV,KAAO,EAAA;wBAClB6V,MAAQ,EAAA,IAAI,CAAC2H,UAAU;AACvBn9B,wBAAAA,QAAAA,EAAU,IAAIq9B,iBAAkB,CAAA;AAAEtnC,4BAAAA,GAAAA,EAAK,IAAI,CAACunC,YAAY,CAACpE,YAAY,CAAC/W,OAAO;AAAC,yBAAA,CAAA;wBAC9Eja,QAAU,EAAA,IAAIqB,OAAQ,CAAA,GAAA,EAAK,CAAG,EAAA,CAAA,CAAA;AAClC,qBAAA,CAAA,CAAA;oBACAJ,MAAO+rB,CAAAA,OAAO,CAACvV,KAAO,EAAA;wBAClB6V,MAAQ,EAAA,IAAI,CAAC2H,UAAU;AACvBn9B,wBAAAA,QAAAA,EAAU,IAAIq9B,iBAAkB,CAAA;AAAEtnC,4BAAAA,GAAAA,EAAK,IAAI,CAACwnC,YAAY,CAACrE,YAAY,CAAC/W,OAAO;AAAC,yBAAA,CAAA;wBAC9Eja,QAAU,EAAA,IAAIqB,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA;AAChC,qBAAA,CAAA,CAAA;AACJ,iBAAA;AACJ,aAAA;YACA,IAAI,IAAI,CAAC4zB,UAAU,EAAE;AACjB,gBAAA,IAAI,CAACA,UAAU,CAAC7Z,OAAO,GAAGvyB,CAAAA,CAAAA;AAC9B,aAAA;AACJ,SAAA;AACJ,KAAA;IA6CA81B,QAAW,GAAA;AACP,QAAA,MAAM,EAAEvE,QAAQ,EAAE,GAAG,IAAI,CAACnZ,MAAM,CAAA;QAChC,MAAMmb,SAAAA,GAAYhC,SAASgC,SAAS,CAAA;QACpC,MAAMkZ,SAAAA,GAAYlb,SAASkB,eAAe,EAAA,CAAA;QAC1C,MAAMia,iBAAAA,GAAoBnb,SAASoB,iBAAiB,EAAA,CAAA;QACpD,MAAMga,oBAAAA,GAAuBpb,SAASsB,oBAAoB,EAAA,CAAA;AAE1D,QAAA,IAAI,CAAC0Z,YAAY,CAAC/D,eAAe,GAAG,IAAI,CAACA,eAAe,CAAA;AACxD,QAAA,IAAI,CAACgE,YAAY,CAACjV,QAAQ,GAAG,IAAI,CAACqV,eAAe,CAAA;AACjD,QAAA,IAAI,CAACJ,YAAY,CAACtB,aAAa,GAAG,IAAI,CAAC2B,oBAAoB,CAAA;QAE3D,IAAI,CAACC,WAAW,CAACvnC,MAAM,CAACgsB,QAAU,EAAA,IAAI,CAAC0P,MAAM,CAAA,CAAA;AAC7C,QAAA,IAAI,CAACsL,YAAY,CAACjE,YAAY,CAAC,IAAI,CAACyE,UAAU,CAAA,CAAA;AAC9C,QAAA,IAAI,CAACP,YAAY,CAACjB,YAAY,CAAC,IAAI,CAACwB,UAAU,CAAA,CAAA;AAE9Cxb,QAAAA,QAAAA,CAASgC,SAAS,GAAGA,SAAAA,CAAAA;QACrBhC,QAAS4B,CAAAA,eAAe,CAACsZ,SAAAA,EAAWC,iBAAmBC,EAAAA,oBAAAA,CAAAA,CAAAA;AAC3D,KAAA;AAtDAnqC,IAAAA,WAAAA,CAAY,EACRq0B,MAAM,EACNhmB,KAAK,EACLgG,IAAI,EACJC,GAAG,EACH8Z,KAAAA,GAAQ,CAAC,EACToc,UAAa,GAAA,GAAG,EAChB9H,SAAAA,GAAYnU,aAAa,EACzB5Z,QAAW,GAAA,IAAIqB,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAE,EAUlC,GAAG,EAAE,CAAE;QACJ,KAAK,EAAA,CAAA;aA3DDu0B,UAAwB,GAAA;YAAE5E,YAAc,EAAA,IAAA;YAAMlR,MAAQ,EAAA,CAAA;AAAE,SAAA,CAAA;aACxDkV,MAAkB,GAAA,KAAA,CAAA;aAClBC,UAAuB,GAAA,IAAA,CAAA;aAgC/B5D,eAA0B,GAAA,CAAA,CAAA;aAE1BoE,eAA0B,GAAA,CAAA,CAAA;aAE1BC,oBAA+B,GAAA,CAAA,CAAA;QAsB3B,IAAI,CAAC5N,OAAO,GAAG,IAAA;YACX,MAAM7mB,MAAAA,GAAS,IAAI,CAACA,MAAM,CAAA;AAC1B,YAAA,IAAI,CAAC6oB,MAAM,GAAGpwB,KAAAA,IAASuH,OAAOvH,KAAK,CAAA;AACnC,YAAA,MAAMo8B,mBAAmB70B,MAAO8tB,CAAAA,sBAAsB,CAAC8G,UAAY,EAAA,KAAA,EAAO9H,WAAW,CAAG,EAAA,IAAA,CAAA,CAAA;AACxF,YAAA,IAAI,CAAC4H,WAAW,GAAG,IAAII,UAAAA,CAAWr2B,QAAQuB,MAAOD,CAAAA,MAAM,CAACtB,IAAI,EAAEC,GAAOsB,IAAAA,MAAAA,CAAOD,MAAM,CAACrB,GAAG,EAAEm2B,gBAAAA,CAAAA,CAAAA;AACxF,YAAA,IAAI,CAACH,WAAW,CAAC31B,QAAQ,CAACU,IAAI,CAACV,QAAAA,CAAAA,CAAAA;AAC/B,YAAA,IAAI,CAAC21B,WAAW,CAACnc,MAAM,CAACljB,GAAG,CAACmjB,KAAAA,CAAAA,CAAAA;YAC5B,MAAMoY,UAAAA,GAAaiE,iBAAiB7b,OAAO,CAAA;AAC3C,YAAA,IAAI,CAACmb,YAAY,GAAG,IAAIrE,eAAgB,CAAA;AAAE9vB,gBAAAA,MAAAA;AAAQ4wB,gBAAAA,UAAAA;AAAYnS,gBAAAA,MAAAA;AAAO,aAAA,CAAA,CAAA;AACrE,YAAA,IAAI,CAAC2V,YAAY,GAAG,IAAIvB,gBAAiB,CAAA;AAAE7yB,gBAAAA,MAAAA;AAAQ4wB,gBAAAA,UAAAA;AAAW,aAAA,CAAA,CAAA;AAClE,SAAA,CAAA;QACA,IAAI,CAACpK,SAAS,GAAG,IAAA;YACb,IAAI,CAAC2N,YAAY,CAAC5Y,OAAO,EAAA,CAAA;YACzB,IAAI,CAAC6Y,YAAY,CAAC7Y,OAAO,EAAA,CAAA;AAC7B,SAAA,CAAA;AACJ,KAAA;AAoBJ,CAAA;;AA3FKpqB,IAAAA,QAAAA;AAVQ2iC,CAAAA,EAAAA,iBAAAA,CAAAA,SAAAA,EAAAA,OAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;IAuCR3iC,QAAS,CAAA;QAAEmZ,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,CAAA;QAAG+D,IAAM,EAAA,IAAA;AAAK,KAAA,CAAA;AAvC9BwlB,CAAAA,EAAAA,iBAAAA,CAAAA,SAAAA,EAAAA,iBAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IAyCR3iC,QAAS,CAAA;QAAEmZ,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,EAAA;QAAI+D,IAAM,EAAA,IAAA;AAAK,KAAA,CAAA;AAzC/BwlB,CAAAA,EAAAA,iBAAAA,CAAAA,SAAAA,EAAAA,iBAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IA2CR3iC,QAAS,CAAA;QAAEmZ,GAAK,EAAA,CAAA;QAAGC,GAAK,EAAA,EAAA;QAAI+D,IAAM,EAAA,GAAA;AAAI,KAAA,CAAA;AA3C9BwlB,CAAAA,EAAAA,iBAAAA,CAAAA,SAAAA,EAAAA,sBAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;ACdN,MAAMiB,mBAA4BzX,SAAAA,MAAAA,CAAAA;AAQrC,IAAA,IACIv0B,KAAQ,GAAA;QACR,OAAO,IAAI,CAACgrC,MAAM,CAAA;AACtB,KAAA;IACA,IAAIhrC,KAAAA,CAAMnB,CAAU,EAAE;AAClB,QAAA,IAAI,IAAI,CAACmsC,MAAM,KAAKnsC,CAAG,EAAA;YACnB,IAAI,CAACmsC,MAAM,GAAGnsC,CAAAA,CAAAA;AACd,YAAA,IAAIA,CAAG,EAAA;AACH,gBAAA,IAAI,IAAI,CAACotC,OAAO,KAAK,IAAM,EAAA;AACvB,oBAAA,IAAI,CAACA,OAAO,GAAG,IAAIC,UAAW,CAAA,IAAIC,IAAK,CAAA,IAAI,CAACC,OAAO,EAAE,IAAI,CAACC,OAAO,CAAA,CAAA,CAAA;oBACjE7X,WAAYC,CAAAA,QAAQ,CAAC,IAAI,CAACxd,MAAM,EAAEjT,GAAG,CAAC,IAAI,CAACioC,OAAO,CAAA,CAAA;AACtD,iBAAA;AACJ,aAAA;YACA,IAAI,IAAI,CAACA,OAAO,EAAE;AACd,gBAAA,IAAI,CAACA,OAAO,CAAC7a,OAAO,GAAGvyB,CAAAA,CAAAA;AAC3B,aAAA;AACJ,SAAA;AACJ,KAAA;AAEA,IAAA,IACIytC,MAAS,GAAA;QACT,OAAO,IAAI,CAACC,OAAO,CAAA;AACvB,KAAA;IACA,IAAID,MAAAA,CAAOztC,CAAU,EAAE;AACnB,QAAA,IAAI,CAAC0tC,OAAO,CAAC71B,IAAI,CAAC7X,CAAAA,CAAAA,CAAAA;AACtB,KAAA;AAEA,IAAA,IACI2tC,MAAS,GAAA;QACT,OAAO,IAAI,CAACJ,OAAO,CAAA;AACvB,KAAA;IACA,IAAII,MAAAA,CAAO3tC,CAAU,EAAE;AACnB,QAAA,IAAI,CAACutC,OAAO,CAAC11B,IAAI,CAAC7X,CAAAA,CAAAA,CAAAA;AACtB,KAAA;AAEA,IAAA,IACI4tC,MAAS,GAAA;QACT,OAAO,IAAI,CAACJ,OAAO,CAAA;AACvB,KAAA;IACA,IAAII,MAAAA,CAAO5tC,CAAU,EAAE;AACnB,QAAA,IAAI,CAACwtC,OAAO,CAAC31B,IAAI,CAAC7X,CAAAA,CAAAA,CAAAA;AACtB,KAAA;AA0DA0M,IAAAA,QAAAA,CAASqJ,EAAU,EAAQ;QACvB,IAAI,IAAI,CAACo2B,MAAM,EAAE;YACb,IAAI,CAACiB,OAAO,CAACpb,iBAAiB,EAAA,CAAA;AAClC,SAAA;AACJ,KAAA;AAEA6b,IAAAA,gBAAAA,CAAiB7c,MAA0C,EAAE;QACzDA,MAAOiE,CAAAA,OAAO,CAAC6Y,kBAAkB,GAAG,IAAA,CAAA;QACpC9c,MAAOjC,CAAAA,QAAQ,CAACgf,QAAQ,GAAG;YAAE5gC,KAAO,EAAA,IAAI,CAACugC,OAAO;AAAC,SAAA,CAAA;QACjD1c,MAAOjC,CAAAA,QAAQ,CAACif,WAAW,GAAG;YAAE7gC,KAAO,EAAA,IAAI,CAACogC,OAAO;AAAC,SAAA,CAAA;QACpDvc,MAAOjC,CAAAA,QAAQ,CAACkf,WAAW,GAAG;YAAE9gC,KAAO,EAAA,IAAI,CAACqgC,OAAO;AAAC,SAAA,CAAA;AACxD,KAAA;IAnEAhrC,WAAc,EAAA;QACV,KAAK,EAAA,CAAA;AAlDDkrC,QAAAA,IAAAA,CAAAA,OAAAA,GAAmB,IAAIpd,OAAAA,CAAQ,CAAG,EAAA,GAAA,EAAK,CAAG,EAAA,CAAA,CAAA,CAAA;aAC1Cid,OAAmB,GAAA,IAAI/0B,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;aACrCg1B,OAAmB,GAAA,IAAIh1B,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;aACrC40B,OAAsB,GAAA,IAAA,CAAA;aACtBjB,MAAkB,GAAA,KAAA,CAAA;QA+CtB,IAAI,CAAClN,OAAO,GAAG,IAAA;AACXiP,YAAAA,SAAAA,CAAUC,QAAQ,CAAChf,YAAY,GAAG+e,SAAUC,CAAAA,QAAQ,CAAChf,YAAY,CAACpP,OAAO,CAAC,0BAAA,EAA4B,CAAC;;YAEvG,CAAC,CAAA,CAAA;AACDmuB,YAAAA,SAAAA,CAAUC,QAAQ,CAAC/e,cAAc,GAAG8e,SAAUC,CAAAA,QAAQ,CAAC/e,cAAc,CAACrP,OAAO,CAAC,6BAAA,EAA+B,CAAC;;;;;YAK9G,CAAC,CAAA,CAAA;AACDquB,YAAAA,WAAAA,CAAYC,eAAe,GAAGD,WAAAA,CAAYC,eAAe,CAACtuB,OAAO,CAAC,2BAA6B,EAAA,4DAAA,CAAA,CAAA;YAC/FquB,WAAYE,CAAAA,6BAA6B,GAAGF,WAAYE,CAAAA,6BAA6B,CAACvuB,OAAO,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;AAkBpH,YAAA,CAAC,CAAEA,CAAAA,OAAO,CAAC,mEAAA,EAAqE,CAAC;;;;;;;;;AASjF,YAAA,CAAC,CAAEA,CAAAA,OAAO,CAAC,qEAAA,EAAuE,CAAC;;;;;;;;;YASnF,CAAC,CAAA,CAAA;AACL,SAAA,CAAA;QACA,IAAI,CAAC6e,SAAS,GAAG,IAAA;YACbjJ,WAAYC,CAAAA,QAAQ,CAAC,IAAI,CAACxd,MAAM,EAAE9S,MAAM,CAAC,IAAI,CAAC8nC,OAAO,CAAA,CAAA;AACzD,SAAA,CAAA;AACJ,KAAA;AAcJ,CAAA;;AA/GK7jC,IAAAA,QAAAA;AARQ4jC,CAAAA,EAAAA,mBAAAA,CAAAA,SAAAA,EAAAA,OAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;AA2BR5jC,IAAAA,QAAAA;AA3BQ4jC,CAAAA,EAAAA,mBAAAA,CAAAA,SAAAA,EAAAA,QAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;AAmCR5jC,IAAAA,QAAAA;AAnCQ4jC,CAAAA,EAAAA,mBAAAA,CAAAA,SAAAA,EAAAA,QAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;AA2CR5jC,IAAAA,QAAAA;AA3CQ4jC,CAAAA,EAAAA,mBAAAA,CAAAA,SAAAA,EAAAA,QAAAA,EAAAA,IAAAA,CAAAA;;;;","x_google_ignoreList":[14]}