@galacean/effects-specification 1.0.0 → 1.0.1
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.
- package/dist/fallback.js +4 -4
- package/dist/fallback.js.map +1 -1
- package/dist/fallback.mjs +4 -4
- package/dist/fallback.mjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +5 -1
package/dist/fallback.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallback.js","sources":["../../src/type.ts","../../src/constants.ts","../../src/composition.ts","../../src/numberExpression.ts","../../src/item/base-item.ts","../../src/item/particle-item.ts","../../src/item/particle-shape.ts","../../src/item/model/mesh.ts","../../src/item/model/material.ts","../../src/item/model/render.ts","../../src/text.ts","../node_modules/tslib/tslib.es6.js","../../fallback/utils.ts","../../fallback/particle.ts","../../fallback/sprite.ts","../../fallback/interact.ts","../../fallback/camera.ts","../../fallback/filter.ts","../../fallback/migration.ts","../../fallback/index.ts"],"sourcesContent":["import type { FixedVec3Expression, vec2, vec3, GradientColor, ShapePoints, ShapeSplits, FixedNumberExpression } from './numberExpression';\n\n/**\n * 播放器版本\n */\nexport interface PlayerVersion {\n /**\n * Web端版本号\n */\n web: string,\n /**\n * Native端版本号\n */\n native: string,\n}\n\n/*********************************************/\n/* 场景属性参数 */\n/*********************************************/\n\n/**\n * 模型属性\n */\nexport interface GLTF {\n /**\n * 模型序号\n */\n id: number,\n /**\n * 模型地址\n */\n url: string,\n /**\n * 是否复用\n */\n reuse: boolean,\n}\n\n/**\n * 形状属性\n */\nexport interface Shape {\n /**\n * 形状 ID\n */\n id: number,\n /**\n * 形状数据\n */\n shape: number[],\n}\n\n/**\n * 插件参数\n */\nexport interface Plugin {\n /**\n * 插件类型\n */\n type: PluginType,\n /**\n * 插件版本\n */\n version: string,\n}\n\n/*********************************************/\n/* 元素属性公有参数 */\n/*********************************************/\n\n/**\n * 大小变化属性\n */\nexport interface SizeOverLifetime {\n /**\n * 分轴变化开关\n */\n separateAxes?: boolean,\n /**\n * 整体大小变化信息(非分轴模式)\n */\n size?: FixedNumberExpression,\n /**\n * x轴大小变化信息(分轴模式)\n */\n x?: FixedNumberExpression,\n /**\n * y轴大小变化信息(分轴模式)\n */\n y?: FixedNumberExpression,\n /**\n * z轴大小变化信息(分轴模式)\n */\n z?: FixedNumberExpression,\n}\n\n/**\n * 旋转变化属性\n */\nexport interface RotationOverLifetime {\n /**\n * 分轴变化开关\n */\n separateAxes?: boolean,\n /**\n * 角度模式\n */\n asRotation?: boolean,\n /**\n * x 轴旋转函数\n */\n x?: FixedNumberExpression,\n /**\n * y 轴旋转函数\n */\n y?: FixedNumberExpression,\n /**\n * z 轴旋转函数(不分轴时,变化 z)\n */\n z?: FixedNumberExpression,\n}\n\n/**\n * 位置变化属性\n */\nexport interface PositionOverLifetime {\n /**\n * 路程模式\n */\n asMovement?: boolean,\n /**\n * x轴位置变化信息\n */\n linearX?: FixedNumberExpression,\n /**\n * y轴位置变化信息\n */\n linearY?: FixedNumberExpression,\n /**\n * z轴位置变化信息\n */\n linearZ?: FixedNumberExpression,\n /**\n * 环绕模式\n */\n asRotation?: boolean,\n /**\n * x轴环绕角度变化信息\n */\n orbitalX?: FixedNumberExpression,\n /**\n * y轴环绕角度变化信息\n */\n orbitalY?: FixedNumberExpression,\n /**\n * z轴环绕角度变化信息\n */\n orbitalZ?: FixedNumberExpression,\n /**\n * 环绕中心信息\n */\n orbCenter?: vec3,\n /**\n * 路径\n * @default [0,0,0]\n */\n path?: FixedVec3Expression,\n /**\n * 初速度方向\n */\n direction?: vec3,\n /**\n * 增加一个初速度,匀速直线运动,direction 为运动方向\n * @default 0\n */\n startSpeed?: number,\n /**\n * 速度变化信息\n * @default [ValueType.ConstantNumber, 0]\n */\n speedOverLifetime?: FixedNumberExpression,\n /**\n * 增加一个重力\n * gravity 为重力方向,gravityModifier 为重力大小\n * @default 0\n */\n gravity?: vec3,\n /**\n * 重力变化信息\n */\n gravityOverLifetime?: FixedNumberExpression,\n}\n\n/**\n * 颜色变化属性\n */\nexport interface ColorOverLifetime {\n /**\n * 颜色属性\n */\n color?: GradientColor,\n /**\n * 透明度属性变化值\n */\n opacity?: FixedNumberExpression,\n}\n\n/**\n * 雪碧图/帧动画属性\n */\nexport interface TextureSheetAnimation {\n /**\n * 雪碧图行数\n */\n row: number,\n /**\n * 雪碧图列数\n */\n col: number,\n /**\n * 帧动画总帧数\n * 默认 row * col\n */\n total?: number,\n /**\n * 帧动画开关\n */\n animate: boolean,\n}\n\n/**\n * 精灵图坐标属性\n */\nexport type SplitParameter = [\n /**\n * 起点[归一化坐标]\n */\n sx: number,\n /**\n * 起点[归一化坐标]\n */\n sy: number,\n /**\n * 宽度[归一化距离]\n */\n width: number,\n /**\n * 宽度[归一化距离]\n */\n height: number,\n /**\n * 是否翻转 uv 90 度\n */\n flip: 0 | 1,\n];\n\n/*********************************************/\n/* 元素属性参数类型 */\n/*********************************************/\n\n/**\n * 渲染等级\n */\nexport enum RenderLevel {\n S = 'S',\n APlus = 'A+',\n A = 'A',\n BPlus = 'B+',\n B = 'B',\n}\n\n/**\n * 混合模式\n */\nexport enum BlendingMode {\n /**\n * 普通混合模式\n */\n ALPHA = 0,\n /**\n * 叠加混合模式\n */\n ADD,\n /**\n * 相乘混合模式\n */\n MULTIPLY,\n /**\n * 亮度混合模式\n */\n BRIGHTNESS,\n /**\n * 减色混合模式\n */\n SUBTRACTION,\n /**\n * 强光混合模式\n */\n STRONG_LIGHT,\n /**\n * 弱光混合模式\n */\n WEAK_LIGHT,\n /**\n * 亮度叠加混合模式\n */\n SUPERPOSITION,\n}\n\n/**\n * 单双面模式\n */\nexport enum SideMode {\n /**\n * 双面模式\n */\n DOUBLE = 1032,\n /**\n * 正面模式\n */\n FRONT = 1028,\n /**\n * 背面模式\n */\n BACK = 1029,\n}\n\n/**\n * 蒙版模式\n */\nexport enum MaskMode {\n /**\n * 无蒙版\n */\n NONE = 0,\n /**\n * 蒙版\n */\n MASK = 1,\n /**\n * 被遮挡\n */\n OBSCURED = 2,\n /**\n * 被反向遮挡\n */\n REVERSE_OBSCURED = 3,\n}\n\n/**\n * 发射器形状\n */\nexport enum ShapeType {\n /**\n * 没有类型\n */\n NONE = 0,\n /**\n * 圆球\n */\n SPHERE = 1,\n /**\n * 圆锥\n */\n CONE = 2,\n /**\n * 半球\n */\n HEMISPHERE = 3,\n /**\n * 圆\n */\n CIRCLE = 4,\n /**\n * 圆环\n */\n DONUT = 5,\n /**\n * 矩形\n */\n RECTANGLE = 6,\n /**\n * 矩形框\n */\n RECTANGLE_EDGE = 7,\n /**\n * 直线\n */\n EDGE = 8,\n /**\n * 贴图\n */\n TEXTURE = 9,\n}\n\n/**\n * 插件类型\n */\nexport enum PluginType {\n /**\n * 陀螺仪\n */\n GYROSCOPE,\n /**\n * Spine\n */\n SPINE,\n}\n\n/**\n * 交互类型\n */\nexport enum InteractType {\n /**\n * 点击\n */\n CLICK,\n /**\n * 消息\n * 前端收到 onMessageItem 回调\n */\n MESSAGE,\n /**\n * 拖拽\n */\n DRAG,\n}\n\n/**\n * 交互行为\n */\nexport enum InteractBehavior {\n /**\n * 无\n */\n NONE,\n /**\n * 通知\n */\n NOTIFY,\n /**\n * 重置播放器\n */\n RESUME_PLAYER,\n /**\n * 清除元素\n */\n REMOVE,\n\n /**\n * 暂停播放器\n */\n PAUSE,\n}\n\n/**\n * 基础渲染属性\n */\nexport interface RendererOptions {\n /**\n * 渲染模式\n */\n renderMode?: RenderMode,\n /**\n * 混合模式\n * @default BlendingMode.ALPHA\n */\n blending?: BlendingMode,\n /**\n * 单双面模式\n */\n side?: SideMode,\n /**\n * 是否写入深度缓存\n * @default false\n */\n occlusion?: boolean,\n /**\n * 透明像素是否写入深度缓存,occlusion 为 true 时生效\n * @default false\n */\n transparentOcclusion?: boolean,\n /**\n * 贴图,索引到 scene 中的 images 数组\n */\n texture?: number,\n /**\n * 蒙版模式\n * @default none\n */\n maskMode?: MaskMode,\n /**\n * 蒙版形状,索引到 scene 的 shapes 中\n */\n shape?: number | ShapeGeometry,\n /**\n * 旋转中心\n */\n particleOrigin?: ParticleOrigin,\n /**\n * 锚点\n */\n anchor?: vec2,\n}\n\n/**\n * 元素类型\n */\nexport enum ItemType {\n /**\n * 错误元素\n */\n base = '0',\n /**\n * 图层元素\n */\n sprite = '1',\n /**\n * 粒子元素\n */\n particle = '2',\n /**\n * 空节点元素\n */\n null = '3',\n /**\n * 交互元素\n */\n interact = '4',\n /**\n * 插件元素\n */\n plugin = '5',\n /**\n * 相机元素\n */\n camera = '6',\n /**\n * 预合成元素\n */\n composition = '7',\n /**\n * 滤镜图层\n */\n filter = '8',\n /**\n * Spine 元素\n */\n spine = 'spine',\n /**\n * Mesh 元素\n */\n mesh = 'mesh',\n /**\n * 节点树元素\n */\n tree = 'tree',\n /**\n * 文本元素\n */\n text = 'text',\n /**\n * 灯光元素\n */\n light = 'light',\n /**\n * 天空盒元素\n */\n skybox = 'skybox',\n}\n\n/**\n * 渲染模式\n */\nexport enum RenderMode {\n /**\n * 广告牌模式\n */\n BILLBOARD,\n /**\n * 网格模式\n */\n MESH,\n /**\n * 垂直广告牌模式\n */\n VERTICAL_BILLBOARD,\n /**\n * 水平广告牌模式\n */\n HORIZONTAL_BILLBOARD,\n}\n\n/**\n * 变换中心\n */\nexport enum ParticleOrigin {\n /**\n * 水平和垂直中点\n */\n PARTICLE_ORIGIN_CENTER = 0,\n /**\n * 水平左侧 垂直顶部\n */\n PARTICLE_ORIGIN_LEFT_TOP = 1,\n /**\n * 水平左侧 垂直中间\n */\n PARTICLE_ORIGIN_LEFT_CENTER = 2,\n /**\n * 水平左侧 垂直底部\n */\n PARTICLE_ORIGIN_LEFT_BOTTOM = 3,\n /**\n * 水平中间 垂直顶部\n */\n PARTICLE_ORIGIN_CENTER_TOP = 4,\n /**\n * 水平中间 垂直底部\n */\n PARTICLE_ORIGIN_CENTER_BOTTOM = 5,\n /**\n * 水平右侧 垂直顶部\n */\n PARTICLE_ORIGIN_RIGHT_TOP = 6,\n /**\n * 水平右侧 垂直中间\n */\n PARTICLE_ORIGIN_RIGHT_CENTER = 7,\n /**\n * 水平右侧 垂直底部\n */\n PARTICLE_ORIGIN_RIGHT_BOTTOM = 8,\n}\n\n/**\n * 陀螺仪插件属性\n */\nexport interface PluginGyroscopeTarget {\n /**\n * 名称\n */\n name: string,\n /**\n * x轴最小值\n */\n xMin: number,\n /**\n * x轴最大值\n */\n xMax: number,\n /**\n * y轴最小值\n */\n yMin: number,\n /**\n * y轴最大值\n */\n yMax: number,\n}\n\n/**\n * 二维蒙版形状属性\n */\nexport interface ShapeGeometry {\n /**\n * 贝塞尔点信息[顶点信息 前向控制点 后向控制点]\n */\n p: ShapePoints,\n /**\n * 差值信息\n */\n s: ShapeSplits,\n}\n","export const END_BEHAVIOR_DESTROY = 0;\nexport const END_BEHAVIOR_PAUSE = 1;\nexport const END_BEHAVIOR_FORWARD = 2;\nexport const END_BEHAVIOR_PAUSE_AND_DESTROY = 3;\nexport const END_BEHAVIOR_FREEZE = 4;\nexport const END_BEHAVIOR_RESTART = 5;\nexport const END_BEHAVIOR_DESTROY_CHILDREN = 6;\n\nexport const CAMERA_CLIP_MODE_VERTICAL = 1;\nexport const CAMERA_CLIP_MODE_NORMAL = 0;\n\nexport const MESSAGE_ITEM_PHRASE_BEGIN = 2;\nexport const MESSAGE_ITEM_PHRASE_END = 1;\n","import type { Item } from './item';\nimport {\n CAMERA_CLIP_MODE_NORMAL,\n CAMERA_CLIP_MODE_VERTICAL,\n END_BEHAVIOR_DESTROY,\n END_BEHAVIOR_FORWARD,\n END_BEHAVIOR_PAUSE,\n END_BEHAVIOR_PAUSE_AND_DESTROY,\n END_BEHAVIOR_RESTART,\n} from './constants';\n\nexport enum CameraClipMode {\n /**\n * 剪裁上下\n */\n portrait = CAMERA_CLIP_MODE_VERTICAL,\n /**\n * 剪裁左右\n */\n landscape = CAMERA_CLIP_MODE_NORMAL,\n}\n\n/**\n * 相机属性\n */\nexport interface CameraOptions {\n /**\n * 视角属性\n */\n fov: number,\n /**\n * 相机远平面\n */\n far: number,\n /**\n * 相机近平面\n */\n near: number,\n /**\n * 相机位置\n * @default [0,0,8]\n */\n position?: [x: number, y: number, z: number],\n /**\n * 相机角度\n * @default [0,0,0]\n */\n rotation?: [x: number, y: number, z: number],\n /**\n * 相机剪裁模式\n */\n clipMode: CameraClipMode,\n}\n\n/**\n * 结束行为\n */\nexport enum CompositionEndBehavior {\n /**\n * 销毁\n */\n destroy = END_BEHAVIOR_DESTROY,\n /**\n * 暂停\n */\n pause = END_BEHAVIOR_PAUSE,\n /**\n * 重播\n */\n restart = END_BEHAVIOR_RESTART,\n /**\n * 无限播放\n */\n forward = END_BEHAVIOR_FORWARD,\n /**\n * 销毁并保留最后一帧\n */\n pause_destroy = END_BEHAVIOR_PAUSE_AND_DESTROY,\n}\n\n/**\n * 合成信息\n */\nexport interface Composition {\n /**\n * 合成ID\n */\n id: string,\n /**\n * 合成名称\n */\n name: string,\n /**\n * 合成持续时间\n */\n duration: number,\n\n /**\n * 合成开始播放的时间,单位妙\n * @default 0\n */\n startTime?: number,\n /**\n * 合成结束行为\n */\n endBehavior: CompositionEndBehavior,\n /**\n * 合成相机信息\n */\n camera: CameraOptions,\n /**\n * 元素信息\n */\n items: Item[],\n /**\n * 合成视窗预览大小\n * 如果没有提供,默认为 player 的 container 大小\n * @default [0,0]\n */\n previewSize?: [width: number, height: number],\n /**\n * 降级图\n */\n fallbackImage?: string,\n}\n","/*********************************************/\n/* 基本数值属性参数 */\n/*********************************************/\n\nexport enum ValueType {\n /**\n * 常数\n */\n CONSTANT = 0,\n /**\n * 二维常数向量\n */\n CONSTANT_VEC2 = 1,\n /**\n * 三维常数向量\n */\n CONSTANT_VEC3 = 2,\n /**\n * 四维常数向量\n */\n CONSTANT_VEC4 = 3,\n /**\n * 随机数\n */\n RANDOM = 4,\n /**\n * 直线\n */\n LINE = 5,\n /**\n * 曲线\n */\n CURVE = 6,\n /**\n * 贝塞尔路径\n */\n BEZIER_PATH = 7,\n /**\n * 颜色\n */\n RGBA_COLOR = 8,\n /**\n * 渐变色\n */\n GRADIENT_COLOR = 9,\n /**\n * 蒙版形状点集\n */\n SHAPE_POINTS = 10,\n /**\n * 蒙版形状切分\n */\n SHAPE_SPLITS = 11,\n /**\n *直线路径\n */\n LINEAR_PATH = 12,\n /**\n * 多色\n */\n COLORS = 13,\n /**\n * 二进制指针\n */\n BINARY = 20,\n\n /**\n * 贝塞尔曲线\n */\n BEZIER_CURVE = 21,\n\n /**\n * 贝塞尔曲线路径\n */\n BEZIER_CURVE_PATH = 22,\n}\n\nexport type vec2 = [x: number, y: number];\nexport type vec3 = [x: number, y: number, z: number];\nexport type vec4 = [x: number, y: number, z: number, w: number];\nexport type mat2 = [m11: number, m12: number, m21: number, m22: number];\nexport type mat3 = [\n m11: number, m12: number, m13: number,\n m21: number, m22: number, m23: number,\n m31: number, m32: number, m33: number,\n];\nexport type mat4 = [\n m11: number, m12: number, m13: number, m14: number,\n m21: number, m22: number, m23: number, m24: number,\n m31: number, m32: number, m33: number, m34: number,\n m41: number, m42: number, m43: number, m44: number\n];\n\n/*********************************************/\n/* 数值属性参数 */\n/*********************************************/\nexport type FunctionExpression = LineValue | CurveValue | BezierValue;\nexport type FixedNumberExpression = ConstantNumber | LineValue | CurveValue | BezierValue;\nexport type NumberExpression = FixedNumberExpression | RandomValue;\n\nexport type FixedVec3Expression = ConstantVec3 | BezierPath | LinearPath | BezierCurvePath;\n\n/**\n * 常数数值\n * [0,5]\n * [1,[1,2]]\n * [2,[1,2,3]]\n */\nexport type ConstantNumber = [type: ValueType.CONSTANT, value: number];\n\nexport type ConstantVec2 = [type: ValueType.CONSTANT_VEC2, value: vec2];\n\nexport type ConstantVec3 = [type: ValueType.CONSTANT_VEC3, value: vec3];\n\nexport type ConstantVec4 = [type: ValueType.CONSTANT_VEC4, value: vec4];\n\n/**\n * 随机数数值\n */\nexport type RandomValue = [type: ValueType.RANDOM, value: [min: number, max: number]];\n\n/**\n * 直线段数值\n */\nexport type LineValue = [type: ValueType.LINE, value: [time: number, value: number][]];\n\nexport type CurveEasingPoint = [time: number, value: number, tanIn: number, tanOut: number];\n/**\n * 曲线段数值\n */\nexport type CurveValue = [type: ValueType.CURVE, value: CurveEasingPoint[]];\n\n/**\n * 贝塞尔路径数值\n */\nexport type BezierPath = [type: ValueType.BEZIER_PATH, value: BezierPathValue];\n\nexport type BezierPathValue = [\n easing: CurveEasingPoint[],\n points: vec3[],\n controlPoints: vec3[],\n];\n\nexport type LinearPath = [type: ValueType.LINEAR_PATH, value: LinearPathValue];\n\nexport type LinearPathValue = [\n easing: CurveEasingPoint[],\n points: vec3[],\n];\n\n/**\n * 关键帧类型\n */\nexport enum BezierKeyframeType {\n AUTO = 0, // 自动\n EASE = 1, // 缓动\n EASE_IN = 2, // 缓入\n EASE_OUT = 3, // 缓出\n LINE = 4, // 线性 (默认进)\n HOLD = 5, // 定格\n LINE_OUT = 6, // 线性出\n}\n\n/**\n * 缓动关键帧数据(有三个点:左曲线控制点、曲线点、右曲线控制点,auto:自动关键帧)\n */\nexport type EaseKeyframeValue = [\n type: BezierKeyframeType.EASE,\n value: [x1: number, y1: number, x2: number, y2: number, x3: number, y3: number],\n markType?: BezierKeyframeType,\n];\n\n/**\n * 缓入关键帧数据(有两个点:左曲线控制点、曲线点)\n */\nexport type EaseInKeyframeValue = [\n type: BezierKeyframeType.EASE_IN,\n value: [x1: number, y1: number, x2: number, y2: number],\n markType?: BezierKeyframeType,\n];\n\n/**\n * 缓出关键帧数据(有两个点:曲线点、右曲线控制点)\n */\nexport type EaseOutKeyframeValue = [\n type: BezierKeyframeType.EASE_OUT,\n value: [x2: number, y2: number, x3: number, y3: number],\n markType?: BezierKeyframeType,\n];\n\n/**\n * 线性关键帧数据(有一个点:曲线点)\n */\nexport type LineKeyframeValue = [\n type: BezierKeyframeType.LINE,\n value: [x2: number, y2: number],\n markType?: BezierKeyframeType,\n];\n\n/**\n * 缓动定格出关键帧(有两个点:左曲线控制点、曲线点)\n */\nexport type EaseHoldOutKeyframeValue = [\n type: BezierKeyframeType.HOLD,\n value: [x1: number, y1: number, x2: number, y2: number],\n markType: BezierKeyframeType.EASE_IN,\n];\n/**\n * 缓动定格出关键帧(有两个点:曲线点、右曲线控制点)\n */\nexport type EaseHoldInKeyframeValue = [\n type: BezierKeyframeType.HOLD,\n value: [x1: number, y1: number, x2: number, y2: number],\n markType: BezierKeyframeType.EASE_OUT,\n];\n/**\n * 线性定格出关键帧(有一个点:曲线点)\n */\nexport type LineHoldOutKeyframeValue = [\n type: BezierKeyframeType.HOLD,\n value: [x2: number, y2: number],\n markType: BezierKeyframeType.LINE,\n];\n/**\n * 线性定格进关键帧(有一个点:曲线点)\n */\nexport type LineHoldInKeyframeValue = [\n type: BezierKeyframeType.HOLD,\n value: [x2: number, y2: number],\n markType: BezierKeyframeType.LINE_OUT,\n];\n/**\n * 定格进出关键帧(有一个点:曲线点)\n */\nexport type HoldInOutKeyframeValue = [\n type: BezierKeyframeType.HOLD,\n value: [x2: number, y2: number],\n markType: BezierKeyframeType.HOLD,\n];\n\n/**\n * 定格关键帧\n */\nexport type HoldKeyframeValue =\n | EaseHoldOutKeyframeValue\n | EaseHoldInKeyframeValue\n | LineHoldOutKeyframeValue\n | LineHoldInKeyframeValue\n | HoldInOutKeyframeValue;\n\n/**\n * 贝塞尔关键帧值\n */\nexport type BezierKeyframeValue =\n | EaseKeyframeValue\n | EaseInKeyframeValue\n | EaseOutKeyframeValue\n | LineKeyframeValue\n | HoldKeyframeValue;\n\n/**\n * 贝塞尔关键帧\n */\nexport type BezierValue = [type: ValueType.BEZIER_CURVE, value: BezierKeyframeValue[]];\n\n/**\n * 贝塞尔曲线路径关键帧值\n */\nexport type BezierCurvePathValue = [easing: BezierKeyframeValue[], points: vec3[], controlePoints: vec3[]];\n\n/**\n * 贝塞尔曲线路径关键帧\n */\nexport type BezierCurvePath = [type: ValueType.BEZIER_CURVE_PATH, value: BezierCurvePathValue];\n\n/*********************************************/\n/* 颜色属性参数 */\n/*********************************************/\n\nexport type ColorExpression = RGBAColor | GradientColor | RGBAColors;\n\n/**\n * rgba range in [0,255]\n */\nexport type RGBAColorValue = [r: number, g: number, b: number, a: number];\n/**\n * 颜色数值\n */\nexport type RGBAColor = [type: ValueType.RGBA_COLOR, value: RGBAColorValue];\n\n/**\n * 渐变色数值\n */\nexport type GradientStop = [stop: number, r: number, g: number, b: number, a: number];\nexport type GradientColor = [type: ValueType.GRADIENT_COLOR, value: GradientStop[]];\nexport type RGBAColors = [type: ValueType.COLORS, value: RGBAColorValue[]];\n\n/*********************************************/\n/* 蒙版形状属性参数 */\n/*********************************************/\n\n/**\n * 蒙版形状控制点数值\n */\nexport type ShapePoints = [type: ValueType.SHAPE_POINTS, value: [x: number, y: number, xIn: number, yIn: number, xOut: number, yOut: number][]];\n\n/**\n * 蒙版形状采样分割点数值\n */\nexport type ShapeSplits = [type: ValueType.SHAPE_SPLITS, value: number[][]];\n","import type { ItemType, RenderLevel } from '../type';\nimport type { NullContent } from './null-item';\nimport type { PluginContent } from './plugin-item';\nimport type { SpriteContent } from './sprite-item';\nimport type { InteractContent } from './interact-item';\nimport type { ParticleContent } from './particle-item';\nimport type { CompositionContent } from './composition-item';\nimport {\n END_BEHAVIOR_DESTROY,\n END_BEHAVIOR_DESTROY_CHILDREN,\n END_BEHAVIOR_FREEZE,\n END_BEHAVIOR_RESTART,\n} from '../constants';\nimport type { vec3, vec4 } from '../numberExpression';\nimport type { CameraContent } from './camera-item';\nimport type { FilterContent } from '../../src/item/filter-item';\nimport type { TextContent } from './text-item';\n\nexport enum ItemEndBehavior {\n destroy = END_BEHAVIOR_DESTROY,\n loop = END_BEHAVIOR_RESTART,\n freeze = END_BEHAVIOR_FREEZE,\n}\n\nexport enum ParentItemEndBehavior {\n destroyChildren = END_BEHAVIOR_DESTROY_CHILDREN\n}\n\nexport interface BaseItem {\n /**\n * 元素 id\n * 非预合成的元素 id 为 int 类型的数字字符串\n * 预合成元素 id 为 `'{ref元素id}+{合成内id}'` 字符串\n */\n id: string,\n /**\n * 元素名称\n */\n name: string,\n /**\n * 元素时常,单位秒\n */\n duration: number,\n /**\n * 元素类型,string 类型\n * Galacean Effects 内部元素使用 int 数字字符串\n * plugin 模块实现者自由实现命名\n * 2022.12更新: spine: \"spine\", 陀螺仪: \"5\"\n */\n type: ItemType | string,\n /**\n * 父节点ID\n * 如果父节点无法找到,播放将直接报错\n */\n parentId?: string,\n /**\n * 元素可视状态\n * 如果为 true 或者不存在时,元素可见\n * 仅当为 false 时,元素不被创建\n */\n visible?: boolean,\n /**\n * 元素结束行为\n * @default destroy\n */\n endBehavior: ItemEndBehavior | ParentItemEndBehavior,\n /**\n * 元素播放延时(单位秒)\n * @default 0\n */\n delay?: number,\n /**\n * 元素渲染信息属性\n */\n content: BaseContent,\n /**\n * 元素渲染等级\n */\n renderLevel?: RenderLevel,\n /**\n * 元素的插件模块名,如果不指定,则和 type 相同\n * 从数组的 plugins 中获取 name\n * 例如:pn:1, plugins:[\"model@1.0\",'spine@1.0']\n * pn 实际为 spine\n */\n pn?: number,\n /**\n * 元素的插件模块名, 优先级高于 pn\n */\n pluginName?: string,\n /**\n * 元素的基础位置\n */\n transform?: BaseItemTransform,\n}\n\nexport interface BaseItemTransform {\n /**\n * 位置\n * @default [0,0,0]\n */\n position?: vec3,\n /**\n * 欧拉角旋转\n * @default [0,0,0]\n */\n rotation?: vec3,\n /**\n * 缩放\n * @default [1,1,1]\n */\n scale?: vec3,\n /**\n * 四元素,其他库转为 Galacean Effects 的 rotation 不方便时,可以用 quat,\n * 有 quat 的情况下,忽略 rotation\n * 编辑器不提供编辑此字段,由程序生成\n */\n quat?: vec4,\n}\n\nexport type BaseContent =\n | SpriteContent\n | ParticleContent\n | NullContent\n | InteractContent\n | PluginContent\n | CompositionContent\n | CameraContent\n | FilterContent\n | TextContent\n | any\n ;\n","import type {\n ItemType,\n RendererOptions,\n TextureSheetAnimation,\n BlendingMode,\n SplitParameter,\n} from '../type';\nimport type {\n FixedNumberExpression,\n NumberExpression,\n GradientColor,\n vec3, FixedVec3Expression,\n ColorExpression,\n FunctionExpression,\n} from '../numberExpression';\nimport type { BaseItem, ItemEndBehavior } from './base-item';\nimport type { ParticleShape } from './particle-shape';\nimport type { DistortionFilterParams } from './filter-item';\n\n/**\n * 粒子交互行为\n */\nexport enum ParticleInteractionBehavior {\n /**\n * 无\n */\n none,\n /**\n * 移出粒子\n */\n removeParticle,\n}\n\n/**\n * 粒子元素\n */\nexport interface ParticleItem extends BaseItem {\n /**\n * 元素类型[指定为particle]\n */\n type: ItemType.particle,\n /**\n * 粒子元素渲染信息\n */\n content: ParticleContent,\n endBehavior: ItemEndBehavior,\n}\n\n/**\n * 发射器参数\n */\nexport interface ParticleEmission {\n /**\n * 每秒发射数\n * @default 0\n */\n rateOverTime: NumberExpression,\n /**\n * 粒子集中发射参数\n */\n bursts?: {\n /**\n * 爆发时间\n */\n time: number,\n /**\n * 爆发粒子数量\n */\n count: number,\n /**\n * 周期\n * @default 0\n */\n cycles?: number,\n /**\n * 爆发时间间隔,单位秒\n * @default 0\n */\n interval?: number,\n }[],\n /**\n * 粒子集中发射偏移参数\n */\n burstOffsets?: {\n /**\n * 爆发的索引\n */\n index: number,\n /**\n * x方向偏移值\n */\n x: number,\n /**\n * y方向偏移值\n */\n y: number,\n /**\n * z方向偏移值\n */\n z: number,\n }[],\n}\n\nexport interface ParticlePositionOverLifetime {\n /**\n * 路程模式\n */\n asMovement?: boolean,\n /**\n * x轴位置变化信息\n */\n linearX?: NumberExpression,\n /**\n * y轴位置变化信息\n */\n linearY?: NumberExpression,\n /**\n * z轴位置变化信息\n */\n linearZ?: NumberExpression,\n /**\n * 环绕模式\n */\n asRotation?: boolean,\n /**\n * x轴环绕角度变化信息\n */\n orbitalX?: NumberExpression,\n /**\n * y轴环绕角度变化信息\n */\n orbitalY?: NumberExpression,\n /**\n * z轴环绕角度变化信息\n */\n orbitalZ?: NumberExpression,\n /**\n * 环绕中心信息\n * @default [0,0,0]\n */\n orbCenter?: vec3,\n /**\n * 终点汇聚(发射器专有参数)\n */\n forceTarget?: boolean,\n /**\n * 终点汇聚位置\n * @default [0,0,0]\n */\n target?: vec3,\n /**\n * 终点汇聚函数\n * @default 0\n */\n forceCurve?: FunctionExpression,\n /**\n * 增加一个初速度,匀速直线运动,direction为运动方向\n * @default 0\n */\n startSpeed?: NumberExpression,\n /**\n * 速度变化信息\n */\n speedOverLifetime?: FixedNumberExpression,\n /**\n * 增加一个重力,gravity为重力方向,gravityModifier为重力大小\n * @default 0\n */\n gravity?: vec3,\n /**\n * 重力变化信息\n */\n gravityOverLifetime?: FixedNumberExpression,\n}\n\nexport interface ParticleRotationOverLifetime {\n /**\n * 分轴变化开关\n */\n separateAxes?: boolean,\n /**\n * 角度模式\n */\n asRotation?: boolean,\n /**\n * x轴旋转函数\n */\n x?: NumberExpression,\n /**\n * y轴旋转函数\n */\n y?: NumberExpression,\n /**\n * z轴旋转函数(不分轴时,变化z)\n */\n z?: NumberExpression,\n}\n\nexport interface ParticleSizeOverLifetime {\n /**\n * 分轴变化开关\n */\n separateAxes?: boolean,\n /**\n * 整体大小变化信息(非分轴模式)\n */\n size?: NumberExpression,\n /**\n * x轴大小变化信息(分轴模式)\n */\n x?: NumberExpression,\n /**\n * y轴大小变化信息(分轴模式)\n */\n y?: NumberExpression,\n}\n\n/**\n * 粒子颜色变化属性\n */\nexport interface ParticleColorOverLifetime {\n /**\n * 颜色属性\n */\n color?: GradientColor,\n /**\n * 透明度属性变化值\n */\n opacity?: NumberExpression,\n}\n\n/**\n * 粒子元素雪碧图/帧动画属性\n */\nexport interface ParticleTextureSheetAnimation extends TextureSheetAnimation {\n /**\n * 帧融合(仅存在于粒子元素中),因为展示效果不好,不再支持\n */\n //blend: boolean,\n /**\n * 帧动画循环次数(仅存在于粒子元素中)变化\n */\n cycles: NumberExpression,\n /**\n * 帧动画延时(仅存在于粒子元素中), 遇随机数兼容取最小值\n */\n animationDelay?: NumberExpression,\n /**\n * 帧动画时长(仅存在于粒子元素中), 遇随机数兼容取最小值\n */\n animationDuration: NumberExpression,\n}\n\nexport interface ParticleOptions {\n /**\n * 最大粒子数\n */\n maxCount: number,\n /**\n * 粒子生命周期时长\n */\n startLifetime: NumberExpression,\n /**\n * 渲染延时\n * @default 0\n */\n startDelay?: NumberExpression,\n /**\n * 粒子颜色\n */\n startColor?: ColorExpression,\n /**\n * 粒子元素大小\n * 按照宽高比生成时:`start3DSize` 为 `false`,使用 `startSize`(宽度)和 `sizeAspect`(宽度/高度)\n * 按照具体宽高生成时:使用 `startSizeX`,`startSizeY`\n */\n startSize?: NumberExpression,\n sizeAspect?: NumberExpression,\n start3DSize?: boolean,\n startSizeX?: NumberExpression,\n startSizeY?: NumberExpression,\n /**\n * 粒子旋转角度\n */\n startRotationZ?: NumberExpression,\n startRotationX?: NumberExpression,\n startRotationY?: NumberExpression,\n\n particleFollowParent?: boolean,\n}\n\n/**\n * 粒子元素渲染属性\n */\nexport interface ParticleContent {\n // added by loader\n splits?: SplitParameter[],\n /**\n * 粒子元素基础属性\n */\n options: ParticleOptions,\n /**\n * 粒子元素材质渲染属性\n */\n renderer: RendererOptions,\n /**\n * 粒子元素发射器形状属性\n */\n shape?: ParticleShape,\n /**\n * 粒子元素发射参数属性\n */\n emission: ParticleEmission,\n /**\n * 粒子元素大小变化属性\n */\n sizeOverLifetime?: ParticleSizeOverLifetime,\n /**\n * 发射器 transform 变化\n */\n emitterTransform?: {\n /**\n * 位置变化\n */\n path?: FixedVec3Expression,\n },\n\n positionOverLifetime?: ParticlePositionOverLifetime,\n /**\n * 粒子元素旋转变化属性\n */\n rotationOverLifetime?: ParticleRotationOverLifetime,\n /**\n * 粒子元素色彩变化属性\n */\n colorOverLifetime?: ParticleColorOverLifetime,\n /**\n * 粒子元素贴图变化属性\n */\n textureSheetAnimation?: ParticleTextureSheetAnimation,\n /**\n * 粒子元素拖尾参数\n */\n trails?: ParticleTrail,\n /**\n * 粒子元素交互参数\n */\n interaction?: {\n /**\n * 交互行为\n */\n behavior?: ParticleInteractionBehavior,\n /**\n * 重叠元素响应开关\n */\n multiple?: boolean,\n /**\n * ray cast 射线拾取时 sphere 的半径\n * @default 0.4\n */\n radius?: number,\n },\n filter?: DistortionFilterParams,\n}\n\n/**\n * 粒子拖尾参数\n */\nexport interface ParticleTrail {\n /**\n * 随粒子消失开关\n */\n dieWithParticles?: boolean,\n /**\n * 拖尾声明周期\n */\n lifetime: NumberExpression,\n /**\n * 最大顶点数z\n */\n maxPointPerTrail: number,\n /**\n * 顶点长度\n */\n minimumVertexDistance: number,\n /**\n * 宽度位置变化\n */\n widthOverTrail: NumberExpression,\n /**\n * 颜色位置变化\n */\n colorOverTrail?: GradientColor,\n /**\n * 混合模式\n */\n blending: BlendingMode,\n /**\n * 颜色周期变化\n */\n colorOverLifetime?: GradientColor,\n /**\n * 继承粒子颜色开关\n */\n inheritParticleColor?: boolean,\n /**\n * 深度遮挡\n */\n occlusion?: boolean,\n /**\n * 透明遮挡\n */\n transparentOcclusion?: boolean,\n /**\n * 透明度周期变化\n */\n opacityOverLifetime?: NumberExpression,\n /**\n * 渲染顺序偏移\n * @default 0\n */\n orderOffset?: number,\n /**\n * 生命周期受粒子影响开关\n */\n sizeAffectsLifetime?: boolean,\n /**\n * 宽度受粒子影响开关\n */\n sizeAffectsWidth?: boolean,\n /**\n * 拖尾贴图\n */\n texture?: number,\n // TODO\n /**\n * 位置受父节点影响\n * 拖尾+图层绑定同一个父节点时使用\n */\n parentAffectsPosition?: boolean,\n}\n\n","import type { ShapeType } from '../type';\nimport type { NumberExpression, vec3 } from '../numberExpression';\n\nexport enum ShapeArcMode {\n /**\n * 随机\n */\n RANDOM,\n /**\n * 单向循环\n */\n UNIDIRECTIONAL_CYCLE,\n /**\n * 双向循环\n */\n BIDIRECTIONAL_CYCLE,\n /**\n * 均匀爆发\n */\n UNIFORM_BURST,\n}\n\nexport interface ParticleShapeBase {\n /**\n * 粒子形状类型\n */\n type: ShapeType,\n /**\n * 发射模式\n */\n arcMode: ShapeArcMode,\n /**\n * 运动对齐开关\n */\n alignSpeedDirection?: boolean,\n /**\n * 向上方向\n */\n upDirection?: vec3,\n /**\n * 发射方向旋转\n */\n turbulenceX?: NumberExpression,\n turbulenceY?: NumberExpression,\n turbulenceZ?: NumberExpression,\n}\n\nexport interface ParticleShapeNone {\n type: ShapeType.NONE,\n /**\n * 发射方向旋转\n */\n turbulenceX?: NumberExpression,\n turbulenceY?: NumberExpression,\n turbulenceZ?: NumberExpression,\n upDirection?: number[],\n}\n\nexport type ParticleShape =\n | ParticleShapeCone\n | ParticleShapeCircle\n | ParticleShapeSphere\n | ParticleShapeHemisphere\n | ParticleShapeDonut\n | ParticleShapeRect\n | ParticleShapeRectEdge\n | ParticleShapeTexture\n | ParticleShapeEdge\n | ParticleShapeNone\n ;\n\n/**\n * 圆锥发射器\n */\nexport interface ParticleShapeCone extends ParticleShapeBase {\n type: ShapeType.CONE,\n /**\n * 形状角度\n */\n angle: number,\n /**\n * 形状半径\n */\n radius: number,\n /**\n * 形状曲率\n */\n arc: number,\n}\n\n/**\n * 圆发射器\n */\nexport interface ParticleShapeCircle extends ParticleShapeBase {\n type: ShapeType.CIRCLE,\n /**\n * 形状半径\n */\n radius: number,\n /**\n * 形状曲率\n */\n arc: number,\n}\n\n/**\n * 圆球发射器\n */\nexport interface ParticleShapeSphere extends ParticleShapeBase {\n type: ShapeType.SPHERE,\n /**\n * 形状半径\n */\n radius: number,\n /**\n * 形状曲率\n */\n arc: number,\n}\n\n/**\n * 半球发射器\n */\nexport interface ParticleShapeHemisphere extends ParticleShapeBase {\n type: ShapeType.HEMISPHERE,\n /**\n * 形状半径\n */\n radius: number,\n /**\n * 形状曲率\n */\n arc: number,\n}\n\n/**\n * 圆环发射器\n */\nexport interface ParticleShapeDonut extends ParticleShapeBase {\n type: ShapeType.DONUT,\n /**\n * 形状半径\n */\n radius: number,\n /**\n * 圆环半径\n */\n donutRadius: number,\n /**\n * 形状曲率\n */\n arc: number,\n}\n\n/**\n * 矩形发射器\n */\nexport interface ParticleShapeRect extends ParticleShapeBase {\n type: ShapeType.RECTANGLE,\n /**\n * 宽度\n */\n width: number,\n /**\n * 高度\n */\n height: number,\n}\n\n/**\n * 矩形框发射器\n */\nexport interface ParticleShapeRectEdge extends ParticleShapeBase {\n type: ShapeType.RECTANGLE_EDGE,\n /**\n * 宽度\n */\n width: number,\n /**\n * 高度\n */\n height: number,\n}\n\n/**\n * 直线发射器\n */\nexport interface ParticleShapeEdge extends ParticleShapeBase {\n type: ShapeType.EDGE,\n /**\n * 宽度\n */\n width: number,\n}\n\n/**\n * 贴图发射器\n */\nexport interface ParticleShapeTexture extends ParticleShapeBase {\n type: ShapeType.TEXTURE,\n detail: ParticleTextureShapeDetail,\n /**\n * 贴图随机数\n */\n random: number,\n /**\n * 宽度\n */\n width: number,\n /**\n * 高度\n */\n height: number,\n}\n\n/**\n * 贴图形状数据\n */\nexport interface ParticleTextureShapeDetail {\n /**\n * 贴图形状宽度\n */\n width: number,\n /**\n * 贴图形状高度\n */\n height: number,\n /**\n * 编辑器参数\n * 对于图片栅格化时,像素区域的大小\n */\n block: [number, number],\n /**\n * 贴图形状点\n */\n anchors: number[],\n}\n","import type { BinaryEnv } from '../../binary';\nimport type { BaseItem, ItemEndBehavior } from '../base-item';\nimport type { MaterialOptions } from './material';\nimport type { GeometryPointer } from './binary';\nimport type { vec3 } from '../../numberExpression';\nimport type { InteractBehavior, ItemType } from '../../type';\nimport type { ModelAnimationTrackDataPointer } from './binary';\n\nexport type BufferType =\n | WebGLRenderingContext['FLOAT']\n | WebGLRenderingContext['INT']\n | WebGLRenderingContext['SHORT']\n | WebGLRenderingContext['BYTE']\n | WebGLRenderingContext['UNSIGNED_INT']\n | WebGLRenderingContext['UNSIGNED_SHORT']\n | WebGLRenderingContext['UNSIGNED_BYTE'];\n\nexport interface PrimitiveOptions<T extends BinaryEnv> {\n // Geometry 对象,需要 Editor 预创建\n geometry: GeometryPointer<T>,\n // glTF 展开材质对象\n material: MaterialOptions<T>,\n}\n\nexport interface SkinOptions<T extends BinaryEnv> {\n name?: string,\n joints: number[],\n skeleton?: number,\n inverseBindMatrices?: ModelAnimationTrackDataPointer<T>,\n}\n\nexport interface ModelMeshOptions<T extends BinaryEnv> {\n // 蒙皮数据对象\n skin?: SkinOptions<T>,\n // primitive 对象二进制\n primitives: PrimitiveOptions<T>[],\n // morph target 初始权重系数\n weights?: number[],\n hide?: boolean,\n parent?: number,\n}\n\nexport enum ModelBoundingType {\n box = 2,\n sphere = 3,\n}\n\nexport interface ModelItemBoundingBox {\n behavior?: InteractBehavior | number,\n type: ModelBoundingType.box,\n /**\n * 包围形状相对于元素位置的偏移\n * @default [0,0,0]\n */\n center?: vec3,\n /**\n * 包围盒的 xyz 长度,当 type 为 box 时生效\n */\n size?: vec3,\n}\n\nexport interface ModelItemBoundingSphere {\n behavior?: InteractBehavior | number,\n /**\n * 包围形状相对于元素位置的偏移\n * @default [0,0,0]\n */\n center?: vec3,\n type: ModelBoundingType.sphere,\n /**\n * 包围球的半径,当 type 为 sphere 时生效\n */\n radius: number,\n}\n\nexport type ModelItemBounding = ModelItemBoundingBox | ModelItemBoundingSphere;\n\nexport interface ModelMeshItemContent<T extends BinaryEnv> {\n options: ModelMeshOptions<T>,\n interaction?: ModelItemBounding,\n}\n\n/**\n * 模型元素\n */\nexport interface ModelMeshItem<T extends BinaryEnv> extends BaseItem {\n type: ItemType.mesh,\n pluginName: 'model',\n content: ModelMeshItemContent<T>,\n endBehavior: ItemEndBehavior,\n}\n\n","// 纹理坐标变换\nimport type { RGBAColorValue, vec2 } from '../../numberExpression';\nimport type { BinaryEnv } from '../../binary';\nimport type { SideMode } from '../../type';\nimport type { TexturePointer } from './binary';\n\nexport interface ModelTextureTransform {\n offset?: vec2,\n rotation?: number,\n scale?: vec2,\n}\n\n// 材质类型\nexport enum MaterialType {\n unlit = 'unlit',\n pbr = 'pbr',\n // 头发材质,在 pbr 材质基础上扩展\n hair = 'hair',\n}\n\n// 混合模式\nexport enum MaterialBlending {\n opaque = 100, // 不透明\n masked = 101, // 遮罩\n translucent = 102, // 半透明\n additive = 103, // 叠加\n}\n\nexport type MaterialOptions<T extends BinaryEnv> = MaterialUnlitOptions<T> | MaterialPBROptions<T>;\n\nexport interface MaterialUnlitOptions<T extends BinaryEnv> {\n name: string,\n type: MaterialType.unlit,\n // basecolor 颜色,RGBA 格式,各通道范围在 `[0, 255]` 之内。\n baseColorFactor: RGBAColorValue,\n // basecolor 贴图对应的 Galacean Effects 纹理对象\n baseColorTexture?: TexturePointer<T>,\n // basecolor 贴图的纹理坐标变换\n baseColorTextureTransform?: ModelTextureTransform,\n // basecolor 贴图的纹理坐标索引\n baseColorTextureCoordinate?: number,\n\n // 深度写入:缺省值是写入深度(true)\n depthMask?: boolean,\n // 混合模式\n blending?: MaterialBlending,\n // 正反面显示\n side?: SideMode,\n // alpha 测试值\n alphaCutOff?: number,\n}\n\nexport interface MaterialPBRBaseOptions<T extends BinaryEnv> {\n name: string,\n\n // basecolor 颜色,RGBA 格式,各通道范围在 `[0, 255]` 之内\n baseColorFactor: RGBAColorValue,\n // basecolor 贴图对应的 Galacean Effects 纹理对象\n baseColorTexture?: TexturePointer<T>,\n // basecolor 贴图的纹理坐标变换\n baseColorTextureTransform?: ModelTextureTransform,\n // basecolor 贴图的纹理坐标索引\n baseColorTextureCoordinate?: number,\n\n // 是否开启高光抗锯齿,默认是 false\n useSpecularAA?: boolean,\n // 金属度系数,范围在 `[0, 1]` 之内\n metallicFactor: number,\n // 粗超度系数,范围在 `[0, 1]` 之内\n roughnessFactor: number,\n // 金属度和粗超度贴图对应的 Galacean Effects 纹理对象。其中,G 通道是粗超度,B 通道是金属度\n metallicRoughnessTexture?: TexturePointer<T>,\n // 金属度和粗超度贴图的纹理坐标变换\n metallicRoughnessTextureTransform?: ModelTextureTransform,\n // 金属度和粗超度贴图的纹理坐标索引\n metallicRoughnessTextureCoordinate?: number,\n\n // 法线贴图对应的文件相对路径,`.png` 文件\n normalTexture?: TexturePointer<T>,\n // 法线贴图强度系数,范围在 `[0, 1]` 之内\n normalTextureScale?: number,\n // 法线贴图的纹理坐标变换\n normalTextureTransform?: ModelTextureTransform,\n // 法线贴图的纹理坐标索引\n normalTextureCoordinate?: number,\n\n // 环境光遮蔽贴图对应的 Galacean Effects 纹理对象\n occlusionTexture?: TexturePointer<T>,\n // 环境光遮蔽贴图强度系数,范围在 `[0, 1]` 之内\n occlusionTextureStrength?: number,\n // 环境光遮蔽贴图的纹理坐标变换\n occlusionTextureTransform?: ModelTextureTransform,\n // 环境光遮蔽贴图的纹理坐标索引\n occlusionTextureCoordinate?: number,\n\n // 自发光颜色,RGB 格式,各通道范围在 `[0, 255]` 之内\n emissiveFactor: RGBAColorValue,\n // 自发光强度\n emissiveIntensity: number,\n // 自发光贴图对应的的 Galacean Effects 纹理对象\n emissiveTexture?: TexturePointer<T>,\n // 自发光贴图的纹理坐标变换\n emissiveTextureTransform?: ModelTextureTransform,\n // 自发光贴图的纹理坐标索引\n emissiveTextureCoordinate?: number,\n\n // 深度写入:缺省值是写入深度(true)\n depthMask?: boolean,\n // 混合模式\n blending?: MaterialBlending,\n // 正反面显示\n side?: SideMode,\n // alpha测试值\n alphaCutOff?: number,\n\n // 是否启用阴影效果,包括投射阴影和接收阴影\n enableShadow?: boolean,\n}\n\nexport interface MaterialPBROptions<T extends BinaryEnv> extends MaterialPBRBaseOptions<T> {\n /**\n * 增加 pbr 类型参数\n */\n type: MaterialType.pbr,\n}\n\nexport interface MaterialHairOptions<T extends BinaryEnv> extends MaterialPBRBaseOptions<T> {\n /**\n * 增加头发相关参数\n */\n type: MaterialType.hair,\n // 高光偏移贴图\n specularShiftTexture?: TexturePointer<T>,\n // 光泽度,范围 `[0, 1000]`\n specularPower?: number,\n // 高光强度,范围 `[0, 1]`\n specularScale?: number,\n // 高光宽度,范围 `[0, 1]`\n specularWidth?: number,\n // 主色,RGB格式,各通道范围在 `[0, 255]` 之内。\n primaryColor?: RGBAColorValue,\n // 主色偏移,范围 `[-1, 1]`\n primaryShift?: number,\n // 辅色,RGB 格式,各通道范围在 `[0, 255]` 之内。\n secondaryColor?: RGBAColorValue,\n // 辅色偏移,范围 `[-1, 1]`\n secondaryShift?: number,\n}\n","/**\n * 3D渲染模式:将渲染过程中的中间结果输出,主要用于排查渲染效果问题,支持 pbr 和 unlit 材质\n */\nexport enum RenderMode3D {\n /**\n * 正常渲染\n */\n none = 'none',\n /**\n * 纹理坐标\n */\n uv = 'uv',\n /**\n * 世界坐标法线\n */\n normal = 'normal',\n /**\n * 基础颜色\n */\n basecolor = 'basecolor',\n /**\n * 基础颜色 Alpha\n */\n alpha = 'alpha',\n /**\n * 金属度\n */\n metallic = 'metallic',\n /**\n * 粗超度\n */\n roughness = 'roughness',\n /**\n * 环境遮蔽\n */\n ao = 'ao',\n /**\n * 自发光\n */\n emissive = 'emissive',\n}\n\n","import type { RGBAColor } from './numberExpression';\n\nexport interface StringTemplate {\n fonts: FontBase[],\n texts: Text[],\n colors: RGBAColor[], //rgba rgba(0-255), a default 255\n}\n\n/**\n * 字体资源\n * @version 2.3\n */\nexport interface FontDefine {\n /**\n * 字体资源链接\n */\n fontURL: string,\n /**\n * 字体名称\n */\n fontFamily: string,\n}\n\nexport interface FontBase {\n /**\n * 字体\n * @default \"serif\"\n */\n family?: string,\n /**\n * 像素单位(unit px)\n * @default 16\n */\n size?: number,\n /**\n * @default 400\n */\n weight?: number,\n /**\n * index to fonts array, if set it inherits properties\n * 字体属性继承\n * 如果设置了会继承指定的字体属性\n */\n extends?: number, // index to fonts Array\n /**\n * url to download font file\n * 字体文件下载地址\n */\n url?: string,\n /**\n * font style\n * @default 0\n */\n style?: FontStyle,\n\n /**\n * space between 2 chars\n * 字间距,两个字符(包括数字,英文和空格等特殊字符)的像素距离\n * @default 0\n */\n letterSpace?: number,\n}\n\nexport interface Text {\n x: number,\n y: number,\n /**\n * 变量名\n */\n n?: string,\n /**\n * content,\n * 文字内容,如果包含 $var$ 样式,内容将被替换\n */\n t: string,\n /**\n * width, if not provide use canvas.measureText() to get width\n * 文字最大宽度,如果不设置,由系统进行计算\n */\n w?: number,\n /**\n * font, index to fonts array\n * 字体,指向字体数组\n * @default 0\n */\n f?: number,\n /**\n * textAlignment\n * 字体排列\n * @default 0\n */\n a?: TextAlignment,\n /**\n * index to color array\n * 字体颜色,指向数组\n */\n c?: number,\n\n /**\n * 当文字超过最大宽度时,文字的表现行为\n * 仅当设置文字最大宽度后生效\n * @default 0\n */\n of?: TextOverflow,\n\n /**\n * 当文字overflow为ellipsis时的替换符号\n * @default \"..\"\n */\n et?: string,\n\n}\n\nexport enum TextOverflow {\n /**\n * display 模式下,会显示所有文本,存在文本超过边界框的情况。\n */\n display = 0,\n /**\n * clip 模式下,当文本内容超出边界框时,多余的会被截断。\n */\n clip = 1,\n /**\n * ellipsis 模式下,会使用(...)来代替超出边界框的内容。\n */\n ellipsis = 2,\n}\n\nexport enum TextBaseline {\n /**\n * 文本顶对齐。\n */\n top = 0,\n /**\n * 文本垂直居中对齐。\n */\n middle = 1,\n /**\n * 文本底对齐。\n */\n bottom = 2,\n}\n\nexport enum TextAlignment {\n /**\n * text alignment starts from(x,y) to right direction\n * 从(x,y)开始第一个字符,向右边延伸\n */\n left = 0,\n /**\n * (x,y) is middle position of text, where (left + right)/2 =(x,y)\n * (x,y) 为文字中间位置,(最左位置 + 最右位置)/2 = (x,y)\n */\n middle = 1,\n /**\n * text alignment ends with(x,y) from left direction\n * 从(x,y)结束最后一个字符,向左边延伸\n */\n right = 2,\n}\n\n/**\n * 文本字重\n */\nexport enum TextWeight {\n /**\n * 正常\n */\n normal = 'normal',\n /**\n * 粗体\n */\n bold = 'bold',\n /**\n * 瘦体\n */\n lighter = 'lighter',\n}\n\n/**\n * 文本样式\n */\nexport enum FontStyle {\n /**\n * 正常\n */\n normal = 'normal', // default\n /**\n * 斜体\n */\n italic = 'italic',\n /**\n * 倾斜体\n */\n oblique = 'oblique',\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\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); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\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; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\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);\r\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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\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\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\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\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import type {\n FixedNumberExpression,\n RGBAColorValue,\n ColorExpression,\n NumberExpression,\n GradientColor,\n GradientStop,\n FixedVec3Expression,\n vec4,\n vec3,\n} from '../src';\nimport { ValueType } from '../src';\n\nexport function arrAdd<T> (arr: T[], item: T): boolean | undefined {\n if (!arr.includes(item)) {\n arr.push(item);\n\n return true;\n }\n}\n\n/**\n * @deprecated 请直接使用 Array.prototype.forEach 或 for...of\n * @param object\n * @param callback\n * @returns the mutated input object\n */\nexport function forEach<T> (object: null | undefined | { [key: string]: T | Record<any, T> }, callback: (val: T, key: string) => void, thisObj?: any) {\n if (object) {\n for (const name in object) {\n if (Object.hasOwnProperty.call(object, name)) {\n callback.call(thisObj, object[name] as T, name);\n }\n }\n }\n\n return object;\n}\n\nexport function ensureFixedNumber (a: any): FixedNumberExpression | undefined {\n if (Number.isFinite(a)) {\n return [ValueType.CONSTANT, a];\n }\n if (a) {\n if (a[0] === 'lines') {\n return [ValueType.LINE, a[1]];\n }\n if (a[0] === 'curve') {\n return [ValueType.CURVE, a[1]];\n }\n if (a[0] === 'static') {\n return [ValueType.CONSTANT, a[1]];\n }\n }\n}\n\nexport function ensureFixedNumberWithRandom (a: any, p: number): FixedNumberExpression | undefined {\n if (Array.isArray(a) && a[0] === 'random') {\n return [ValueType.CONSTANT, a[1][p]];\n }\n\n return ensureFixedNumber(a);\n}\n\nexport function ensureRGBAValue (a: any): RGBAColorValue {\n if (a && a[0] === 'color') {\n return colorToArr(a[1], true);\n }\n\n return [1, 1, 1, 1];\n}\n\nexport function ensureColorExpression (a: any, normalized?: boolean): ColorExpression | undefined {\n if (a) {\n if (a[0] === 'colors') {\n return [ValueType.COLORS, a[1].map((color: any) => colorToArr(color, normalized))];\n } else if (a[0] === 'gradient') {\n return ensureGradient(a[1], normalized);\n } else if (a[0] === 'color') {\n return [ValueType.RGBA_COLOR, colorToArr(a[1], normalized)];\n }\n }\n}\n\nexport function ensureNumberExpression (a: any): NumberExpression | undefined {\n if (a && a[0] === 'random') {\n return [ValueType.RANDOM, a[1]];\n }\n\n return ensureFixedNumber(a);\n}\n\nexport function ensureValueGetter (a: any): NumberExpression | any {\n if (Array.isArray(a) && typeof a[0] === 'string') {\n return ensureNumberExpression(a) || ensureFixedVec3(a) || ensureColorExpression(a) || a;\n }\n\n return a;\n}\n\nexport function ensureGradient (a: any, normalized?: boolean): GradientColor | undefined {\n if (a) {\n let stops: GradientStop[] = [];\n\n Object.getOwnPropertyNames(a).forEach(p => {\n const stop = parsePercent(p);\n const color = colorToArr(a[p], normalized);\n\n stops.push([stop, color[0], color[1], color[2], color[3]]);\n });\n stops = stops.sort((a, b) => a[0] - b[0]);\n\n return [ValueType.GRADIENT_COLOR, stops];\n }\n}\n\nexport function colorToArr (hex: string | number[], normalized?: boolean): vec4 {\n let ret: vec4;\n\n if (typeof hex === 'string') {\n hex = hex.replace(/[\\s\\t\\r\\n]/g, '');\n let m = /rgba?\\(([.\\d]+),([.\\d]+),([.\\d]+),?([.\\d]+)?\\)/.exec(hex);\n\n if (m) {\n const a = +m[4];\n\n ret = [+m[1], +m[2], +m[3], isNaN(a) ? 255 : Math.round(a * 255)];\n } else if (/^#[a-f\\d]{3}$/i.test(hex)) {\n ret = [parseInt(hex[1] + hex[1], 16), parseInt(hex[2] + hex[2], 16), parseInt(hex[3] + hex[3], 16), 255];\n // eslint-disable-next-line no-cond-assign\n } else if (m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)) {\n ret = [parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16), 255] || [0, 0, 0, 255];\n }\n } else if (hex instanceof Array) {\n ret = [hex[0], hex[1], hex[2], isNaN(hex[3]) ? 255 : Math.round(hex[3] * 255)];\n }\n\n if (normalized) {\n // @ts-expect-error\n ret = normalizeColor(ret) as unknown as vec4;\n }\n\n // @ts-expect-error\n return ret;\n}\n\nexport function normalizeColor (a: number[]): number[] | undefined {\n if (Array.isArray(a)) {\n return a.map(i => Number.isFinite(i / 255) ? Number((i / 255).toFixed(6)) : 0);\n }\n}\n\nexport function parsePercent (c: string): number {\n const match = /^(-)?([\\d+.]+)%$/.exec(c);\n\n if (match) {\n return +match[2] / 100 * (match[1] ? -1 : 1);\n }\n\n return +c;\n}\n\nexport function getGradientColor (color: string | Array<string | number[]>, normalized?: boolean): GradientColor | undefined {\n if (Array.isArray(color)) {\n // @ts-expect-error\n return (color[0] === 'gradient' || color[0] === 'color') && ensureGradient(color[1], normalized);\n } else {\n return ensureGradient(color, normalized);\n }\n}\n\nexport function ensureFixedVec3 (a: any): FixedVec3Expression | undefined {\n if (a) {\n if (a.length === 3) {\n return [ValueType.CONSTANT_VEC3, a];\n }\n if (a[0] === 'path') {\n return [ValueType.LINEAR_PATH, a[1]];\n }\n if (a[0] === 'bezier') {\n return [ValueType.BEZIER_PATH, a[1]];\n }\n }\n}\n\nexport function objectValueToNumber (o: Record<string, any>): object {\n for (const [key, value] of Object.entries(o)) {\n o[key] = Number(value);\n }\n\n return o;\n}\n\nexport function deleteEmptyValue (o: Record<string, any>): object {\n for (const key of Object.keys(o)) {\n if (o[key] === undefined) {\n delete o[key];\n }\n }\n\n return o;\n}\n\nconst cos = Math.cos;\nconst sin = Math.sin;\nconst d2r = Math.PI / 180;\nconst r2d = 180 / Math.PI;\n\nexport function quatFromXYZRotation (out: vec4 | number[], x: number, y: number, z: number): vec4 {\n const c1 = cos((x * d2r) / 2);\n const c2 = cos((y * d2r) / 2);\n const c3 = cos((z * d2r) / 2);\n\n const s1 = sin((x * d2r) / 2);\n const s2 = sin((y * d2r) / 2);\n const s3 = sin((z * d2r) / 2);\n\n out[0] = s1 * c2 * c3 + c1 * s2 * s3;\n out[1] = c1 * s2 * c3 - s1 * c2 * s3;\n out[2] = c1 * c2 * s3 + s1 * s2 * c3;\n out[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n return out as vec4;\n}\n\nfunction clamp (v: number, min: number, max: number): number {\n return v > max ? max : (v < min ? min : v);\n}\n\nexport function rotationZYXFromQuat (out: vec3 | number[], quat: vec4): vec3 {\n const x = quat[0];\n const y = quat[1];\n const z = quat[2];\n const w = quat[3];\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n const xx = x * x2;\n const yx = y * x2;\n const yy = y * y2;\n const zx = z * x2;\n const zy = z * y2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n const m11 = 1 - yy - zz, m12 = yx - wz, m13 = zx + wy;\n const m21 = yx + wz, m22 = 1 - xx - zz, m23 = zy - wx;\n const m31 = zx - wy, m32 = zy + wx, m33 = 1 - xx - yy;\n\n out[1] = Math.asin(clamp(-m31, -1, 1)) * r2d;\n if (Math.abs(m31) < 0.9999999) {\n out[0] = Math.atan2(m32, m33) * r2d;\n out[2] = Math.atan2(m21, m11) * r2d;\n } else {\n out[0] = 0;\n out[2] = Math.atan2(-m12, m22) * r2d;\n }\n\n return out as vec3;\n}\n","import type {\n ParticleContent,\n ParticleShape,\n ParticleShapeSphere,\n ColorOverLifetime,\n DistortionFilterParams,\n} from '../src';\nimport { ShapeType } from '../src';\nimport {\n deleteEmptyValue,\n ensureColorExpression,\n ensureFixedNumber,\n ensureFixedNumberWithRandom,\n ensureFixedVec3,\n ensureNumberExpression,\n getGradientColor,\n objectValueToNumber,\n forEach,\n ensureValueGetter,\n} from './utils';\n\nexport function getStandardParticleContent (particle: any): ParticleContent {\n const options = particle.options;\n const transform = particle.transform;\n let shape: ParticleShape = {\n type: ShapeType.NONE,\n };\n\n if (particle.shape) {\n const shapeType = particle.shape.shape?.replace(/([A-Z])/g, '_$1').toUpperCase().replace(/^_/, '');\n\n shape = {\n ...particle.shape,\n type: ShapeType[shapeType as keyof typeof ShapeType],\n };\n if (particle.shape.upDirection) {\n const [x, y, z] = particle.shape.upDirection;\n\n if (x === 0 && y === 0 && z === 0) {\n delete (shape as ParticleShapeSphere).upDirection;\n }\n }\n }\n if (options.startTurbulence) {\n shape.turbulenceX = ensureNumberExpression(options.turbulenceX);\n shape.turbulenceY = ensureNumberExpression(options.turbulenceY);\n shape.turbulenceZ = ensureNumberExpression(options.turbulenceZ);\n }\n const emission = particle.emission;\n\n if (emission.bursts && emission.bursts.length > 0) {\n emission.bursts = emission.bursts.map((b: any) => objectValueToNumber(b));\n }\n if (emission.burstOffsets && emission.burstOffsets.length > 0) {\n emission.burstOffsets = emission.burstOffsets.map((b: any) => objectValueToNumber(b));\n }\n if (emission.rateOverTime) {\n emission.rateOverTime = ensureNumberExpression(emission.rateOverTime);\n }\n\n const ret: ParticleContent = {\n renderer: particle.renderer,\n shape,\n splits: particle.splits,\n emission: emission,\n options: {\n startLifetime: ensureNumberExpression(options.startLifetime)!,\n start3DSize: !!options.start3DSize,\n startSize: ensureNumberExpression(options.startSize),\n startSizeX: ensureNumberExpression(options.startSizeX),\n startSizeY: ensureNumberExpression(options.startSizeY),\n sizeAspect: ensureNumberExpression(options.sizeAspect),\n maxCount: options.maxCount,\n startDelay: ensureNumberExpression(options.startDelay),\n startColor: ensureColorExpression(options.startColor, true),\n startRotationZ: ensureNumberExpression(options.startRotation || options.startRotationZ),\n particleFollowParent: options.particleFollowParent,\n },\n };\n\n if (options.start3DRotation) {\n ret.options.startRotationX = ensureNumberExpression(options.startRotationX);\n ret.options.startRotationY = ensureNumberExpression(options.startRotationY);\n }\n\n if (particle.filter) {\n const filter = {} as DistortionFilterParams;\n\n forEach(particle.filter, function (val, key) {\n // @ts-expect-error\n filter[key] = ensureValueGetter(val);\n });\n ret.filter = filter;\n }\n if (transform && transform.path) {\n ret.emitterTransform = {\n path: ensureFixedVec3(transform.path),\n };\n }\n const sizeOverLifetime = particle.sizeOverLifetime;\n\n if (sizeOverLifetime) {\n if (sizeOverLifetime.separateAxes) {\n ret.sizeOverLifetime = {\n separateAxes: true,\n x: ensureNumberExpression(sizeOverLifetime.x),\n y: ensureNumberExpression(sizeOverLifetime.y),\n };\n } else {\n ret.sizeOverLifetime = {\n size: ensureNumberExpression(sizeOverLifetime.size),\n };\n }\n }\n const velocityOverLifetime = particle.velocityOverLifetime || {};\n let sol = velocityOverLifetime.speedOverLifetime;\n\n if (sol) {\n sol = ensureFixedNumber(sol);\n } else {\n sol = undefined;\n }\n ret.positionOverLifetime = {\n gravity: options.gravity,\n gravityOverLifetime: ensureFixedNumber(options.gravityModifier),\n startSpeed: ensureNumberExpression(options.startSpeed),\n speedOverLifetime: sol,\n asMovement: velocityOverLifetime.asMovement,\n linearX: ensureNumberExpression(velocityOverLifetime.linearX),\n linearY: ensureNumberExpression(velocityOverLifetime.linearY),\n linearZ: ensureNumberExpression(velocityOverLifetime.linearZ),\n asRotation: velocityOverLifetime.asRotation,\n orbCenter: velocityOverLifetime.orbCenter,\n orbitalX: ensureNumberExpression(velocityOverLifetime.orbitalX),\n orbitalY: ensureNumberExpression(velocityOverLifetime.orbitalY),\n orbitalZ: ensureNumberExpression(velocityOverLifetime.orbitalZ),\n forceTarget: velocityOverLifetime.forceTarget,\n target: velocityOverLifetime.target,\n forceCurve: ensureFixedNumber(velocityOverLifetime.forceCurve) as any,\n };\n deleteEmptyValue(ret.positionOverLifetime);\n const rotationOverLifetime = particle.rotationOverLifetime;\n\n if (rotationOverLifetime) {\n ret.rotationOverLifetime = {\n separateAxes: rotationOverLifetime.separateAxes,\n asRotation: rotationOverLifetime.asRotation,\n z: ensureNumberExpression(rotationOverLifetime.separateAxes ? rotationOverLifetime.z : rotationOverLifetime.angularVelocity),\n };\n if (rotationOverLifetime.separateAxes) {\n ret.rotationOverLifetime.y = ensureFixedNumber(rotationOverLifetime.y);\n ret.rotationOverLifetime.x = ensureFixedNumber(rotationOverLifetime.x);\n }\n }\n const colorOverLifetime = particle.colorOverLifetime;\n\n if (colorOverLifetime) {\n const col: ColorOverLifetime = ret.colorOverLifetime = {\n opacity: ensureFixedNumber(colorOverLifetime.opacity),\n };\n\n if (colorOverLifetime.color) {\n col.color = getGradientColor(colorOverLifetime.color);\n }\n }\n const textureSheetAnimation = particle.textureSheetAnimation;\n\n if (textureSheetAnimation) {\n ret.textureSheetAnimation = {\n row: textureSheetAnimation.row,\n col: textureSheetAnimation.col,\n total: textureSheetAnimation.total,\n animate: textureSheetAnimation.animate,\n cycles: ensureFixedNumber(textureSheetAnimation.cycles)!,\n animationDelay: ensureFixedNumberWithRandom(textureSheetAnimation.animationDelay, 0),\n animationDuration: ensureFixedNumberWithRandom(textureSheetAnimation.animationDuration, 0)!,\n };\n }\n const trials = particle.trails;\n\n if (trials) {\n ret.trails = {\n lifetime: ensureNumberExpression(trials.lifetime)!,\n dieWithParticles: trials.dieWithParticles,\n maxPointPerTrail: trials.maxPointPerTrail,\n minimumVertexDistance: trials.minimumVertexDistance,\n widthOverTrail: ensureFixedNumber(trials.widthOverTrail)!,\n colorOverTrail: trials.colorOverTrail && getGradientColor(trials.colorOverTrail, false),\n blending: trials.blending,\n colorOverLifetime: trials.colorOverLifetime && getGradientColor(trials.colorOverLifetime, false),\n inheritParticleColor: trials.inheritParticleColor,\n occlusion: trials.occlusion,\n transparentOcclusion: trials.transparentOcclusion,\n orderOffset: trials.orderOffset,\n sizeAffectsLifetime: trials.sizeAffectsLifetime,\n sizeAffectsWidth: trials.sizeAffectsWidth,\n texture: trials.texture,\n parentAffectsPosition: trials.parentAffectsPosition,\n opacityOverLifetime: ensureNumberExpression(trials.opacityOverLifetime),\n };\n }\n ret.trails && deleteEmptyValue(ret.trails);\n const interaction = particle.interaction;\n\n if (interaction) {\n ret.interaction = {\n behavior: interaction.behavior,\n radius: interaction.radius,\n multiple: interaction.multiple,\n };\n }\n\n return ret;\n}\n","import type {\n BaseItemTransform,\n NullContent,\n PositionOverLifetime,\n RotationOverLifetime,\n ColorOverLifetime,\n SpriteContent,\n} from '../src';\nimport {\n deleteEmptyValue,\n ensureFixedNumber,\n ensureFixedVec3,\n ensureRGBAValue,\n getGradientColor,\n} from './utils';\n\nexport function getStandardNullContent (sprite: any, transform: BaseItemTransform): NullContent {\n const opt = sprite.options;\n const velocityOverLifetime = sprite.velocityOverLifetime || {};\n const positionOverLifetime: PositionOverLifetime = {\n path: ensureFixedVec3(sprite.transform?.path),\n gravity: opt.gravity,\n gravityOverLifetime: ensureFixedNumber(opt.gravityModifier),\n direction: opt.direction,\n startSpeed: opt.startSpeed,\n asMovement: velocityOverLifetime.asMovement,\n linearX: ensureFixedNumber(velocityOverLifetime.linearX),\n linearY: ensureFixedNumber(velocityOverLifetime.linearY),\n linearZ: ensureFixedNumber(velocityOverLifetime.linearZ),\n asRotation: velocityOverLifetime.asRotation,\n orbCenter: velocityOverLifetime.orbCenter,\n orbitalX: ensureFixedNumber(velocityOverLifetime.orbitalX),\n orbitalY: ensureFixedNumber(velocityOverLifetime.orbitalY),\n orbitalZ: ensureFixedNumber(velocityOverLifetime.orbitalZ),\n speedOverLifetime: ensureFixedNumber(velocityOverLifetime.speedOverLifetime),\n };\n\n deleteEmptyValue(positionOverLifetime);\n const ret: NullContent = {\n options: {\n startColor: ensureRGBAValue(opt.startColor),\n },\n positionOverLifetime,\n };\n\n if (opt.startSize) {\n transform.scale = [opt.startSize, opt.startSize / (opt.sizeAspect || 1), 1];\n }\n if (opt.startRotation) {\n if (!transform.rotation) {\n transform.rotation = [0, 0, opt.startRotation];\n } else {\n transform.rotation[2] += opt.startRotation;\n }\n }\n const rotationOverLifetime = sprite.rotationOverLifetime;\n\n if (rotationOverLifetime) {\n const rot: RotationOverLifetime = ret.rotationOverLifetime = {\n separateAxes: rotationOverLifetime.separateAxes,\n asRotation: rotationOverLifetime.asRotation,\n };\n\n if (rot.separateAxes) {\n rot.x = ensureFixedNumber(rotationOverLifetime.x);\n rot.y = ensureFixedNumber(rotationOverLifetime.y);\n rot.z = ensureFixedNumber(rotationOverLifetime.z);\n } else {\n rot.z = ensureFixedNumber(rotationOverLifetime.angularVelocity);\n }\n }\n\n const colorOverLifetime = sprite.colorOverLifetime;\n\n if (colorOverLifetime) {\n const col: ColorOverLifetime = ret.colorOverLifetime = {\n opacity: ensureFixedNumber(colorOverLifetime.opacity),\n };\n\n if (colorOverLifetime.color) {\n col.color = getGradientColor(colorOverLifetime.color);\n }\n }\n const sizeOverLifetime = sprite.sizeOverLifetime;\n\n if (sizeOverLifetime) {\n ret.sizeOverLifetime = {\n separateAxes: sizeOverLifetime.separateAxes,\n size: ensureFixedNumber(sizeOverLifetime.size),\n x: ensureFixedNumber(sizeOverLifetime.x),\n y: ensureFixedNumber(sizeOverLifetime.y),\n z: ensureFixedNumber(sizeOverLifetime.z),\n };\n }\n\n return ret;\n}\n\nexport function getStandardSpriteContent (sprite: any, transform: BaseItemTransform): SpriteContent {\n const ret = getStandardNullContent(sprite, transform) as SpriteContent;\n const texAni = sprite.textureSheetAnimation;\n\n if (texAni) {\n ret.textureSheetAnimation = {\n row: texAni.row,\n col: texAni.col,\n total: texAni.total || undefined,\n animate: texAni.animate,\n };\n }\n ret.renderer = sprite.renderer;\n if (sprite.splits) {\n ret.splits = sprite.splits;\n }\n if (sprite.interaction) {\n ret.interaction = sprite.interaction;\n }\n\n return ret;\n}\n","import type { InteractContent, InteractOption } from '../src';\nimport { InteractType, InteractBehavior } from '../src';\nimport { ensureRGBAValue } from './utils';\n\nexport function getStandardInteractContent (ui: any): InteractContent {\n const options = ui.options;\n let option: InteractOption;\n\n switch (options.type) {\n case 'click': {\n option = {\n type: InteractType.CLICK,\n showPreview: options.showPreview,\n previewColor: options.previewColor && ensureRGBAValue(options.previewColor),\n behavior: options.behavior || InteractBehavior.NOTIFY,\n };\n\n break;\n }\n case 'drag': {\n option = {\n type: InteractType.DRAG,\n enableInEditor: !!options.enableInEditor,\n dxRange: options.dxRange,\n dyRange: options.dyRange,\n target: options.target,\n };\n\n break;\n }\n case 'message': {\n option = {\n type: InteractType.MESSAGE,\n };\n\n break;\n }\n default: {\n break;\n }\n }\n\n const ret: InteractContent = {\n // @ts-expect-error\n options: option,\n };\n\n return ret;\n}\n","import type { CameraContent, CameraPositionOverLifetime } from '../src/item/camera-item';\nimport type { RotationOverLifetime } from '../src';\nimport { deleteEmptyValue, ensureFixedNumber, ensureFixedVec3 } from './utils';\n\nexport function getStandardCameraContent (model: any): CameraContent {\n const opt = model.options;\n const ret: CameraContent = {\n options: {\n fov: opt.fov!,\n far: opt.far!,\n near: opt.near!,\n clipMode: opt.clipMode,\n },\n };\n\n const velocityOverLifetime = model.velocityOverLifetime;\n\n if (velocityOverLifetime || model.transform?.path) {\n const positionOverLifetime: CameraPositionOverLifetime = {\n path: ensureFixedVec3(model.transform?.path),\n linearX: ensureFixedNumber(velocityOverLifetime?.translateX),\n linearY: ensureFixedNumber(velocityOverLifetime?.translateY),\n linearZ: ensureFixedNumber(velocityOverLifetime?.translateZ),\n };\n\n deleteEmptyValue(positionOverLifetime);\n ret.positionOverLifetime = positionOverLifetime;\n }\n\n const rol = model.rotationOverLifetime;\n\n if (rol) {\n const rotationOverLifetime: RotationOverLifetime = {\n separateAxes: rol.separateAxes,\n x: ensureFixedNumber(rol?.rotateX),\n y: ensureFixedNumber(rol?.rotateY),\n z: rol.separateAxes ? ensureFixedNumber(rol?.rotateZ) : ensureFixedNumber(rol.rotation),\n };\n\n deleteEmptyValue(rotationOverLifetime);\n ret.rotationOverLifetime = rotationOverLifetime;\n }\n\n return ret;\n}\n","import { ensureFixedNumber, ensureFixedVec3, forEach } from './utils';\nimport type { FilterParams } from '../src/item/filter-item';\n\nconst convertParams = [\n 'strength',\n 'bloomAddon',\n 'colorAddon',\n 'period',\n 'waveMovement',\n 'colorThreshold',\n 'xOpacity',\n 'yOpacity',\n 'feather',\n];\nconst pathParams = [\n 'path', 'position',\n];\n\nexport function getStandardFilterContent (filter: any): FilterParams {\n const ret: Record<string, any> = {};\n\n forEach(filter, function (val, key) {\n if (convertParams.includes(key)) {\n ret[key] = ensureFixedNumber(val);\n } else if (pathParams.includes(key)) {\n ret[key] = ensureFixedVec3(val);\n } else {\n ret[key] = val;\n }\n });\n\n return ret as FilterParams;\n}\n","import type { JSONScene } from '../src/scene';\nimport { ItemType, ItemEndBehavior } from '../src';\n\n/**\n * 2.1 以下版本数据适配(mars-player@2.4.0 及以上版本支持 2.1 以下数据的适配)\n */\nexport function version21Migration (json: JSONScene): JSONScene {\n json.compositions.forEach(composition => {\n composition.items.forEach(item => {\n if (item.type === ItemType.null) {\n if (item.endBehavior === ItemEndBehavior.destroy) {\n item.endBehavior = ItemEndBehavior.freeze;\n }\n }\n });\n });\n\n json.version = '2.1';\n\n return json;\n}\n\n/**\n * 2.2 以下版本数据适配(mars-player@2.5.0 及以上版本支持 2.2 以下数据的适配)\n */\nexport function version22Migration (json: JSONScene): JSONScene {\n const singleVersion = json.version?.split('.');\n\n if (!singleVersion || Number(singleVersion[0]) > 2 || (Number(singleVersion[0]) === 2 && Number(singleVersion[1]) >= 2)) {\n return json;\n }\n\n json.compositions.forEach(composition => {\n composition.items.forEach(item => {\n if (item.type === ItemType.mesh || item.type === ItemType.light) {\n item.endBehavior = item.endBehavior as unknown === 1 ? ItemEndBehavior.destroy : item.endBehavior;\n }\n });\n });\n\n return json;\n}\n","import type {\n BaseItem,\n BaseItemTransform,\n Composition,\n CompressedImage,\n Image,\n JSONScene,\n ParticleItem,\n RenderLevel,\n SpriteItem,\n TemplateImage,\n VideoImage,\n FilterItem,\n} from '../src';\nimport { CAMERA_CLIP_MODE_NORMAL, ItemEndBehavior, ItemType } from '../src';\nimport { getStandardParticleContent } from './particle';\nimport { getStandardNullContent, getStandardSpriteContent } from './sprite';\nimport { getStandardInteractContent } from './interact';\nimport { arrAdd, quatFromXYZRotation, rotationZYXFromQuat } from './utils';\nimport { getStandardCameraContent } from './camera';\nimport { getStandardFilterContent } from './filter';\nimport { version21Migration, version22Migration } from './migration';\n\nexport * from './utils';\n\nconst v0 = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(\\w+)\\.\\d+)?$/;\nconst standardVersion = /^(\\d+)\\.(\\d+)$/;\nlet reverseParticle = false;\n\nexport function getStandardJSON (json: any): JSONScene {\n if (!json || typeof json !== 'object') {\n throw Error('expect a json object');\n }\n\n // 修正老版本数据中,meshItem以及lightItem结束行为错误问题\n version22Migration(json);\n\n if (v0.test(json.version)) {\n reverseParticle = (/^(\\d+)/).exec(json.version)?.[0] === '0';\n\n return version21Migration(getStandardJSONFromV0(json));\n }\n\n const mainVersion = standardVersion.exec(json.version)?.[1];\n\n if (mainVersion) {\n if (Number(mainVersion) < 2) {\n return version21Migration(json);\n }\n\n return json;\n }\n\n throw Error('invalid json version ' + json.version);\n}\n\nlet currentVersion: '1.0' | '1.1' | '1.3' = '1.0';\n\nfunction getStandardJSONFromV0 (json: any): JSONScene {\n currentVersion = '1.0';\n const plugins = json.plugins || [];\n\n if (json.bins?.length) {\n currentVersion = '1.3';\n }\n const requires: string[] = (json.requires || []).slice();\n const images = json.images.map((img: any, index: number) => getStandardImage(img, index, json.imageTags || []));\n const textures = json.textures || images.map((img: any, i: number) => ({ source: i, flipY: true }));\n const ret: JSONScene = {\n plugins: plugins,\n shapes: json.shapes || [],\n type: 'ge',\n version: currentVersion,\n playerVersion: json.playerVersion ?? {\n web: '',\n native: '',\n },\n compositionId: json.compositionId + '',\n compositions: json.compositions.map((comp: any) => getStandardComposition(comp, { plugins, requires })),\n images,\n imgUsage: json._imgs,\n binUsage: json.binUsage,\n spines: json.spines,\n requires: json.requires,\n textures,\n bins: (json.bins || []).slice(),\n };\n\n if (json._textures) {\n (ret as any)._textures = json._textures;\n }\n\n return ret;\n}\n\nexport function getStandardImage (image: any, index: number, imageTags: RenderLevel[]): TemplateImage | Image | CompressedImage | VideoImage {\n const renderLevel = imageTags[index];\n\n const oriY = image.oriY;\n\n if (typeof image === 'string') {\n return {\n renderLevel,\n url: image,\n oriY,\n };\n } else if (image.template) {\n return {\n url: image.url,\n template: image.template,\n webp: image.webp,\n renderLevel,\n oriY,\n };\n } else if (image.compressed) {\n return {\n url: image.url,\n oriY,\n compressed: {\n astc: image.compressed.android,\n pvrtc: image.compressed.iOS,\n },\n webp: image.webp,\n renderLevel,\n };\n } else if (image.url) {\n return {\n url: image.url,\n type: image.type,\n webp: image.webp,\n renderLevel,\n oriY,\n loop: image.loop,\n };\n } else if (image && image.sourceType) {\n return image;\n }\n throw Error('invalid image type');\n}\n\nexport function getStandardComposition (composition: any, opt: { plugins?: string[], requires?: string[] } = {}): Composition {\n const ret: Composition = {\n id: composition.id + '',\n camera: Object.assign({ clipMode: CAMERA_CLIP_MODE_NORMAL }, composition.camera),\n duration: composition.duration,\n endBehavior: composition.endBehavior,\n items: composition.items.map((item: any) => getStandardItem(item, opt)),\n name: composition.name,\n };\n const startTime = composition.startTime || composition.st;\n\n if (startTime) {\n ret.startTime = startTime;\n }\n let previewSize = composition.meta?.previewSize;\n\n if (previewSize && previewSize[0] === previewSize[1] && previewSize[0] === 0) {\n previewSize = undefined;\n }\n if (previewSize) {\n ret.previewSize = previewSize;\n }\n\n return ret;\n}\n\nconst tempQuat = [0, 0, 0, 1];\n\nconst stdAnchor = 0.5;\n\nexport function getStandardItem (item: any, opt: { plugins?: string[], requires?: string[] } = {}): SpriteItem | ParticleItem | BaseItem | FilterItem {\n let type: ItemType | string = ItemType.base;\n let transform: BaseItemTransform;\n let originContent;\n let content;\n let endBehavior: ItemEndBehavior = item.endBehavior;\n let renderLevel: RenderLevel;\n let pluginName: string;\n let duration = NaN;\n let pn: number;\n\n if (item.content) {\n type = item.type || ItemType.plugin;\n pn = item.pn;\n pluginName = item.pluginName;\n content = item.content;\n originContent = item.content;\n if (isNaN(pn) && !pluginName) {\n pluginName = content.options.type;\n }\n if (item.duration) {\n duration = item.duration;\n }\n transform = item.transform || getTransform(originContent.transform);\n if (type === ItemType.filter) {\n if (currentVersion < '1.1') {\n currentVersion = '1.1';\n }\n content = getStandardSpriteContent(originContent, transform);\n // @ts-expect-error\n content.filter = getStandardFilterContent(originContent.filter);\n }\n } else if (item.particle) {\n type = ItemType.particle;\n originContent = item.particle;\n transform = getTransform(originContent.transform, reverseParticle, true);\n content = getStandardParticleContent(originContent);\n } else if (item.sprite) {\n type = ItemType.sprite;\n originContent = item.sprite;\n transform = getTransform(originContent.transform, false, true);\n content = getStandardSpriteContent(originContent, transform);\n } else if (item.cal) {\n type = ItemType.null;\n originContent = item.cal;\n transform = getTransform(originContent.transform, false, true);\n content = getStandardNullContent(originContent, transform);\n } else if (item.ui) {\n type = ItemType.interact;\n originContent = item.ui;\n transform = getTransform(originContent.transform);\n content = getStandardInteractContent(originContent);\n transform.scale = [originContent.options.width || 1, originContent.options.height || 1, 1];\n } else if (item.model) {\n originContent = item.model;\n if (item.model.options.type === 1) {\n type = ItemType.camera;\n transform = getTransform(originContent.transform);\n content = getStandardCameraContent(originContent);\n }\n }\n if (content.renderer?.anchor) {\n const anchor = new Float32Array(content.renderer.anchor);\n\n if (anchor[0] == stdAnchor && anchor[1] == stdAnchor) {\n delete content.renderer.anchor;\n } else if (opt.requires) {\n arrAdd(opt.requires, 'anchor');\n }\n }\n if (originContent) {\n const looping = originContent.options?.looping;\n\n if (looping) {\n if (Array.isArray(looping)) {\n endBehavior = looping[1] ? ItemEndBehavior.loop : ItemEndBehavior.destroy;\n } else {\n endBehavior = ItemEndBehavior.loop;\n }\n } else {\n endBehavior = endBehavior || originContent?.options?.endBehavior || ItemEndBehavior.destroy;\n }\n if (originContent.options.renderLevel) {\n renderLevel = originContent.options.renderLevel;\n }\n if (isNaN(duration)) {\n duration = originContent.options.duration;\n }\n }\n\n const ret: BaseItem = {\n type,\n name: item.name,\n delay: item.delay,\n duration,\n id: item.id + '',\n // @ts-expect-error\n transform,\n endBehavior,\n // @ts-expect-error\n renderLevel,\n content,\n };\n\n // @ts-expect-error\n if (pluginName) {\n if (opt.plugins) {\n arrAdd(opt.plugins, pluginName);\n ret.pn = opt.plugins.indexOf(pluginName);\n } else {\n ret.pluginName = pluginName;\n }\n // @ts-expect-error\n } else if (Number.isInteger(pn)) {\n // @ts-expect-error\n ret.pn = pn;\n }\n if (item.parentId) {\n ret.parentId = item.parentId + '';\n }\n\n return ret;\n\n function getTransform (originTransform: BaseItemTransform, inverseRotation?: boolean, changeOrder?: boolean): BaseItemTransform {\n if (originTransform) {\n const transform: BaseItemTransform = {};\n const rotation = originTransform.rotation;\n\n if (rotation) {\n if (inverseRotation) {\n transform.rotation = [-rotation[0], -rotation[1], -rotation[2]];\n } else {\n transform.rotation = [rotation[0], rotation[1], rotation[2]];\n }\n if (changeOrder) {\n const q = quatFromXYZRotation(tempQuat, transform.rotation[0], transform.rotation[1], transform.rotation[2]);\n\n transform.rotation = rotationZYXFromQuat([], q);\n }\n }\n const position = originTransform.position;\n\n if (position) {\n transform.position = originTransform.position;\n }\n if (Array.isArray(originTransform.scale)) {\n transform.scale = [originTransform.scale[0] || 1, originTransform.scale[1] || 1, originTransform.scale[2] || 1];\n }\n\n return transform;\n }\n\n return {};\n }\n}\n\n"],"names":[],"mappings":";;;;;;;;;;;AAgQA;AACA;AACA;AAEA;;AAEG;AACH,IAAY,WAMX,CAAA;AAND,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,GAAA,CAAA,GAAA,GAAO,CAAA;AACP,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,IAAY,CAAA;AACZ,IAAA,WAAA,CAAA,GAAA,CAAA,GAAA,GAAO,CAAA;AACP,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,IAAY,CAAA;AACZ,IAAA,WAAA,CAAA,GAAA,CAAA,GAAA,GAAO,CAAA;AACT,CAAC,EANW,WAAW,KAAX,WAAW,GAMtB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACH,IAAY,YAiCX,CAAA;AAjCD,CAAA,UAAY,YAAY,EAAA;AACtB;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;AACH;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACR;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY,CAAA;AACZ;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa,CAAA;AACf,CAAC,EAjCW,YAAY,KAAZ,YAAY,GAiCvB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACH,IAAY,QAaX,CAAA;AAbD,CAAA,UAAY,QAAQ,EAAA;AAClB;;AAEG;AACH,IAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,GAAA,IAAA,CAAA,GAAA,QAAa,CAAA;AACb;;AAEG;AACH,IAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAY,CAAA;AACZ;;AAEG;AACH,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,IAAA,CAAA,GAAA,MAAW,CAAA;AACb,CAAC,EAbW,QAAQ,KAAR,QAAQ,GAanB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACH,IAAY,QAiBX,CAAA;AAjBD,CAAA,UAAY,QAAQ,EAAA;AAClB;;AAEG;AACH,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,QAAA,CAAA,QAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ;;AAEG;AACH,IAAA,QAAA,CAAA,QAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAoB,CAAA;AACtB,CAAC,EAjBW,QAAQ,KAAR,QAAQ,GAiBnB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACH,IAAY,SAyCX,CAAA;AAzCD,CAAA,UAAY,SAAS,EAAA;AACnB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AACd;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AACb;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAkB,CAAA;AAClB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACb,CAAC,EAzCW,SAAS,KAAT,SAAS,GAyCpB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACH,IAAY,UASX,CAAA;AATD,CAAA,UAAY,UAAU,EAAA;AACpB;;AAEG;AACH,IAAA,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACT;;AAEG;AACH,IAAA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACP,CAAC,EATW,UAAU,KAAV,UAAU,GASrB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACH,IAAY,YAcX,CAAA;AAdD,CAAA,UAAY,YAAY,EAAA;AACtB;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL;;;AAGG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACN,CAAC,EAdW,YAAY,KAAZ,YAAY,GAcvB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACH,IAAY,gBAsBX,CAAA;AAtBD,CAAA,UAAY,gBAAgB,EAAA;AAC1B;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa,CAAA;AACb;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AAEN;;AAEG;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACP,CAAC,EAtBW,gBAAgB,KAAhB,gBAAgB,GAsB3B,EAAA,CAAA,CAAA,CAAA;AAoDD;;AAEG;AACH,IAAY,QA6DX,CAAA;AA7DD,CAAA,UAAY,QAAQ,EAAA;AAClB;;AAEG;AACH,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,GAAU,CAAA;AACV;;AAEG;AACH,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,GAAY,CAAA;AACZ;;AAEG;AACH,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,GAAc,CAAA;AACd;;AAEG;AACH,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,GAAU,CAAA;AACV;;AAEG;AACH,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,GAAc,CAAA;AACd;;AAEG;AACH,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,GAAY,CAAA;AACZ;;AAEG;AACH,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,GAAY,CAAA;AACZ;;AAEG;AACH,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,GAAiB,CAAA;AACjB;;AAEG;AACH,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,GAAY,CAAA;AACZ;;AAEG;AACH,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf;;AAEG;AACH,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb;;AAEG;AACH,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb;;AAEG;AACH,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb;;AAEG;AACH,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf;;AAEG;AACH,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EA7DW,QAAQ,KAAR,QAAQ,GA6DnB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACH,IAAY,UAiBX,CAAA;AAjBD,CAAA,UAAY,UAAU,EAAA;AACpB;;AAEG;AACH,IAAA,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACT;;AAEG;AACH,IAAA,UAAA,CAAA,UAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ;;AAEG;AACH,IAAA,UAAA,CAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAkB,CAAA;AAClB;;AAEG;AACH,IAAA,UAAA,CAAA,UAAA,CAAA,sBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sBAAoB,CAAA;AACtB,CAAC,EAjBW,UAAU,KAAV,UAAU,GAiBrB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACH,IAAY,cAqCX,CAAA;AArCD,CAAA,UAAY,cAAc,EAAA;AACxB;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,wBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,wBAA0B,CAAA;AAC1B;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,0BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,0BAA4B,CAAA;AAC5B;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,6BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,6BAA+B,CAAA;AAC/B;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,6BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,6BAA+B,CAAA;AAC/B;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,4BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,4BAA8B,CAAA;AAC9B;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,+BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,+BAAiC,CAAA;AACjC;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,2BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,2BAA6B,CAAA;AAC7B;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,8BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,8BAAgC,CAAA;AAChC;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,8BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,8BAAgC,CAAA;AAClC,CAAC,EArCW,cAAc,KAAd,cAAc,GAqCzB,EAAA,CAAA,CAAA;;ACznBM,IAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,IAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,IAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,IAAM,8BAA8B,GAAG,CAAC,CAAC;AACzC,IAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,IAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,IAAM,6BAA6B,GAAG,CAAC,CAAC;AAExC,IAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC,IAAM,uBAAuB,GAAG,CAAC;;ACExC,IAAY,cASX,CAAA;AATD,CAAA,UAAY,cAAc,EAAA;AACxB;;AAEG;IACH,cAAW,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,yBAAyB,cAAA,CAAA;AACpC;;AAEG;IACH,cAAY,CAAA,cAAA,CAAA,WAAA,CAAA,GAAA,uBAAuB,eAAA,CAAA;AACrC,CAAC,EATW,cAAc,KAAd,cAAc,GASzB,EAAA,CAAA,CAAA,CAAA;AAkCD;;AAEG;AACH,IAAY,sBAqBX,CAAA;AArBD,CAAA,UAAY,sBAAsB,EAAA;AAChC;;AAEG;IACH,sBAAU,CAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,oBAAoB,aAAA,CAAA;AAC9B;;AAEG;IACH,sBAAQ,CAAA,sBAAA,CAAA,OAAA,CAAA,GAAA,kBAAkB,WAAA,CAAA;AAC1B;;AAEG;IACH,sBAAU,CAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,oBAAoB,aAAA,CAAA;AAC9B;;AAEG;IACH,sBAAU,CAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,oBAAoB,aAAA,CAAA;AAC9B;;AAEG;IACH,sBAAgB,CAAA,sBAAA,CAAA,eAAA,CAAA,GAAA,8BAA8B,mBAAA,CAAA;AAChD,CAAC,EArBW,sBAAsB,KAAtB,sBAAsB,GAqBjC,EAAA,CAAA,CAAA;;AC9ED;AACA;AACA;AAEA,IAAY,SAuEX,CAAA;AAvED,CAAA,UAAY,SAAS,EAAA;AACnB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB,CAAA;AACjB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB,CAAA;AACjB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB,CAAA;AACjB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAe,CAAA;AACf;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AACd;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAkB,CAAA;AAClB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAiB,CAAA;AACjB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAiB,CAAA;AACjB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAgB,CAAA;AAChB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAW,CAAA;AACX;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAW,CAAA;AAEX;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAiB,CAAA;AAEjB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAsB,CAAA;AACxB,CAAC,EAvEW,SAAS,KAAT,SAAS,GAuEpB,EAAA,CAAA,CAAA,CAAA;AA2ED;;AAEG;AACH,IAAY,kBAQX,CAAA;AARD,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR,IAAA,kBAAA,CAAA,kBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,kBAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR,IAAA,kBAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACd,CAAC,EARW,kBAAkB,KAAlB,kBAAkB,GAQ7B,EAAA,CAAA,CAAA;;AC/ID,IAAY,eAIX,CAAA;AAJD,CAAA,UAAY,eAAe,EAAA;IACzB,eAAU,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,oBAAoB,aAAA,CAAA;IAC9B,eAAO,CAAA,eAAA,CAAA,MAAA,CAAA,GAAA,oBAAoB,UAAA,CAAA;IAC3B,eAAS,CAAA,eAAA,CAAA,QAAA,CAAA,GAAA,mBAAmB,YAAA,CAAA;AAC9B,CAAC,EAJW,eAAe,KAAf,eAAe,GAI1B,EAAA,CAAA,CAAA,CAAA;AAED,IAAY,qBAEX,CAAA;AAFD,CAAA,UAAY,qBAAqB,EAAA;IAC/B,qBAAkB,CAAA,qBAAA,CAAA,iBAAA,CAAA,GAAA,6BAA6B,qBAAA,CAAA;AACjD,CAAC,EAFW,qBAAqB,KAArB,qBAAqB,GAEhC,EAAA,CAAA,CAAA;;ACPD;;AAEG;AACH,IAAY,2BASX,CAAA;AATD,CAAA,UAAY,2BAA2B,EAAA;AACrC;;AAEG;AACH,IAAA,2BAAA,CAAA,2BAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ;;AAEG;AACH,IAAA,2BAAA,CAAA,2BAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc,CAAA;AAChB,CAAC,EATW,2BAA2B,KAA3B,2BAA2B,GAStC,EAAA,CAAA,CAAA;;AC5BD,IAAY,YAiBX,CAAA;AAjBD,CAAA,UAAY,YAAY,EAAA;AACtB;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,sBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sBAAoB,CAAA;AACpB;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,qBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,qBAAmB,CAAA;AACnB;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa,CAAA;AACf,CAAC,EAjBW,YAAY,KAAZ,YAAY,GAiBvB,EAAA,CAAA,CAAA;;ACsBD,IAAY,iBAGX,CAAA;AAHD,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACP,IAAA,iBAAA,CAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACZ,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAG5B,EAAA,CAAA,CAAA;;ACjCD;AACA,IAAY,YAKX,CAAA;AALD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,YAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;;AAEX,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACf,CAAC,EALW,YAAY,KAAZ,YAAY,GAKvB,EAAA,CAAA,CAAA,CAAA;AAED;AACA,IAAY,gBAKX,CAAA;AALD,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,GAAA,CAAA,GAAA,QAAY,CAAA;AACZ,IAAA,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,GAAA,CAAA,GAAA,QAAY,CAAA;AACZ,IAAA,gBAAA,CAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,GAAA,CAAA,GAAA,aAAiB,CAAA;AACjB,IAAA,gBAAA,CAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,GAAA,CAAA,GAAA,UAAc,CAAA;AAChB,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,GAK3B,EAAA,CAAA,CAAA;;AC1BD;;AAEG;AACH,IAAY,YAqCX,CAAA;AArCD,CAAA,UAAY,YAAY,EAAA;AACtB;;AAEG;AACH,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb;;AAEG;AACH,IAAA,YAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT;;AAEG;AACH,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB;;AAEG;AACH,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB;;AAEG;AACH,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf;;AAEG;AACH,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB;;AAEG;AACH,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB;;AAEG;AACH,IAAA,YAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT;;AAEG;AACH,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACvB,CAAC,EArCW,YAAY,KAAZ,YAAY,GAqCvB,EAAA,CAAA,CAAA;;ACyED,IAAY,YAaX,CAAA;AAbD,CAAA,UAAY,YAAY,EAAA;AACtB;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACd,CAAC,EAbW,YAAY,KAAZ,YAAY,GAavB,EAAA,CAAA,CAAA,CAAA;AAED,IAAY,YAaX,CAAA;AAbD,CAAA,UAAY,YAAY,EAAA;AACtB;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACP;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACZ,CAAC,EAbW,YAAY,KAAZ,YAAY,GAavB,EAAA,CAAA,CAAA,CAAA;AAED,IAAY,aAgBX,CAAA;AAhBD,CAAA,UAAY,aAAa,EAAA;AACvB;;;AAGG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;;AAGG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV;;;AAGG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACX,CAAC,EAhBW,aAAa,KAAb,aAAa,GAgBxB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACH,IAAY,UAaX,CAAA;AAbD,CAAA,UAAY,UAAU,EAAA;AACpB;;AAEG;AACH,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB;;AAEG;AACH,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb;;AAEG;AACH,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAbW,UAAU,KAAV,UAAU,GAarB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACH,IAAY,SAaX,CAAA;AAbD,CAAA,UAAY,SAAS,EAAA;AACnB;;AAEG;AACH,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB;;AAEG;AACH,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAbW,SAAS,KAAT,SAAS,GAapB,EAAA,CAAA,CAAA;;ACnMD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAiBA;AACO,IAAI,QAAQ,GAAG,WAAW;AACjC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,MAAK;AACL,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C,EAAC;AA+HD;AACO,SAAS,QAAQ,CAAC,CAAC,EAAE;AAC5B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAClF,IAAI,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,OAAO;AAClD,QAAQ,IAAI,EAAE,YAAY;AAC1B,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;AAC/C,YAAY,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACpD,SAAS;AACT,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;AAC3F,CAAC;AACD;AACO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AAC7B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/D,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AACrC,IAAI,IAAI;AACR,QAAQ,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnF,KAAK;AACL,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;AAC3C,YAAY;AACZ,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7D,SAAS;AACT,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACzC,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd,CAAC;AAuHD;AACuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AACvH,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/B,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AACrF;;ACjTgB,SAAA,MAAM,CAAK,GAAQ,EAAE,IAAO,EAAA;AAC1C,IAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACvB,QAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEf,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACH,CAAC;AAED;;;;;AAKG;SACa,OAAO,CAAK,MAAgE,EAAE,QAAuC,EAAE,OAAa,EAAA;AAClJ,IAAA,IAAI,MAAM,EAAE;AACV,QAAA,KAAK,IAAM,MAAI,IAAI,MAAM,EAAE;YACzB,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,MAAI,CAAC,EAAE;AAC5C,gBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAI,CAAM,EAAE,MAAI,CAAC,CAAC;AACjD,aAAA;AACF,SAAA;AACF,KAAA;AAED,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAEK,SAAU,iBAAiB,CAAE,CAAM,EAAA;AACvC,IAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACtB,QAAA,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,KAAA;AACD,IAAA,IAAI,CAAC,EAAE;AACL,QAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;YACpB,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;YACpB,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,SAAA;AACD,QAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;YACrB,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,SAAA;AACF,KAAA;AACH,CAAC;AAEe,SAAA,2BAA2B,CAAE,CAAM,EAAE,CAAS,EAAA;AAC5D,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACzC,QAAA,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,KAAA;AAED,IAAA,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAEK,SAAU,eAAe,CAAE,CAAM,EAAA;IACrC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;QACzB,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/B,KAAA;IAED,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,CAAC;AAEe,SAAA,qBAAqB,CAAE,CAAM,EAAE,UAAoB,EAAA;AACjE,IAAA,IAAI,CAAC,EAAE;AACL,QAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;YACrB,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAC,KAAU,EAAK,EAAA,OAAA,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAA7B,EAA6B,CAAC,CAAC,CAAC;AACpF,SAAA;AAAM,aAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;YAC9B,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACzC,SAAA;AAAM,aAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;AAC3B,YAAA,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC7D,SAAA;AACF,KAAA;AACH,CAAC;AAEK,SAAU,sBAAsB,CAAE,CAAM,EAAA;IAC5C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;QAC1B,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,KAAA;AAED,IAAA,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAEK,SAAU,iBAAiB,CAAE,CAAM,EAAA;AACvC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAChD,QAAA,OAAO,sBAAsB,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACzF,KAAA;AAED,IAAA,OAAO,CAAC,CAAC;AACX,CAAC;AAEe,SAAA,cAAc,CAAE,CAAM,EAAE,UAAoB,EAAA;AAC1D,IAAA,IAAI,CAAC,EAAE;QACL,IAAI,OAAK,GAAmB,EAAE,CAAC;QAE/B,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAA,CAAC,EAAA;AACrC,YAAA,IAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YAE3C,OAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,SAAC,CAAC,CAAC;QACH,OAAK,GAAG,OAAK,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAK,EAAA,OAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;AAE1C,QAAA,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,OAAK,CAAC,CAAC;AAC1C,KAAA;AACH,CAAC;AAEe,SAAA,UAAU,CAAE,GAAsB,EAAE,UAAoB,EAAA;AACtE,IAAA,IAAI,GAAS,CAAC;AAEd,IAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,gDAAgD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,EAAE;AACL,YAAA,IAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhB,YAAA,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACnE,SAAA;AAAM,aAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACrC,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;;AAE1G,SAAA;aAAM,IAAI,CAAC,GAAG,2CAA2C,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACpE,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3F,SAAA;AACF,KAAA;SAAM,IAAI,GAAG,YAAY,KAAK,EAAE;AAC/B,QAAA,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAChF,KAAA;AAED,IAAA,IAAI,UAAU,EAAE;;AAEd,QAAA,GAAG,GAAG,cAAc,CAAC,GAAG,CAAoB,CAAC;AAC9C,KAAA;;AAGD,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAEK,SAAU,cAAc,CAAE,CAAW,EAAA;AACzC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACpB,QAAA,OAAO,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAA3D,EAA2D,CAAC,CAAC;AAChF,KAAA;AACH,CAAC;AAEK,SAAU,YAAY,CAAE,CAAS,EAAA;IACrC,IAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEzC,IAAA,IAAI,KAAK,EAAE;QACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,KAAA;IAED,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAEe,SAAA,gBAAgB,CAAE,KAAwC,EAAE,UAAoB,EAAA;AAC9F,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;QAExB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAClG,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC1C,KAAA;AACH,CAAC;AAEK,SAAU,eAAe,CAAE,CAAM,EAAA;AACrC,IAAA,IAAI,CAAC,EAAE;AACL,QAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAClB,YAAA,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AACrC,SAAA;AACD,QAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;YACnB,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,SAAA;AACD,QAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;YACrB,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,SAAA;AACF,KAAA;AACH,CAAC;AAEK,SAAU,mBAAmB,CAAE,CAAsB,EAAA;;;QACzD,KAA2B,IAAA,EAAA,GAAA,QAAA,CAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAE,CAAA,EAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA;AAAnC,YAAA,IAAA,KAAA,MAAY,CAAA,EAAA,CAAA,KAAA,EAAA,CAAA,CAAA,EAAX,GAAG,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;YACpB,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACxB,SAAA;;;;;;;;;AAED,IAAA,OAAO,CAAC,CAAC;AACX,CAAC;AAEK,SAAU,gBAAgB,CAAE,CAAsB,EAAA;;;QACtD,KAAkB,IAAA,EAAA,GAAA,QAAA,CAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAE,CAAA,EAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA;AAA7B,YAAA,IAAM,GAAG,GAAA,EAAA,CAAA,KAAA,CAAA;AACZ,YAAA,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACxB,gBAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,aAAA;AACF,SAAA;;;;;;;;;AAED,IAAA,OAAO,CAAC,CAAC;AACX,CAAC;AAED,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,IAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;AAC1B,IAAM,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;AAEpB,SAAU,mBAAmB,CAAE,GAAoB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAA;AACxF,IAAA,IAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AAC9B,IAAA,IAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AAC9B,IAAA,IAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AAE9B,IAAA,IAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AAC9B,IAAA,IAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AAC9B,IAAA,IAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AAE9B,IAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,IAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,IAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,IAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAErC,IAAA,OAAO,GAAW,CAAC;AACrB,CAAC;AAED,SAAS,KAAK,CAAE,CAAS,EAAE,GAAW,EAAE,GAAW,EAAA;IACjD,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC;AAEe,SAAA,mBAAmB,CAAE,GAAoB,EAAE,IAAU,EAAA;AACnE,IAAA,IAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,IAAA,IAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,IAAA,IAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,IAAA,IAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,IAAA,IAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACjB,IAAA,IAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACjB,IAAA,IAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACjB,IAAA,IAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,IAAA,IAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,IAAA,IAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,IAAA,IAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,IAAA,IAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,IAAA,IAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,IAAA,IAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,IAAA,IAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,IAAA,IAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,IAAA,IAAM,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAE,CAAA,GAAG,GAAG,EAAE,GAAG,EAAE,CAAgB;AACtD,IAAA,IAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAA,CAAE,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAgB;AACtD,IAAA,IAAM,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IAEtD,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE;AAC7B,QAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AACpC,QAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AACrC,KAAA;AAAM,SAAA;AACL,QAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACX,QAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AACtC,KAAA;AAED,IAAA,OAAO,GAAW,CAAC;AACrB;;AC/OM,SAAU,0BAA0B,CAAE,QAAa,EAAA;;AACvD,IAAA,IAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AACjC,IAAA,IAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;AACrC,IAAA,IAAI,KAAK,GAAkB;QACzB,IAAI,EAAE,SAAS,CAAC,IAAI;KACrB,CAAC;IAEF,IAAI,QAAQ,CAAC,KAAK,EAAE;QAClB,IAAM,SAAS,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAE,CAAA,WAAW,EAAG,CAAA,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAEnG,QAAA,KAAK,GACA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,QAAQ,CAAC,KAAK,CACjB,EAAA,EAAA,IAAI,EAAE,SAAS,CAAC,SAAmC,CAAC,EAAA,CACrD,CAAC;AACF,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE;AACxB,YAAA,IAAA,KAAA,MAAY,CAAA,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAA,CAAA,CAAA,EAArC,CAAC,QAAA,EAAE,CAAC,QAAA,EAAE,CAAC,QAA8B,CAAC;YAE7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACjC,OAAQ,KAA6B,CAAC,WAAW,CAAC;AACnD,aAAA;AACF,SAAA;AACF,KAAA;IACD,IAAI,OAAO,CAAC,eAAe,EAAE;QAC3B,KAAK,CAAC,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAChE,KAAK,CAAC,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAChE,KAAK,CAAC,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACjE,KAAA;AACD,IAAA,IAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAEnC,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACjD,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,CAAM,EAAK,EAAA,OAAA,mBAAmB,CAAC,CAAC,CAAC,CAAtB,EAAsB,CAAC,CAAC;AAC3E,KAAA;IACD,IAAI,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7D,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,UAAC,CAAM,EAAK,EAAA,OAAA,mBAAmB,CAAC,CAAC,CAAC,CAAtB,EAAsB,CAAC,CAAC;AACvF,KAAA;IACD,IAAI,QAAQ,CAAC,YAAY,EAAE;QACzB,QAAQ,CAAC,YAAY,GAAG,sBAAsB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACvE,KAAA;AAED,IAAA,IAAM,GAAG,GAAoB;QAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC3B,QAAA,KAAK,EAAA,KAAA;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;AACvB,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,OAAO,EAAE;AACP,YAAA,aAAa,EAAE,sBAAsB,CAAC,OAAO,CAAC,aAAa,CAAE;AAC7D,YAAA,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW;AAClC,YAAA,SAAS,EAAE,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC;AACpD,YAAA,UAAU,EAAE,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC;AACtD,YAAA,UAAU,EAAE,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC;AACtD,YAAA,UAAU,EAAE,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC;YACtD,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC1B,YAAA,UAAU,EAAE,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC;YACtD,UAAU,EAAE,qBAAqB,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;YAC3D,cAAc,EAAE,sBAAsB,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;YACvF,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;AACnD,SAAA;KACF,CAAC;IAEF,IAAI,OAAO,CAAC,eAAe,EAAE;QAC3B,GAAG,CAAC,OAAO,CAAC,cAAc,GAAG,sBAAsB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC5E,GAAG,CAAC,OAAO,CAAC,cAAc,GAAG,sBAAsB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAC7E,KAAA;IAED,IAAI,QAAQ,CAAC,MAAM,EAAE;QACnB,IAAM,QAAM,GAAG,EAA4B,CAAC;QAE5C,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,EAAE,GAAG,EAAA;;YAEzC,QAAM,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;AACH,QAAA,GAAG,CAAC,MAAM,GAAG,QAAM,CAAC;AACrB,KAAA;AACD,IAAA,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE;QAC/B,GAAG,CAAC,gBAAgB,GAAG;AACrB,YAAA,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC;SACtC,CAAC;AACH,KAAA;AACD,IAAA,IAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;AAEnD,IAAA,IAAI,gBAAgB,EAAE;QACpB,IAAI,gBAAgB,CAAC,YAAY,EAAE;YACjC,GAAG,CAAC,gBAAgB,GAAG;AACrB,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,CAAC,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC7C,gBAAA,CAAC,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,CAAC;aAC9C,CAAC;AACH,SAAA;AAAM,aAAA;YACL,GAAG,CAAC,gBAAgB,GAAG;AACrB,gBAAA,IAAI,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC;aACpD,CAAC;AACH,SAAA;AACF,KAAA;AACD,IAAA,IAAM,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,IAAI,EAAE,CAAC;AACjE,IAAA,IAAI,GAAG,GAAG,oBAAoB,CAAC,iBAAiB,CAAC;AAEjD,IAAA,IAAI,GAAG,EAAE;AACP,QAAA,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC9B,KAAA;AAAM,SAAA;QACL,GAAG,GAAG,SAAS,CAAC;AACjB,KAAA;IACD,GAAG,CAAC,oBAAoB,GAAG;QACzB,OAAO,EAAE,OAAO,CAAC,OAAO;AACxB,QAAA,mBAAmB,EAAE,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC;AAC/D,QAAA,UAAU,EAAE,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC;AACtD,QAAA,iBAAiB,EAAE,GAAG;QACtB,UAAU,EAAE,oBAAoB,CAAC,UAAU;AAC3C,QAAA,OAAO,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,OAAO,CAAC;AAC7D,QAAA,OAAO,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,OAAO,CAAC;AAC7D,QAAA,OAAO,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,OAAO,CAAC;QAC7D,UAAU,EAAE,oBAAoB,CAAC,UAAU;QAC3C,SAAS,EAAE,oBAAoB,CAAC,SAAS;AACzC,QAAA,QAAQ,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AAC/D,QAAA,QAAQ,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AAC/D,QAAA,QAAQ,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAC/D,WAAW,EAAE,oBAAoB,CAAC,WAAW;QAC7C,MAAM,EAAE,oBAAoB,CAAC,MAAM;AACnC,QAAA,UAAU,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,UAAU,CAAQ;KACtE,CAAC;AACF,IAAA,gBAAgB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC3C,IAAA,IAAM,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;AAE3D,IAAA,IAAI,oBAAoB,EAAE;QACxB,GAAG,CAAC,oBAAoB,GAAG;YACzB,YAAY,EAAE,oBAAoB,CAAC,YAAY;YAC/C,UAAU,EAAE,oBAAoB,CAAC,UAAU;AAC3C,YAAA,CAAC,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,YAAY,GAAG,oBAAoB,CAAC,CAAC,GAAG,oBAAoB,CAAC,eAAe,CAAC;SAC7H,CAAC;QACF,IAAI,oBAAoB,CAAC,YAAY,EAAE;YACrC,GAAG,CAAC,oBAAoB,CAAC,CAAC,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YACvE,GAAG,CAAC,oBAAoB,CAAC,CAAC,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACxE,SAAA;AACF,KAAA;AACD,IAAA,IAAM,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;AAErD,IAAA,IAAI,iBAAiB,EAAE;AACrB,QAAA,IAAM,GAAG,GAAsB,GAAG,CAAC,iBAAiB,GAAG;AACrD,YAAA,OAAO,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC;SACtD,CAAC;QAEF,IAAI,iBAAiB,CAAC,KAAK,EAAE;YAC3B,GAAG,CAAC,KAAK,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACvD,SAAA;AACF,KAAA;AACD,IAAA,IAAM,qBAAqB,GAAG,QAAQ,CAAC,qBAAqB,CAAC;AAE7D,IAAA,IAAI,qBAAqB,EAAE;QACzB,GAAG,CAAC,qBAAqB,GAAG;YAC1B,GAAG,EAAE,qBAAqB,CAAC,GAAG;YAC9B,GAAG,EAAE,qBAAqB,CAAC,GAAG;YAC9B,KAAK,EAAE,qBAAqB,CAAC,KAAK;YAClC,OAAO,EAAE,qBAAqB,CAAC,OAAO;AACtC,YAAA,MAAM,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,MAAM,CAAE;YACxD,cAAc,EAAE,2BAA2B,CAAC,qBAAqB,CAAC,cAAc,EAAE,CAAC,CAAC;YACpF,iBAAiB,EAAE,2BAA2B,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,CAAC,CAAE;SAC5F,CAAC;AACH,KAAA;AACD,IAAA,IAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AAE/B,IAAA,IAAI,MAAM,EAAE;QACV,GAAG,CAAC,MAAM,GAAG;AACX,YAAA,QAAQ,EAAE,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAE;YAClD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;AACnD,YAAA,cAAc,EAAE,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAE;AACzD,YAAA,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,gBAAgB,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC;YACvF,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,YAAA,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,gBAAgB,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC;YAChG,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;YACjD,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;YACjD,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;AACnD,YAAA,mBAAmB,EAAE,sBAAsB,CAAC,MAAM,CAAC,mBAAmB,CAAC;SACxE,CAAC;AACH,KAAA;IACD,GAAG,CAAC,MAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3C,IAAA,IAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;AAEzC,IAAA,IAAI,WAAW,EAAE;QACf,GAAG,CAAC,WAAW,GAAG;YAChB,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,QAAQ,EAAE,WAAW,CAAC,QAAQ;SAC/B,CAAC;AACH,KAAA;AAED,IAAA,OAAO,GAAG,CAAC;AACb;;ACrMgB,SAAA,sBAAsB,CAAE,MAAW,EAAE,SAA4B,EAAA;;AAC/E,IAAA,IAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AAC3B,IAAA,IAAM,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;AAC/D,IAAA,IAAM,oBAAoB,GAAyB;QACjD,IAAI,EAAE,eAAe,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC;QAC7C,OAAO,EAAE,GAAG,CAAC,OAAO;AACpB,QAAA,mBAAmB,EAAE,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC;QAC3D,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,UAAU,EAAE,oBAAoB,CAAC,UAAU;AAC3C,QAAA,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,CAAC;AACxD,QAAA,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,CAAC;AACxD,QAAA,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,CAAC;QACxD,UAAU,EAAE,oBAAoB,CAAC,UAAU;QAC3C,SAAS,EAAE,oBAAoB,CAAC,SAAS;AACzC,QAAA,QAAQ,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AAC1D,QAAA,QAAQ,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AAC1D,QAAA,QAAQ,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AAC1D,QAAA,iBAAiB,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;KAC7E,CAAC;IAEF,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;AACvC,IAAA,IAAM,GAAG,GAAgB;AACvB,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;AAC5C,SAAA;AACD,QAAA,oBAAoB,EAAA,oBAAA;KACrB,CAAC;IAEF,IAAI,GAAG,CAAC,SAAS,EAAE;QACjB,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,KAAA;IACD,IAAI,GAAG,CAAC,aAAa,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvB,YAAA,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;AAChD,SAAA;AAAM,aAAA;YACL,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC;AAC5C,SAAA;AACF,KAAA;AACD,IAAA,IAAM,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAEzD,IAAA,IAAI,oBAAoB,EAAE;AACxB,QAAA,IAAM,GAAG,GAAyB,GAAG,CAAC,oBAAoB,GAAG;YAC3D,YAAY,EAAE,oBAAoB,CAAC,YAAY;YAC/C,UAAU,EAAE,oBAAoB,CAAC,UAAU;SAC5C,CAAC;QAEF,IAAI,GAAG,CAAC,YAAY,EAAE;YACpB,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAClD,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAClD,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACnD,SAAA;AAAM,aAAA;YACL,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AACjE,SAAA;AACF,KAAA;AAED,IAAA,IAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEnD,IAAA,IAAI,iBAAiB,EAAE;AACrB,QAAA,IAAM,GAAG,GAAsB,GAAG,CAAC,iBAAiB,GAAG;AACrD,YAAA,OAAO,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC;SACtD,CAAC;QAEF,IAAI,iBAAiB,CAAC,KAAK,EAAE;YAC3B,GAAG,CAAC,KAAK,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACvD,SAAA;AACF,KAAA;AACD,IAAA,IAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEjD,IAAA,IAAI,gBAAgB,EAAE;QACpB,GAAG,CAAC,gBAAgB,GAAG;YACrB,YAAY,EAAE,gBAAgB,CAAC,YAAY;AAC3C,YAAA,IAAI,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC9C,YAAA,CAAC,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACxC,YAAA,CAAC,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACxC,YAAA,CAAC,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC;SACzC,CAAC;AACH,KAAA;AAED,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAEe,SAAA,wBAAwB,CAAE,MAAW,EAAE,SAA4B,EAAA;IACjF,IAAM,GAAG,GAAG,sBAAsB,CAAC,MAAM,EAAE,SAAS,CAAkB,CAAC;AACvE,IAAA,IAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAE5C,IAAA,IAAI,MAAM,EAAE;QACV,GAAG,CAAC,qBAAqB,GAAG;YAC1B,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;AACf,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;YAChC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;AACH,KAAA;AACD,IAAA,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC/B,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,QAAA,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5B,KAAA;IACD,IAAI,MAAM,CAAC,WAAW,EAAE;AACtB,QAAA,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACtC,KAAA;AAED,IAAA,OAAO,GAAG,CAAC;AACb;;ACnHM,SAAU,0BAA0B,CAAE,EAAO,EAAA;AACjD,IAAA,IAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;AAC3B,IAAA,IAAI,MAAsB,CAAC;IAE3B,QAAQ,OAAO,CAAC,IAAI;QAClB,KAAK,OAAO,EAAE;AACZ,YAAA,MAAM,GAAG;gBACP,IAAI,EAAE,YAAY,CAAC,KAAK;gBACxB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC;AAC3E,gBAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,gBAAgB,CAAC,MAAM;aACtD,CAAC;YAEF,MAAM;AACP,SAAA;QACD,KAAK,MAAM,EAAE;AACX,YAAA,MAAM,GAAG;gBACP,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,gBAAA,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc;gBACxC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC;YAEF,MAAM;AACP,SAAA;QACD,KAAK,SAAS,EAAE;AACd,YAAA,MAAM,GAAG;gBACP,IAAI,EAAE,YAAY,CAAC,OAAO;aAC3B,CAAC;YAEF,MAAM;AACP,SAAA;AAIF,KAAA;AAED,IAAA,IAAM,GAAG,GAAoB;;AAE3B,QAAA,OAAO,EAAE,MAAM;KAChB,CAAC;AAEF,IAAA,OAAO,GAAG,CAAC;AACb;;AC5CM,SAAU,wBAAwB,CAAE,KAAU,EAAA;;AAClD,IAAA,IAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;AAC1B,IAAA,IAAM,GAAG,GAAkB;AACzB,QAAA,OAAO,EAAE;YACP,GAAG,EAAE,GAAG,CAAC,GAAI;YACb,GAAG,EAAE,GAAG,CAAC,GAAI;YACb,IAAI,EAAE,GAAG,CAAC,IAAK;YACf,QAAQ,EAAE,GAAG,CAAC,QAAQ;AACvB,SAAA;KACF,CAAC;AAEF,IAAA,IAAM,oBAAoB,GAAG,KAAK,CAAC,oBAAoB,CAAC;IAExD,IAAI,oBAAoB,KAAI,CAAA,EAAA,GAAA,KAAK,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAA,EAAE;AACjD,QAAA,IAAM,oBAAoB,GAA+B;YACvD,IAAI,EAAE,eAAe,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC;YAC5C,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,KAAA,IAAA,IAApB,oBAAoB,KAApB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAoB,CAAE,UAAU,CAAC;YAC5D,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,KAAA,IAAA,IAApB,oBAAoB,KAApB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAoB,CAAE,UAAU,CAAC;YAC5D,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,KAAA,IAAA,IAApB,oBAAoB,KAApB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAoB,CAAE,UAAU,CAAC;SAC7D,CAAC;QAEF,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;AACvC,QAAA,GAAG,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;AACjD,KAAA;AAED,IAAA,IAAM,GAAG,GAAG,KAAK,CAAC,oBAAoB,CAAC;AAEvC,IAAA,IAAI,GAAG,EAAE;AACP,QAAA,IAAM,oBAAoB,GAAyB;YACjD,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,CAAC,EAAE,iBAAiB,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,OAAO,CAAC;YAClC,CAAC,EAAE,iBAAiB,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,OAAO,CAAC;YAClC,CAAC,EAAE,GAAG,CAAC,YAAY,GAAG,iBAAiB,CAAC,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;SACxF,CAAC;QAEF,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;AACvC,QAAA,GAAG,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;AACjD,KAAA;AAED,IAAA,OAAO,GAAG,CAAC;AACb;;ACzCA,IAAM,aAAa,GAAG;IACpB,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,cAAc;IACd,gBAAgB;IAChB,UAAU;IACV,UAAU;IACV,SAAS;CACV,CAAC;AACF,IAAM,UAAU,GAAG;AACjB,IAAA,MAAM,EAAE,UAAU;CACnB,CAAC;AAEI,SAAU,wBAAwB,CAAE,MAAW,EAAA;IACnD,IAAM,GAAG,GAAwB,EAAE,CAAC;AAEpC,IAAA,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,EAAE,GAAG,EAAA;AAChC,QAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AACnC,SAAA;AAAM,aAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACnC,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;AACjC,SAAA;AAAM,aAAA;AACL,YAAA,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAChB,SAAA;AACH,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,GAAmB,CAAC;AAC7B;;AC7BA;;AAEG;AACG,SAAU,kBAAkB,CAAE,IAAe,EAAA;AACjD,IAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,WAAW,EAAA;AACnC,QAAA,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,IAAI,EAAA;AAC5B,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;AAC/B,gBAAA,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,OAAO,EAAE;AAChD,oBAAA,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC;AAC3C,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;AAEH,IAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAErB,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;AAEG;AACG,SAAU,kBAAkB,CAAE,IAAe,EAAA;;IACjD,IAAM,aAAa,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAE/C,IAAA,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACvH,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,WAAW,EAAA;AACnC,QAAA,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,IAAI,EAAA;AAC5B,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,EAAE;gBAC/D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAsB,KAAK,CAAC,GAAG,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;AACnG,aAAA;AACH,SAAC,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,IAAI,CAAC;AACd;;AChBA,IAAM,EAAE,GAAG,qCAAqC,CAAC;AACjD,IAAM,eAAe,GAAG,gBAAgB,CAAC;AACzC,IAAI,eAAe,GAAG,KAAK,CAAC;AAEtB,SAAU,eAAe,CAAE,IAAS,EAAA;;AACxC,IAAA,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACrC,QAAA,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACrC,KAAA;;IAGD,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACzB,QAAA,eAAe,GAAG,CAAA,CAAA,EAAA,GAAA,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,CAAC,CAAC,MAAK,GAAG,CAAC;AAE7D,QAAA,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,KAAA;AAED,IAAA,IAAM,WAAW,GAAG,CAAA,EAAA,GAAA,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC,CAAC;AAE5D,IAAA,IAAI,WAAW,EAAE;AACf,QAAA,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AAC3B,YAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACjC,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IAED,MAAM,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,IAAI,cAAc,GAA0B,KAAK,CAAC;AAElD,SAAS,qBAAqB,CAAE,IAAS,EAAA;;IACvC,cAAc,GAAG,KAAK,CAAC;AACvB,IAAA,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAEnC,IAAA,IAAI,MAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;QACrB,cAAc,GAAG,KAAK,CAAC;AACxB,KAAA;AACD,IAAA,IAAM,QAAQ,GAAa,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC;AACzD,IAAA,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,GAAQ,EAAE,KAAa,EAAK,EAAA,OAAA,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAlD,EAAkD,CAAC,CAAC;AAChH,IAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,UAAC,GAAQ,EAAE,CAAS,EAAA,EAAK,QAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAA3B,EAA4B,CAAC,CAAC;AACpG,IAAA,IAAM,GAAG,GAAc;AACrB,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;AACzB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,aAAa,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA;AACnC,YAAA,GAAG,EAAE,EAAE;AACP,YAAA,MAAM,EAAE,EAAE;AACX,SAAA;AACD,QAAA,aAAa,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE;QACtC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAC,IAAS,EAAA,EAAK,OAAA,sBAAsB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAA,OAAA,EAAE,QAAQ,EAAA,QAAA,EAAE,CAAC,CAAnD,EAAmD,CAAC;AACvG,QAAA,MAAM,EAAA,MAAA;QACN,QAAQ,EAAE,IAAI,CAAC,KAAK;QACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,QAAA,QAAQ,EAAA,QAAA;QACR,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE;KAChC,CAAC;IAEF,IAAI,IAAI,CAAC,SAAS,EAAE;AACjB,QAAA,GAAW,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACzC,KAAA;AAED,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;SAEe,gBAAgB,CAAE,KAAU,EAAE,KAAa,EAAE,SAAwB,EAAA;AACnF,IAAA,IAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAErC,IAAA,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAExB,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO;AACL,YAAA,WAAW,EAAA,WAAA;AACX,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,IAAI,EAAA,IAAA;SACL,CAAC;AACH,KAAA;SAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;QACzB,OAAO;YACL,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,YAAA,WAAW,EAAA,WAAA;AACX,YAAA,IAAI,EAAA,IAAA;SACL,CAAC;AACH,KAAA;SAAM,IAAI,KAAK,CAAC,UAAU,EAAE;QAC3B,OAAO;YACL,GAAG,EAAE,KAAK,CAAC,GAAG;AACd,YAAA,IAAI,EAAA,IAAA;AACJ,YAAA,UAAU,EAAE;AACV,gBAAA,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO;AAC9B,gBAAA,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG;AAC5B,aAAA;YACD,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,YAAA,WAAW,EAAA,WAAA;SACZ,CAAC;AACH,KAAA;SAAM,IAAI,KAAK,CAAC,GAAG,EAAE;QACpB,OAAO;YACL,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,YAAA,WAAW,EAAA,WAAA;AACX,YAAA,IAAI,EAAA,IAAA;YACJ,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC;AACH,KAAA;AAAM,SAAA,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,EAAE;AACpC,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACD,IAAA,MAAM,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACpC,CAAC;AAEe,SAAA,sBAAsB,CAAE,WAAgB,EAAE,GAAqD,EAAA;;AAArD,IAAA,IAAA,GAAA,KAAA,KAAA,CAAA,EAAA,EAAA,GAAqD,GAAA,EAAA,CAAA,EAAA;AAC7G,IAAA,IAAM,GAAG,GAAgB;AACvB,QAAA,EAAE,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE;AACvB,QAAA,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,uBAAuB,EAAE,EAAE,WAAW,CAAC,MAAM,CAAC;QAChF,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,WAAW,EAAE,WAAW,CAAC,WAAW;AACpC,QAAA,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,IAAS,IAAK,OAAA,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA,EAAA,CAAC;QACvE,IAAI,EAAE,WAAW,CAAC,IAAI;KACvB,CAAC;IACF,IAAM,SAAS,GAAG,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,CAAC;AAE1D,IAAA,IAAI,SAAS,EAAE;AACb,QAAA,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,KAAA;IACD,IAAI,WAAW,GAAG,CAAA,EAAA,GAAA,WAAW,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CAAC;AAEhD,IAAA,IAAI,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;QAC5E,WAAW,GAAG,SAAS,CAAC;AACzB,KAAA;AACD,IAAA,IAAI,WAAW,EAAE;AACf,QAAA,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,KAAA;AAED,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAED,IAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE9B,IAAM,SAAS,GAAG,GAAG,CAAC;AAEN,SAAA,eAAe,CAAE,IAAS,EAAE,GAAqD,EAAA;;AAArD,IAAA,IAAA,GAAA,KAAA,KAAA,CAAA,EAAA,EAAA,GAAqD,GAAA,EAAA,CAAA,EAAA;AAC/F,IAAA,IAAI,IAAI,GAAsB,QAAQ,CAAC,IAAI,CAAC;AAC5C,IAAA,IAAI,SAA4B,CAAC;AACjC,IAAA,IAAI,aAAa,CAAC;AAClB,IAAA,IAAI,OAAO,CAAC;AACZ,IAAA,IAAI,WAAW,GAAoB,IAAI,CAAC,WAAW,CAAC;AACpD,IAAA,IAAI,WAAwB,CAAC;AAC7B,IAAA,IAAI,UAAkB,CAAC;IACvB,IAAI,QAAQ,GAAG,GAAG,CAAC;AACnB,IAAA,IAAI,EAAU,CAAC;IAEf,IAAI,IAAI,CAAC,OAAO,EAAE;QAChB,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC;AACpC,QAAA,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACb,QAAA,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7B,QAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACvB,QAAA,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;AAC7B,QAAA,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE;AAC5B,YAAA,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AACnC,SAAA;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC1B,SAAA;QACD,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACpE,QAAA,IAAI,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE;YAC5B,IAAI,cAAc,GAAG,KAAK,EAAE;gBAC1B,cAAc,GAAG,KAAK,CAAC;AACxB,aAAA;AACD,YAAA,OAAO,GAAG,wBAAwB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;;YAE7D,OAAO,CAAC,MAAM,GAAG,wBAAwB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACjE,SAAA;AACF,KAAA;SAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AACxB,QAAA,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACzB,QAAA,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;AACzE,QAAA,OAAO,GAAG,0BAA0B,CAAC,aAAa,CAAC,CAAC;AACrD,KAAA;SAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACtB,QAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;AACvB,QAAA,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/D,QAAA,OAAO,GAAG,wBAAwB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAC9D,KAAA;SAAM,IAAI,IAAI,CAAC,GAAG,EAAE;AACnB,QAAA,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;AACrB,QAAA,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC;QACzB,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/D,QAAA,OAAO,GAAG,sBAAsB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAC5D,KAAA;SAAM,IAAI,IAAI,CAAC,EAAE,EAAE;AAClB,QAAA,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACzB,QAAA,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC;AACxB,QAAA,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAClD,QAAA,OAAO,GAAG,0BAA0B,CAAC,aAAa,CAAC,CAAC;QACpD,SAAS,CAAC,KAAK,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5F,KAAA;SAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AACrB,QAAA,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE;AACjC,YAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;AACvB,YAAA,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAClD,YAAA,OAAO,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;AACnD,SAAA;AACF,KAAA;AACD,IAAA,IAAI,MAAA,OAAO,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;QAC5B,IAAM,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAEzD,QAAA,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;AACpD,YAAA,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,SAAA;aAAM,IAAI,GAAG,CAAC,QAAQ,EAAE;AACvB,YAAA,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAChC,SAAA;AACF,KAAA;AACD,IAAA,IAAI,aAAa,EAAE;QACjB,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,aAAa,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC;AAE/C,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC1B,gBAAA,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC;AAC3E,aAAA;AAAM,iBAAA;AACL,gBAAA,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC;AACpC,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,WAAW,GAAG,WAAW,KAAI,MAAA,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,OAAO,0CAAE,WAAW,CAAA,IAAI,eAAe,CAAC,OAAO,CAAC;AAC7F,SAAA;AACD,QAAA,IAAI,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE;AACrC,YAAA,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC;AACjD,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;AACnB,YAAA,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC3C,SAAA;AACF,KAAA;AAED,IAAA,IAAM,GAAG,GAAa;AACpB,QAAA,IAAI,EAAA,IAAA;QACJ,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,QAAA,QAAQ,EAAA,QAAA;AACR,QAAA,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE;;AAEhB,QAAA,SAAS,EAAA,SAAA;AACT,QAAA,WAAW,EAAA,WAAA;;AAEX,QAAA,WAAW,EAAA,WAAA;AACX,QAAA,OAAO,EAAA,OAAA;KACR,CAAC;;AAGF,IAAA,IAAI,UAAU,EAAE;QACd,IAAI,GAAG,CAAC,OAAO,EAAE;AACf,YAAA,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAChC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA;AACL,YAAA,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,SAAA;;AAEF,KAAA;AAAM,SAAA,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;;AAE/B,QAAA,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;AACb,KAAA;IACD,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnC,KAAA;AAED,IAAA,OAAO,GAAG,CAAC;AAEX,IAAA,SAAS,YAAY,CAAE,eAAkC,EAAE,eAAyB,EAAE,WAAqB,EAAA;AACzG,QAAA,IAAI,eAAe,EAAE;YACnB,IAAM,WAAS,GAAsB,EAAE,CAAC;AACxC,YAAA,IAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;AAE1C,YAAA,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,eAAe,EAAE;oBACnB,WAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,iBAAA;AAAM,qBAAA;AACL,oBAAA,WAAS,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,iBAAA;AACD,gBAAA,IAAI,WAAW,EAAE;oBACf,IAAM,CAAC,GAAG,mBAAmB,CAAC,QAAQ,EAAE,WAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBAE7G,WAAS,CAAC,QAAQ,GAAG,mBAAmB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACjD,iBAAA;AACF,aAAA;AACD,YAAA,IAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;AAE1C,YAAA,IAAI,QAAQ,EAAE;AACZ,gBAAA,WAAS,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;AAC/C,aAAA;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;AACxC,gBAAA,WAAS,CAAC,KAAK,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjH,aAAA;AAED,YAAA,OAAO,WAAS,CAAC;AAClB,SAAA;AAED,QAAA,OAAO,EAAE,CAAC;KACX;AACH;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"fallback.js","sources":["../../src/type.ts","../../src/constants.ts","../../src/composition.ts","../../src/numberExpression.ts","../../src/item/base-item.ts","../../src/item/particle-item.ts","../../src/item/particle-shape.ts","../../src/item/model/mesh.ts","../../src/item/model/material.ts","../../src/item/model/render.ts","../../src/text.ts","../node_modules/tslib/tslib.es6.js","../../fallback/utils.ts","../../fallback/particle.ts","../../fallback/sprite.ts","../../fallback/interact.ts","../../fallback/camera.ts","../../fallback/filter.ts","../../fallback/migration.ts","../../fallback/index.ts"],"sourcesContent":["import type { FixedVec3Expression, vec2, vec3, GradientColor, ShapePoints, ShapeSplits, FixedNumberExpression } from './numberExpression';\n\n/**\n * 播放器版本\n */\nexport interface PlayerVersion {\n /**\n * Web端版本号\n */\n web: string,\n /**\n * Native端版本号\n */\n native: string,\n}\n\n/*********************************************/\n/* 场景属性参数 */\n/*********************************************/\n\n/**\n * 模型属性\n */\nexport interface GLTF {\n /**\n * 模型序号\n */\n id: number,\n /**\n * 模型地址\n */\n url: string,\n /**\n * 是否复用\n */\n reuse: boolean,\n}\n\n/**\n * 形状属性\n */\nexport interface Shape {\n /**\n * 形状 ID\n */\n id: number,\n /**\n * 形状数据\n */\n shape: number[],\n}\n\n/**\n * 插件参数\n */\nexport interface Plugin {\n /**\n * 插件类型\n */\n type: PluginType,\n /**\n * 插件版本\n */\n version: string,\n}\n\n/*********************************************/\n/* 元素属性公有参数 */\n/*********************************************/\n\n/**\n * 大小变化属性\n */\nexport interface SizeOverLifetime {\n /**\n * 分轴变化开关\n */\n separateAxes?: boolean,\n /**\n * 整体大小变化信息(非分轴模式)\n */\n size?: FixedNumberExpression,\n /**\n * x轴大小变化信息(分轴模式)\n */\n x?: FixedNumberExpression,\n /**\n * y轴大小变化信息(分轴模式)\n */\n y?: FixedNumberExpression,\n /**\n * z轴大小变化信息(分轴模式)\n */\n z?: FixedNumberExpression,\n}\n\n/**\n * 旋转变化属性\n */\nexport interface RotationOverLifetime {\n /**\n * 分轴变化开关\n */\n separateAxes?: boolean,\n /**\n * 角度模式\n */\n asRotation?: boolean,\n /**\n * x 轴旋转函数\n */\n x?: FixedNumberExpression,\n /**\n * y 轴旋转函数\n */\n y?: FixedNumberExpression,\n /**\n * z 轴旋转函数(不分轴时,变化 z)\n */\n z?: FixedNumberExpression,\n}\n\n/**\n * 位置变化属性\n */\nexport interface PositionOverLifetime {\n /**\n * 路程模式\n */\n asMovement?: boolean,\n /**\n * x轴位置变化信息\n */\n linearX?: FixedNumberExpression,\n /**\n * y轴位置变化信息\n */\n linearY?: FixedNumberExpression,\n /**\n * z轴位置变化信息\n */\n linearZ?: FixedNumberExpression,\n /**\n * 环绕模式\n */\n asRotation?: boolean,\n /**\n * x轴环绕角度变化信息\n */\n orbitalX?: FixedNumberExpression,\n /**\n * y轴环绕角度变化信息\n */\n orbitalY?: FixedNumberExpression,\n /**\n * z轴环绕角度变化信息\n */\n orbitalZ?: FixedNumberExpression,\n /**\n * 环绕中心信息\n */\n orbCenter?: vec3,\n /**\n * 路径\n * @default [0,0,0]\n */\n path?: FixedVec3Expression,\n /**\n * 初速度方向\n */\n direction?: vec3,\n /**\n * 增加一个初速度,匀速直线运动,direction 为运动方向\n * @default 0\n */\n startSpeed?: number,\n /**\n * 速度变化信息\n * @default [ValueType.ConstantNumber, 0]\n */\n speedOverLifetime?: FixedNumberExpression,\n /**\n * 增加一个重力\n * gravity 为重力方向,gravityModifier 为重力大小\n * @default 0\n */\n gravity?: vec3,\n /**\n * 重力变化信息\n */\n gravityOverLifetime?: FixedNumberExpression,\n}\n\n/**\n * 颜色变化属性\n */\nexport interface ColorOverLifetime {\n /**\n * 颜色属性\n */\n color?: GradientColor,\n /**\n * 透明度属性变化值\n */\n opacity?: FixedNumberExpression,\n}\n\n/**\n * 雪碧图/帧动画属性\n */\nexport interface TextureSheetAnimation {\n /**\n * 雪碧图行数\n */\n row: number,\n /**\n * 雪碧图列数\n */\n col: number,\n /**\n * 帧动画总帧数\n * 默认 row * col\n */\n total?: number,\n /**\n * 帧动画开关\n */\n animate: boolean,\n}\n\n/**\n * 精灵图坐标属性\n */\nexport type SplitParameter = [\n /**\n * 起点[归一化坐标]\n */\n sx: number,\n /**\n * 起点[归一化坐标]\n */\n sy: number,\n /**\n * 宽度[归一化距离]\n */\n width: number,\n /**\n * 宽度[归一化距离]\n */\n height: number,\n /**\n * 是否翻转 uv 90 度\n */\n flip: 0 | 1,\n];\n\n/*********************************************/\n/* 元素属性参数类型 */\n/*********************************************/\n\n/**\n * 渲染等级\n */\nexport enum RenderLevel {\n S = 'S',\n APlus = 'A+',\n A = 'A',\n BPlus = 'B+',\n B = 'B',\n}\n\n/**\n * 混合模式\n */\nexport enum BlendingMode {\n /**\n * 普通混合模式\n */\n ALPHA = 0,\n /**\n * 叠加混合模式\n */\n ADD,\n /**\n * 相乘混合模式\n */\n MULTIPLY,\n /**\n * 亮度混合模式\n */\n BRIGHTNESS,\n /**\n * 减色混合模式\n */\n SUBTRACTION,\n /**\n * 强光混合模式\n */\n STRONG_LIGHT,\n /**\n * 弱光混合模式\n */\n WEAK_LIGHT,\n /**\n * 亮度叠加混合模式\n */\n SUPERPOSITION,\n}\n\n/**\n * 单双面模式\n */\nexport enum SideMode {\n /**\n * 双面模式\n */\n DOUBLE = 1032,\n /**\n * 正面模式\n */\n FRONT = 1028,\n /**\n * 背面模式\n */\n BACK = 1029,\n}\n\n/**\n * 蒙版模式\n */\nexport enum MaskMode {\n /**\n * 无蒙版\n */\n NONE = 0,\n /**\n * 蒙版\n */\n MASK = 1,\n /**\n * 被遮挡\n */\n OBSCURED = 2,\n /**\n * 被反向遮挡\n */\n REVERSE_OBSCURED = 3,\n}\n\n/**\n * 发射器形状\n */\nexport enum ShapeType {\n /**\n * 没有类型\n */\n NONE = 0,\n /**\n * 圆球\n */\n SPHERE = 1,\n /**\n * 圆锥\n */\n CONE = 2,\n /**\n * 半球\n */\n HEMISPHERE = 3,\n /**\n * 圆\n */\n CIRCLE = 4,\n /**\n * 圆环\n */\n DONUT = 5,\n /**\n * 矩形\n */\n RECTANGLE = 6,\n /**\n * 矩形框\n */\n RECTANGLE_EDGE = 7,\n /**\n * 直线\n */\n EDGE = 8,\n /**\n * 贴图\n */\n TEXTURE = 9,\n}\n\n/**\n * 插件类型\n */\nexport enum PluginType {\n /**\n * 陀螺仪\n */\n GYROSCOPE,\n /**\n * Spine\n */\n SPINE,\n}\n\n/**\n * 交互类型\n */\nexport enum InteractType {\n /**\n * 点击\n */\n CLICK,\n /**\n * 消息\n * 前端收到 onMessageItem 回调\n */\n MESSAGE,\n /**\n * 拖拽\n */\n DRAG,\n}\n\n/**\n * 交互行为\n */\nexport enum InteractBehavior {\n /**\n * 无\n */\n NONE,\n /**\n * 通知\n */\n NOTIFY,\n /**\n * 重置播放器\n */\n RESUME_PLAYER,\n /**\n * 清除元素\n */\n REMOVE,\n\n /**\n * 暂停播放器\n */\n PAUSE,\n}\n\n/**\n * 基础渲染属性\n */\nexport interface RendererOptions {\n /**\n * 渲染模式\n */\n renderMode?: RenderMode,\n /**\n * 混合模式\n * @default BlendingMode.ALPHA\n */\n blending?: BlendingMode,\n /**\n * 单双面模式\n */\n side?: SideMode,\n /**\n * 是否写入深度缓存\n * @default false\n */\n occlusion?: boolean,\n /**\n * 透明像素是否写入深度缓存,occlusion 为 true 时生效\n * @default false\n */\n transparentOcclusion?: boolean,\n /**\n * 贴图,索引到 scene 中的 images 数组\n */\n texture?: number,\n /**\n * 蒙版模式\n * @default none\n */\n maskMode?: MaskMode,\n /**\n * 蒙版形状,索引到 scene 的 shapes 中\n */\n shape?: number | ShapeGeometry,\n /**\n * 旋转中心\n */\n particleOrigin?: ParticleOrigin,\n /**\n * 锚点\n */\n anchor?: vec2,\n}\n\n/**\n * 元素类型\n */\nexport enum ItemType {\n /**\n * 错误元素\n */\n base = '0',\n /**\n * 图层元素\n */\n sprite = '1',\n /**\n * 粒子元素\n */\n particle = '2',\n /**\n * 空节点元素\n */\n null = '3',\n /**\n * 交互元素\n */\n interact = '4',\n /**\n * 插件元素\n */\n plugin = '5',\n /**\n * 相机元素\n */\n camera = '6',\n /**\n * 预合成元素\n */\n composition = '7',\n /**\n * 滤镜图层\n */\n filter = '8',\n /**\n * Spine 元素\n */\n spine = 'spine',\n /**\n * Mesh 元素\n */\n mesh = 'mesh',\n /**\n * 节点树元素\n */\n tree = 'tree',\n /**\n * 文本元素\n */\n text = 'text',\n /**\n * 灯光元素\n */\n light = 'light',\n /**\n * 天空盒元素\n */\n skybox = 'skybox',\n}\n\n/**\n * 渲染模式\n */\nexport enum RenderMode {\n /**\n * 广告牌模式\n */\n BILLBOARD,\n /**\n * 网格模式\n */\n MESH,\n /**\n * 垂直广告牌模式\n */\n VERTICAL_BILLBOARD,\n /**\n * 水平广告牌模式\n */\n HORIZONTAL_BILLBOARD,\n}\n\n/**\n * 变换中心\n */\nexport enum ParticleOrigin {\n /**\n * 水平和垂直中点\n */\n PARTICLE_ORIGIN_CENTER = 0,\n /**\n * 水平左侧 垂直顶部\n */\n PARTICLE_ORIGIN_LEFT_TOP = 1,\n /**\n * 水平左侧 垂直中间\n */\n PARTICLE_ORIGIN_LEFT_CENTER = 2,\n /**\n * 水平左侧 垂直底部\n */\n PARTICLE_ORIGIN_LEFT_BOTTOM = 3,\n /**\n * 水平中间 垂直顶部\n */\n PARTICLE_ORIGIN_CENTER_TOP = 4,\n /**\n * 水平中间 垂直底部\n */\n PARTICLE_ORIGIN_CENTER_BOTTOM = 5,\n /**\n * 水平右侧 垂直顶部\n */\n PARTICLE_ORIGIN_RIGHT_TOP = 6,\n /**\n * 水平右侧 垂直中间\n */\n PARTICLE_ORIGIN_RIGHT_CENTER = 7,\n /**\n * 水平右侧 垂直底部\n */\n PARTICLE_ORIGIN_RIGHT_BOTTOM = 8,\n}\n\n/**\n * 陀螺仪插件属性\n */\nexport interface PluginGyroscopeTarget {\n /**\n * 名称\n */\n name: string,\n /**\n * x轴最小值\n */\n xMin: number,\n /**\n * x轴最大值\n */\n xMax: number,\n /**\n * y轴最小值\n */\n yMin: number,\n /**\n * y轴最大值\n */\n yMax: number,\n}\n\n/**\n * 二维蒙版形状属性\n */\nexport interface ShapeGeometry {\n /**\n * 贝塞尔点信息[顶点信息 前向控制点 后向控制点]\n */\n p: ShapePoints,\n /**\n * 差值信息\n */\n s: ShapeSplits,\n}\n","export const END_BEHAVIOR_DESTROY = 0;\nexport const END_BEHAVIOR_PAUSE = 1;\nexport const END_BEHAVIOR_FORWARD = 2;\nexport const END_BEHAVIOR_PAUSE_AND_DESTROY = 3;\nexport const END_BEHAVIOR_FREEZE = 4;\nexport const END_BEHAVIOR_RESTART = 5;\nexport const END_BEHAVIOR_DESTROY_CHILDREN = 6;\n\nexport const CAMERA_CLIP_MODE_VERTICAL = 1;\nexport const CAMERA_CLIP_MODE_NORMAL = 0;\n\nexport const MESSAGE_ITEM_PHRASE_BEGIN = 2;\nexport const MESSAGE_ITEM_PHRASE_END = 1;\n","import type { Item } from './item';\nimport {\n CAMERA_CLIP_MODE_NORMAL,\n CAMERA_CLIP_MODE_VERTICAL,\n END_BEHAVIOR_DESTROY,\n END_BEHAVIOR_FORWARD,\n END_BEHAVIOR_PAUSE,\n END_BEHAVIOR_PAUSE_AND_DESTROY,\n END_BEHAVIOR_RESTART,\n} from './constants';\n\nexport enum CameraClipMode {\n /**\n * 剪裁上下\n */\n portrait = CAMERA_CLIP_MODE_VERTICAL,\n /**\n * 剪裁左右\n */\n landscape = CAMERA_CLIP_MODE_NORMAL,\n}\n\n/**\n * 相机属性\n */\nexport interface CameraOptions {\n /**\n * 视角属性\n */\n fov: number,\n /**\n * 相机远平面\n */\n far: number,\n /**\n * 相机近平面\n */\n near: number,\n /**\n * 相机位置\n * @default [0,0,8]\n */\n position?: [x: number, y: number, z: number],\n /**\n * 相机角度\n * @default [0,0,0]\n */\n rotation?: [x: number, y: number, z: number],\n /**\n * 相机剪裁模式\n */\n clipMode: CameraClipMode,\n}\n\n/**\n * 结束行为\n */\nexport enum CompositionEndBehavior {\n /**\n * 销毁\n */\n destroy = END_BEHAVIOR_DESTROY,\n /**\n * 暂停\n */\n pause = END_BEHAVIOR_PAUSE,\n /**\n * 重播\n */\n restart = END_BEHAVIOR_RESTART,\n /**\n * 无限播放\n */\n forward = END_BEHAVIOR_FORWARD,\n /**\n * 销毁并保留最后一帧\n */\n pause_destroy = END_BEHAVIOR_PAUSE_AND_DESTROY,\n}\n\n/**\n * 合成信息\n */\nexport interface Composition {\n /**\n * 合成ID\n */\n id: string,\n /**\n * 合成名称\n */\n name: string,\n /**\n * 合成持续时间\n */\n duration: number,\n\n /**\n * 合成开始播放的时间,单位妙\n * @default 0\n */\n startTime?: number,\n /**\n * 合成结束行为\n */\n endBehavior: CompositionEndBehavior,\n /**\n * 合成相机信息\n */\n camera: CameraOptions,\n /**\n * 元素信息\n */\n items: Item[],\n /**\n * 合成视窗预览大小\n * 如果没有提供,默认为 player 的 container 大小\n * @default [0,0]\n */\n previewSize?: [width: number, height: number],\n /**\n * 降级图\n */\n fallbackImage?: string,\n}\n","/*********************************************/\n/* 基本数值属性参数 */\n/*********************************************/\n\nexport enum ValueType {\n /**\n * 常数\n */\n CONSTANT = 0,\n /**\n * 二维常数向量\n */\n CONSTANT_VEC2 = 1,\n /**\n * 三维常数向量\n */\n CONSTANT_VEC3 = 2,\n /**\n * 四维常数向量\n */\n CONSTANT_VEC4 = 3,\n /**\n * 随机数\n */\n RANDOM = 4,\n /**\n * 直线\n */\n LINE = 5,\n /**\n * 曲线\n */\n CURVE = 6,\n /**\n * 贝塞尔路径\n */\n BEZIER_PATH = 7,\n /**\n * 颜色\n */\n RGBA_COLOR = 8,\n /**\n * 渐变色\n */\n GRADIENT_COLOR = 9,\n /**\n * 蒙版形状点集\n */\n SHAPE_POINTS = 10,\n /**\n * 蒙版形状切分\n */\n SHAPE_SPLITS = 11,\n /**\n *直线路径\n */\n LINEAR_PATH = 12,\n /**\n * 多色\n */\n COLORS = 13,\n /**\n * 二进制指针\n */\n BINARY = 20,\n\n /**\n * 贝塞尔曲线\n */\n BEZIER_CURVE = 21,\n\n /**\n * 贝塞尔曲线路径\n */\n BEZIER_CURVE_PATH = 22,\n}\n\nexport type vec2 = [x: number, y: number];\nexport type vec3 = [x: number, y: number, z: number];\nexport type vec4 = [x: number, y: number, z: number, w: number];\nexport type mat2 = [m11: number, m12: number, m21: number, m22: number];\nexport type mat3 = [\n m11: number, m12: number, m13: number,\n m21: number, m22: number, m23: number,\n m31: number, m32: number, m33: number,\n];\nexport type mat4 = [\n m11: number, m12: number, m13: number, m14: number,\n m21: number, m22: number, m23: number, m24: number,\n m31: number, m32: number, m33: number, m34: number,\n m41: number, m42: number, m43: number, m44: number\n];\n\n/*********************************************/\n/* 数值属性参数 */\n/*********************************************/\nexport type FunctionExpression = LineValue | CurveValue | BezierValue;\nexport type FixedNumberExpression = ConstantNumber | LineValue | CurveValue | BezierValue;\nexport type NumberExpression = FixedNumberExpression | RandomValue;\n\nexport type FixedVec3Expression = ConstantVec3 | BezierPath | LinearPath | BezierCurvePath;\n\n/**\n * 常数数值\n * [0,5]\n * [1,[1,2]]\n * [2,[1,2,3]]\n */\nexport type ConstantNumber = [type: ValueType.CONSTANT, value: number];\n\nexport type ConstantVec2 = [type: ValueType.CONSTANT_VEC2, value: vec2];\n\nexport type ConstantVec3 = [type: ValueType.CONSTANT_VEC3, value: vec3];\n\nexport type ConstantVec4 = [type: ValueType.CONSTANT_VEC4, value: vec4];\n\n/**\n * 随机数数值\n */\nexport type RandomValue = [type: ValueType.RANDOM, value: [min: number, max: number]];\n\n/**\n * 直线段数值\n */\nexport type LineValue = [type: ValueType.LINE, value: [time: number, value: number][]];\n\nexport type CurveEasingPoint = [time: number, value: number, tanIn: number, tanOut: number];\n/**\n * 曲线段数值\n */\nexport type CurveValue = [type: ValueType.CURVE, value: CurveEasingPoint[]];\n\n/**\n * 贝塞尔路径数值\n */\nexport type BezierPath = [type: ValueType.BEZIER_PATH, value: BezierPathValue];\n\nexport type BezierPathValue = [\n easing: CurveEasingPoint[],\n points: vec3[],\n controlPoints: vec3[],\n];\n\nexport type LinearPath = [type: ValueType.LINEAR_PATH, value: LinearPathValue];\n\nexport type LinearPathValue = [\n easing: CurveEasingPoint[],\n points: vec3[],\n];\n\n/**\n * 关键帧类型\n */\nexport enum BezierKeyframeType {\n AUTO = 0, // 自动\n EASE = 1, // 缓动\n EASE_IN = 2, // 缓入\n EASE_OUT = 3, // 缓出\n LINE = 4, // 线性 (默认进)\n HOLD = 5, // 定格\n LINE_OUT = 6, // 线性出\n}\n\n/**\n * 缓动关键帧数据(有三个点:左曲线控制点、曲线点、右曲线控制点,auto:自动关键帧)\n */\nexport type EaseKeyframeValue = [\n type: BezierKeyframeType.EASE,\n value: [x1: number, y1: number, x2: number, y2: number, x3: number, y3: number],\n markType?: BezierKeyframeType,\n];\n\n/**\n * 缓入关键帧数据(有两个点:左曲线控制点、曲线点)\n */\nexport type EaseInKeyframeValue = [\n type: BezierKeyframeType.EASE_IN,\n value: [x1: number, y1: number, x2: number, y2: number],\n markType?: BezierKeyframeType,\n];\n\n/**\n * 缓出关键帧数据(有两个点:曲线点、右曲线控制点)\n */\nexport type EaseOutKeyframeValue = [\n type: BezierKeyframeType.EASE_OUT,\n value: [x2: number, y2: number, x3: number, y3: number],\n markType?: BezierKeyframeType,\n];\n\n/**\n * 线性关键帧数据(有一个点:曲线点)\n */\nexport type LineKeyframeValue = [\n type: BezierKeyframeType.LINE,\n value: [x2: number, y2: number],\n markType?: BezierKeyframeType,\n];\n\n/**\n * 缓动定格出关键帧(有两个点:左曲线控制点、曲线点)\n */\nexport type EaseHoldOutKeyframeValue = [\n type: BezierKeyframeType.HOLD,\n value: [x1: number, y1: number, x2: number, y2: number],\n markType: BezierKeyframeType.EASE_IN,\n];\n/**\n * 缓动定格出关键帧(有两个点:曲线点、右曲线控制点)\n */\nexport type EaseHoldInKeyframeValue = [\n type: BezierKeyframeType.HOLD,\n value: [x1: number, y1: number, x2: number, y2: number],\n markType: BezierKeyframeType.EASE_OUT,\n];\n/**\n * 线性定格出关键帧(有一个点:曲线点)\n */\nexport type LineHoldOutKeyframeValue = [\n type: BezierKeyframeType.HOLD,\n value: [x2: number, y2: number],\n markType: BezierKeyframeType.LINE,\n];\n/**\n * 线性定格进关键帧(有一个点:曲线点)\n */\nexport type LineHoldInKeyframeValue = [\n type: BezierKeyframeType.HOLD,\n value: [x2: number, y2: number],\n markType: BezierKeyframeType.LINE_OUT,\n];\n/**\n * 定格进出关键帧(有一个点:曲线点)\n */\nexport type HoldInOutKeyframeValue = [\n type: BezierKeyframeType.HOLD,\n value: [x2: number, y2: number],\n markType: BezierKeyframeType.HOLD,\n];\n\n/**\n * 定格关键帧\n */\nexport type HoldKeyframeValue =\n | EaseHoldOutKeyframeValue\n | EaseHoldInKeyframeValue\n | LineHoldOutKeyframeValue\n | LineHoldInKeyframeValue\n | HoldInOutKeyframeValue;\n\n/**\n * 贝塞尔关键帧值\n */\nexport type BezierKeyframeValue =\n | EaseKeyframeValue\n | EaseInKeyframeValue\n | EaseOutKeyframeValue\n | LineKeyframeValue\n | HoldKeyframeValue;\n\n/**\n * 贝塞尔关键帧\n */\nexport type BezierValue = [type: ValueType.BEZIER_CURVE, value: BezierKeyframeValue[]];\n\n/**\n * 贝塞尔曲线路径关键帧值\n */\nexport type BezierCurvePathValue = [easing: BezierKeyframeValue[], points: vec3[], controlePoints: vec3[]];\n\n/**\n * 贝塞尔曲线路径关键帧\n */\nexport type BezierCurvePath = [type: ValueType.BEZIER_CURVE_PATH, value: BezierCurvePathValue];\n\n/*********************************************/\n/* 颜色属性参数 */\n/*********************************************/\n\nexport type ColorExpression = RGBAColor | GradientColor | RGBAColors;\n\n/**\n * rgba range in [0,255]\n */\nexport type RGBAColorValue = [r: number, g: number, b: number, a: number];\n/**\n * 颜色数值\n */\nexport type RGBAColor = [type: ValueType.RGBA_COLOR, value: RGBAColorValue];\n\n/**\n * 渐变色数值\n */\nexport type GradientStop = [stop: number, r: number, g: number, b: number, a: number];\nexport type GradientColor = [type: ValueType.GRADIENT_COLOR, value: GradientStop[]];\nexport type RGBAColors = [type: ValueType.COLORS, value: RGBAColorValue[]];\n\n/*********************************************/\n/* 蒙版形状属性参数 */\n/*********************************************/\n\n/**\n * 蒙版形状控制点数值\n */\nexport type ShapePoints = [type: ValueType.SHAPE_POINTS, value: [x: number, y: number, xIn: number, yIn: number, xOut: number, yOut: number][]];\n\n/**\n * 蒙版形状采样分割点数值\n */\nexport type ShapeSplits = [type: ValueType.SHAPE_SPLITS, value: number[][]];\n","import type { ItemType, RenderLevel } from '../type';\nimport type { NullContent } from './null-item';\nimport type { PluginContent } from './plugin-item';\nimport type { SpriteContent } from './sprite-item';\nimport type { InteractContent } from './interact-item';\nimport type { ParticleContent } from './particle-item';\nimport type { CompositionContent } from './composition-item';\nimport {\n END_BEHAVIOR_DESTROY,\n END_BEHAVIOR_DESTROY_CHILDREN,\n END_BEHAVIOR_FREEZE,\n END_BEHAVIOR_RESTART,\n} from '../constants';\nimport type { vec3, vec4 } from '../numberExpression';\nimport type { CameraContent } from './camera-item';\nimport type { FilterContent } from '../../src/item/filter-item';\nimport type { TextContent } from './text-item';\n\nexport enum ItemEndBehavior {\n destroy = END_BEHAVIOR_DESTROY,\n loop = END_BEHAVIOR_RESTART,\n freeze = END_BEHAVIOR_FREEZE,\n}\n\nexport enum ParentItemEndBehavior {\n destroyChildren = END_BEHAVIOR_DESTROY_CHILDREN\n}\n\nexport interface BaseItem {\n /**\n * 元素 id\n * 非预合成的元素 id 为 int 类型的数字字符串\n * 预合成元素 id 为 `'{ref元素id}+{合成内id}'` 字符串\n */\n id: string,\n /**\n * 元素名称\n */\n name: string,\n /**\n * 元素时常,单位秒\n */\n duration: number,\n /**\n * 元素类型,string 类型\n * Galacean Effects 内部元素使用 int 数字字符串\n * plugin 模块实现者自由实现命名\n * 2022.12更新: spine: \"spine\", 陀螺仪: \"5\"\n */\n type: ItemType | string,\n /**\n * 父节点ID\n * 如果父节点无法找到,播放将直接报错\n */\n parentId?: string,\n /**\n * 元素可视状态\n * 如果为 true 或者不存在时,元素可见\n * 仅当为 false 时,元素不被创建\n */\n visible?: boolean,\n /**\n * 元素结束行为\n * @default destroy\n */\n endBehavior: ItemEndBehavior | ParentItemEndBehavior,\n /**\n * 元素播放延时(单位秒)\n * @default 0\n */\n delay?: number,\n /**\n * 元素渲染信息属性\n */\n content: BaseContent,\n /**\n * 元素渲染等级\n */\n renderLevel?: RenderLevel,\n /**\n * 元素的插件模块名,如果不指定,则和 type 相同\n * 从数组的 plugins 中获取 name\n * 例如:pn:1, plugins:[\"model@1.0\",'spine@1.0']\n * pn 实际为 spine\n */\n pn?: number,\n /**\n * 元素的插件模块名, 优先级高于 pn\n */\n pluginName?: string,\n /**\n * 元素的基础位置\n */\n transform?: BaseItemTransform,\n}\n\nexport interface BaseItemTransform {\n /**\n * 位置\n * @default [0,0,0]\n */\n position?: vec3,\n /**\n * 欧拉角旋转\n * @default [0,0,0]\n */\n rotation?: vec3,\n /**\n * 缩放\n * @default [1,1,1]\n */\n scale?: vec3,\n /**\n * 四元素,其他库转为 Galacean Effects 的 rotation 不方便时,可以用 quat,\n * 有 quat 的情况下,忽略 rotation\n * 编辑器不提供编辑此字段,由程序生成\n */\n quat?: vec4,\n}\n\nexport type BaseContent =\n | SpriteContent\n | ParticleContent\n | NullContent\n | InteractContent\n | PluginContent\n | CompositionContent\n | CameraContent\n | FilterContent\n | TextContent\n | any\n ;\n","import type {\n ItemType,\n RendererOptions,\n TextureSheetAnimation,\n BlendingMode,\n SplitParameter,\n} from '../type';\nimport type {\n FixedNumberExpression,\n NumberExpression,\n GradientColor,\n vec3, FixedVec3Expression,\n ColorExpression,\n FunctionExpression,\n} from '../numberExpression';\nimport type { BaseItem, ItemEndBehavior } from './base-item';\nimport type { ParticleShape } from './particle-shape';\nimport type { DistortionFilterParams } from './filter-item';\n\n/**\n * 粒子交互行为\n */\nexport enum ParticleInteractionBehavior {\n /**\n * 无\n */\n none,\n /**\n * 移出粒子\n */\n removeParticle,\n}\n\n/**\n * 粒子元素\n */\nexport interface ParticleItem extends BaseItem {\n /**\n * 元素类型[指定为particle]\n */\n type: ItemType.particle,\n /**\n * 粒子元素渲染信息\n */\n content: ParticleContent,\n endBehavior: ItemEndBehavior,\n}\n\n/**\n * 发射器参数\n */\nexport interface ParticleEmission {\n /**\n * 每秒发射数\n * @default 0\n */\n rateOverTime: NumberExpression,\n /**\n * 粒子集中发射参数\n */\n bursts?: {\n /**\n * 爆发时间\n */\n time: number,\n /**\n * 爆发粒子数量\n */\n count: number,\n /**\n * 周期\n * @default 0\n */\n cycles?: number,\n /**\n * 爆发时间间隔,单位秒\n * @default 0\n */\n interval?: number,\n }[],\n /**\n * 粒子集中发射偏移参数\n */\n burstOffsets?: {\n /**\n * 爆发的索引\n */\n index: number,\n /**\n * x方向偏移值\n */\n x: number,\n /**\n * y方向偏移值\n */\n y: number,\n /**\n * z方向偏移值\n */\n z: number,\n }[],\n}\n\nexport interface ParticlePositionOverLifetime {\n /**\n * 路程模式\n */\n asMovement?: boolean,\n /**\n * x轴位置变化信息\n */\n linearX?: NumberExpression,\n /**\n * y轴位置变化信息\n */\n linearY?: NumberExpression,\n /**\n * z轴位置变化信息\n */\n linearZ?: NumberExpression,\n /**\n * 环绕模式\n */\n asRotation?: boolean,\n /**\n * x轴环绕角度变化信息\n */\n orbitalX?: NumberExpression,\n /**\n * y轴环绕角度变化信息\n */\n orbitalY?: NumberExpression,\n /**\n * z轴环绕角度变化信息\n */\n orbitalZ?: NumberExpression,\n /**\n * 环绕中心信息\n * @default [0,0,0]\n */\n orbCenter?: vec3,\n /**\n * 终点汇聚(发射器专有参数)\n */\n forceTarget?: boolean,\n /**\n * 终点汇聚位置\n * @default [0,0,0]\n */\n target?: vec3,\n /**\n * 终点汇聚函数\n * @default 0\n */\n forceCurve?: FunctionExpression,\n /**\n * 增加一个初速度,匀速直线运动,direction为运动方向\n * @default 0\n */\n startSpeed?: NumberExpression,\n /**\n * 速度变化信息\n */\n speedOverLifetime?: FixedNumberExpression,\n /**\n * 增加一个重力,gravity为重力方向,gravityModifier为重力大小\n * @default 0\n */\n gravity?: vec3,\n /**\n * 重力变化信息\n */\n gravityOverLifetime?: FixedNumberExpression,\n}\n\nexport interface ParticleRotationOverLifetime {\n /**\n * 分轴变化开关\n */\n separateAxes?: boolean,\n /**\n * 角度模式\n */\n asRotation?: boolean,\n /**\n * x轴旋转函数\n */\n x?: NumberExpression,\n /**\n * y轴旋转函数\n */\n y?: NumberExpression,\n /**\n * z轴旋转函数(不分轴时,变化z)\n */\n z?: NumberExpression,\n}\n\nexport interface ParticleSizeOverLifetime {\n /**\n * 分轴变化开关\n */\n separateAxes?: boolean,\n /**\n * 整体大小变化信息(非分轴模式)\n */\n size?: NumberExpression,\n /**\n * x轴大小变化信息(分轴模式)\n */\n x?: NumberExpression,\n /**\n * y轴大小变化信息(分轴模式)\n */\n y?: NumberExpression,\n}\n\n/**\n * 粒子颜色变化属性\n */\nexport interface ParticleColorOverLifetime {\n /**\n * 颜色属性\n */\n color?: GradientColor,\n /**\n * 透明度属性变化值\n */\n opacity?: NumberExpression,\n}\n\n/**\n * 粒子元素雪碧图/帧动画属性\n */\nexport interface ParticleTextureSheetAnimation extends TextureSheetAnimation {\n /**\n * 帧融合(仅存在于粒子元素中),因为展示效果不好,不再支持\n */\n //blend: boolean,\n /**\n * 帧动画循环次数(仅存在于粒子元素中)变化\n */\n cycles: NumberExpression,\n /**\n * 帧动画延时(仅存在于粒子元素中), 遇随机数兼容取最小值\n */\n animationDelay?: NumberExpression,\n /**\n * 帧动画时长(仅存在于粒子元素中), 遇随机数兼容取最小值\n */\n animationDuration: NumberExpression,\n}\n\nexport interface ParticleOptions {\n /**\n * 最大粒子数\n */\n maxCount: number,\n /**\n * 粒子生命周期时长\n */\n startLifetime: NumberExpression,\n /**\n * 渲染延时\n * @default 0\n */\n startDelay?: NumberExpression,\n /**\n * 粒子颜色\n */\n startColor?: ColorExpression,\n /**\n * 粒子元素大小\n * 按照宽高比生成时:`start3DSize` 为 `false`,使用 `startSize`(宽度)和 `sizeAspect`(宽度/高度)\n * 按照具体宽高生成时:使用 `startSizeX`,`startSizeY`\n */\n startSize?: NumberExpression,\n sizeAspect?: NumberExpression,\n start3DSize?: boolean,\n startSizeX?: NumberExpression,\n startSizeY?: NumberExpression,\n /**\n * 粒子旋转角度\n */\n startRotationZ?: NumberExpression,\n startRotationX?: NumberExpression,\n startRotationY?: NumberExpression,\n\n particleFollowParent?: boolean,\n}\n\n/**\n * 粒子元素渲染属性\n */\nexport interface ParticleContent {\n // added by loader\n splits?: SplitParameter[],\n /**\n * 粒子元素基础属性\n */\n options: ParticleOptions,\n /**\n * 粒子元素材质渲染属性\n */\n renderer: RendererOptions,\n /**\n * 粒子元素发射器形状属性\n */\n shape?: ParticleShape,\n /**\n * 粒子元素发射参数属性\n */\n emission: ParticleEmission,\n /**\n * 粒子元素大小变化属性\n */\n sizeOverLifetime?: ParticleSizeOverLifetime,\n /**\n * 发射器 transform 变化\n */\n emitterTransform?: {\n /**\n * 位置变化\n */\n path?: FixedVec3Expression,\n },\n\n positionOverLifetime?: ParticlePositionOverLifetime,\n /**\n * 粒子元素旋转变化属性\n */\n rotationOverLifetime?: ParticleRotationOverLifetime,\n /**\n * 粒子元素色彩变化属性\n */\n colorOverLifetime?: ParticleColorOverLifetime,\n /**\n * 粒子元素贴图变化属性\n */\n textureSheetAnimation?: ParticleTextureSheetAnimation,\n /**\n * 粒子元素拖尾参数\n */\n trails?: ParticleTrail,\n /**\n * 粒子元素交互参数\n */\n interaction?: {\n /**\n * 交互行为\n */\n behavior?: ParticleInteractionBehavior,\n /**\n * 重叠元素响应开关\n */\n multiple?: boolean,\n /**\n * ray cast 射线拾取时 sphere 的半径\n * @default 0.4\n */\n radius?: number,\n },\n filter?: DistortionFilterParams,\n}\n\n/**\n * 粒子拖尾参数\n */\nexport interface ParticleTrail {\n /**\n * 随粒子消失开关\n */\n dieWithParticles?: boolean,\n /**\n * 拖尾声明周期\n */\n lifetime: NumberExpression,\n /**\n * 最大顶点数z\n */\n maxPointPerTrail: number,\n /**\n * 顶点长度\n */\n minimumVertexDistance: number,\n /**\n * 宽度位置变化\n */\n widthOverTrail: NumberExpression,\n /**\n * 颜色位置变化\n */\n colorOverTrail?: GradientColor,\n /**\n * 混合模式\n */\n blending: BlendingMode,\n /**\n * 颜色周期变化\n */\n colorOverLifetime?: GradientColor,\n /**\n * 继承粒子颜色开关\n */\n inheritParticleColor?: boolean,\n /**\n * 深度遮挡\n */\n occlusion?: boolean,\n /**\n * 透明遮挡\n */\n transparentOcclusion?: boolean,\n /**\n * 透明度周期变化\n */\n opacityOverLifetime?: NumberExpression,\n /**\n * 渲染顺序偏移\n * @default 0\n */\n orderOffset?: number,\n /**\n * 生命周期受粒子影响开关\n */\n sizeAffectsLifetime?: boolean,\n /**\n * 宽度受粒子影响开关\n */\n sizeAffectsWidth?: boolean,\n /**\n * 拖尾贴图\n */\n texture?: number,\n // TODO\n /**\n * 位置受父节点影响\n * 拖尾+图层绑定同一个父节点时使用\n */\n parentAffectsPosition?: boolean,\n}\n\n","import type { ShapeType } from '../type';\nimport type { NumberExpression, vec3 } from '../numberExpression';\n\nexport enum ShapeArcMode {\n /**\n * 随机\n */\n RANDOM,\n /**\n * 单向循环\n */\n UNIDIRECTIONAL_CYCLE,\n /**\n * 双向循环\n */\n BIDIRECTIONAL_CYCLE,\n /**\n * 均匀爆发\n */\n UNIFORM_BURST,\n}\n\nexport interface ParticleShapeBase {\n /**\n * 粒子形状类型\n */\n type: ShapeType,\n /**\n * 发射模式\n */\n arcMode: ShapeArcMode,\n /**\n * 运动对齐开关\n */\n alignSpeedDirection?: boolean,\n /**\n * 向上方向\n */\n upDirection?: vec3,\n /**\n * 发射方向旋转\n */\n turbulenceX?: NumberExpression,\n turbulenceY?: NumberExpression,\n turbulenceZ?: NumberExpression,\n}\n\nexport interface ParticleShapeNone {\n type: ShapeType.NONE,\n /**\n * 发射方向旋转\n */\n turbulenceX?: NumberExpression,\n turbulenceY?: NumberExpression,\n turbulenceZ?: NumberExpression,\n upDirection?: number[],\n}\n\nexport type ParticleShape =\n | ParticleShapeCone\n | ParticleShapeCircle\n | ParticleShapeSphere\n | ParticleShapeHemisphere\n | ParticleShapeDonut\n | ParticleShapeRect\n | ParticleShapeRectEdge\n | ParticleShapeTexture\n | ParticleShapeEdge\n | ParticleShapeNone\n ;\n\n/**\n * 圆锥发射器\n */\nexport interface ParticleShapeCone extends ParticleShapeBase {\n type: ShapeType.CONE,\n /**\n * 形状角度\n */\n angle: number,\n /**\n * 形状半径\n */\n radius: number,\n /**\n * 形状曲率\n */\n arc: number,\n}\n\n/**\n * 圆发射器\n */\nexport interface ParticleShapeCircle extends ParticleShapeBase {\n type: ShapeType.CIRCLE,\n /**\n * 形状半径\n */\n radius: number,\n /**\n * 形状曲率\n */\n arc: number,\n}\n\n/**\n * 圆球发射器\n */\nexport interface ParticleShapeSphere extends ParticleShapeBase {\n type: ShapeType.SPHERE,\n /**\n * 形状半径\n */\n radius: number,\n /**\n * 形状曲率\n */\n arc: number,\n}\n\n/**\n * 半球发射器\n */\nexport interface ParticleShapeHemisphere extends ParticleShapeBase {\n type: ShapeType.HEMISPHERE,\n /**\n * 形状半径\n */\n radius: number,\n /**\n * 形状曲率\n */\n arc: number,\n}\n\n/**\n * 圆环发射器\n */\nexport interface ParticleShapeDonut extends ParticleShapeBase {\n type: ShapeType.DONUT,\n /**\n * 形状半径\n */\n radius: number,\n /**\n * 圆环半径\n */\n donutRadius: number,\n /**\n * 形状曲率\n */\n arc: number,\n}\n\n/**\n * 矩形发射器\n */\nexport interface ParticleShapeRect extends ParticleShapeBase {\n type: ShapeType.RECTANGLE,\n /**\n * 宽度\n */\n width: number,\n /**\n * 高度\n */\n height: number,\n}\n\n/**\n * 矩形框发射器\n */\nexport interface ParticleShapeRectEdge extends ParticleShapeBase {\n type: ShapeType.RECTANGLE_EDGE,\n /**\n * 宽度\n */\n width: number,\n /**\n * 高度\n */\n height: number,\n}\n\n/**\n * 直线发射器\n */\nexport interface ParticleShapeEdge extends ParticleShapeBase {\n type: ShapeType.EDGE,\n /**\n * 宽度\n */\n width: number,\n}\n\n/**\n * 贴图发射器\n */\nexport interface ParticleShapeTexture extends ParticleShapeBase {\n type: ShapeType.TEXTURE,\n detail: ParticleTextureShapeDetail,\n /**\n * 贴图随机数\n */\n random: number,\n /**\n * 宽度\n */\n width: number,\n /**\n * 高度\n */\n height: number,\n}\n\n/**\n * 贴图形状数据\n */\nexport interface ParticleTextureShapeDetail {\n /**\n * 贴图形状宽度\n */\n width: number,\n /**\n * 贴图形状高度\n */\n height: number,\n /**\n * 编辑器参数\n * 对于图片栅格化时,像素区域的大小\n */\n block: [number, number],\n /**\n * 贴图形状点\n */\n anchors: number[],\n}\n","import type { BinaryEnv } from '../../binary';\nimport type { BaseItem, ItemEndBehavior } from '../base-item';\nimport type { MaterialOptions } from './material';\nimport type { GeometryPointer } from './binary';\nimport type { vec3 } from '../../numberExpression';\nimport type { InteractBehavior, ItemType } from '../../type';\nimport type { ModelAnimationTrackDataPointer } from './binary';\n\nexport type BufferType =\n | WebGLRenderingContext['FLOAT']\n | WebGLRenderingContext['INT']\n | WebGLRenderingContext['SHORT']\n | WebGLRenderingContext['BYTE']\n | WebGLRenderingContext['UNSIGNED_INT']\n | WebGLRenderingContext['UNSIGNED_SHORT']\n | WebGLRenderingContext['UNSIGNED_BYTE'];\n\nexport interface PrimitiveOptions<T extends BinaryEnv> {\n // Geometry 对象,需要 Editor 预创建\n geometry: GeometryPointer<T>,\n // glTF 展开材质对象\n material: MaterialOptions<T>,\n}\n\nexport interface SkinOptions<T extends BinaryEnv> {\n name?: string,\n joints: number[],\n skeleton?: number,\n inverseBindMatrices?: ModelAnimationTrackDataPointer<T>,\n}\n\nexport interface ModelMeshOptions<T extends BinaryEnv> {\n // 蒙皮数据对象\n skin?: SkinOptions<T>,\n // primitive 对象二进制\n primitives: PrimitiveOptions<T>[],\n // morph target 初始权重系数\n weights?: number[],\n hide?: boolean,\n parent?: number,\n}\n\nexport enum ModelBoundingType {\n box = 2,\n sphere = 3,\n}\n\nexport interface ModelItemBoundingBox {\n behavior?: InteractBehavior | number,\n type: ModelBoundingType.box,\n /**\n * 包围形状相对于元素位置的偏移\n * @default [0,0,0]\n */\n center?: vec3,\n /**\n * 包围盒的 xyz 长度,当 type 为 box 时生效\n */\n size?: vec3,\n}\n\nexport interface ModelItemBoundingSphere {\n behavior?: InteractBehavior | number,\n /**\n * 包围形状相对于元素位置的偏移\n * @default [0,0,0]\n */\n center?: vec3,\n type: ModelBoundingType.sphere,\n /**\n * 包围球的半径,当 type 为 sphere 时生效\n */\n radius: number,\n}\n\nexport type ModelItemBounding = ModelItemBoundingBox | ModelItemBoundingSphere;\n\nexport interface ModelMeshItemContent<T extends BinaryEnv> {\n options: ModelMeshOptions<T>,\n interaction?: ModelItemBounding,\n}\n\n/**\n * 模型元素\n */\nexport interface ModelMeshItem<T extends BinaryEnv> extends BaseItem {\n type: ItemType.mesh,\n pluginName: 'model',\n content: ModelMeshItemContent<T>,\n endBehavior: ItemEndBehavior,\n}\n\n","// 纹理坐标变换\nimport type { RGBAColorValue, vec2 } from '../../numberExpression';\nimport type { BinaryEnv } from '../../binary';\nimport type { SideMode } from '../../type';\nimport type { TexturePointer } from './binary';\n\nexport interface ModelTextureTransform {\n offset?: vec2,\n rotation?: number,\n scale?: vec2,\n}\n\n// 材质类型\nexport enum MaterialType {\n unlit = 'unlit',\n pbr = 'pbr',\n // 头发材质,在 pbr 材质基础上扩展\n hair = 'hair',\n}\n\n// 混合模式\nexport enum MaterialBlending {\n opaque = 100, // 不透明\n masked = 101, // 遮罩\n translucent = 102, // 半透明\n additive = 103, // 叠加\n}\n\nexport type MaterialOptions<T extends BinaryEnv> = MaterialUnlitOptions<T> | MaterialPBROptions<T>;\n\nexport interface MaterialUnlitOptions<T extends BinaryEnv> {\n name: string,\n type: MaterialType.unlit,\n // basecolor 颜色,RGBA 格式,各通道范围在 `[0, 255]` 之内。\n baseColorFactor: RGBAColorValue,\n // basecolor 贴图对应的 Galacean Effects 纹理对象\n baseColorTexture?: TexturePointer<T>,\n // basecolor 贴图的纹理坐标变换\n baseColorTextureTransform?: ModelTextureTransform,\n // basecolor 贴图的纹理坐标索引\n baseColorTextureCoordinate?: number,\n\n // 深度写入:缺省值是写入深度(true)\n depthMask?: boolean,\n // 混合模式\n blending?: MaterialBlending,\n // 正反面显示\n side?: SideMode,\n // alpha 测试值\n alphaCutOff?: number,\n}\n\nexport interface MaterialPBRBaseOptions<T extends BinaryEnv> {\n name: string,\n\n // basecolor 颜色,RGBA 格式,各通道范围在 `[0, 255]` 之内\n baseColorFactor: RGBAColorValue,\n // basecolor 贴图对应的 Galacean Effects 纹理对象\n baseColorTexture?: TexturePointer<T>,\n // basecolor 贴图的纹理坐标变换\n baseColorTextureTransform?: ModelTextureTransform,\n // basecolor 贴图的纹理坐标索引\n baseColorTextureCoordinate?: number,\n\n // 是否开启高光抗锯齿,默认是 false\n useSpecularAA?: boolean,\n // 金属度系数,范围在 `[0, 1]` 之内\n metallicFactor: number,\n // 粗超度系数,范围在 `[0, 1]` 之内\n roughnessFactor: number,\n // 金属度和粗超度贴图对应的 Galacean Effects 纹理对象。其中,G 通道是粗超度,B 通道是金属度\n metallicRoughnessTexture?: TexturePointer<T>,\n // 金属度和粗超度贴图的纹理坐标变换\n metallicRoughnessTextureTransform?: ModelTextureTransform,\n // 金属度和粗超度贴图的纹理坐标索引\n metallicRoughnessTextureCoordinate?: number,\n\n // 法线贴图对应的文件相对路径,`.png` 文件\n normalTexture?: TexturePointer<T>,\n // 法线贴图强度系数,范围在 `[0, 1]` 之内\n normalTextureScale?: number,\n // 法线贴图的纹理坐标变换\n normalTextureTransform?: ModelTextureTransform,\n // 法线贴图的纹理坐标索引\n normalTextureCoordinate?: number,\n\n // 环境光遮蔽贴图对应的 Galacean Effects 纹理对象\n occlusionTexture?: TexturePointer<T>,\n // 环境光遮蔽贴图强度系数,范围在 `[0, 1]` 之内\n occlusionTextureStrength?: number,\n // 环境光遮蔽贴图的纹理坐标变换\n occlusionTextureTransform?: ModelTextureTransform,\n // 环境光遮蔽贴图的纹理坐标索引\n occlusionTextureCoordinate?: number,\n\n // 自发光颜色,RGB 格式,各通道范围在 `[0, 255]` 之内\n emissiveFactor: RGBAColorValue,\n // 自发光强度\n emissiveIntensity: number,\n // 自发光贴图对应的的 Galacean Effects 纹理对象\n emissiveTexture?: TexturePointer<T>,\n // 自发光贴图的纹理坐标变换\n emissiveTextureTransform?: ModelTextureTransform,\n // 自发光贴图的纹理坐标索引\n emissiveTextureCoordinate?: number,\n\n // 深度写入:缺省值是写入深度(true)\n depthMask?: boolean,\n // 混合模式\n blending?: MaterialBlending,\n // 正反面显示\n side?: SideMode,\n // alpha测试值\n alphaCutOff?: number,\n\n // 是否启用阴影效果,包括投射阴影和接收阴影\n enableShadow?: boolean,\n}\n\nexport interface MaterialPBROptions<T extends BinaryEnv> extends MaterialPBRBaseOptions<T> {\n /**\n * 增加 pbr 类型参数\n */\n type: MaterialType.pbr,\n}\n\nexport interface MaterialHairOptions<T extends BinaryEnv> extends MaterialPBRBaseOptions<T> {\n /**\n * 增加头发相关参数\n */\n type: MaterialType.hair,\n // 高光偏移贴图\n specularShiftTexture?: TexturePointer<T>,\n // 光泽度,范围 `[0, 1000]`\n specularPower?: number,\n // 高光强度,范围 `[0, 1]`\n specularScale?: number,\n // 高光宽度,范围 `[0, 1]`\n specularWidth?: number,\n // 主色,RGB格式,各通道范围在 `[0, 255]` 之内。\n primaryColor?: RGBAColorValue,\n // 主色偏移,范围 `[-1, 1]`\n primaryShift?: number,\n // 辅色,RGB 格式,各通道范围在 `[0, 255]` 之内。\n secondaryColor?: RGBAColorValue,\n // 辅色偏移,范围 `[-1, 1]`\n secondaryShift?: number,\n}\n","/**\n * 3D渲染模式:将渲染过程中的中间结果输出,主要用于排查渲染效果问题,支持 pbr 和 unlit 材质\n */\nexport enum RenderMode3D {\n /**\n * 正常渲染\n */\n none = 'none',\n /**\n * 纹理坐标\n */\n uv = 'uv',\n /**\n * 世界坐标法线\n */\n normal = 'normal',\n /**\n * 基础颜色\n */\n basecolor = 'basecolor',\n /**\n * 基础颜色 Alpha\n */\n alpha = 'alpha',\n /**\n * 金属度\n */\n metallic = 'metallic',\n /**\n * 粗超度\n */\n roughness = 'roughness',\n /**\n * 环境遮蔽\n */\n ao = 'ao',\n /**\n * 自发光\n */\n emissive = 'emissive',\n}\n\n","import type { RGBAColor } from './numberExpression';\n\nexport interface StringTemplate {\n fonts: FontBase[],\n texts: Text[],\n colors: RGBAColor[], //rgba rgba(0-255), a default 255\n}\n\n/**\n * 字体资源\n * @version 2.3\n */\nexport interface FontDefine {\n /**\n * 字体资源链接\n */\n fontURL: string,\n /**\n * 字体名称\n */\n fontFamily: string,\n}\n\nexport interface FontBase {\n /**\n * 字体\n * @default \"serif\"\n */\n family?: string,\n /**\n * 像素单位(unit px)\n * @default 16\n */\n size?: number,\n /**\n * @default 400\n */\n weight?: number,\n /**\n * index to fonts array, if set it inherits properties\n * 字体属性继承\n * 如果设置了会继承指定的字体属性\n */\n extends?: number, // index to fonts Array\n /**\n * url to download font file\n * 字体文件下载地址\n */\n url?: string,\n /**\n * font style\n * @default 0\n */\n style?: FontStyle,\n\n /**\n * space between 2 chars\n * 字间距,两个字符(包括数字,英文和空格等特殊字符)的像素距离\n * @default 0\n */\n letterSpace?: number,\n}\n\nexport interface Text {\n x: number,\n y: number,\n /**\n * 变量名\n */\n n?: string,\n /**\n * content,\n * 文字内容,如果包含 $var$ 样式,内容将被替换\n */\n t: string,\n /**\n * width, if not provide use canvas.measureText() to get width\n * 文字最大宽度,如果不设置,由系统进行计算\n */\n w?: number,\n /**\n * font, index to fonts array\n * 字体,指向字体数组\n * @default 0\n */\n f?: number,\n /**\n * textAlignment\n * 字体排列\n * @default 0\n */\n a?: TextAlignment,\n /**\n * index to color array\n * 字体颜色,指向数组\n */\n c?: number,\n\n /**\n * 当文字超过最大宽度时,文字的表现行为\n * 仅当设置文字最大宽度后生效\n * @default 0\n */\n of?: TextOverflow,\n\n /**\n * 当文字overflow为ellipsis时的替换符号\n * @default \"..\"\n */\n et?: string,\n\n}\n\nexport enum TextOverflow {\n /**\n * display 模式下,会显示所有文本,存在文本超过边界框的情况。\n */\n display = 0,\n /**\n * clip 模式下,当文本内容超出边界框时,多余的会被截断。\n */\n clip = 1,\n /**\n * ellipsis 模式下,会使用(...)来代替超出边界框的内容。\n */\n ellipsis = 2,\n}\n\nexport enum TextBaseline {\n /**\n * 文本顶对齐。\n */\n top = 0,\n /**\n * 文本垂直居中对齐。\n */\n middle = 1,\n /**\n * 文本底对齐。\n */\n bottom = 2,\n}\n\nexport enum TextAlignment {\n /**\n * text alignment starts from(x,y) to right direction\n * 从(x,y)开始第一个字符,向右边延伸\n */\n left = 0,\n /**\n * (x,y) is middle position of text, where (left + right)/2 =(x,y)\n * (x,y) 为文字中间位置,(最左位置 + 最右位置)/2 = (x,y)\n */\n middle = 1,\n /**\n * text alignment ends with(x,y) from left direction\n * 从(x,y)结束最后一个字符,向左边延伸\n */\n right = 2,\n}\n\n/**\n * 文本字重\n */\nexport enum TextWeight {\n /**\n * 正常\n */\n normal = 'normal',\n /**\n * 粗体\n */\n bold = 'bold',\n /**\n * 瘦体\n */\n lighter = 'lighter',\n}\n\n/**\n * 文本样式\n */\nexport enum FontStyle {\n /**\n * 正常\n */\n normal = 'normal', // default\n /**\n * 斜体\n */\n italic = 'italic',\n /**\n * 倾斜体\n */\n oblique = 'oblique',\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\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); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\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; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\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);\r\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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\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\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\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\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import type {\n FixedNumberExpression,\n RGBAColorValue,\n ColorExpression,\n NumberExpression,\n GradientColor,\n GradientStop,\n FixedVec3Expression,\n vec4,\n vec3,\n} from '../src';\nimport { ValueType } from '../src';\n\nexport function arrAdd<T> (arr: T[], item: T): boolean | undefined {\n if (!arr.includes(item)) {\n arr.push(item);\n\n return true;\n }\n}\n\n/**\n * @deprecated 请直接使用 Array.prototype.forEach 或 for...of\n * @param object\n * @param callback\n * @returns the mutated input object\n */\nexport function forEach<T> (object: null | undefined | { [key: string]: T | Record<any, T> }, callback: (val: T, key: string) => void, thisObj?: any) {\n if (object) {\n for (const name in object) {\n if (Object.hasOwnProperty.call(object, name)) {\n callback.call(thisObj, object[name] as T, name);\n }\n }\n }\n\n return object;\n}\n\nexport function ensureFixedNumber (a: any): FixedNumberExpression | undefined {\n if (Number.isFinite(a)) {\n return [ValueType.CONSTANT, a];\n }\n if (a) {\n if (a[0] === 'lines') {\n return [ValueType.LINE, a[1]];\n }\n if (a[0] === 'curve') {\n return [ValueType.CURVE, a[1]];\n }\n if (a[0] === 'static') {\n return [ValueType.CONSTANT, a[1]];\n }\n }\n}\n\nexport function ensureFixedNumberWithRandom (a: any, p: number): FixedNumberExpression | undefined {\n if (Array.isArray(a) && a[0] === 'random') {\n return [ValueType.CONSTANT, a[1][p]];\n }\n\n return ensureFixedNumber(a);\n}\n\nexport function ensureRGBAValue (a: any): RGBAColorValue {\n if (a && a[0] === 'color') {\n return colorToArr(a[1], true);\n }\n\n return [1, 1, 1, 1];\n}\n\nexport function ensureColorExpression (a: any, normalized?: boolean): ColorExpression | undefined {\n if (a) {\n if (a[0] === 'colors') {\n return [ValueType.COLORS, a[1].map((color: any) => colorToArr(color, normalized))];\n } else if (a[0] === 'gradient') {\n return ensureGradient(a[1], normalized);\n } else if (a[0] === 'color') {\n return [ValueType.RGBA_COLOR, colorToArr(a[1], normalized)];\n }\n }\n}\n\nexport function ensureNumberExpression (a: any): NumberExpression | undefined {\n if (a && a[0] === 'random') {\n return [ValueType.RANDOM, a[1]];\n }\n\n return ensureFixedNumber(a);\n}\n\nexport function ensureValueGetter (a: any): NumberExpression | any {\n if (Array.isArray(a) && typeof a[0] === 'string') {\n return ensureNumberExpression(a) || ensureFixedVec3(a) || ensureColorExpression(a) || a;\n }\n\n return a;\n}\n\nexport function ensureGradient (a: any, normalized?: boolean): GradientColor | undefined {\n if (a) {\n let stops: GradientStop[] = [];\n\n Object.getOwnPropertyNames(a).forEach(p => {\n const stop = parsePercent(p);\n const color = colorToArr(a[p], normalized);\n\n stops.push([stop, color[0], color[1], color[2], color[3]]);\n });\n stops = stops.sort((a, b) => a[0] - b[0]);\n\n return [ValueType.GRADIENT_COLOR, stops];\n }\n}\n\nexport function colorToArr (hex: string | number[], normalized?: boolean): vec4 {\n let ret: vec4;\n\n if (typeof hex === 'string') {\n hex = hex.replace(/[\\s\\t\\r\\n]/g, '');\n let m = /rgba?\\(([.\\d]+),([.\\d]+),([.\\d]+),?([.\\d]+)?\\)/.exec(hex);\n\n if (m) {\n const a = +m[4];\n\n ret = [+m[1], +m[2], +m[3], isNaN(a) ? 255 : Math.round(a * 255)];\n } else if (/^#[a-f\\d]{3}$/i.test(hex)) {\n ret = [parseInt(hex[1] + hex[1], 16), parseInt(hex[2] + hex[2], 16), parseInt(hex[3] + hex[3], 16), 255];\n // eslint-disable-next-line no-cond-assign\n } else if (m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)) {\n ret = [parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16), 255] || [0, 0, 0, 255];\n }\n } else if (hex instanceof Array) {\n ret = [hex[0], hex[1], hex[2], isNaN(hex[3]) ? 255 : Math.round(hex[3] * 255)];\n }\n\n if (normalized) {\n // @ts-expect-error\n ret = normalizeColor(ret) as unknown as vec4;\n }\n\n // @ts-expect-error\n return ret;\n}\n\nexport function normalizeColor (a: number[]): number[] | undefined {\n if (Array.isArray(a)) {\n return a.map(i => Number.isFinite(i / 255) ? Number((i / 255).toFixed(6)) : 0);\n }\n}\n\nexport function parsePercent (c: string): number {\n const match = /^(-)?([\\d+.]+)%$/.exec(c);\n\n if (match) {\n return +match[2] / 100 * (match[1] ? -1 : 1);\n }\n\n return +c;\n}\n\nexport function getGradientColor (color: string | Array<string | number[]>, normalized?: boolean): GradientColor | undefined {\n if (Array.isArray(color)) {\n // @ts-expect-error\n return (color[0] === 'gradient' || color[0] === 'color') && ensureGradient(color[1], normalized);\n } else {\n return ensureGradient(color, normalized);\n }\n}\n\nexport function ensureFixedVec3 (a: any): FixedVec3Expression | undefined {\n if (a) {\n if (a.length === 3) {\n return [ValueType.CONSTANT_VEC3, a];\n }\n if (a[0] === 'path') {\n return [ValueType.LINEAR_PATH, a[1]];\n }\n if (a[0] === 'bezier') {\n return [ValueType.BEZIER_PATH, a[1]];\n }\n }\n}\n\nexport function objectValueToNumber (o: Record<string, any>): object {\n for (const key of Object.keys(o)) {\n o[key] = Number(o[key]);\n }\n\n return o;\n}\n\nexport function deleteEmptyValue (o: Record<string, any>): object {\n for (const key of Object.keys(o)) {\n if (o[key] === undefined) {\n delete o[key];\n }\n }\n\n return o;\n}\n\nconst cos = Math.cos;\nconst sin = Math.sin;\nconst d2r = Math.PI / 180;\nconst r2d = 180 / Math.PI;\n\nexport function quatFromXYZRotation (out: vec4 | number[], x: number, y: number, z: number): vec4 {\n const c1 = cos((x * d2r) / 2);\n const c2 = cos((y * d2r) / 2);\n const c3 = cos((z * d2r) / 2);\n\n const s1 = sin((x * d2r) / 2);\n const s2 = sin((y * d2r) / 2);\n const s3 = sin((z * d2r) / 2);\n\n out[0] = s1 * c2 * c3 + c1 * s2 * s3;\n out[1] = c1 * s2 * c3 - s1 * c2 * s3;\n out[2] = c1 * c2 * s3 + s1 * s2 * c3;\n out[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n return out as vec4;\n}\n\nfunction clamp (v: number, min: number, max: number): number {\n return v > max ? max : (v < min ? min : v);\n}\n\nexport function rotationZYXFromQuat (out: vec3 | number[], quat: vec4): vec3 {\n const x = quat[0];\n const y = quat[1];\n const z = quat[2];\n const w = quat[3];\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n const xx = x * x2;\n const yx = y * x2;\n const yy = y * y2;\n const zx = z * x2;\n const zy = z * y2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n const m11 = 1 - yy - zz, m12 = yx - wz, m13 = zx + wy;\n const m21 = yx + wz, m22 = 1 - xx - zz, m23 = zy - wx;\n const m31 = zx - wy, m32 = zy + wx, m33 = 1 - xx - yy;\n\n out[1] = Math.asin(clamp(-m31, -1, 1)) * r2d;\n if (Math.abs(m31) < 0.9999999) {\n out[0] = Math.atan2(m32, m33) * r2d;\n out[2] = Math.atan2(m21, m11) * r2d;\n } else {\n out[0] = 0;\n out[2] = Math.atan2(-m12, m22) * r2d;\n }\n\n return out as vec3;\n}\n","import type {\n ParticleContent,\n ParticleShape,\n ParticleShapeSphere,\n ColorOverLifetime,\n DistortionFilterParams,\n} from '../src';\nimport { ShapeType } from '../src';\nimport {\n deleteEmptyValue,\n ensureColorExpression,\n ensureFixedNumber,\n ensureFixedNumberWithRandom,\n ensureFixedVec3,\n ensureNumberExpression,\n getGradientColor,\n objectValueToNumber,\n forEach,\n ensureValueGetter,\n} from './utils';\n\nexport function getStandardParticleContent (particle: any): ParticleContent {\n const options = particle.options;\n const transform = particle.transform;\n let shape: ParticleShape = {\n type: ShapeType.NONE,\n };\n\n if (particle.shape) {\n const shapeType = particle.shape.shape?.replace(/([A-Z])/g, '_$1').toUpperCase().replace(/^_/, '');\n\n shape = {\n ...particle.shape,\n type: ShapeType[shapeType as keyof typeof ShapeType],\n };\n if (particle.shape.upDirection) {\n const [x, y, z] = particle.shape.upDirection;\n\n if (x === 0 && y === 0 && z === 0) {\n delete (shape as ParticleShapeSphere).upDirection;\n }\n }\n }\n if (options.startTurbulence) {\n shape.turbulenceX = ensureNumberExpression(options.turbulenceX);\n shape.turbulenceY = ensureNumberExpression(options.turbulenceY);\n shape.turbulenceZ = ensureNumberExpression(options.turbulenceZ);\n }\n const emission = particle.emission;\n\n if (emission.bursts && emission.bursts.length > 0) {\n emission.bursts = emission.bursts.map((b: any) => objectValueToNumber(b));\n }\n if (emission.burstOffsets && emission.burstOffsets.length > 0) {\n emission.burstOffsets = emission.burstOffsets.map((b: any) => objectValueToNumber(b));\n }\n if (emission.rateOverTime) {\n emission.rateOverTime = ensureNumberExpression(emission.rateOverTime);\n }\n\n const ret: ParticleContent = {\n renderer: particle.renderer,\n shape,\n splits: particle.splits,\n emission: emission,\n options: {\n startLifetime: ensureNumberExpression(options.startLifetime)!,\n start3DSize: !!options.start3DSize,\n startSize: ensureNumberExpression(options.startSize),\n startSizeX: ensureNumberExpression(options.startSizeX),\n startSizeY: ensureNumberExpression(options.startSizeY),\n sizeAspect: ensureNumberExpression(options.sizeAspect),\n maxCount: options.maxCount,\n startDelay: ensureNumberExpression(options.startDelay),\n startColor: ensureColorExpression(options.startColor, true),\n startRotationZ: ensureNumberExpression(options.startRotation || options.startRotationZ),\n particleFollowParent: options.particleFollowParent,\n },\n };\n\n if (options.start3DRotation) {\n ret.options.startRotationX = ensureNumberExpression(options.startRotationX);\n ret.options.startRotationY = ensureNumberExpression(options.startRotationY);\n }\n\n if (particle.filter) {\n const filter = {} as DistortionFilterParams;\n\n forEach(particle.filter, function (val, key) {\n // @ts-expect-error\n filter[key] = ensureValueGetter(val);\n });\n ret.filter = filter;\n }\n if (transform && transform.path) {\n ret.emitterTransform = {\n path: ensureFixedVec3(transform.path),\n };\n }\n const sizeOverLifetime = particle.sizeOverLifetime;\n\n if (sizeOverLifetime) {\n if (sizeOverLifetime.separateAxes) {\n ret.sizeOverLifetime = {\n separateAxes: true,\n x: ensureNumberExpression(sizeOverLifetime.x),\n y: ensureNumberExpression(sizeOverLifetime.y),\n };\n } else {\n ret.sizeOverLifetime = {\n size: ensureNumberExpression(sizeOverLifetime.size),\n };\n }\n }\n const velocityOverLifetime = particle.velocityOverLifetime || {};\n let sol = velocityOverLifetime.speedOverLifetime;\n\n if (sol) {\n sol = ensureFixedNumber(sol);\n } else {\n sol = undefined;\n }\n ret.positionOverLifetime = {\n gravity: options.gravity,\n gravityOverLifetime: ensureFixedNumber(options.gravityModifier),\n startSpeed: ensureNumberExpression(options.startSpeed),\n speedOverLifetime: sol,\n asMovement: velocityOverLifetime.asMovement,\n linearX: ensureNumberExpression(velocityOverLifetime.linearX),\n linearY: ensureNumberExpression(velocityOverLifetime.linearY),\n linearZ: ensureNumberExpression(velocityOverLifetime.linearZ),\n asRotation: velocityOverLifetime.asRotation,\n orbCenter: velocityOverLifetime.orbCenter,\n orbitalX: ensureNumberExpression(velocityOverLifetime.orbitalX),\n orbitalY: ensureNumberExpression(velocityOverLifetime.orbitalY),\n orbitalZ: ensureNumberExpression(velocityOverLifetime.orbitalZ),\n forceTarget: velocityOverLifetime.forceTarget,\n target: velocityOverLifetime.target,\n forceCurve: ensureFixedNumber(velocityOverLifetime.forceCurve) as any,\n };\n deleteEmptyValue(ret.positionOverLifetime);\n const rotationOverLifetime = particle.rotationOverLifetime;\n\n if (rotationOverLifetime) {\n ret.rotationOverLifetime = {\n separateAxes: rotationOverLifetime.separateAxes,\n asRotation: rotationOverLifetime.asRotation,\n z: ensureNumberExpression(rotationOverLifetime.separateAxes ? rotationOverLifetime.z : rotationOverLifetime.angularVelocity),\n };\n if (rotationOverLifetime.separateAxes) {\n ret.rotationOverLifetime.y = ensureFixedNumber(rotationOverLifetime.y);\n ret.rotationOverLifetime.x = ensureFixedNumber(rotationOverLifetime.x);\n }\n }\n const colorOverLifetime = particle.colorOverLifetime;\n\n if (colorOverLifetime) {\n const col: ColorOverLifetime = ret.colorOverLifetime = {\n opacity: ensureFixedNumber(colorOverLifetime.opacity),\n };\n\n if (colorOverLifetime.color) {\n col.color = getGradientColor(colorOverLifetime.color);\n }\n }\n const textureSheetAnimation = particle.textureSheetAnimation;\n\n if (textureSheetAnimation) {\n ret.textureSheetAnimation = {\n row: textureSheetAnimation.row,\n col: textureSheetAnimation.col,\n total: textureSheetAnimation.total,\n animate: textureSheetAnimation.animate,\n cycles: ensureFixedNumber(textureSheetAnimation.cycles)!,\n animationDelay: ensureFixedNumberWithRandom(textureSheetAnimation.animationDelay, 0),\n animationDuration: ensureFixedNumberWithRandom(textureSheetAnimation.animationDuration, 0)!,\n };\n }\n const trials = particle.trails;\n\n if (trials) {\n ret.trails = {\n lifetime: ensureNumberExpression(trials.lifetime)!,\n dieWithParticles: trials.dieWithParticles,\n maxPointPerTrail: trials.maxPointPerTrail,\n minimumVertexDistance: trials.minimumVertexDistance,\n widthOverTrail: ensureFixedNumber(trials.widthOverTrail)!,\n colorOverTrail: trials.colorOverTrail && getGradientColor(trials.colorOverTrail, false),\n blending: trials.blending,\n colorOverLifetime: trials.colorOverLifetime && getGradientColor(trials.colorOverLifetime, false),\n inheritParticleColor: trials.inheritParticleColor,\n occlusion: trials.occlusion,\n transparentOcclusion: trials.transparentOcclusion,\n orderOffset: trials.orderOffset,\n sizeAffectsLifetime: trials.sizeAffectsLifetime,\n sizeAffectsWidth: trials.sizeAffectsWidth,\n texture: trials.texture,\n parentAffectsPosition: trials.parentAffectsPosition,\n opacityOverLifetime: ensureNumberExpression(trials.opacityOverLifetime),\n };\n }\n ret.trails && deleteEmptyValue(ret.trails);\n const interaction = particle.interaction;\n\n if (interaction) {\n ret.interaction = {\n behavior: interaction.behavior,\n radius: interaction.radius,\n multiple: interaction.multiple,\n };\n }\n\n return ret;\n}\n","import type {\n BaseItemTransform,\n NullContent,\n PositionOverLifetime,\n RotationOverLifetime,\n ColorOverLifetime,\n SpriteContent,\n} from '../src';\nimport {\n deleteEmptyValue,\n ensureFixedNumber,\n ensureFixedVec3,\n ensureRGBAValue,\n getGradientColor,\n} from './utils';\n\nexport function getStandardNullContent (sprite: any, transform: BaseItemTransform): NullContent {\n const opt = sprite.options;\n const velocityOverLifetime = sprite.velocityOverLifetime || {};\n const positionOverLifetime: PositionOverLifetime = {\n path: ensureFixedVec3(sprite.transform?.path),\n gravity: opt.gravity,\n gravityOverLifetime: ensureFixedNumber(opt.gravityModifier),\n direction: opt.direction,\n startSpeed: opt.startSpeed,\n asMovement: velocityOverLifetime.asMovement,\n linearX: ensureFixedNumber(velocityOverLifetime.linearX),\n linearY: ensureFixedNumber(velocityOverLifetime.linearY),\n linearZ: ensureFixedNumber(velocityOverLifetime.linearZ),\n asRotation: velocityOverLifetime.asRotation,\n orbCenter: velocityOverLifetime.orbCenter,\n orbitalX: ensureFixedNumber(velocityOverLifetime.orbitalX),\n orbitalY: ensureFixedNumber(velocityOverLifetime.orbitalY),\n orbitalZ: ensureFixedNumber(velocityOverLifetime.orbitalZ),\n speedOverLifetime: ensureFixedNumber(velocityOverLifetime.speedOverLifetime),\n };\n\n deleteEmptyValue(positionOverLifetime);\n const ret: NullContent = {\n options: {\n startColor: ensureRGBAValue(opt.startColor),\n },\n positionOverLifetime,\n };\n\n if (opt.startSize) {\n transform.scale = [opt.startSize, opt.startSize / (opt.sizeAspect || 1), 1];\n }\n if (opt.startRotation) {\n if (!transform.rotation) {\n transform.rotation = [0, 0, opt.startRotation];\n } else {\n transform.rotation[2] += opt.startRotation;\n }\n }\n const rotationOverLifetime = sprite.rotationOverLifetime;\n\n if (rotationOverLifetime) {\n const rot: RotationOverLifetime = ret.rotationOverLifetime = {\n separateAxes: rotationOverLifetime.separateAxes,\n asRotation: rotationOverLifetime.asRotation,\n };\n\n if (rot.separateAxes) {\n rot.x = ensureFixedNumber(rotationOverLifetime.x);\n rot.y = ensureFixedNumber(rotationOverLifetime.y);\n rot.z = ensureFixedNumber(rotationOverLifetime.z);\n } else {\n rot.z = ensureFixedNumber(rotationOverLifetime.angularVelocity);\n }\n }\n\n const colorOverLifetime = sprite.colorOverLifetime;\n\n if (colorOverLifetime) {\n const col: ColorOverLifetime = ret.colorOverLifetime = {\n opacity: ensureFixedNumber(colorOverLifetime.opacity),\n };\n\n if (colorOverLifetime.color) {\n col.color = getGradientColor(colorOverLifetime.color);\n }\n }\n const sizeOverLifetime = sprite.sizeOverLifetime;\n\n if (sizeOverLifetime) {\n ret.sizeOverLifetime = {\n separateAxes: sizeOverLifetime.separateAxes,\n size: ensureFixedNumber(sizeOverLifetime.size),\n x: ensureFixedNumber(sizeOverLifetime.x),\n y: ensureFixedNumber(sizeOverLifetime.y),\n z: ensureFixedNumber(sizeOverLifetime.z),\n };\n }\n\n return ret;\n}\n\nexport function getStandardSpriteContent (sprite: any, transform: BaseItemTransform): SpriteContent {\n const ret = getStandardNullContent(sprite, transform) as SpriteContent;\n const texAni = sprite.textureSheetAnimation;\n\n if (texAni) {\n ret.textureSheetAnimation = {\n row: texAni.row,\n col: texAni.col,\n total: texAni.total || undefined,\n animate: texAni.animate,\n };\n }\n ret.renderer = sprite.renderer;\n if (sprite.splits) {\n ret.splits = sprite.splits;\n }\n if (sprite.interaction) {\n ret.interaction = sprite.interaction;\n }\n\n return ret;\n}\n","import type { InteractContent, InteractOption } from '../src';\nimport { InteractType, InteractBehavior } from '../src';\nimport { ensureRGBAValue } from './utils';\n\nexport function getStandardInteractContent (ui: any): InteractContent {\n const options = ui.options;\n let option: InteractOption;\n\n switch (options.type) {\n case 'click': {\n option = {\n type: InteractType.CLICK,\n showPreview: options.showPreview,\n previewColor: options.previewColor && ensureRGBAValue(options.previewColor),\n behavior: options.behavior || InteractBehavior.NOTIFY,\n };\n\n break;\n }\n case 'drag': {\n option = {\n type: InteractType.DRAG,\n enableInEditor: !!options.enableInEditor,\n dxRange: options.dxRange,\n dyRange: options.dyRange,\n target: options.target,\n };\n\n break;\n }\n case 'message': {\n option = {\n type: InteractType.MESSAGE,\n };\n\n break;\n }\n default: {\n break;\n }\n }\n\n const ret: InteractContent = {\n // @ts-expect-error\n options: option,\n };\n\n return ret;\n}\n","import type { CameraContent, CameraPositionOverLifetime } from '../src/item/camera-item';\nimport type { RotationOverLifetime } from '../src';\nimport { deleteEmptyValue, ensureFixedNumber, ensureFixedVec3 } from './utils';\n\nexport function getStandardCameraContent (model: any): CameraContent {\n const opt = model.options;\n const ret: CameraContent = {\n options: {\n fov: opt.fov!,\n far: opt.far!,\n near: opt.near!,\n clipMode: opt.clipMode,\n },\n };\n\n const velocityOverLifetime = model.velocityOverLifetime;\n\n if (velocityOverLifetime || model.transform?.path) {\n const positionOverLifetime: CameraPositionOverLifetime = {\n path: ensureFixedVec3(model.transform?.path),\n linearX: ensureFixedNumber(velocityOverLifetime?.translateX),\n linearY: ensureFixedNumber(velocityOverLifetime?.translateY),\n linearZ: ensureFixedNumber(velocityOverLifetime?.translateZ),\n };\n\n deleteEmptyValue(positionOverLifetime);\n ret.positionOverLifetime = positionOverLifetime;\n }\n\n const rol = model.rotationOverLifetime;\n\n if (rol) {\n const rotationOverLifetime: RotationOverLifetime = {\n separateAxes: rol.separateAxes,\n x: ensureFixedNumber(rol?.rotateX),\n y: ensureFixedNumber(rol?.rotateY),\n z: rol.separateAxes ? ensureFixedNumber(rol?.rotateZ) : ensureFixedNumber(rol.rotation),\n };\n\n deleteEmptyValue(rotationOverLifetime);\n ret.rotationOverLifetime = rotationOverLifetime;\n }\n\n return ret;\n}\n","import { ensureFixedNumber, ensureFixedVec3, forEach } from './utils';\nimport type { FilterParams } from '../src/item/filter-item';\n\nconst convertParams = [\n 'strength',\n 'bloomAddon',\n 'colorAddon',\n 'period',\n 'waveMovement',\n 'colorThreshold',\n 'xOpacity',\n 'yOpacity',\n 'feather',\n];\nconst pathParams = [\n 'path', 'position',\n];\n\nexport function getStandardFilterContent (filter: any): FilterParams {\n const ret: Record<string, any> = {};\n\n forEach(filter, function (val, key) {\n if (convertParams.includes(key)) {\n ret[key] = ensureFixedNumber(val);\n } else if (pathParams.includes(key)) {\n ret[key] = ensureFixedVec3(val);\n } else {\n ret[key] = val;\n }\n });\n\n return ret as FilterParams;\n}\n","import type { JSONScene } from '../src/scene';\nimport { ItemType, ItemEndBehavior } from '../src';\n\n/**\n * 2.1 以下版本数据适配(mars-player@2.4.0 及以上版本支持 2.1 以下数据的适配)\n */\nexport function version21Migration (json: JSONScene): JSONScene {\n json.compositions.forEach(composition => {\n composition.items.forEach(item => {\n if (item.type === ItemType.null) {\n if (item.endBehavior === ItemEndBehavior.destroy) {\n item.endBehavior = ItemEndBehavior.freeze;\n }\n }\n });\n });\n\n json.version = '2.1';\n\n return json;\n}\n\n/**\n * 2.2 以下版本数据适配(mars-player@2.5.0 及以上版本支持 2.2 以下数据的适配)\n */\nexport function version22Migration (json: JSONScene): JSONScene {\n const singleVersion = json.version?.split('.');\n\n if (!singleVersion || Number(singleVersion[0]) > 2 || (Number(singleVersion[0]) === 2 && Number(singleVersion[1]) >= 2)) {\n return json;\n }\n\n json.compositions.forEach(composition => {\n composition.items.forEach(item => {\n if (item.type === ItemType.mesh || item.type === ItemType.light) {\n item.endBehavior = item.endBehavior as unknown === 1 ? ItemEndBehavior.destroy : item.endBehavior;\n }\n });\n });\n\n return json;\n}\n","import type {\n BaseItem,\n BaseItemTransform,\n Composition,\n CompressedImage,\n Image,\n JSONScene,\n ParticleItem,\n RenderLevel,\n SpriteItem,\n TemplateImage,\n VideoImage,\n FilterItem,\n} from '../src';\nimport { CAMERA_CLIP_MODE_NORMAL, ItemEndBehavior, ItemType } from '../src';\nimport { getStandardParticleContent } from './particle';\nimport { getStandardNullContent, getStandardSpriteContent } from './sprite';\nimport { getStandardInteractContent } from './interact';\nimport { arrAdd, quatFromXYZRotation, rotationZYXFromQuat } from './utils';\nimport { getStandardCameraContent } from './camera';\nimport { getStandardFilterContent } from './filter';\nimport { version21Migration, version22Migration } from './migration';\n\nexport * from './utils';\n\nconst v0 = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(\\w+)\\.\\d+)?$/;\nconst standardVersion = /^(\\d+)\\.(\\d+)$/;\nlet reverseParticle = false;\n\nexport function getStandardJSON (json: any): JSONScene {\n if (!json || typeof json !== 'object') {\n throw Error('expect a json object');\n }\n\n // 修正老版本数据中,meshItem以及lightItem结束行为错误问题\n version22Migration(json);\n\n if (v0.test(json.version)) {\n reverseParticle = (/^(\\d+)/).exec(json.version)?.[0] === '0';\n\n return version21Migration(getStandardJSONFromV0(json));\n }\n\n const mainVersion = standardVersion.exec(json.version)?.[1];\n\n if (mainVersion) {\n if (Number(mainVersion) < 2) {\n return version21Migration(json);\n }\n\n return json;\n }\n\n throw Error('invalid json version ' + json.version);\n}\n\nlet currentVersion: '1.0' | '1.1' | '1.3' = '1.0';\n\nfunction getStandardJSONFromV0 (json: any): JSONScene {\n currentVersion = '1.0';\n const plugins = json.plugins || [];\n\n if (json.bins?.length) {\n currentVersion = '1.3';\n }\n const requires: string[] = (json.requires || []).slice();\n const images = json.images.map((img: any, index: number) => getStandardImage(img, index, json.imageTags || []));\n const textures = json.textures || images.map((img: any, i: number) => ({ source: i, flipY: true }));\n const ret: JSONScene = {\n plugins: plugins,\n shapes: json.shapes || [],\n type: 'ge',\n version: currentVersion,\n playerVersion: json.playerVersion ?? {\n web: '',\n native: '',\n },\n compositionId: json.compositionId + '',\n compositions: json.compositions.map((comp: any) => getStandardComposition(comp, { plugins, requires })),\n images,\n imgUsage: json._imgs,\n binUsage: json.binUsage,\n spines: json.spines,\n requires: json.requires,\n textures,\n bins: (json.bins || []).slice(),\n };\n\n if (json._textures) {\n (ret as any)._textures = json._textures;\n }\n\n return ret;\n}\n\nexport function getStandardImage (image: any, index: number, imageTags: RenderLevel[]): TemplateImage | Image | CompressedImage | VideoImage {\n const renderLevel = imageTags[index];\n\n const oriY = image.oriY;\n\n if (typeof image === 'string') {\n return {\n renderLevel,\n url: image,\n oriY,\n };\n } else if (image.template) {\n return {\n url: image.url,\n template: image.template,\n webp: image.webp,\n renderLevel,\n oriY,\n };\n } else if (image.compressed) {\n return {\n url: image.url,\n oriY,\n compressed: {\n astc: image.compressed.android,\n pvrtc: image.compressed.iOS,\n },\n webp: image.webp,\n renderLevel,\n };\n } else if (image.url) {\n return {\n url: image.url,\n type: image.type,\n webp: image.webp,\n renderLevel,\n oriY,\n loop: image.loop,\n };\n } else if (image && image.sourceType) {\n return image;\n }\n throw Error('invalid image type');\n}\n\nexport function getStandardComposition (composition: any, opt: { plugins?: string[], requires?: string[] } = {}): Composition {\n const ret: Composition = {\n id: composition.id + '',\n camera: Object.assign({ clipMode: CAMERA_CLIP_MODE_NORMAL }, composition.camera),\n duration: composition.duration,\n endBehavior: composition.endBehavior,\n items: composition.items.map((item: any) => getStandardItem(item, opt)),\n name: composition.name,\n };\n const startTime = composition.startTime || composition.st;\n\n if (startTime) {\n ret.startTime = startTime;\n }\n let previewSize = composition.meta?.previewSize;\n\n if (previewSize && previewSize[0] === previewSize[1] && previewSize[0] === 0) {\n previewSize = undefined;\n }\n if (previewSize) {\n ret.previewSize = previewSize;\n }\n\n return ret;\n}\n\nconst tempQuat = [0, 0, 0, 1];\n\nconst stdAnchor = 0.5;\n\nexport function getStandardItem (item: any, opt: { plugins?: string[], requires?: string[] } = {}): SpriteItem | ParticleItem | BaseItem | FilterItem {\n let type: ItemType | string = ItemType.base;\n let transform: BaseItemTransform;\n let originContent;\n let content;\n let endBehavior: ItemEndBehavior = item.endBehavior;\n let renderLevel: RenderLevel;\n let pluginName: string;\n let duration = NaN;\n let pn: number;\n\n if (item.content) {\n type = item.type || ItemType.plugin;\n pn = item.pn;\n pluginName = item.pluginName;\n content = item.content;\n originContent = item.content;\n if (isNaN(pn) && !pluginName) {\n pluginName = content.options.type;\n }\n if (item.duration) {\n duration = item.duration;\n }\n transform = item.transform || getTransform(originContent.transform);\n if (type === ItemType.filter) {\n if (currentVersion < '1.1') {\n currentVersion = '1.1';\n }\n content = getStandardSpriteContent(originContent, transform);\n // @ts-expect-error\n content.filter = getStandardFilterContent(originContent.filter);\n }\n } else if (item.particle) {\n type = ItemType.particle;\n originContent = item.particle;\n transform = getTransform(originContent.transform, reverseParticle, true);\n content = getStandardParticleContent(originContent);\n } else if (item.sprite) {\n type = ItemType.sprite;\n originContent = item.sprite;\n transform = getTransform(originContent.transform, false, true);\n content = getStandardSpriteContent(originContent, transform);\n } else if (item.cal) {\n type = ItemType.null;\n originContent = item.cal;\n transform = getTransform(originContent.transform, false, true);\n content = getStandardNullContent(originContent, transform);\n } else if (item.ui) {\n type = ItemType.interact;\n originContent = item.ui;\n transform = getTransform(originContent.transform);\n content = getStandardInteractContent(originContent);\n transform.scale = [originContent.options.width || 1, originContent.options.height || 1, 1];\n } else if (item.model) {\n originContent = item.model;\n if (item.model.options.type === 1) {\n type = ItemType.camera;\n transform = getTransform(originContent.transform);\n content = getStandardCameraContent(originContent);\n }\n }\n if (content.renderer?.anchor) {\n const anchor = new Float32Array(content.renderer.anchor);\n\n if (anchor[0] == stdAnchor && anchor[1] == stdAnchor) {\n delete content.renderer.anchor;\n } else if (opt.requires) {\n arrAdd(opt.requires, 'anchor');\n }\n }\n if (originContent) {\n const looping = originContent.options?.looping;\n\n if (looping) {\n if (Array.isArray(looping)) {\n endBehavior = looping[1] ? ItemEndBehavior.loop : ItemEndBehavior.destroy;\n } else {\n endBehavior = ItemEndBehavior.loop;\n }\n } else {\n endBehavior = endBehavior || originContent?.options?.endBehavior || ItemEndBehavior.destroy;\n }\n if (originContent.options.renderLevel) {\n renderLevel = originContent.options.renderLevel;\n }\n if (isNaN(duration)) {\n duration = originContent.options.duration;\n }\n }\n\n const ret: BaseItem = {\n type,\n name: item.name,\n delay: item.delay,\n duration,\n id: item.id + '',\n // @ts-expect-error\n transform,\n endBehavior,\n // @ts-expect-error\n renderLevel,\n content,\n };\n\n // @ts-expect-error\n if (pluginName) {\n if (opt.plugins) {\n arrAdd(opt.plugins, pluginName);\n ret.pn = opt.plugins.indexOf(pluginName);\n } else {\n ret.pluginName = pluginName;\n }\n // @ts-expect-error\n } else if (Number.isInteger(pn)) {\n // @ts-expect-error\n ret.pn = pn;\n }\n if (item.parentId) {\n ret.parentId = item.parentId + '';\n }\n\n return ret;\n\n function getTransform (originTransform: BaseItemTransform, inverseRotation?: boolean, changeOrder?: boolean): BaseItemTransform {\n if (originTransform) {\n const transform: BaseItemTransform = {};\n const rotation = originTransform.rotation;\n\n if (rotation) {\n if (inverseRotation) {\n transform.rotation = [-rotation[0], -rotation[1], -rotation[2]];\n } else {\n transform.rotation = [rotation[0], rotation[1], rotation[2]];\n }\n if (changeOrder) {\n const q = quatFromXYZRotation(tempQuat, transform.rotation[0], transform.rotation[1], transform.rotation[2]);\n\n transform.rotation = rotationZYXFromQuat([], q);\n }\n }\n const position = originTransform.position;\n\n if (position) {\n transform.position = originTransform.position;\n }\n if (Array.isArray(originTransform.scale)) {\n transform.scale = [originTransform.scale[0] || 1, originTransform.scale[1] || 1, originTransform.scale[2] || 1];\n }\n\n return transform;\n }\n\n return {};\n }\n}\n\n"],"names":[],"mappings":"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"}
|