@spatialwalk/avatarkit 1.0.0-beta.2 → 1.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/README.md +429 -158
  3. package/dist/{StreamingAudioPlayer-CMEiGwxE.js → StreamingAudioPlayer-L87IFoao.js} +89 -58
  4. package/dist/StreamingAudioPlayer-L87IFoao.js.map +1 -0
  5. package/dist/animation/AnimationWebSocketClient.d.ts.map +1 -1
  6. package/dist/audio/AnimationPlayer.d.ts +4 -0
  7. package/dist/audio/AnimationPlayer.d.ts.map +1 -1
  8. package/dist/audio/StreamingAudioPlayer.d.ts +10 -0
  9. package/dist/audio/StreamingAudioPlayer.d.ts.map +1 -1
  10. package/dist/avatar_core_wasm-D4eEi7Eh.js +1666 -0
  11. package/dist/{avatar_core_wasm-DmkU6dYn.js.map → avatar_core_wasm-D4eEi7Eh.js.map} +1 -1
  12. package/dist/avatar_core_wasm.wasm +0 -0
  13. package/dist/config/app-config.d.ts +3 -7
  14. package/dist/config/app-config.d.ts.map +1 -1
  15. package/dist/config/constants.d.ts +19 -3
  16. package/dist/config/constants.d.ts.map +1 -1
  17. package/dist/core/AvatarController.d.ts +91 -64
  18. package/dist/core/AvatarController.d.ts.map +1 -1
  19. package/dist/core/AvatarDownloader.d.ts.map +1 -1
  20. package/dist/core/AvatarKit.d.ts +6 -0
  21. package/dist/core/AvatarKit.d.ts.map +1 -1
  22. package/dist/core/AvatarManager.d.ts.map +1 -1
  23. package/dist/core/AvatarView.d.ts +28 -30
  24. package/dist/core/AvatarView.d.ts.map +1 -1
  25. package/dist/core/NetworkLayer.d.ts +59 -0
  26. package/dist/core/NetworkLayer.d.ts.map +1 -0
  27. package/dist/index-BDxVrKwm.js +5942 -0
  28. package/dist/index-BDxVrKwm.js.map +1 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +12 -11
  31. package/dist/renderer/RenderSystem.d.ts +4 -2
  32. package/dist/renderer/RenderSystem.d.ts.map +1 -1
  33. package/dist/types/index.d.ts +18 -0
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/dist/utils/cls-tracker.d.ts +17 -0
  36. package/dist/utils/cls-tracker.d.ts.map +1 -0
  37. package/dist/utils/logger.d.ts +1 -1
  38. package/dist/utils/logger.d.ts.map +1 -1
  39. package/package.json +8 -4
  40. package/dist/StreamingAudioPlayer-CMEiGwxE.js.map +0 -1
  41. package/dist/avatar_core_wasm-DmkU6dYn.js +0 -1666
  42. package/dist/index-CNhquYUE.js +0 -9712
  43. package/dist/index-CNhquYUE.js.map +0 -1
  44. package/dist/utils/posthog-tracker.d.ts +0 -82
  45. package/dist/utils/posthog-tracker.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-CNhquYUE.js","sources":["../config/constants.ts","../config/app-config.ts","../core/Avatar.ts","../node_modules/stackframe/stackframe.js","../node_modules/error-stack-parser/error-stack-parser.js","../node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs","../node_modules/pathe/dist/index.mjs","../node_modules/@guiiai/logg/dist/index.mjs","../node_modules/posthog-js/dist/module.js","../utils/logger.ts","../audio/AnimationPlayer.ts","../node_modules/@bufbuild/protobuf/dist/esm/wire/varint.js","../node_modules/@bufbuild/protobuf/dist/esm/proto-int64.js","../node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js","../node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js","../generated/driveningress/v1/driveningress.ts","../types/character.ts","../types/index.ts","../config/sdk-config-loader.ts","../wasm/avatarCoreMemory.ts","../wasm/avatarCoreAdapter.ts","../core/AvatarKit.ts","../utils/error-utils.ts","../utils/posthog-tracker.ts","../node_modules/nanoid/index.browser.js","../utils/reqId.ts","../animation/utils/eventEmitter.ts","../animation/AnimationWebSocketClient.ts","../core/AvatarController.ts","../core/AvatarDownloader.ts","../core/AvatarManager.ts","../animation/utils/flameConverter.ts","../renderer/sortSplats.ts","../renderer/webgl/reorderData.ts","../renderer/webgl/fragment.glsl?raw","../renderer/webgl/vertex.glsl?raw","../renderer/webgl/webglRenderer.ts","../renderer/webgpu/render.wgsl?raw","../renderer/webgpu/webgpuRenderer.ts","../renderer/RenderSystem.ts","../utils/animation-interpolation.ts","../core/AvatarView.ts"],"sourcesContent":["export const POSTHOG_HOST = 'https://i.spatialwalk.ai'\nexport const POSTHOG_API_KEY = 'phc_TjwCYlnJCUMGPYAKePPxoRrCdMGsN8AQqprhWhCIShe'\nexport const POSTHOG_TRACK_EVENTS = import.meta.env.VITE_POSTHOG_TRACK_EVENTS === 'true'\nexport const ENV_TEST = !import.meta.env.VITE_ENV_PROD && (import.meta.env.VITE_ENV_TEST === 'true' || import.meta.env.DEV)\n\n/**\n * Check if URL has debug=1 parameter\n */\nfunction hasDebugParam(): boolean {\n if (typeof window === 'undefined') {\n return false\n }\n const params = new URLSearchParams(window.location.search)\n return params.get('debug') === '1'\n}\n\n/**\n * Comprehensive debug mode check\n * Returns true if:\n * - VITE_ENV_TEST is 'true', OR\n * - Running in DEV mode, OR\n * - URL has debug=1 parameter\n */\nexport function isDebugMode(): boolean {\n return ENV_TEST || hasDebugParam()\n}\n","import { ENV_TEST, isDebugMode } from './constants'\n\nexport const APP_CONFIG = {\n testEnv: ENV_TEST,\n // Dynamic debug mode check (includes URL parameter)\n get debug() {\n return isDebugMode()\n },\n\n rendering: {\n backgroundColor: [1, 1, 1, 1] as [number, number, number, number],\n\n /**\n * 排序模式\n * - 'balance': 性能优先,首帧排序后复用(默认)\n * - 'quality': 质量优先,每帧重新排序\n */\n sortMode: 'balance' as 'balance' | 'quality',\n\n /**\n * 背景显示模式\n * - 'cover': 保持宽高比,覆盖整个画布(默认)\n * - 'stretch': 拉伸填充整个画布\n */\n backgroundMode: 'cover' as 'cover' | 'stretch',\n },\n\n camera: {\n position: [-0.02, -0.013, 1.5] as [number, number, number],\n target: [0, 0, 0] as [number, number, number],\n fov: 22,\n near: 0.01,\n far: 100,\n },\n\n animation: {\n fps: 25, // 动画帧率(从 CharacterMeta 加载动画资源)\n },\n\n avatar: {\n baseAssetsPath: '',\n wasmPath: './wasm/avatar_core_wasm.js',\n },\n\n // FLAME 全局模板资源 CDN\n // 这些资源是所有角色共享的基础模板\n flame: {\n cdnBaseUrl: 'https://cdn.spatialwalk.top/public',\n resources: {\n flameModel: 'model.pb',\n flameTemplate: 'fm/template.pb',\n teethPb: 'fm/teeth.pb',\n teethNpz: 'teeth.npz',\n },\n },\n\n wasm: {\n logLevel: 'basic' as 'basic' | 'verbose',\n enableValidation: false,\n enablePerformanceMetrics: true,\n },\n}\n","/**\n * Avatar:数字人模型\n * 构造函数:not public(由 AvatarManager 加载后返回数字人模型实例)\n * 公开属性:only id(其他字段都不公开)\n */\n\nimport type { CharacterMeta } from '../types'\nimport type { PreloadResult } from './AvatarDownloader'\n\nexport class Avatar {\n public readonly id: string\n private characterMeta: CharacterMeta\n private resources: PreloadResult\n\n /**\n * 构造函数(内部使用)\n * @param id 数字人 ID\n * @param characterMeta 角色元数据\n * @param resources 资源数据\n */\n constructor(id: string, characterMeta: CharacterMeta, resources: PreloadResult) {\n this.id = id\n this.characterMeta = characterMeta\n this.resources = resources\n }\n\n /**\n * 获取角色元数据(内部使用)\n */\n getCharacterMeta(): CharacterMeta {\n return this.characterMeta\n }\n\n /**\n * 获取资源数据(内部使用)\n */\n getResources(): PreloadResult {\n return this.resources\n }\n}\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var objectProps = ['evalOrigin'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function() {\n return this.args;\n },\n setArgs: function(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(,.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(').replace(/^.*?\\s+/, '');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\(.+\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n // if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine\n // because this line doesn't have function name\n var locationParts = this.extractLocation(location ? location[1] : sanitizedLine);\n var functionName = location && sanitizedLine || undefined;\n var fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n","let _lazyMatch = () => { var __lib__=(()=>{var m=Object.defineProperty,V=Object.getOwnPropertyDescriptor,G=Object.getOwnPropertyNames,T=Object.prototype.hasOwnProperty,q=(r,e)=>{for(var n in e)m(r,n,{get:e[n],enumerable:true});},H=(r,e,n,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let t of G(e))!T.call(r,t)&&t!==n&&m(r,t,{get:()=>e[t],enumerable:!(a=V(e,t))||a.enumerable});return r},J=r=>H(m({},\"__esModule\",{value:true}),r),w={};q(w,{default:()=>re});var A=r=>Array.isArray(r),d=r=>typeof r==\"function\",Q=r=>r.length===0,W=r=>typeof r==\"number\",K=r=>typeof r==\"object\"&&r!==null,X=r=>r instanceof RegExp,b=r=>typeof r==\"string\",h=r=>r===void 0,Y=r=>{const e=new Map;return n=>{const a=e.get(n);if(a)return a;const t=r(n);return e.set(n,t),t}},rr=(r,e,n={})=>{const a={cache:{},input:r,index:0,indexMax:0,options:n,output:[]};if(v(e)(a)&&a.index===r.length)return a.output;throw new Error(`Failed to parse at index ${a.indexMax}`)},i=(r,e)=>A(r)?er(r,e):b(r)?ar(r,e):nr(r,e),er=(r,e)=>{const n={};for(const a of r){if(a.length!==1)throw new Error(`Invalid character: \"${a}\"`);const t=a.charCodeAt(0);n[t]=true;}return a=>{const t=a.index,o=a.input;for(;a.index<o.length&&o.charCodeAt(a.index)in n;)a.index+=1;const u=a.index;if(u>t){if(!h(e)&&!a.options.silent){const s=a.input.slice(t,u),c=d(e)?e(s,o,String(t)):e;h(c)||a.output.push(c);}a.indexMax=Math.max(a.indexMax,a.index);}return true}},nr=(r,e)=>{const n=r.source,a=r.flags.replace(/y|$/,\"y\"),t=new RegExp(n,a);return g(o=>{t.lastIndex=o.index;const u=t.exec(o.input);if(u){if(!h(e)&&!o.options.silent){const s=d(e)?e(...u,o.input,String(o.index)):e;h(s)||o.output.push(s);}return o.index+=u[0].length,o.indexMax=Math.max(o.indexMax,o.index),true}else return false})},ar=(r,e)=>n=>{if(n.input.startsWith(r,n.index)){if(!h(e)&&!n.options.silent){const t=d(e)?e(r,n.input,String(n.index)):e;h(t)||n.output.push(t);}return n.index+=r.length,n.indexMax=Math.max(n.indexMax,n.index),true}else return false},C=(r,e,n,a)=>{const t=v(r);return g(_(M(o=>{let u=0;for(;u<n;){const s=o.index;if(!t(o)||(u+=1,o.index===s))break}return u>=e})))},tr=(r,e)=>C(r,0,1),f=(r,e)=>C(r,0,1/0),x=(r,e)=>{const n=r.map(v);return g(_(M(a=>{for(let t=0,o=n.length;t<o;t++)if(!n[t](a))return false;return true})))},l=(r,e)=>{const n=r.map(v);return g(_(a=>{for(let t=0,o=n.length;t<o;t++)if(n[t](a))return true;return false}))},M=(r,e=false)=>{const n=v(r);return a=>{const t=a.index,o=a.output.length,u=n(a);return (!u||e)&&(a.index=t,a.output.length!==o&&(a.output.length=o)),u}},_=(r,e)=>{const n=v(r);return n},g=(()=>{let r=0;return e=>{const n=v(e),a=r+=1;return t=>{var o;if(t.options.memoization===false)return n(t);const u=t.index,s=(o=t.cache)[a]||(o[a]=new Map),c=s.get(u);if(c===false)return false;if(W(c))return t.index=c,true;if(c)return t.index=c.index,c.output?.length&&t.output.push(...c.output),true;{const Z=t.output.length;if(n(t)){const D=t.index,U=t.output.length;if(U>Z){const ee=t.output.slice(Z,U);s.set(u,{index:D,output:ee});}else s.set(u,D);return true}else return s.set(u,false),false}}}})(),E=r=>{let e;return n=>(e||(e=v(r())),e(n))},v=Y(r=>{if(d(r))return Q(r)?E(r):r;if(b(r)||X(r))return i(r);if(A(r))return x(r);if(K(r))return l(Object.values(r));throw new Error(\"Invalid rule\")}),P=\"abcdefghijklmnopqrstuvwxyz\",ir=r=>{let e=\"\";for(;r>0;){const n=(r-1)%26;e=P[n]+e,r=Math.floor((r-1)/26);}return e},O=r=>{let e=0;for(let n=0,a=r.length;n<a;n++)e=e*26+P.indexOf(r[n])+1;return e},S=(r,e)=>{if(e<r)return S(e,r);const n=[];for(;r<=e;)n.push(r++);return n},or=(r,e,n)=>S(r,e).map(a=>String(a).padStart(n,\"0\")),R=(r,e)=>S(O(r),O(e)).map(ir),p=r=>r,z=r=>ur(e=>rr(e,r,{memoization:false}).join(\"\")),ur=r=>{const e={};return n=>e[n]??(e[n]=r(n))},sr=i(/^\\*\\*\\/\\*$/,\".*\"),cr=i(/^\\*\\*\\/(\\*)?([ a-zA-Z0-9._-]+)$/,(r,e,n)=>`.*${e?\"\":\"(?:^|/)\"}${n.replaceAll(\".\",\"\\\\.\")}`),lr=i(/^\\*\\*\\/(\\*)?([ a-zA-Z0-9._-]*)\\{([ a-zA-Z0-9._-]+(?:,[ a-zA-Z0-9._-]+)*)\\}$/,(r,e,n,a)=>`.*${e?\"\":\"(?:^|/)\"}${n.replaceAll(\".\",\"\\\\.\")}(?:${a.replaceAll(\",\",\"|\").replaceAll(\".\",\"\\\\.\")})`),y=i(/\\\\./,p),pr=i(/[$.*+?^(){}[\\]\\|]/,r=>`\\\\${r}`),vr=i(/./,p),hr=i(/^(?:!!)*!(.*)$/,(r,e)=>`(?!^${L(e)}$).*?`),dr=i(/^(!!)+/,\"\"),fr=l([hr,dr]),xr=i(/\\/(\\*\\*\\/)+/,\"(?:/.+/|/)\"),gr=i(/^(\\*\\*\\/)+/,\"(?:^|.*/)\"),mr=i(/\\/(\\*\\*)$/,\"(?:/.*|$)\"),_r=i(/\\*\\*/,\".*\"),j=l([xr,gr,mr,_r]),Sr=i(/\\*\\/(?!\\*\\*\\/)/,\"[^/]*/\"),yr=i(/\\*/,\"[^/]*\"),N=l([Sr,yr]),k=i(\"?\",\"[^/]\"),$r=i(\"[\",p),wr=i(\"]\",p),Ar=i(/[!^]/,\"^/\"),br=i(/[a-z]-[a-z]|[0-9]-[0-9]/i,p),Cr=i(/[$.*+?^(){}[\\|]/,r=>`\\\\${r}`),Mr=i(/[^\\]]/,p),Er=l([y,Cr,br,Mr]),B=x([$r,tr(Ar),f(Er),wr]),Pr=i(\"{\",\"(?:\"),Or=i(\"}\",\")\"),Rr=i(/(\\d+)\\.\\.(\\d+)/,(r,e,n)=>or(+e,+n,Math.min(e.length,n.length)).join(\"|\")),zr=i(/([a-z]+)\\.\\.([a-z]+)/,(r,e,n)=>R(e,n).join(\"|\")),jr=i(/([A-Z]+)\\.\\.([A-Z]+)/,(r,e,n)=>R(e.toLowerCase(),n.toLowerCase()).join(\"|\").toUpperCase()),Nr=l([Rr,zr,jr]),I=x([Pr,Nr,Or]),kr=i(\"{\",\"(?:\"),Br=i(\"}\",\")\"),Ir=i(\",\",\"|\"),Fr=i(/[$.*+?^(){[\\]\\|]/,r=>`\\\\${r}`),Lr=i(/[^}]/,p),Zr=E(()=>F),Dr=l([j,N,k,B,I,Zr,y,Fr,Ir,Lr]),F=x([kr,f(Dr),Br]),Ur=f(l([sr,cr,lr,fr,j,N,k,B,I,F,y,pr,vr])),Vr=Ur,Gr=z(Vr),L=Gr,Tr=i(/\\\\./,p),qr=i(/./,p),Hr=i(/\\*\\*\\*+/,\"*\"),Jr=i(/([^/{[(!])\\*\\*/,(r,e)=>`${e}*`),Qr=i(/(^|.)\\*\\*(?=[^*/)\\]}])/,(r,e)=>`${e}*`),Wr=f(l([Tr,Hr,Jr,Qr,qr])),Kr=Wr,Xr=z(Kr),Yr=Xr,$=(r,e)=>{const n=Array.isArray(r)?r:[r];if(!n.length)return false;const a=n.map($.compile),t=n.every(s=>/(\\/(?:\\*\\*)?|\\[\\/\\])$/.test(s)),o=e.replace(/[\\\\\\/]+/g,\"/\").replace(/\\/$/,t?\"/\":\"\");return a.some(s=>s.test(o))};$.compile=r=>new RegExp(`^${L(Yr(r))}$`,\"s\");var re=$;return J(w)})();\n return __lib__.default || __lib__; };\nlet _match;\nconst zeptomatch = (path, pattern) => {\n if (!_match) {\n _match = _lazyMatch();\n _lazyMatch = null;\n }\n return _match(path, pattern);\n};\n\nconst _DRIVE_LETTER_START_RE = /^[A-Za-z]:\\//;\nfunction normalizeWindowsPath(input = \"\") {\n if (!input) {\n return input;\n }\n return input.replace(/\\\\/g, \"/\").replace(_DRIVE_LETTER_START_RE, (r) => r.toUpperCase());\n}\n\nconst _UNC_REGEX = /^[/\\\\]{2}/;\nconst _IS_ABSOLUTE_RE = /^[/\\\\](?![/\\\\])|^[/\\\\]{2}(?!\\.)|^[A-Za-z]:[/\\\\]/;\nconst _DRIVE_LETTER_RE = /^[A-Za-z]:$/;\nconst _ROOT_FOLDER_RE = /^\\/([A-Za-z]:)?$/;\nconst _EXTNAME_RE = /.(\\.[^./]+|\\.)$/;\nconst _PATH_ROOT_RE = /^[/\\\\]|^[a-zA-Z]:[/\\\\]/;\nconst sep = \"/\";\nconst normalize = function(path) {\n if (path.length === 0) {\n return \".\";\n }\n path = normalizeWindowsPath(path);\n const isUNCPath = path.match(_UNC_REGEX);\n const isPathAbsolute = isAbsolute(path);\n const trailingSeparator = path[path.length - 1] === \"/\";\n path = normalizeString(path, !isPathAbsolute);\n if (path.length === 0) {\n if (isPathAbsolute) {\n return \"/\";\n }\n return trailingSeparator ? \"./\" : \".\";\n }\n if (trailingSeparator) {\n path += \"/\";\n }\n if (_DRIVE_LETTER_RE.test(path)) {\n path += \"/\";\n }\n if (isUNCPath) {\n if (!isPathAbsolute) {\n return `//./${path}`;\n }\n return `//${path}`;\n }\n return isPathAbsolute && !isAbsolute(path) ? `/${path}` : path;\n};\nconst join = function(...segments) {\n let path = \"\";\n for (const seg of segments) {\n if (!seg) {\n continue;\n }\n if (path.length > 0) {\n const pathTrailing = path[path.length - 1] === \"/\";\n const segLeading = seg[0] === \"/\";\n const both = pathTrailing && segLeading;\n if (both) {\n path += seg.slice(1);\n } else {\n path += pathTrailing || segLeading ? seg : `/${seg}`;\n }\n } else {\n path += seg;\n }\n }\n return normalize(path);\n};\nfunction cwd() {\n if (typeof process !== \"undefined\" && typeof process.cwd === \"function\") {\n return process.cwd().replace(/\\\\/g, \"/\");\n }\n return \"/\";\n}\nconst resolve = function(...arguments_) {\n arguments_ = arguments_.map((argument) => normalizeWindowsPath(argument));\n let resolvedPath = \"\";\n let resolvedAbsolute = false;\n for (let index = arguments_.length - 1; index >= -1 && !resolvedAbsolute; index--) {\n const path = index >= 0 ? arguments_[index] : cwd();\n if (!path || path.length === 0) {\n continue;\n }\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = isAbsolute(path);\n }\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute);\n if (resolvedAbsolute && !isAbsolute(resolvedPath)) {\n return `/${resolvedPath}`;\n }\n return resolvedPath.length > 0 ? resolvedPath : \".\";\n};\nfunction normalizeString(path, allowAboveRoot) {\n let res = \"\";\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let char = null;\n for (let index = 0; index <= path.length; ++index) {\n if (index < path.length) {\n char = path[index];\n } else if (char === \"/\") {\n break;\n } else {\n char = \"/\";\n }\n if (char === \"/\") {\n if (lastSlash === index - 1 || dots === 1) ; else if (dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== \".\" || res[res.length - 2] !== \".\") {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(\"/\");\n if (lastSlashIndex === -1) {\n res = \"\";\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\");\n }\n lastSlash = index;\n dots = 0;\n continue;\n } else if (res.length > 0) {\n res = \"\";\n lastSegmentLength = 0;\n lastSlash = index;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n res += res.length > 0 ? \"/..\" : \"..\";\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) {\n res += `/${path.slice(lastSlash + 1, index)}`;\n } else {\n res = path.slice(lastSlash + 1, index);\n }\n lastSegmentLength = index - lastSlash - 1;\n }\n lastSlash = index;\n dots = 0;\n } else if (char === \".\" && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\nconst isAbsolute = function(p) {\n return _IS_ABSOLUTE_RE.test(p);\n};\nconst toNamespacedPath = function(p) {\n return normalizeWindowsPath(p);\n};\nconst extname = function(p) {\n if (p === \"..\") return \"\";\n const match = _EXTNAME_RE.exec(normalizeWindowsPath(p));\n return match && match[1] || \"\";\n};\nconst relative = function(from, to) {\n const _from = resolve(from).replace(_ROOT_FOLDER_RE, \"$1\").split(\"/\");\n const _to = resolve(to).replace(_ROOT_FOLDER_RE, \"$1\").split(\"/\");\n if (_to[0][1] === \":\" && _from[0][1] === \":\" && _from[0] !== _to[0]) {\n return _to.join(\"/\");\n }\n const _fromCopy = [..._from];\n for (const segment of _fromCopy) {\n if (_to[0] !== segment) {\n break;\n }\n _from.shift();\n _to.shift();\n }\n return [..._from.map(() => \"..\"), ..._to].join(\"/\");\n};\nconst dirname = function(p) {\n const segments = normalizeWindowsPath(p).replace(/\\/$/, \"\").split(\"/\").slice(0, -1);\n if (segments.length === 1 && _DRIVE_LETTER_RE.test(segments[0])) {\n segments[0] += \"/\";\n }\n return segments.join(\"/\") || (isAbsolute(p) ? \"/\" : \".\");\n};\nconst format = function(p) {\n const ext = p.ext ? p.ext.startsWith(\".\") ? p.ext : `.${p.ext}` : \"\";\n const segments = [p.root, p.dir, p.base ?? (p.name ?? \"\") + ext].filter(\n Boolean\n );\n return normalizeWindowsPath(\n p.root ? resolve(...segments) : segments.join(\"/\")\n );\n};\nconst basename = function(p, extension) {\n const segments = normalizeWindowsPath(p).split(\"/\");\n let lastSegment = \"\";\n for (let i = segments.length - 1; i >= 0; i--) {\n const val = segments[i];\n if (val) {\n lastSegment = val;\n break;\n }\n }\n return extension && lastSegment.endsWith(extension) ? lastSegment.slice(0, -extension.length) : lastSegment;\n};\nconst parse = function(p) {\n const root = _PATH_ROOT_RE.exec(p)?.[0]?.replace(/\\\\/g, \"/\") || \"\";\n const base = basename(p);\n const extension = extname(base);\n return {\n root,\n dir: dirname(p),\n base,\n ext: extension,\n name: base.slice(0, base.length - extension.length)\n };\n};\nconst matchesGlob = (path, pattern) => {\n return zeptomatch(pattern, normalize(path));\n};\n\nconst _path = {\n __proto__: null,\n basename: basename,\n dirname: dirname,\n extname: extname,\n format: format,\n isAbsolute: isAbsolute,\n join: join,\n matchesGlob: matchesGlob,\n normalize: normalize,\n normalizeString: normalizeString,\n parse: parse,\n relative: relative,\n resolve: resolve,\n sep: sep,\n toNamespacedPath: toNamespacedPath\n};\n\nexport { _path as _, normalizeString as a, relative as b, basename as c, dirname as d, extname as e, format as f, normalizeWindowsPath as g, isAbsolute as i, join as j, matchesGlob as m, normalize as n, parse as p, resolve as r, sep as s, toNamespacedPath as t };\n","import { _ as _path } from './shared/pathe.M-eThtNZ.mjs';\nexport { c as basename, d as dirname, e as extname, f as format, i as isAbsolute, j as join, m as matchesGlob, n as normalize, a as normalizeString, p as parse, b as relative, r as resolve, s as sep, t as toNamespacedPath } from './shared/pathe.M-eThtNZ.mjs';\n\nconst delimiter = /* @__PURE__ */ (() => globalThis.process?.platform === \"win32\" ? \";\" : \":\")();\nconst _platforms = { posix: void 0, win32: void 0 };\nconst mix = (del = delimiter) => {\n return new Proxy(_path, {\n get(_, prop) {\n if (prop === \"delimiter\") return del;\n if (prop === \"posix\") return posix;\n if (prop === \"win32\") return win32;\n return _platforms[prop] || _path[prop];\n }\n });\n};\nconst posix = /* @__PURE__ */ mix(\":\");\nconst win32 = /* @__PURE__ */ mix(\";\");\n\nexport { posix as default, delimiter, posix, win32 };\n","import ErrorStackParser from 'error-stack-parser';\nimport path from 'pathe';\n\nvar LogLevel = /* @__PURE__ */ ((LogLevel2) => {\n LogLevel2[LogLevel2[\"Error\"] = 0] = \"Error\";\n LogLevel2[LogLevel2[\"Warning\"] = 1] = \"Warning\";\n LogLevel2[LogLevel2[\"Log\"] = 2] = \"Log\";\n LogLevel2[LogLevel2[\"Verbose\"] = 3] = \"Verbose\";\n LogLevel2[LogLevel2[\"Debug\"] = 4] = \"Debug\";\n return LogLevel2;\n})(LogLevel || {});\nvar LogLevelString = /* @__PURE__ */ ((LogLevelString2) => {\n LogLevelString2[\"Error\"] = \"error\";\n LogLevelString2[\"Warning\"] = \"warn\";\n LogLevelString2[\"Log\"] = \"log\";\n LogLevelString2[\"Verbose\"] = \"verbose\";\n LogLevelString2[\"Debug\"] = \"debug\";\n return LogLevelString2;\n})(LogLevelString || {});\nvar Format = /* @__PURE__ */ ((Format2) => {\n Format2[\"JSON\"] = \"json\";\n Format2[\"Pretty\"] = \"pretty\";\n return Format2;\n})(Format || {});\n\nconst isColorSupported = true;\nfunction formatter(open, close, replace = open) {\n return (input) => {\n const string = `${input}`;\n const index = string.indexOf(close, open.length);\n return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;\n };\n}\nfunction replaceClose(string, close, replace, index) {\n const start = string.substring(0, index) + replace;\n const end = string.substring(index + close.length);\n const nextIndex = end.indexOf(close);\n return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end;\n}\nfunction createColors(enabled = isColorSupported) {\n return {\n isColorSupported: enabled,\n reset: enabled ? (s) => `\\x1B[0m${s}\\x1B[0m` : String,\n bold: enabled ? formatter(\"\\x1B[1m\", \"\\x1B[22m\", \"\\x1B[22m\\x1B[1m\") : String,\n dim: enabled ? formatter(\"\\x1B[2m\", \"\\x1B[22m\", \"\\x1B[22m\\x1B[2m\") : String,\n italic: enabled ? formatter(\"\\x1B[3m\", \"\\x1B[23m\") : String,\n underline: enabled ? formatter(\"\\x1B[4m\", \"\\x1B[24m\") : String,\n inverse: enabled ? formatter(\"\\x1B[7m\", \"\\x1B[27m\") : String,\n hidden: enabled ? formatter(\"\\x1B[8m\", \"\\x1B[28m\") : String,\n strikethrough: enabled ? formatter(\"\\x1B[9m\", \"\\x1B[29m\") : String,\n black: enabled ? formatter(\"\\x1B[30m\", \"\\x1B[39m\") : String,\n red: enabled ? formatter(\"\\x1B[31m\", \"\\x1B[39m\") : String,\n green: enabled ? formatter(\"\\x1B[32m\", \"\\x1B[39m\") : String,\n yellow: enabled ? formatter(\"\\x1B[33m\", \"\\x1B[39m\") : String,\n blue: enabled ? formatter(\"\\x1B[34m\", \"\\x1B[39m\") : String,\n magenta: enabled ? formatter(\"\\x1B[35m\", \"\\x1B[39m\") : String,\n cyan: enabled ? formatter(\"\\x1B[36m\", \"\\x1B[39m\") : String,\n white: enabled ? formatter(\"\\x1B[37m\", \"\\x1B[39m\") : String,\n gray: enabled ? formatter(\"\\x1B[90m\", \"\\x1B[39m\") : String,\n bgBlack: enabled ? formatter(\"\\x1B[40m\", \"\\x1B[49m\") : String,\n bgRed: enabled ? formatter(\"\\x1B[41m\", \"\\x1B[49m\") : String,\n bgGreen: enabled ? formatter(\"\\x1B[42m\", \"\\x1B[49m\") : String,\n bgYellow: enabled ? formatter(\"\\x1B[43m\", \"\\x1B[49m\") : String,\n bgBlue: enabled ? formatter(\"\\x1B[44m\", \"\\x1B[49m\") : String,\n bgMagenta: enabled ? formatter(\"\\x1B[45m\", \"\\x1B[49m\") : String,\n bgCyan: enabled ? formatter(\"\\x1B[46m\", \"\\x1B[49m\") : String,\n bgWhite: enabled ? formatter(\"\\x1B[47m\", \"\\x1B[49m\") : String\n };\n}\nconst pc = createColors();\n\nconst logLevelStringToLogLevelMap = {\n [LogLevelString.Error]: LogLevel.Error,\n [LogLevelString.Warning]: LogLevel.Warning,\n [LogLevelString.Log]: LogLevel.Log,\n [LogLevelString.Verbose]: LogLevel.Verbose,\n [LogLevelString.Debug]: LogLevel.Debug\n};\nconst logLevelToLogLevelStringMap = {\n [LogLevel.Error]: LogLevelString.Error,\n [LogLevel.Warning]: LogLevelString.Warning,\n [LogLevel.Log]: LogLevelString.Log,\n [LogLevel.Verbose]: LogLevelString.Verbose,\n [LogLevel.Debug]: LogLevelString.Debug\n};\nconst availableLogLevelStrings = [\n LogLevelString.Error,\n LogLevelString.Warning,\n LogLevelString.Log,\n LogLevelString.Verbose,\n LogLevelString.Debug\n];\nconst logLevelToColorMap = {\n [LogLevel.Error]: pc.red,\n [LogLevel.Warning]: pc.yellow,\n [LogLevel.Log]: pc.blue,\n [LogLevel.Verbose]: pc.cyan,\n [LogLevel.Debug]: pc.green\n};\nconst availableLogLevels = [\n LogLevel.Error,\n LogLevel.Warning,\n LogLevel.Log,\n LogLevel.Verbose,\n LogLevel.Debug\n];\nconst availableFormats = [Format.JSON, Format.Pretty];\n\nfunction parseErrorStacks(errorLike) {\n if (errorLike.stack == null) {\n return [];\n }\n return errorLike.stack.split(\"\\n\").map((item) => item.trim()).slice(1).filter((item) => {\n const match = /^at (.*)( \\(.*:(\\d+):(\\d+)\\))|at (.*)(:(\\d+):(\\d+))/i.exec(item);\n if (!match)\n return false;\n return true;\n }).map((item) => {\n const match = /at (.*)( \\((.*):(\\d+):(\\d+)\\))|at (.*)(:(\\d+):(\\d+))/i.exec(item);\n if (!match) {\n return {\n invalid: true\n };\n }\n if (typeof match[1] !== \"undefined\" && typeof match[2] !== \"undefined\" && typeof match[3] !== \"undefined\" && typeof match[4] !== \"undefined\" && typeof match[5] !== \"undefined\") {\n return {\n invalid: false,\n function: match[1] ?? \"\",\n file: match[3] ?? \"\",\n line: Number.parseInt(match[4] ?? \"0\"),\n column: Number.parseInt(match[5] ?? \"0\")\n };\n } else if (typeof match[6] !== \"undefined\" && typeof match[7] !== \"undefined\" && typeof match[8] !== \"undefined\" && typeof match[9] !== \"undefined\") {\n return {\n invalid: false,\n function: match[6] ?? \"\",\n file: match[7] ?? \"\",\n line: Number.parseInt(match[8] ?? \"0\"),\n column: Number.parseInt(match[9] ?? \"0\")\n };\n } else {\n return {\n invalid: true\n };\n }\n });\n}\n\nfunction isErrorLike(err) {\n if (err == null) {\n return false;\n }\n if (err instanceof Error) {\n return true;\n }\n return false;\n}\nfunction newLog(logLevel, context, fields, message, timeFormatter) {\n let fieldsObj = { context: \"\" };\n if (typeof fields !== \"undefined\" && fields !== null) {\n fieldsObj = { ...fields };\n }\n if (typeof context !== \"undefined\" && context !== null) {\n fieldsObj.context = context;\n }\n const now = /* @__PURE__ */ new Date();\n const raw = {\n \"@timestamp\": now.getTime(),\n \"@localetime\": timeFormatter ? timeFormatter(now) : now.toISOString(),\n \"level\": logLevel,\n \"fields\": fieldsObj,\n \"message\": message\n };\n return raw;\n}\nfunction newErrorLog(logLevel, context, fields, message, errorStack, timeFormatter) {\n const log = newLog(logLevel, context, fields, message, timeFormatter);\n if (typeof errorStack !== \"undefined\" && errorStack !== null) {\n log.errored = true;\n log.error = { stack: errorStack };\n }\n return log;\n}\nfunction prettyFormatValue(value) {\n let valueString = \"\";\n switch (typeof value) {\n case \"number\":\n valueString = pc.yellow(value);\n break;\n case \"object\":\n valueString = pc.green(JSON.stringify(value));\n break;\n case \"boolean\":\n valueString = pc.yellow(String(value));\n break;\n case \"undefined\":\n valueString = pc.gray(\"undefined\");\n break;\n default:\n valueString = String(value);\n break;\n }\n return valueString;\n}\nfunction toPrettyString(log) {\n const messagePartials = [];\n messagePartials.push(log[\"@localetime\"]);\n messagePartials.push(\n logLevelToColorMap[logLevelStringToLogLevelMap[log.level]](\n `[${log.level}]`\n )\n );\n let contextString = \"\";\n if (log.fields.isNestSystemModule != null) {\n contextString = pc.magenta(`[${log.fields.nestSystemModule}]`);\n delete log.fields.isNestSystemModule;\n delete log.fields.nestSystemModule;\n }\n if (log.fields.context != null) {\n contextString = pc.magenta(`[${log.fields.context}]`);\n delete log.fields.context;\n }\n if (contextString.length > 0) {\n messagePartials.push(contextString);\n }\n if (\"module\" in log.fields && log.fields.module != null) {\n messagePartials.push(pc.magenta(`[${log.fields.module}]`));\n delete log.fields.module;\n }\n messagePartials.push(log.message);\n const fieldsEntries = Object.entries(log.fields);\n if (fieldsEntries.length > 0) {\n messagePartials.push(\" {\");\n }\n for (const [key, value] of fieldsEntries) {\n let valueString = value;\n if (isErrorLike(value)) {\n if (value.message) {\n valueString = prettyFormatValue(value.message);\n }\n if (!valueString) {\n valueString = \"\";\n }\n if (value.cause != null) {\n try {\n valueString += JSON.stringify(value.cause);\n } catch {\n valueString += String(value.cause);\n }\n }\n } else {\n valueString = prettyFormatValue(value);\n }\n messagePartials.push(`${pc.gray(key)}${pc.gray(\"=\")}${valueString}`);\n }\n if (fieldsEntries.length > 0) {\n messagePartials.push(\"}\");\n }\n let message = messagePartials.join(\" \");\n if (log.errored != null && log.errored && log.error && log.error.stack != null && log.error.stack) {\n message += `\n${log.error.stack}`;\n }\n return message;\n}\nfunction shouldOutputDebugLevelLogWhenLogLevelIsOneOf(logLevel) {\n return logLevel >= LogLevel.Debug;\n}\nfunction shouldOutputVerboseLevelLogWhenLogLevelIsOneOf(logLevel) {\n return logLevel >= LogLevel.Verbose;\n}\nfunction shouldOutputLogLevelLogWhenLogLevelIsOneOf(logLevel) {\n return logLevel >= LogLevel.Log;\n}\nfunction shouldOutputWarningLevelLogWhenLogLevelIsOneOf(logLevel) {\n return logLevel >= LogLevel.Warning;\n}\nfunction shouldOutputErrorLevelLogWhenLogLevelIsOneOf(logLevel) {\n return logLevel >= LogLevel.Error;\n}\n\nfunction isBrowser() {\n return typeof window !== \"undefined\";\n}\n\nfunction shouldUseHyperlink() {\n return !isBrowser() && getGlobalFormat() === Format.Pretty;\n}\nfunction withHyperlink(basePath, context) {\n return shouldUseHyperlink() ? `\\x1B]8;;file://${basePath}\\x1B\\\\${context}\\x1B]8;;\\x1B\\\\` : context;\n}\n\nconst GLOBAL_CONFIG = {\n configured: false,\n logLevel: LogLevel.Debug,\n format: Format.JSON,\n timeFormatter: (inputDate) => inputDate.toISOString()\n};\nfunction getGlobalLogLevel() {\n return GLOBAL_CONFIG.logLevel;\n}\nfunction setGlobalLogLevel(logLevel) {\n if (availableLogLevels.includes(logLevel)) {\n GLOBAL_CONFIG.logLevel = logLevel;\n } else {\n throw new Error(\n `log level ${logLevel} is not available. available log levels are: ${availableLogLevels.join(\n \", \"\n )}`\n );\n }\n GLOBAL_CONFIG.configured = true;\n}\nfunction getGlobalLogLevelString() {\n return logLevelToLogLevelStringMap[GLOBAL_CONFIG.logLevel];\n}\nfunction setGlobalLogLevelString(logLevelString) {\n if (availableLogLevelStrings.includes(logLevelString)) {\n GLOBAL_CONFIG.logLevel = logLevelStringToLogLevelMap[logLevelString];\n } else {\n throw new Error(\n `log level ${logLevelString} is not available. available log levels are: ${availableLogLevelStrings.join(\n \", \"\n )}`\n );\n }\n GLOBAL_CONFIG.configured = true;\n}\nfunction getGlobalFormat() {\n return GLOBAL_CONFIG.format;\n}\nfunction setGlobalFormat(format) {\n if (availableFormats.includes(format)) {\n GLOBAL_CONFIG.format = format;\n } else {\n throw new Error(\n `format ${format} is not available. available formats are: ${availableFormats.join(\n \", \"\n )}`\n );\n }\n GLOBAL_CONFIG.configured = true;\n}\nfunction setGlobalTimeFormatter(fn) {\n GLOBAL_CONFIG.timeFormatter = fn;\n GLOBAL_CONFIG.configured = true;\n}\nfunction getGlobalTimeFormatter() {\n return GLOBAL_CONFIG.timeFormatter;\n}\nfunction createLogg(context) {\n const logObj = {\n fields: {},\n context,\n logLevel: LogLevel.Debug,\n format: Format.JSON,\n shouldUseGlobalConfig: false,\n errorProcessor: (err) => err,\n timeFormatter: (inputDate) => inputDate.toISOString(),\n useGlobalConfig: () => {\n logObj.shouldUseGlobalConfig = true;\n logObj.format = getGlobalFormat();\n logObj.logLevel = getGlobalLogLevel();\n return logObj.child();\n },\n child: (fields) => {\n const logger = createLogg(logObj.context);\n if (fields != null) {\n logger.fields = { ...logObj.fields, ...fields };\n } else {\n logger.fields = logObj.fields;\n }\n if (logger.fields != null && \"context\" in logger.fields) {\n logger.context = logger.fields.context;\n } else {\n logger.context = logObj.context;\n }\n logger.logLevel = logObj.logLevel;\n logger.format = logObj.format;\n logger.shouldUseGlobalConfig = logObj.shouldUseGlobalConfig;\n return logger;\n },\n withContext: (context2) => {\n const logger = logObj.child();\n logger.context = context2;\n return logger;\n },\n withLogLevel: (logLevel) => {\n const logger = logObj.child();\n if (availableLogLevels.includes(logLevel)) {\n logger.logLevel = logLevel;\n logger.shouldUseGlobalConfig = false;\n logger.debug(\n `setting log level to ${logLevelToLogLevelStringMap[logLevel]} (${logLevel})`\n );\n } else {\n throw new Error(\n `log level ${logLevel} is not available. available log levels are: ${availableLogLevels.join(\n \", \"\n )}`\n );\n }\n return logger;\n },\n withLogLevelString: (logLevelString) => {\n const logger = logObj.child();\n if (availableLogLevelStrings.includes(logLevelString)) {\n logger.logLevel = logLevelStringToLogLevelMap[logLevelString];\n logger.shouldUseGlobalConfig = false;\n logger.debug(\n `setting log level to ${logLevelString} (${logLevelStringToLogLevelMap[logLevelString]})`\n );\n } else {\n throw new Error(\n `log level ${logLevelString} is not available. available log levels are: ${availableLogLevelStrings.join(\n \", \"\n )}`\n );\n }\n return logger;\n },\n withFormat: (format) => {\n const logger = logObj.child();\n if (availableFormats.includes(format)) {\n logger.format = format;\n logger.shouldUseGlobalConfig = false;\n logger.debug(`setting format to ${format}`);\n } else {\n throw new Error(\n `format ${format} is not available. available formats are: ${availableFormats.join(\n \", \"\n )}`\n );\n }\n return logger;\n },\n withFields: (fields) => {\n if (typeof fields === \"undefined\" || fields === null) {\n return logObj.child({});\n }\n return logObj.child(fields);\n },\n withField(key, value) {\n if (typeof key === \"undefined\" || key === null) {\n throw new Error(\"key is required\");\n }\n return logObj.child({ [key]: value });\n },\n withError: (err) => {\n err = logObj.errorProcessor(err);\n if (!isErrorLike(err)) {\n return logObj.withField(\"error\", String(err));\n }\n let logger = logObj;\n logger = logger.withField(\"error\", err.message);\n if (err.stack != null) {\n logger = logger.withField(\"stack\", err.stack);\n }\n if (err.cause != null) {\n try {\n logger = logger.withField(\"cause\", JSON.stringify(err.cause));\n } catch {\n logger = logger.withField(\"cause\", String(err.cause));\n }\n }\n return logger;\n },\n withCallStack(errorLike) {\n const stacks = parseErrorStacks(errorLike).slice(2).filter((item) => !item.invalid);\n if (stacks.length === 0) {\n return logObj;\n }\n return logObj.child({\n function: stacks[0].function,\n file: `${stacks[0].file}:${stacks[0].line}:${stacks[0].column}`,\n line: stacks[0].line,\n column: stacks[0].column\n });\n },\n // Placeholder implementations, will be overridden below\n debug: () => {\n },\n verbose: () => {\n },\n log: () => {\n },\n error: () => {\n },\n errorWithError: () => {\n },\n warn: () => {\n },\n // TODO: remove in next major release\n withTimeFormat: (_) => {\n const logger = logObj.child();\n return logger;\n },\n withTimeFormatter: (fn) => {\n const logger = logObj.child();\n logger.timeFormatter = fn;\n return logger;\n },\n withErrorProcessor: (fn) => {\n const logger = logObj.child();\n logger.errorProcessor = fn;\n return logger;\n }\n };\n const getEffectiveLogLevel = () => {\n return logObj.shouldUseGlobalConfig ? getGlobalLogLevel() : logObj.logLevel;\n };\n const getEffectiveFormat = () => {\n return logObj.shouldUseGlobalConfig ? getGlobalFormat() : logObj.format;\n };\n const getEffectiveTimeFormatter = () => {\n return logObj.shouldUseGlobalConfig ? getGlobalTimeFormatter() : logObj.timeFormatter ?? ((inputDate) => inputDate.toISOString());\n };\n const mergeOptionalParams = (optionalParams) => {\n if (optionalParams != null && optionalParams.length > 0) {\n if (Object.keys(logObj.fields).length > 0) {\n return [logObj.fields, ...optionalParams];\n } else {\n return optionalParams;\n }\n }\n return logObj.fields;\n };\n const outputToConsole = (raw, consoleMethod, mergedFields) => {\n const format = getEffectiveFormat();\n if (isBrowser() && format === Format.Pretty) {\n raw.fields = Object.fromEntries(\n Object.entries(raw.fields).filter(([key, value]) => {\n if (key === \"isNestSystemModule\" || key === \"nestSystemModule\" || key === \"context\") {\n return [key, value];\n }\n return void 0;\n })\n );\n const fieldsToOutput = mergedFields ?? logObj.fields;\n if (Array.isArray(fieldsToOutput) && fieldsToOutput.length > 0) {\n console[consoleMethod](toPrettyString(raw), ...fieldsToOutput);\n } else if (Object.keys(fieldsToOutput).length > 0) {\n console[consoleMethod](toPrettyString(raw), fieldsToOutput);\n } else {\n console[consoleMethod](toPrettyString(raw));\n }\n return;\n }\n const output = format === Format.Pretty ? toPrettyString(raw) : JSON.stringify(raw);\n console[consoleMethod](output);\n };\n const logLevelCheckMap = {\n [LogLevelString.Debug]: shouldOutputDebugLevelLogWhenLogLevelIsOneOf,\n [LogLevelString.Verbose]: shouldOutputVerboseLevelLogWhenLogLevelIsOneOf,\n [LogLevelString.Log]: shouldOutputLogLevelLogWhenLogLevelIsOneOf,\n [LogLevelString.Warning]: shouldOutputWarningLevelLogWhenLogLevelIsOneOf\n };\n const consoleMethodMap = {\n [LogLevelString.Debug]: \"debug\",\n [LogLevelString.Verbose]: \"log\",\n [LogLevelString.Log]: \"log\",\n [LogLevelString.Warning]: \"warn\"\n };\n const logWithLevel = (levelString, message, optionalParams) => {\n const logLevel = getEffectiveLogLevel();\n const shouldOutput = logLevelCheckMap[levelString];\n if (!shouldOutput(logLevel)) {\n return;\n }\n const mergedFields = mergeOptionalParams(optionalParams);\n const raw = newLog(\n levelString,\n logObj.context,\n mergedFields,\n message,\n getEffectiveTimeFormatter()\n );\n outputToConsole(raw, consoleMethodMap[levelString], mergedFields);\n };\n logObj.debug = (message, ...optionalParams) => {\n logWithLevel(LogLevelString.Debug, message, optionalParams);\n };\n logObj.verbose = (message, ...optionalParams) => {\n logWithLevel(LogLevelString.Verbose, message, optionalParams);\n };\n logObj.log = (message, ...optionalParams) => {\n logWithLevel(LogLevelString.Log, message, optionalParams);\n };\n logObj.warn = (message, ...optionalParams) => {\n logWithLevel(LogLevelString.Warning, message, optionalParams);\n };\n logObj.error = (message, stack, ...optionalParams) => {\n const logLevel = getEffectiveLogLevel();\n if (!shouldOutputErrorLevelLogWhenLogLevelIsOneOf(logLevel)) {\n return;\n }\n const mergedFields = mergeOptionalParams(optionalParams);\n const raw = newErrorLog(\n LogLevelString.Error,\n logObj.context,\n mergedFields,\n message,\n stack,\n getEffectiveTimeFormatter()\n );\n outputToConsole(raw, \"error\", mergedFields);\n };\n logObj.errorWithError = (message, err, ...optionalParams) => {\n return logObj.withError(err).error(message, void 0, ...optionalParams);\n };\n return logObj;\n}\nconst useLogg = createLogg;\nfunction createLogger(context) {\n const stack = ErrorStackParser.parse(new Error());\n const currentStack = stack[1];\n const basePath = currentStack.fileName?.replace(\"async\", \"\").trim() ?? \"\";\n const fileName = path.join(...basePath.split(path.sep).slice(-2));\n context = context ?? `${fileName}:${currentStack.lineNumber}`;\n return createLogg(withHyperlink(basePath, context));\n}\nconst useLogger = (context) => createLogger(context).useGlobalConfig();\nconst useGlobalLogger = useLogger;\nfunction initLogger(level = LogLevel.Verbose, format = Format.Pretty) {\n setGlobalLogLevel(level);\n setGlobalFormat(format);\n const logger = useLogg(\"logger\").useGlobalConfig();\n logger.withFields({ level: LogLevel[level], format }).log(\"Logger initialized\");\n}\n\nexport { Format, LogLevel, LogLevelString, Format as LoggerFormat, LogLevel as LoggerLevel, availableFormats, availableLogLevelStrings, availableLogLevels, createLogg, createLogger, getGlobalFormat, getGlobalLogLevel, getGlobalLogLevelString, getGlobalTimeFormatter, initLogger, logLevelStringToLogLevelMap, logLevelToColorMap, logLevelToLogLevelStringMap, setGlobalFormat, setGlobalLogLevel, setGlobalLogLevelString, setGlobalTimeFormatter, useGlobalLogger, useLogg, useLogger };\n","var t=\"undefined\"!=typeof window?window:void 0,i=\"undefined\"!=typeof globalThis?globalThis:t,e=Array.prototype,r=e.forEach,s=e.indexOf,n=null==i?void 0:i.navigator,o=null==i?void 0:i.document,a=null==i?void 0:i.location,l=null==i?void 0:i.fetch,u=null!=i&&i.XMLHttpRequest&&\"withCredentials\"in new i.XMLHttpRequest?i.XMLHttpRequest:void 0,h=null==i?void 0:i.AbortController,d=null==n?void 0:n.userAgent,v=null!=t?t:{},c={DEBUG:!1,LIB_VERSION:\"1.288.0\"};function f(t,i,e,r,s,n,o){try{var a=t[n](o),l=a.value}catch(t){return void e(t)}a.done?i(l):Promise.resolve(l).then(r,s)}function p(t){return function(){var i=this,e=arguments;return new Promise((function(r,s){var n=t.apply(i,e);function o(t){f(n,r,s,o,a,\"next\",t)}function a(t){f(n,r,s,o,a,\"throw\",t)}o(void 0)}))}}function g(){return g=Object.assign?Object.assign.bind():function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},g.apply(null,arguments)}function _(t,i){if(null==t)return{};var e={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(-1!==i.indexOf(r))continue;e[r]=t[r]}return e}var m=[\"amazonbot\",\"amazonproductbot\",\"app.hypefactors.com\",\"applebot\",\"archive.org_bot\",\"awariobot\",\"backlinksextendedbot\",\"baiduspider\",\"bingbot\",\"bingpreview\",\"chrome-lighthouse\",\"dataforseobot\",\"deepscan\",\"duckduckbot\",\"facebookexternal\",\"facebookcatalog\",\"http://yandex.com/bots\",\"hubspot\",\"ia_archiver\",\"leikibot\",\"linkedinbot\",\"meta-externalagent\",\"mj12bot\",\"msnbot\",\"nessus\",\"petalbot\",\"pinterest\",\"prerender\",\"rogerbot\",\"screaming frog\",\"sebot-wa\",\"sitebulb\",\"slackbot\",\"slurp\",\"trendictionbot\",\"turnitin\",\"twitterbot\",\"vercel-screenshot\",\"vercelbot\",\"yahoo! slurp\",\"yandexbot\",\"zoombot\",\"bot.htm\",\"bot.php\",\"(bot;\",\"bot/\",\"crawler\",\"ahrefsbot\",\"ahrefssiteaudit\",\"semrushbot\",\"siteauditbot\",\"splitsignalbot\",\"gptbot\",\"oai-searchbot\",\"chatgpt-user\",\"perplexitybot\",\"better uptime bot\",\"sentryuptimebot\",\"uptimerobot\",\"headlesschrome\",\"cypress\",\"google-hoteladsverifier\",\"adsbot-google\",\"apis-google\",\"duplexweb-google\",\"feedfetcher-google\",\"google favicon\",\"google web preview\",\"google-read-aloud\",\"googlebot\",\"googleother\",\"google-cloudvertexbot\",\"googleweblight\",\"mediapartners-google\",\"storebot-google\",\"google-inspectiontool\",\"bytespider\"],y=function(t,i){if(void 0===i&&(i=[]),!t)return!1;var e=t.toLowerCase();return m.concat(i).some((t=>{var i=t.toLowerCase();return-1!==e.indexOf(i)}))},b=[\"$snapshot\",\"$pageview\",\"$pageleave\",\"$set\",\"survey dismissed\",\"survey sent\",\"survey shown\",\"$identify\",\"$groupidentify\",\"$create_alias\",\"$$client_ingestion_warning\",\"$web_experiment_applied\",\"$feature_enrollment_update\",\"$feature_flag_called\"];function w(t,i){return-1!==t.indexOf(i)}var x=function(t){return t.trim()},S=function(t){return t.replace(/^\\$/,\"\")};var E=Array.isArray,k=Object.prototype,P=k.hasOwnProperty,T=k.toString,R=E||function(t){return\"[object Array]\"===T.call(t)},I=t=>\"function\"==typeof t,C=t=>t===Object(t)&&!R(t),O=t=>{if(C(t)){for(var i in t)if(P.call(t,i))return!1;return!0}return!1},F=t=>void 0===t,M=t=>\"[object String]\"==T.call(t),A=t=>M(t)&&0===t.trim().length,D=t=>null===t,j=t=>F(t)||D(t),L=t=>\"[object Number]\"==T.call(t),N=t=>\"[object Boolean]\"===T.call(t),U=t=>t instanceof FormData,H=t=>w(b,t);function z(t){return null===t||\"object\"!=typeof t}function B(t,i){return Object.prototype.toString.call(t)===\"[object \"+i+\"]\"}function q(t){return!F(Event)&&function(t,i){try{return t instanceof i}catch(t){return!1}}(t,Event)}var W=[!0,\"true\",1,\"1\",\"yes\"],G=t=>w(W,t),V=[!1,\"false\",0,\"0\",\"no\"];function J(t,i,e,r,s){return i>e&&(r.warn(\"min cannot be greater than max.\"),i=e),L(t)?t>e?(r.warn(\" cannot be greater than max: \"+e+\". Using max value instead.\"),e):t<i?(r.warn(\" cannot be less than min: \"+i+\". Using min value instead.\"),i):t:(r.warn(\" must be a number. using max or fallback. max: \"+e+\", fallback: \"+s),J(s||e,i,e,r))}class K{constructor(t){this.t={},this.i=t.i,this.o=J(t.bucketSize,0,100,t.h),this.m=J(t.refillRate,0,this.o,t.h),this.$=J(t.refillInterval,0,864e5,t.h)}S(t,i){var e=i-t.lastAccess,r=Math.floor(e/this.$);if(r>0){var s=r*this.m;t.tokens=Math.min(t.tokens+s,this.o),t.lastAccess=t.lastAccess+r*this.$}}consumeRateLimit(t){var i,e=Date.now(),r=String(t),s=this.t[r];return s?this.S(s,e):(s={tokens:this.o,lastAccess:e},this.t[r]=s),0===s.tokens||(s.tokens--,0===s.tokens&&(null==(i=this.i)||i.call(this,t)),0===s.tokens)}stop(){this.t={}}}var Y,X,Q,Z=t=>t instanceof Error;function tt(t){var i=globalThis._posthogChunkIds;if(i){var e=Object.keys(i);return Q&&e.length===X||(X=e.length,Q=e.reduce(((e,r)=>{Y||(Y={});var s=Y[r];if(s)e[s[0]]=s[1];else for(var n=t(r),o=n.length-1;o>=0;o--){var a=n[o],l=null==a?void 0:a.filename,u=i[r];if(l&&u){e[l]=u,Y[r]=[l,u];break}}return e}),{})),Q}}var it=\"?\";function et(t,i,e,r){var s={platform:\"web:javascript\",filename:t,function:\"<anonymous>\"===i?it:i,in_app:!0};return F(e)||(s.lineno=e),F(r)||(s.colno=r),s}var rt=(t,i)=>{var e=-1!==t.indexOf(\"safari-extension\"),r=-1!==t.indexOf(\"safari-web-extension\");return e||r?[-1!==t.indexOf(\"@\")?t.split(\"@\")[0]:it,e?\"safari-extension:\"+i:\"safari-web-extension:\"+i]:[t,i]},st=/^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i,nt=/^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,ot=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/,at=t=>{var i=st.exec(t);if(i){var[,e,r,s]=i;return et(e,it,+r,+s)}var n=nt.exec(t);if(n){if(n[2]&&0===n[2].indexOf(\"eval\")){var o=ot.exec(n[2]);o&&(n[2]=o[1],n[3]=o[2],n[4]=o[3])}var[a,l]=rt(n[1]||it,n[2]);return et(l,a,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}},lt=/^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i,ut=/(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i,ht=t=>{var i=lt.exec(t);if(i){if(i[3]&&i[3].indexOf(\" > eval\")>-1){var e=ut.exec(i[3]);e&&(i[1]=i[1]||\"eval\",i[3]=e[1],i[4]=e[2],i[5]=\"\")}var r=i[3],s=i[1]||it;return[s,r]=rt(s,r),et(r,s,i[4]?+i[4]:void 0,i[5]?+i[5]:void 0)}},dt=/\\(error: (.*)\\)/,vt=50;function ct(){for(var t=arguments.length,i=new Array(t),e=0;e<t;e++)i[e]=arguments[e];return function(t,e){void 0===e&&(e=0);for(var r=[],s=t.split(\"\\n\"),n=e;n<s.length;n++){var o=s[n];if(!(o.length>1024)){var a=dt.test(o)?o.replace(dt,\"$1\"):o;if(!a.match(/\\S*Error: /)){for(var l of i){var u=l(a);if(u){r.push(u);break}}if(r.length>=vt)break}}}return function(t){if(!t.length)return[];var i=Array.from(t);return i.reverse(),i.slice(0,vt).map((t=>{return g({},t,{filename:t.filename||(e=i,e[e.length-1]||{}).filename,function:t.function||it});var e}))}(r)}}class ft{constructor(t,i,e){void 0===t&&(t=[]),void 0===i&&(i=[]),void 0===e&&(e=[]),this.coercers=t,this.modifiers=e,this.stackParser=ct(...i)}buildFromUnknown(t,i){void 0===i&&(i={});var e=i&&i.mechanism||{handled:!0,type:\"generic\"},r=this.buildCoercingContext(e,i,0).apply(t),s=this.buildParsingContext(),n=this.parseStacktrace(r,s);return{$exception_list:this.convertToExceptionList(n,e),$exception_level:\"error\"}}modifyFrames(t){var i=this;return p((function*(){for(var e of t)e.stacktrace&&e.stacktrace.frames&&R(e.stacktrace.frames)&&(e.stacktrace.frames=yield i.applyModifiers(e.stacktrace.frames));return t}))()}coerceFallback(t){var i;return{type:\"Error\",value:\"Unknown error\",stack:null==(i=t.syntheticException)?void 0:i.stack,synthetic:!0}}parseStacktrace(t,i){var e,r;return null!=t.cause&&(e=this.parseStacktrace(t.cause,i)),\"\"!=t.stack&&null!=t.stack&&(r=this.applyChunkIds(this.stackParser(t.stack,t.synthetic?1:0),i.chunkIdMap)),g({},t,{cause:e,stack:r})}applyChunkIds(t,i){return t.map((t=>(t.filename&&i&&(t.chunk_id=i[t.filename]),t)))}applyCoercers(t,i){for(var e of this.coercers)if(e.match(t))return e.coerce(t,i);return this.coerceFallback(i)}applyModifiers(t){var i=this;return p((function*(){var e=t;for(var r of i.modifiers)e=yield r(e);return e}))()}convertToExceptionList(t,i){var e,r,s,n={type:t.type,value:t.value,mechanism:{type:null!==(e=i.type)&&void 0!==e?e:\"generic\",handled:null===(r=i.handled)||void 0===r||r,synthetic:null!==(s=t.synthetic)&&void 0!==s&&s}};t.stack&&(n.stacktrace={type:\"raw\",frames:t.stack});var o=[n];return null!=t.cause&&o.push(...this.convertToExceptionList(t.cause,g({},i,{handled:!0}))),o}buildParsingContext(){return{chunkIdMap:tt(this.stackParser)}}buildCoercingContext(t,i,e){void 0===e&&(e=0);var r=(e,r)=>{if(r<=4){var s=this.buildCoercingContext(t,i,r);return this.applyCoercers(e,s)}};return g({},i,{syntheticException:0==e?i.syntheticException:void 0,mechanism:t,apply:t=>r(t,e),next:t=>r(t,e+1)})}}class pt{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,i){var e=M(t.stack);return{type:this.getType(t),value:this.getValue(t),stack:e?t.stack:void 0,cause:t.cause?i.next(t.cause):void 0,synthetic:!1}}getType(t){return this.isDOMError(t)?\"DOMError\":\"DOMException\"}getValue(t){var i=t.name||(this.isDOMError(t)?\"DOMError\":\"DOMException\");return t.message?i+\": \"+t.message:i}isDOMException(t){return B(t,\"DOMException\")}isDOMError(t){return B(t,\"DOMError\")}}class gt{match(t){return(t=>t instanceof Error)(t)}coerce(t,i){return{type:this.getType(t),value:this.getMessage(t,i),stack:this.getStack(t),cause:t.cause?i.next(t.cause):void 0,synthetic:!1}}getType(t){return t.name||t.constructor.name}getMessage(t,i){var e=t.message;return e.error&&\"string\"==typeof e.error.message?String(e.error.message):String(e)}getStack(t){return t.stacktrace||t.stack||void 0}}class _t{constructor(){}match(t){return B(t,\"ErrorEvent\")&&null!=t.error}coerce(t,i){var e,r=i.apply(t.error);return r||{type:\"ErrorEvent\",value:t.message,stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}}var mt=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class yt{match(t){return\"string\"==typeof t}coerce(t,i){var e,[r,s]=this.getInfos(t);return{type:null!=r?r:\"Error\",value:null!=s?s:t,stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}getInfos(t){var i=\"Error\",e=t,r=t.match(mt);return r&&(i=r[1],e=r[2]),[i,e]}}var bt=[\"fatal\",\"error\",\"warning\",\"log\",\"info\",\"debug\"];function wt(t,i){void 0===i&&(i=40);var e=Object.keys(t);if(e.sort(),!e.length)return\"[object has no keys]\";for(var r=e.length;r>0;r--){var s=e.slice(0,r).join(\", \");if(!(s.length>i))return r===e.length||s.length<=i?s:s.slice(0,i)+\"...\"}return\"\"}class xt{match(t){return\"object\"==typeof t&&null!==t}coerce(t,i){var e,r=this.getErrorPropertyFromObject(t);return r?i.apply(r):{type:this.getType(t),value:this.getValue(t),stack:null==(e=i.syntheticException)?void 0:e.stack,level:this.isSeverityLevel(t.level)?t.level:\"error\",synthetic:!0}}getType(t){return q(t)?t.constructor.name:\"Error\"}getValue(t){if(\"name\"in t&&\"string\"==typeof t.name){var i=\"'\"+t.name+\"' captured as exception\";return\"message\"in t&&\"string\"==typeof t.message&&(i+=\" with message: '\"+t.message+\"'\"),i}if(\"message\"in t&&\"string\"==typeof t.message)return t.message;var e=this.getObjectClassName(t);return(e&&\"Object\"!==e?\"'\"+e+\"'\":\"Object\")+\" captured as exception with keys: \"+wt(t)}isSeverityLevel(t){return M(t)&&!A(t)&&bt.indexOf(t)>=0}getErrorPropertyFromObject(t){for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var e=t[i];if(Z(e))return e}}getObjectClassName(t){try{var i=Object.getPrototypeOf(t);return i?i.constructor.name:void 0}catch(t){return}}}class $t{match(t){return q(t)}coerce(t,i){var e,r=t.constructor.name;return{type:r,value:r+\" captured as exception with keys: \"+wt(t),stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}}class St{match(t){return z(t)}coerce(t,i){var e;return{type:\"Error\",value:\"Primitive value captured as exception: \"+String(t),stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}}class Et{match(t){return B(t,\"PromiseRejectionEvent\")}coerce(t,i){var e,r=this.getUnhandledRejectionReason(t);return z(r)?{type:\"UnhandledRejection\",value:\"Non-Error promise rejection captured with value: \"+String(r),stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}:i.apply(r)}getUnhandledRejectionReason(t){if(z(t))return t;try{if(\"reason\"in t)return t.reason;if(\"detail\"in t&&\"reason\"in t.detail)return t.detail.reason}catch(t){}return t}}var kt=i=>{var e={k:function(e){if(t&&(c.DEBUG||v.POSTHOG_DEBUG)&&!F(t.console)&&t.console){for(var r=(\"__rrweb_original__\"in t.console[e]?t.console[e].__rrweb_original__:t.console[e]),s=arguments.length,n=new Array(s>1?s-1:0),o=1;o<s;o++)n[o-1]=arguments[o];r(i,...n)}},info:function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];e.k(\"log\",...i)},warn:function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];e.k(\"warn\",...i)},error:function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];e.k(\"error\",...i)},critical:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];console.error(i,...e)},uninitializedWarning:t=>{e.error(\"You must initialize PostHog before calling \"+t)},createLogger:t=>kt(i+\" \"+t)};return e},Pt=kt(\"[PostHog.js]\"),Tt=Pt.createLogger,Rt=Tt(\"[ExternalScriptsLoader]\"),It=(t,i,e)=>{if(t.config.disable_external_dependency_loading)return Rt.warn(i+\" was requested but loading of external scripts is disabled.\"),e(\"Loading of external scripts is disabled\");var r=null==o?void 0:o.querySelectorAll(\"script\");if(r)for(var s,n=function(){if(r[a].src===i){var t=r[a];return t.__posthog_loading_callback_fired?{v:e()}:(t.addEventListener(\"load\",(i=>{t.__posthog_loading_callback_fired=!0,e(void 0,i)})),t.onerror=t=>e(t),{v:void 0})}},a=0;a<r.length;a++)if(s=n())return s.v;var l=()=>{if(!o)return e(\"document not found\");var r=o.createElement(\"script\");if(r.type=\"text/javascript\",r.crossOrigin=\"anonymous\",r.src=i,r.onload=t=>{r.__posthog_loading_callback_fired=!0,e(void 0,t)},r.onerror=t=>e(t),t.config.prepare_external_dependency_script&&(r=t.config.prepare_external_dependency_script(r)),!r)return e(\"prepare_external_dependency_script returned null\");var s,n=o.querySelectorAll(\"body > script\");n.length>0?null==(s=n[0].parentNode)||s.insertBefore(r,n[0]):o.body.appendChild(r)};null!=o&&o.body?l():null==o||o.addEventListener(\"DOMContentLoaded\",l)};v.__PosthogExtensions__=v.__PosthogExtensions__||{},v.__PosthogExtensions__.loadExternalDependency=(t,i,e)=>{var r=\"/static/\"+i+\".js?v=\"+t.version;if(\"remote-config\"===i&&(r=\"/array/\"+t.config.token+\"/config.js\"),\"toolbar\"===i){var s=3e5;r=r+\"&t=\"+Math.floor(Date.now()/s)*s}var n=t.requestRouter.endpointFor(\"assets\",r);It(t,n,e)},v.__PosthogExtensions__.loadSiteApp=(t,i,e)=>{var r=t.requestRouter.endpointFor(\"api\",i);It(t,r,e)};var Ct={};function Ot(t,i,e){if(R(t))if(r&&t.forEach===r)t.forEach(i,e);else if(\"length\"in t&&t.length===+t.length)for(var s=0,n=t.length;s<n;s++)if(s in t&&i.call(e,t[s],s)===Ct)return}function Ft(t,i,e){if(!j(t)){if(R(t))return Ot(t,i,e);if(U(t)){for(var r of t.entries())if(i.call(e,r[1],r[0])===Ct)return}else for(var s in t)if(P.call(t,s)&&i.call(e,t[s],s)===Ct)return}}var Mt=function(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];return Ot(e,(function(i){for(var e in i)void 0!==i[e]&&(t[e]=i[e])})),t},At=function(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];return Ot(e,(function(i){Ot(i,(function(i){t.push(i)}))})),t};function Dt(t){for(var i=Object.keys(t),e=i.length,r=new Array(e);e--;)r[e]=[i[e],t[i[e]]];return r}var jt=function(t){try{return t()}catch(t){return}},Lt=function(t){return function(){try{for(var i=arguments.length,e=new Array(i),r=0;r<i;r++)e[r]=arguments[r];return t.apply(this,e)}catch(t){Pt.critical(\"Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A.\"),Pt.critical(t)}}},Nt=function(t){var i={};return Ft(t,(function(t,e){(M(t)&&t.length>0||L(t))&&(i[e]=t)})),i};function Ut(t,i){return e=t,r=t=>M(t)&&!D(i)?t.slice(0,i):t,s=new Set,function t(i,e){return i!==Object(i)?r?r(i,e):i:s.has(i)?void 0:(s.add(i),R(i)?(n=[],Ot(i,(i=>{n.push(t(i))}))):(n={},Ft(i,((i,e)=>{s.has(i)||(n[e]=t(i,e))}))),n);var n}(e);var e,r,s}var Ht=[\"herokuapp.com\",\"vercel.app\",\"netlify.app\"];function zt(t){var i=null==t?void 0:t.hostname;if(!M(i))return!1;var e=i.split(\".\").slice(-2).join(\".\");for(var r of Ht)if(e===r)return!1;return!0}function Bt(t,i){for(var e=0;e<t.length;e++)if(i(t[e]))return t[e]}function qt(t,i,e,r){var{capture:s=!1,passive:n=!0}=null!=r?r:{};null==t||t.addEventListener(i,e,{capture:s,passive:n})}var Wt=\"$people_distinct_id\",Gt=\"__alias\",Vt=\"__timers\",Jt=\"$autocapture_disabled_server_side\",Kt=\"$heatmaps_enabled_server_side\",Yt=\"$exception_capture_enabled_server_side\",Xt=\"$error_tracking_suppression_rules\",Qt=\"$error_tracking_capture_extension_exceptions\",Zt=\"$web_vitals_enabled_server_side\",ti=\"$dead_clicks_enabled_server_side\",ii=\"$web_vitals_allowed_metrics\",ei=\"$session_recording_remote_config\",ri=\"$sesid\",si=\"$session_is_sampled\",ni=\"$enabled_feature_flags\",oi=\"$early_access_features\",ai=\"$feature_flag_details\",li=\"$stored_person_properties\",ui=\"$stored_group_properties\",hi=\"$surveys\",di=\"$surveys_activated\",vi=\"$flag_call_reported\",ci=\"$user_state\",fi=\"$client_session_props\",pi=\"$capture_rate_limit\",gi=\"$initial_campaign_params\",_i=\"$initial_referrer_info\",mi=\"$initial_person_info\",yi=\"$epp\",bi=\"__POSTHOG_TOOLBAR__\",wi=\"$posthog_cookieless\",xi=[Wt,Gt,\"__cmpns\",Vt,\"$session_recording_enabled_server_side\",Kt,ri,ni,Xt,ci,oi,ai,ui,li,hi,vi,fi,pi,gi,_i,yi,mi];function $i(t){return t instanceof Element&&(t.id===bi||!(null==t.closest||!t.closest(\".toolbar-global-fade-container\")))}function Si(t){return!!t&&1===t.nodeType}function Ei(t,i){return!!t&&!!t.tagName&&t.tagName.toLowerCase()===i.toLowerCase()}function ki(t){return!!t&&3===t.nodeType}function Pi(t){return!!t&&11===t.nodeType}function Ti(t){return t?x(t).split(/\\s+/):[]}function Ri(i){var e=null==t?void 0:t.location.href;return!!(e&&i&&i.some((t=>e.match(t))))}function Ii(t){var i=\"\";switch(typeof t.className){case\"string\":i=t.className;break;case\"object\":i=(t.className&&\"baseVal\"in t.className?t.className.baseVal:null)||t.getAttribute(\"class\")||\"\";break;default:i=\"\"}return Ti(i)}function Ci(t){return j(t)?null:x(t).split(/(\\s+)/).filter((t=>Ki(t))).join(\"\").replace(/[\\r\\n]/g,\" \").replace(/[ ]+/g,\" \").substring(0,255)}function Oi(t){var i=\"\";return Hi(t)&&!zi(t)&&t.childNodes&&t.childNodes.length&&Ft(t.childNodes,(function(t){var e;ki(t)&&t.textContent&&(i+=null!==(e=Ci(t.textContent))&&void 0!==e?e:\"\")})),x(i)}function Fi(t){return F(t.target)?t.srcElement||null:null!=(i=t.target)&&i.shadowRoot?t.composedPath()[0]||null:t.target||null;var i}var Mi=[\"a\",\"button\",\"form\",\"input\",\"select\",\"textarea\",\"label\"];function Ai(t,i){if(F(i))return!0;var e,r=function(t){if(i.some((i=>t.matches(i))))return{v:!0}};for(var s of t)if(e=r(s))return e.v;return!1}function Di(t){var i=t.parentNode;return!(!i||!Si(i))&&i}var ji=[\".ph-no-rageclick\",\".ph-no-capture\"];var Li=t=>!t||Ei(t,\"html\")||!Si(t),Ni=(i,e)=>{if(!t||Li(i))return{parentIsUsefulElement:!1,targetElementList:[]};for(var r=!1,s=[i],n=i;n.parentNode&&!Ei(n,\"body\");)if(Pi(n.parentNode))s.push(n.parentNode.host),n=n.parentNode.host;else{var o=Di(n);if(!o)break;if(e||Mi.indexOf(o.tagName.toLowerCase())>-1)r=!0;else{var a=t.getComputedStyle(o);a&&\"pointer\"===a.getPropertyValue(\"cursor\")&&(r=!0)}s.push(o),n=o}return{parentIsUsefulElement:r,targetElementList:s}};function Ui(i,e,r,s,n){var o,a,l,u;if(void 0===r&&(r=void 0),!t||Li(i))return!1;if(null!=(o=r)&&o.url_allowlist&&!Ri(r.url_allowlist))return!1;if(null!=(a=r)&&a.url_ignorelist&&Ri(r.url_ignorelist))return!1;if(null!=(l=r)&&l.dom_event_allowlist){var h=r.dom_event_allowlist;if(h&&!h.some((t=>e.type===t)))return!1}var{parentIsUsefulElement:d,targetElementList:v}=Ni(i,s);if(!function(t,i){var e=null==i?void 0:i.element_allowlist;if(F(e))return!0;var r,s=function(t){if(e.some((i=>t.tagName.toLowerCase()===i)))return{v:!0}};for(var n of t)if(r=s(n))return r.v;return!1}(v,r))return!1;if(!Ai(v,null==(u=r)?void 0:u.css_selector_allowlist))return!1;var c=t.getComputedStyle(i);if(c&&\"pointer\"===c.getPropertyValue(\"cursor\")&&\"click\"===e.type)return!0;var f=i.tagName.toLowerCase();switch(f){case\"html\":return!1;case\"form\":return(n||[\"submit\"]).indexOf(e.type)>=0;case\"input\":case\"select\":case\"textarea\":return(n||[\"change\",\"click\"]).indexOf(e.type)>=0;default:return d?(n||[\"click\"]).indexOf(e.type)>=0:(n||[\"click\"]).indexOf(e.type)>=0&&(Mi.indexOf(f)>-1||\"true\"===i.getAttribute(\"contenteditable\"))}}function Hi(t){for(var i=t;i.parentNode&&!Ei(i,\"body\");i=i.parentNode){var e=Ii(i);if(w(e,\"ph-sensitive\")||w(e,\"ph-no-capture\"))return!1}if(w(Ii(t),\"ph-include\"))return!0;var r=t.type||\"\";if(M(r))switch(r.toLowerCase()){case\"hidden\":case\"password\":return!1}var s=t.name||t.id||\"\";if(M(s)){if(/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(s.replace(/[^a-zA-Z0-9]/g,\"\")))return!1}return!0}function zi(t){return!!(Ei(t,\"input\")&&![\"button\",\"checkbox\",\"submit\",\"reset\"].includes(t.type)||Ei(t,\"select\")||Ei(t,\"textarea\")||\"true\"===t.getAttribute(\"contenteditable\"))}var Bi=\"(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11})\",qi=new RegExp(\"^(?:\"+Bi+\")$\"),Wi=new RegExp(Bi),Gi=\"\\\\d{3}-?\\\\d{2}-?\\\\d{4}\",Vi=new RegExp(\"^(\"+Gi+\")$\"),Ji=new RegExp(\"(\"+Gi+\")\");function Ki(t,i){if(void 0===i&&(i=!0),j(t))return!1;if(M(t)){if(t=x(t),(i?qi:Wi).test((t||\"\").replace(/[- ]/g,\"\")))return!1;if((i?Vi:Ji).test(t))return!1}return!0}function Yi(t){var i=Oi(t);return Ki(i=(i+\" \"+Xi(t)).trim())?i:\"\"}function Xi(t){var i=\"\";return t&&t.childNodes&&t.childNodes.length&&Ft(t.childNodes,(function(t){var e;if(t&&\"span\"===(null==(e=t.tagName)?void 0:e.toLowerCase()))try{var r=Oi(t);i=(i+\" \"+r).trim(),t.childNodes&&t.childNodes.length&&(i=(i+\" \"+Xi(t)).trim())}catch(t){Pt.error(\"[AutoCapture]\",t)}})),i}function Qi(t){return function(t){var i=t.map((t=>{var i,e,r=\"\";if(t.tag_name&&(r+=t.tag_name),t.attr_class)for(var s of(t.attr_class.sort(),t.attr_class))r+=\".\"+s.replace(/\"/g,\"\");var n=g({},t.text?{text:t.text}:{},{\"nth-child\":null!==(i=t.nth_child)&&void 0!==i?i:0,\"nth-of-type\":null!==(e=t.nth_of_type)&&void 0!==e?e:0},t.href?{href:t.href}:{},t.attr_id?{attr_id:t.attr_id}:{},t.attributes),o={};return Dt(n).sort(((t,i)=>{var[e]=t,[r]=i;return e.localeCompare(r)})).forEach((t=>{var[i,e]=t;return o[Zi(i.toString())]=Zi(e.toString())})),r+=\":\",r+=Dt(o).map((t=>{var[i,e]=t;return i+'=\"'+e+'\"'})).join(\"\")}));return i.join(\";\")}(function(t){return t.map((t=>{var i,e,r={text:null==(i=t.$el_text)?void 0:i.slice(0,400),tag_name:t.tag_name,href:null==(e=t.attr__href)?void 0:e.slice(0,2048),attr_class:te(t),attr_id:t.attr__id,nth_child:t.nth_child,nth_of_type:t.nth_of_type,attributes:{}};return Dt(t).filter((t=>{var[i]=t;return 0===i.indexOf(\"attr__\")})).forEach((t=>{var[i,e]=t;return r.attributes[i]=e})),r}))}(t))}function Zi(t){return t.replace(/\"|\\\\\"/g,'\\\\\"')}function te(t){var i=t.attr__class;return i?R(i)?i:Ti(i):void 0}class ie{constructor(){this.clicks=[]}isRageClick(t,i,e){var r=this.clicks[this.clicks.length-1];if(r&&Math.abs(t-r.x)+Math.abs(i-r.y)<30&&e-r.timestamp<1e3){if(this.clicks.push({x:t,y:i,timestamp:e}),3===this.clicks.length)return!0}else this.clicks=[{x:t,y:i,timestamp:e}];return!1}}var ee=\"$copy_autocapture\",re=function(t){return t.GZipJS=\"gzip-js\",t.Base64=\"base64\",t}({}),se=[\"fatal\",\"error\",\"warning\",\"log\",\"info\",\"debug\"],ne=t=>{var i=null==o?void 0:o.createElement(\"a\");return F(i)?null:(i.href=t,i)},oe=function(t,i){var e,r;void 0===i&&(i=\"&\");var s=[];return Ft(t,(function(t,i){F(t)||F(i)||\"undefined\"===i||(e=encodeURIComponent((t=>t instanceof File)(t)?t.name:t.toString()),r=encodeURIComponent(i),s[s.length]=r+\"=\"+e)})),s.join(i)},ae=function(t,i){for(var e,r=((t.split(\"#\")[0]||\"\").split(/\\?(.*)/)[1]||\"\").replace(/^\\?+/g,\"\").split(\"&\"),s=0;s<r.length;s++){var n=r[s].split(\"=\");if(n[0]===i){e=n;break}}if(!R(e)||e.length<2)return\"\";var o=e[1];try{o=decodeURIComponent(o)}catch(t){Pt.error(\"Skipping decoding for malformed query param: \"+o)}return o.replace(/\\+/g,\" \")},le=function(t,i,e){if(!t||!i||!i.length)return t;for(var r=t.split(\"#\"),s=r[0]||\"\",n=r[1],o=s.split(\"?\"),a=o[1],l=o[0],u=(a||\"\").split(\"&\"),h=[],d=0;d<u.length;d++){var v=u[d].split(\"=\");R(v)&&(i.includes(v[0])?h.push(v[0]+\"=\"+e):h.push(u[d]))}var c=l;return null!=a&&(c+=\"?\"+h.join(\"&\")),null!=n&&(c+=\"#\"+n),c},ue=function(t,i){var e=t.match(new RegExp(i+\"=([^&]*)\"));return e?e[1]:null},he=Tt(\"[AutoCapture]\");function de(t,i){return i.length>t?i.slice(0,t)+\"...\":i}function ve(t){if(t.previousElementSibling)return t.previousElementSibling;var i=t;do{i=i.previousSibling}while(i&&!Si(i));return i}function ce(t,i,e,r){var s=t.tagName.toLowerCase(),n={tag_name:s};Mi.indexOf(s)>-1&&!e&&(\"a\"===s.toLowerCase()||\"button\"===s.toLowerCase()?n.$el_text=de(1024,Yi(t)):n.$el_text=de(1024,Oi(t)));var o=Ii(t);o.length>0&&(n.classes=o.filter((function(t){return\"\"!==t}))),Ft(t.attributes,(function(e){var s;if((!zi(t)||-1!==[\"name\",\"id\",\"class\",\"aria-label\"].indexOf(e.name))&&((null==r||!r.includes(e.name))&&!i&&Ki(e.value)&&(s=e.name,!M(s)||\"_ngcontent\"!==s.substring(0,10)&&\"_nghost\"!==s.substring(0,7)))){var o=e.value;\"class\"===e.name&&(o=Ti(o).join(\" \")),n[\"attr__\"+e.name]=de(1024,o)}}));for(var a=1,l=1,u=t;u=ve(u);)a++,u.tagName===t.tagName&&l++;return n.nth_child=a,n.nth_of_type=l,n}function fe(i,e){for(var r,s,{e:n,maskAllElementAttributes:o,maskAllText:a,elementAttributeIgnoreList:l,elementsChainAsString:u}=e,h=[i],d=i;d.parentNode&&!Ei(d,\"body\");)Pi(d.parentNode)?(h.push(d.parentNode.host),d=d.parentNode.host):(h.push(d.parentNode),d=d.parentNode);var v,c=[],f={},p=!1,g=!1;if(Ft(h,(t=>{var i=Hi(t);\"a\"===t.tagName.toLowerCase()&&(p=t.getAttribute(\"href\"),p=i&&p&&Ki(p)&&p),w(Ii(t),\"ph-no-capture\")&&(g=!0),c.push(ce(t,o,a,l));var e=function(t){if(!Hi(t))return{};var i={};return Ft(t.attributes,(function(t){if(t.name&&0===t.name.indexOf(\"data-ph-capture-attribute\")){var e=t.name.replace(\"data-ph-capture-attribute-\",\"\"),r=t.value;e&&r&&Ki(r)&&(i[e]=r)}})),i}(t);Mt(f,e)})),g)return{props:{},explicitNoCapture:g};if(a||(\"a\"===i.tagName.toLowerCase()||\"button\"===i.tagName.toLowerCase()?c[0].$el_text=Yi(i):c[0].$el_text=Oi(i)),p){var _,m;c[0].attr__href=p;var y=null==(_=ne(p))?void 0:_.host,b=null==t||null==(m=t.location)?void 0:m.host;y&&b&&y!==b&&(v=p)}return{props:Mt({$event_type:n.type,$ce_version:1},u?{}:{$elements:c},{$elements_chain:Qi(c)},null!=(r=c[0])&&r.$el_text?{$el_text:null==(s=c[0])?void 0:s.$el_text}:{},v&&\"click\"===n.type?{$external_click_url:v}:{},f)}}class pe{constructor(t){this.P=!1,this.T=null,this.rageclicks=new ie,this.R=!1,this.instance=t,this.I=null}get C(){var t,i,e=C(this.instance.config.autocapture)?this.instance.config.autocapture:{};return e.url_allowlist=null==(t=e.url_allowlist)?void 0:t.map((t=>new RegExp(t))),e.url_ignorelist=null==(i=e.url_ignorelist)?void 0:i.map((t=>new RegExp(t))),e}O(){if(this.isBrowserSupported()){if(t&&o){var i=i=>{i=i||(null==t?void 0:t.event);try{this.F(i)}catch(t){he.error(\"Failed to capture event\",t)}};if(qt(o,\"submit\",i,{capture:!0}),qt(o,\"change\",i,{capture:!0}),qt(o,\"click\",i,{capture:!0}),this.C.capture_copied_text){var e=i=>{i=i||(null==t?void 0:t.event),this.F(i,ee)};qt(o,\"copy\",e,{capture:!0}),qt(o,\"cut\",e,{capture:!0})}}}else he.info(\"Disabling Automatic Event Collection because this browser is not supported\")}startIfEnabled(){this.isEnabled&&!this.P&&(this.O(),this.P=!0)}onRemoteConfig(t){t.elementsChainAsString&&(this.R=t.elementsChainAsString),this.instance.persistence&&this.instance.persistence.register({[Jt]:!!t.autocapture_opt_out}),this.T=!!t.autocapture_opt_out,this.startIfEnabled()}setElementSelectors(t){this.I=t}getElementSelectors(t){var i,e=[];return null==(i=this.I)||i.forEach((i=>{var r=null==o?void 0:o.querySelectorAll(i);null==r||r.forEach((r=>{t===r&&e.push(i)}))})),e}get isEnabled(){var t,i,e=null==(t=this.instance.persistence)?void 0:t.props[Jt],r=this.T;if(D(r)&&!N(e)&&!this.instance.M())return!1;var s=null!==(i=this.T)&&void 0!==i?i:!!e;return!!this.instance.config.autocapture&&!s}F(i,e){if(void 0===e&&(e=\"$autocapture\"),this.isEnabled){var r,s=Fi(i);if(ki(s)&&(s=s.parentNode||null),\"$autocapture\"===e&&\"click\"===i.type&&i instanceof MouseEvent)this.instance.config.rageclick&&null!=(r=this.rageclicks)&&r.isRageClick(i.clientX,i.clientY,(new Date).getTime())&&function(i,e){if(!t||Li(i))return!1;var r,s;if(!1===(r=N(e)?!!e&&ji:null!==(s=null==e?void 0:e.css_selector_ignorelist)&&void 0!==s?s:ji))return!1;var{targetElementList:n}=Ni(i,!1);return!Ai(n,r)}(s,this.instance.config.rageclick)&&this.F(i,\"$rageclick\");var n=e===ee;if(s&&Ui(s,i,this.C,n,n?[\"copy\",\"cut\"]:void 0)){var{props:o,explicitNoCapture:a}=fe(s,{e:i,maskAllElementAttributes:this.instance.config.mask_all_element_attributes,maskAllText:this.instance.config.mask_all_text,elementAttributeIgnoreList:this.C.element_attribute_ignorelist,elementsChainAsString:this.R});if(a)return!1;var l=this.getElementSelectors(s);if(l&&l.length>0&&(o.$element_selectors=l),e===ee){var u,h=Ci(null==t||null==(u=t.getSelection())?void 0:u.toString()),d=i.type||\"clipboard\";if(!h)return!1;o.$selected_content=h,o.$copy_type=d}return this.instance.capture(e,o),!0}}}isBrowserSupported(){return I(null==o?void 0:o.querySelectorAll)}}Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Number.isInteger||(Number.isInteger=function(t){return L(t)&&isFinite(t)&&Math.floor(t)===t});var ge=\"0123456789abcdef\";class _e{constructor(t){if(this.bytes=t,16!==t.length)throw new TypeError(\"not 128-bit length\")}static fromFieldsV7(t,i,e,r){if(!Number.isInteger(t)||!Number.isInteger(i)||!Number.isInteger(e)||!Number.isInteger(r)||t<0||i<0||e<0||r<0||t>0xffffffffffff||i>4095||e>1073741823||r>4294967295)throw new RangeError(\"invalid field value\");var s=new Uint8Array(16);return s[0]=t/Math.pow(2,40),s[1]=t/Math.pow(2,32),s[2]=t/Math.pow(2,24),s[3]=t/Math.pow(2,16),s[4]=t/Math.pow(2,8),s[5]=t,s[6]=112|i>>>8,s[7]=i,s[8]=128|e>>>24,s[9]=e>>>16,s[10]=e>>>8,s[11]=e,s[12]=r>>>24,s[13]=r>>>16,s[14]=r>>>8,s[15]=r,new _e(s)}toString(){for(var t=\"\",i=0;i<this.bytes.length;i++)t=t+ge.charAt(this.bytes[i]>>>4)+ge.charAt(15&this.bytes[i]),3!==i&&5!==i&&7!==i&&9!==i||(t+=\"-\");if(36!==t.length)throw new Error(\"Invalid UUIDv7 was generated\");return t}clone(){return new _e(this.bytes.slice(0))}equals(t){return 0===this.compareTo(t)}compareTo(t){for(var i=0;i<16;i++){var e=this.bytes[i]-t.bytes[i];if(0!==e)return Math.sign(e)}return 0}}class me{constructor(){this.A=0,this.D=0,this.j=new we}generate(){var t=this.generateOrAbort();if(F(t)){this.A=0;var i=this.generateOrAbort();if(F(i))throw new Error(\"Could not generate UUID after timestamp reset\");return i}return t}generateOrAbort(){var t=Date.now();if(t>this.A)this.A=t,this.L();else{if(!(t+1e4>this.A))return;this.D++,this.D>4398046511103&&(this.A++,this.L())}return _e.fromFieldsV7(this.A,Math.trunc(this.D/Math.pow(2,30)),this.D&Math.pow(2,30)-1,this.j.nextUint32())}L(){this.D=1024*this.j.nextUint32()+(1023&this.j.nextUint32())}}var ye,be=t=>{if(\"undefined\"!=typeof UUIDV7_DENY_WEAK_RNG&&UUIDV7_DENY_WEAK_RNG)throw new Error(\"no cryptographically strong RNG available\");for(var i=0;i<t.length;i++)t[i]=65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random());return t};t&&!F(t.crypto)&&crypto.getRandomValues&&(be=t=>crypto.getRandomValues(t));class we{constructor(){this.N=new Uint32Array(8),this.U=1/0}nextUint32(){return this.U>=this.N.length&&(be(this.N),this.U=0),this.N[this.U++]}}var xe=()=>$e().toString(),$e=()=>(ye||(ye=new me)).generate(),Se=\"\";var Ee=/[a-z0-9][a-z0-9-]+\\.[a-z]{2,}$/i;function ke(t,i){if(i){var e=function(t,i){if(void 0===i&&(i=o),Se)return Se;if(!i)return\"\";if([\"localhost\",\"127.0.0.1\"].includes(t))return\"\";for(var e=t.split(\".\"),r=Math.min(e.length,8),s=\"dmn_chk_\"+xe();!Se&&r--;){var n=e.slice(r).join(\".\"),a=s+\"=1;domain=.\"+n+\";path=/\";i.cookie=a+\";max-age=3\",i.cookie.includes(s)&&(i.cookie=a+\";max-age=0\",Se=n)}return Se}(t);if(!e){var r=(t=>{var i=t.match(Ee);return i?i[0]:\"\"})(t);r!==e&&Pt.info(\"Warning: cookie subdomain discovery mismatch\",r,e),e=r}return e?\"; domain=.\"+e:\"\"}return\"\"}var Pe={H:()=>!!o,B:function(t){Pt.error(\"cookieStore error: \"+t)},q:function(t){if(o){try{for(var i=t+\"=\",e=o.cookie.split(\";\").filter((t=>t.length)),r=0;r<e.length;r++){for(var s=e[r];\" \"==s.charAt(0);)s=s.substring(1,s.length);if(0===s.indexOf(i))return decodeURIComponent(s.substring(i.length,s.length))}}catch(t){}return null}},W:function(t){var i;try{i=JSON.parse(Pe.q(t))||{}}catch(t){}return i},G:function(t,i,e,r,s){if(o)try{var n=\"\",a=\"\",l=ke(o.location.hostname,r);if(e){var u=new Date;u.setTime(u.getTime()+24*e*60*60*1e3),n=\"; expires=\"+u.toUTCString()}s&&(a=\"; secure\");var h=t+\"=\"+encodeURIComponent(JSON.stringify(i))+n+\"; SameSite=Lax; path=/\"+l+a;return h.length>3686.4&&Pt.warn(\"cookieStore warning: large cookie, len=\"+h.length),o.cookie=h,h}catch(t){return}},V:function(t,i){if(null!=o&&o.cookie)try{Pe.G(t,\"\",-1,i)}catch(t){return}}},Te=null,Re={H:function(){if(!D(Te))return Te;var i=!0;if(F(t))i=!1;else try{var e=\"__mplssupport__\";Re.G(e,\"xyz\"),'\"xyz\"'!==Re.q(e)&&(i=!1),Re.V(e)}catch(t){i=!1}return i||Pt.error(\"localStorage unsupported; falling back to cookie store\"),Te=i,i},B:function(t){Pt.error(\"localStorage error: \"+t)},q:function(i){try{return null==t?void 0:t.localStorage.getItem(i)}catch(t){Re.B(t)}return null},W:function(t){try{return JSON.parse(Re.q(t))||{}}catch(t){}return null},G:function(i,e){try{null==t||t.localStorage.setItem(i,JSON.stringify(e))}catch(t){Re.B(t)}},V:function(i){try{null==t||t.localStorage.removeItem(i)}catch(t){Re.B(t)}}},Ie=[\"distinct_id\",ri,si,yi,mi],Ce=g({},Re,{W:function(t){try{var i={};try{i=Pe.W(t)||{}}catch(t){}var e=Mt(i,JSON.parse(Re.q(t)||\"{}\"));return Re.G(t,e),e}catch(t){}return null},G:function(t,i,e,r,s,n){try{Re.G(t,i,void 0,void 0,n);var o={};Ie.forEach((t=>{i[t]&&(o[t]=i[t])})),Object.keys(o).length&&Pe.G(t,o,e,r,s,n)}catch(t){Re.B(t)}},V:function(i,e){try{null==t||t.localStorage.removeItem(i),Pe.V(i,e)}catch(t){Re.B(t)}}}),Oe={},Fe={H:function(){return!0},B:function(t){Pt.error(\"memoryStorage error: \"+t)},q:function(t){return Oe[t]||null},W:function(t){return Oe[t]||null},G:function(t,i){Oe[t]=i},V:function(t){delete Oe[t]}},Me=null,Ae={H:function(){if(!D(Me))return Me;if(Me=!0,F(t))Me=!1;else try{var i=\"__support__\";Ae.G(i,\"xyz\"),'\"xyz\"'!==Ae.q(i)&&(Me=!1),Ae.V(i)}catch(t){Me=!1}return Me},B:function(t){Pt.error(\"sessionStorage error: \",t)},q:function(i){try{return null==t?void 0:t.sessionStorage.getItem(i)}catch(t){Ae.B(t)}return null},W:function(t){try{return JSON.parse(Ae.q(t))||null}catch(t){}return null},G:function(i,e){try{null==t||t.sessionStorage.setItem(i,JSON.stringify(e))}catch(t){Ae.B(t)}},V:function(i){try{null==t||t.sessionStorage.removeItem(i)}catch(t){Ae.B(t)}}},De=function(t){return t[t.PENDING=-1]=\"PENDING\",t[t.DENIED=0]=\"DENIED\",t[t.GRANTED=1]=\"GRANTED\",t}({});class je{constructor(t){this._instance=t}get C(){return this._instance.config}get consent(){return this.J()?De.DENIED:this.K}isOptedOut(){return\"always\"===this.C.cookieless_mode||(this.consent===De.DENIED||this.consent===De.PENDING&&(this.C.opt_out_capturing_by_default||\"on_reject\"===this.C.cookieless_mode))}isOptedIn(){return!this.isOptedOut()}isExplicitlyOptedOut(){return this.consent===De.DENIED}optInOut(t){this.Y.G(this.X,t?1:0,this.C.cookie_expiration,this.C.cross_subdomain_cookie,this.C.secure_cookie)}reset(){this.Y.V(this.X,this.C.cross_subdomain_cookie)}get X(){var{token:t,opt_out_capturing_cookie_prefix:i,consent_persistence_name:e}=this._instance.config;return e||(i?i+t:\"__ph_opt_in_out_\"+t)}get K(){var t=this.Y.q(this.X);return G(t)?De.GRANTED:w(V,t)?De.DENIED:De.PENDING}get Y(){if(!this.Z){var t=this.C.opt_out_capturing_persistence_type;this.Z=\"localStorage\"===t?Re:Pe;var i=\"localStorage\"===t?Pe:Re;i.q(this.X)&&(this.Z.q(this.X)||this.optInOut(G(i.q(this.X))),i.V(this.X,this.C.cross_subdomain_cookie))}return this.Z}J(){return!!this.C.respect_dnt&&!!Bt([null==n?void 0:n.doNotTrack,null==n?void 0:n.msDoNotTrack,v.doNotTrack],(t=>G(t)))}}var Le=Tt(\"[Dead Clicks]\"),Ne=()=>!0,Ue=t=>{var i,e=!(null==(i=t.instance.persistence)||!i.get_property(ti)),r=t.instance.config.capture_dead_clicks;return N(r)?r:e};class He{get lazyLoadedDeadClicksAutocapture(){return this.tt}constructor(t,i,e){this.instance=t,this.isEnabled=i,this.onCapture=e,this.startIfEnabled()}onRemoteConfig(t){this.instance.persistence&&this.instance.persistence.register({[ti]:null==t?void 0:t.captureDeadClicks}),this.startIfEnabled()}startIfEnabled(){this.isEnabled(this)&&this.it((()=>{this.et()}))}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.initDeadClicksAutocapture&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this.instance,\"dead-clicks-autocapture\",(i=>{i?Le.error(\"failed to load script\",i):t()}))}et(){var t;if(o){if(!this.tt&&null!=(t=v.__PosthogExtensions__)&&t.initDeadClicksAutocapture){var i=C(this.instance.config.capture_dead_clicks)?this.instance.config.capture_dead_clicks:{};i.__onCapture=this.onCapture,this.tt=v.__PosthogExtensions__.initDeadClicksAutocapture(this.instance,i),this.tt.start(o),Le.info(\"starting...\")}}else Le.error(\"`document` not found. Cannot start.\")}stop(){this.tt&&(this.tt.stop(),this.tt=void 0,Le.info(\"stopping...\"))}}var ze=Tt(\"[ExceptionAutocapture]\");class Be{constructor(i){var e,r,s;this.rt=()=>{var i;if(t&&this.isEnabled&&null!=(i=v.__PosthogExtensions__)&&i.errorWrappingFunctions){var e=v.__PosthogExtensions__.errorWrappingFunctions.wrapOnError,r=v.__PosthogExtensions__.errorWrappingFunctions.wrapUnhandledRejection,s=v.__PosthogExtensions__.errorWrappingFunctions.wrapConsoleError;try{!this.st&&this.C.capture_unhandled_errors&&(this.st=e(this.captureException.bind(this))),!this.nt&&this.C.capture_unhandled_rejections&&(this.nt=r(this.captureException.bind(this))),!this.ot&&this.C.capture_console_errors&&(this.ot=s(this.captureException.bind(this)))}catch(t){ze.error(\"failed to start\",t),this.lt()}}},this._instance=i,this.ut=!(null==(e=this._instance.persistence)||!e.props[Yt]),this.C=this.ht(),this.dt=new K({refillRate:null!==(r=this._instance.config.error_tracking.__exceptionRateLimiterRefillRate)&&void 0!==r?r:1,bucketSize:null!==(s=this._instance.config.error_tracking.__exceptionRateLimiterBucketSize)&&void 0!==s?s:10,refillInterval:1e4,h:ze}),this.startIfEnabled()}ht(){var t=this._instance.config.capture_exceptions,i={capture_unhandled_errors:!1,capture_unhandled_rejections:!1,capture_console_errors:!1};return C(t)?i=g({},i,t):(F(t)?this.ut:t)&&(i=g({},i,{capture_unhandled_errors:!0,capture_unhandled_rejections:!0})),i}get isEnabled(){return this.C.capture_console_errors||this.C.capture_unhandled_errors||this.C.capture_unhandled_rejections}startIfEnabled(){this.isEnabled&&(ze.info(\"enabled\"),this.it(this.rt))}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.errorWrappingFunctions&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"exception-autocapture\",(i=>{if(i)return ze.error(\"failed to load script\",i);t()}))}lt(){var t,i,e;null==(t=this.st)||t.call(this),this.st=void 0,null==(i=this.nt)||i.call(this),this.nt=void 0,null==(e=this.ot)||e.call(this),this.ot=void 0}onRemoteConfig(t){var i=t.autocaptureExceptions;this.ut=!!i||!1,this.C=this.ht(),this._instance.persistence&&this._instance.persistence.register({[Yt]:this.ut}),this.startIfEnabled()}captureException(t){var i,e,r=null!==(i=null==t||null==(e=t.$exception_list)||null==(e=e[0])?void 0:e.type)&&void 0!==i?i:\"Exception\";this.dt.consumeRateLimit(r)?ze.info(\"Skipping exception capture because of client rate limiting.\",{exception:r}):this._instance.exceptions.sendExceptionEvent(t)}}function qe(t,i,e){try{if(!(i in t))return()=>{};var r=t[i],s=e(r);return I(s)&&(s.prototype=s.prototype||{},Object.defineProperties(s,{__posthog_wrapped__:{enumerable:!1,value:!0}})),t[i]=s,()=>{t[i]=r}}catch(t){return()=>{}}}class We{constructor(i){var e;this._instance=i,this.vt=(null==t||null==(e=t.location)?void 0:e.pathname)||\"\"}get isEnabled(){return\"history_change\"===this._instance.config.capture_pageview}startIfEnabled(){this.isEnabled&&(Pt.info(\"History API monitoring enabled, starting...\"),this.monitorHistoryChanges())}stop(){this.ct&&this.ct(),this.ct=void 0,Pt.info(\"History API monitoring stopped\")}monitorHistoryChanges(){var i,e;if(t&&t.history){var r=this;null!=(i=t.history.pushState)&&i.__posthog_wrapped__||qe(t.history,\"pushState\",(t=>function(i,e,s){t.call(this,i,e,s),r.ft(\"pushState\")})),null!=(e=t.history.replaceState)&&e.__posthog_wrapped__||qe(t.history,\"replaceState\",(t=>function(i,e,s){t.call(this,i,e,s),r.ft(\"replaceState\")})),this.gt()}}ft(i){try{var e,r=null==t||null==(e=t.location)?void 0:e.pathname;if(!r)return;r!==this.vt&&this.isEnabled&&this._instance.capture(\"$pageview\",{navigation_type:i}),this.vt=r}catch(t){Pt.error(\"Error capturing \"+i+\" pageview\",t)}}gt(){if(!this.ct){var i=()=>{this.ft(\"popstate\")};qt(t,\"popstate\",i),this.ct=()=>{t&&t.removeEventListener(\"popstate\",i)}}}}var Ge=Tt(\"[SegmentIntegration]\");function Ve(t,i){var e=t.config.segment;if(!e)return i();!function(t,i){var e=t.config.segment;if(!e)return i();var r=e=>{var r=()=>e.anonymousId()||xe();t.config.get_device_id=r,e.id()&&(t.register({distinct_id:e.id(),$device_id:r()}),t.persistence.set_property(ci,\"identified\")),i()},s=e.user();\"then\"in s&&I(s.then)?s.then((t=>r(t))):r(s)}(t,(()=>{e.register((t=>{Promise&&Promise.resolve||Ge.warn(\"This browser does not have Promise support, and can not use the segment integration\");var i=(i,e)=>{if(!e)return i;i.event.userId||i.event.anonymousId===t.get_distinct_id()||(Ge.info(\"No userId set, resetting PostHog\"),t.reset()),i.event.userId&&i.event.userId!==t.get_distinct_id()&&(Ge.info(\"UserId set, identifying with PostHog\"),t.identify(i.event.userId));var r=t.calculateEventProperties(e,i.event.properties);return i.event.properties=Object.assign({},r,i.event.properties),i};return{name:\"PostHog JS\",type:\"enrichment\",version:\"1.0.0\",isLoaded:()=>!0,load:()=>Promise.resolve(),track:t=>i(t,t.event.event),page:t=>i(t,\"$pageview\"),identify:t=>i(t,\"$identify\"),screen:t=>i(t,\"$screen\")}})(t)).then((()=>{i()}))}))}var Je=\"posthog-js\";function Ke(t,i){var{organization:e,projectId:r,prefix:s,severityAllowList:n=[\"error\"],sendExceptionsToPostHog:o=!0}=void 0===i?{}:i;return i=>{var a,l,u,h,d;if(!(\"*\"===n||n.includes(i.level))||!t.__loaded)return i;i.tags||(i.tags={});var v=t.requestRouter.endpointFor(\"ui\",\"/project/\"+t.config.token+\"/person/\"+t.get_distinct_id());i.tags[\"PostHog Person URL\"]=v,t.sessionRecordingStarted()&&(i.tags[\"PostHog Recording URL\"]=t.get_session_replay_url({withTimestamp:!0}));var c=(null==(a=i.exception)?void 0:a.values)||[],f=c.map((t=>g({},t,{stacktrace:t.stacktrace?g({},t.stacktrace,{type:\"raw\",frames:(t.stacktrace.frames||[]).map((t=>g({},t,{platform:\"web:javascript\"})))}):void 0}))),p={$exception_message:(null==(l=c[0])?void 0:l.value)||i.message,$exception_type:null==(u=c[0])?void 0:u.type,$exception_level:i.level,$exception_list:f,$sentry_event_id:i.event_id,$sentry_exception:i.exception,$sentry_exception_message:(null==(h=c[0])?void 0:h.value)||i.message,$sentry_exception_type:null==(d=c[0])?void 0:d.type,$sentry_tags:i.tags};return e&&r&&(p.$sentry_url=(s||\"https://sentry.io/organizations/\")+e+\"/issues/?project=\"+r+\"&query=\"+i.event_id),o&&t.exceptions.sendExceptionEvent(p),i}}class Ye{constructor(t,i,e,r,s,n){this.name=Je,this.setupOnce=function(o){o(Ke(t,{organization:i,projectId:e,prefix:r,severityAllowList:s,sendExceptionsToPostHog:null==n||n}))}}}var Xe=null!=t&&t.location?ue(t.location.hash,\"__posthog\")||ue(location.hash,\"state\"):null,Qe=\"_postHogToolbarParams\",Ze=Tt(\"[Toolbar]\"),tr=function(t){return t[t.UNINITIALIZED=0]=\"UNINITIALIZED\",t[t.LOADING=1]=\"LOADING\",t[t.LOADED=2]=\"LOADED\",t}(tr||{});class ir{constructor(t){this.instance=t}_t(t){v.ph_toolbar_state=t}yt(){var t;return null!==(t=v.ph_toolbar_state)&&void 0!==t?t:tr.UNINITIALIZED}maybeLoadToolbar(i,e,r){if(void 0===i&&(i=void 0),void 0===e&&(e=void 0),void 0===r&&(r=void 0),!t||!o)return!1;i=null!=i?i:t.location,r=null!=r?r:t.history;try{if(!e){try{t.localStorage.setItem(\"test\",\"test\"),t.localStorage.removeItem(\"test\")}catch(t){return!1}e=null==t?void 0:t.localStorage}var s,n=Xe||ue(i.hash,\"__posthog\")||ue(i.hash,\"state\"),a=n?jt((()=>JSON.parse(atob(decodeURIComponent(n)))))||jt((()=>JSON.parse(decodeURIComponent(n)))):null;return a&&\"ph_authorize\"===a.action?((s=a).source=\"url\",s&&Object.keys(s).length>0&&(a.desiredHash?i.hash=a.desiredHash:r?r.replaceState(r.state,\"\",i.pathname+i.search):i.hash=\"\")):((s=JSON.parse(e.getItem(Qe)||\"{}\")).source=\"localstorage\",delete s.userIntent),!(!s.token||this.instance.config.token!==s.token)&&(this.loadToolbar(s),!0)}catch(t){return!1}}bt(t){var i=v.ph_load_toolbar||v.ph_load_editor;!j(i)&&I(i)?i(t,this.instance):Ze.warn(\"No toolbar load function found\")}loadToolbar(i){var e=!(null==o||!o.getElementById(bi));if(!t||e)return!1;var r=\"custom\"===this.instance.requestRouter.region&&this.instance.config.advanced_disable_toolbar_metrics,s=g({token:this.instance.config.token},i,{apiURL:this.instance.requestRouter.endpointFor(\"ui\")},r?{instrument:!1}:{});if(t.localStorage.setItem(Qe,JSON.stringify(g({},s,{source:void 0}))),this.yt()===tr.LOADED)this.bt(s);else if(this.yt()===tr.UNINITIALIZED){var n;this._t(tr.LOADING),null==(n=v.__PosthogExtensions__)||null==n.loadExternalDependency||n.loadExternalDependency(this.instance,\"toolbar\",(t=>{if(t)return Ze.error(\"[Toolbar] Failed to load\",t),void this._t(tr.UNINITIALIZED);this._t(tr.LOADED),this.bt(s)})),qt(t,\"turbolinks:load\",(()=>{this._t(tr.UNINITIALIZED),this.loadToolbar(s)}))}return!0}wt(t){return this.loadToolbar(t)}maybeLoadEditor(t,i,e){return void 0===t&&(t=void 0),void 0===i&&(i=void 0),void 0===e&&(e=void 0),this.maybeLoadToolbar(t,i,e)}}var er=Tt(\"[TracingHeaders]\");class rr{constructor(t){this.xt=void 0,this.$t=void 0,this.rt=()=>{var t,i;F(this.xt)&&(null==(t=v.__PosthogExtensions__)||null==(t=t.tracingHeadersPatchFns)||t._patchXHR(this._instance.config.__add_tracing_headers||[],this._instance.get_distinct_id(),this._instance.sessionManager));F(this.$t)&&(null==(i=v.__PosthogExtensions__)||null==(i=i.tracingHeadersPatchFns)||i._patchFetch(this._instance.config.__add_tracing_headers||[],this._instance.get_distinct_id(),this._instance.sessionManager))},this._instance=t}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.tracingHeadersPatchFns&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"tracing-headers\",(i=>{if(i)return er.error(\"failed to load script\",i);t()}))}startIfEnabledOrStop(){var t,i;this._instance.config.__add_tracing_headers?this.it(this.rt):(null==(t=this.xt)||t.call(this),null==(i=this.$t)||i.call(this),this.xt=void 0,this.$t=void 0)}}var sr=\"Mobile\",nr=\"iOS\",or=\"Android\",ar=\"Tablet\",lr=or+\" \"+ar,ur=\"iPad\",hr=\"Apple\",dr=hr+\" Watch\",vr=\"Safari\",cr=\"BlackBerry\",fr=\"Samsung\",pr=fr+\"Browser\",gr=fr+\" Internet\",_r=\"Chrome\",mr=_r+\" OS\",yr=_r+\" \"+nr,br=\"Internet Explorer\",wr=br+\" \"+sr,xr=\"Opera\",$r=xr+\" Mini\",Sr=\"Edge\",Er=\"Microsoft \"+Sr,kr=\"Firefox\",Pr=kr+\" \"+nr,Tr=\"Nintendo\",Rr=\"PlayStation\",Ir=\"Xbox\",Cr=or+\" \"+sr,Or=sr+\" \"+vr,Fr=\"Windows\",Mr=Fr+\" Phone\",Ar=\"Nokia\",Dr=\"Ouya\",jr=\"Generic\",Lr=jr+\" \"+sr.toLowerCase(),Nr=jr+\" \"+ar.toLowerCase(),Ur=\"Konqueror\",Hr=\"(\\\\d+(\\\\.\\\\d+)?)\",zr=new RegExp(\"Version/\"+Hr),Br=new RegExp(Ir,\"i\"),qr=new RegExp(Rr+\" \\\\w+\",\"i\"),Wr=new RegExp(Tr+\" \\\\w+\",\"i\"),Gr=new RegExp(cr+\"|PlayBook|BB10\",\"i\"),Vr={\"NT3.51\":\"NT 3.11\",\"NT4.0\":\"NT 4.0\",\"5.0\":\"2000\",5.1:\"XP\",5.2:\"XP\",\"6.0\":\"Vista\",6.1:\"7\",6.2:\"8\",6.3:\"8.1\",6.4:\"10\",\"10.0\":\"10\"};var Jr=(t,i)=>i&&w(i,hr)||function(t){return w(t,vr)&&!w(t,_r)&&!w(t,or)}(t),Kr=function(t,i){return i=i||\"\",w(t,\" OPR/\")&&w(t,\"Mini\")?$r:w(t,\" OPR/\")?xr:Gr.test(t)?cr:w(t,\"IE\"+sr)||w(t,\"WPDesktop\")?wr:w(t,pr)?gr:w(t,Sr)||w(t,\"Edg/\")?Er:w(t,\"FBIOS\")?\"Facebook \"+sr:w(t,\"UCWEB\")||w(t,\"UCBrowser\")?\"UC Browser\":w(t,\"CriOS\")?yr:w(t,\"CrMo\")||w(t,_r)?_r:w(t,or)&&w(t,vr)?Cr:w(t,\"FxiOS\")?Pr:w(t.toLowerCase(),Ur.toLowerCase())?Ur:Jr(t,i)?w(t,sr)?Or:vr:w(t,kr)?kr:w(t,\"MSIE\")||w(t,\"Trident/\")?br:w(t,\"Gecko\")?kr:\"\"},Yr={[wr]:[new RegExp(\"rv:\"+Hr)],[Er]:[new RegExp(Sr+\"?\\\\/\"+Hr)],[_r]:[new RegExp(\"(\"+_r+\"|CrMo)\\\\/\"+Hr)],[yr]:[new RegExp(\"CriOS\\\\/\"+Hr)],\"UC Browser\":[new RegExp(\"(UCBrowser|UCWEB)\\\\/\"+Hr)],[vr]:[zr],[Or]:[zr],[xr]:[new RegExp(\"(Opera|OPR)\\\\/\"+Hr)],[kr]:[new RegExp(kr+\"\\\\/\"+Hr)],[Pr]:[new RegExp(\"FxiOS\\\\/\"+Hr)],[Ur]:[new RegExp(\"Konqueror[:/]?\"+Hr,\"i\")],[cr]:[new RegExp(cr+\" \"+Hr),zr],[Cr]:[new RegExp(\"android\\\\s\"+Hr,\"i\")],[gr]:[new RegExp(pr+\"\\\\/\"+Hr)],[br]:[new RegExp(\"(rv:|MSIE )\"+Hr)],Mozilla:[new RegExp(\"rv:\"+Hr)]},Xr=function(t,i){var e=Kr(t,i),r=Yr[e];if(F(r))return null;for(var s=0;s<r.length;s++){var n=r[s],o=t.match(n);if(o)return parseFloat(o[o.length-2])}return null},Qr=[[new RegExp(Ir+\"; \"+Ir+\" (.*?)[);]\",\"i\"),t=>[Ir,t&&t[1]||\"\"]],[new RegExp(Tr,\"i\"),[Tr,\"\"]],[new RegExp(Rr,\"i\"),[Rr,\"\"]],[Gr,[cr,\"\"]],[new RegExp(Fr,\"i\"),(t,i)=>{if(/Phone/.test(i)||/WPDesktop/.test(i))return[Mr,\"\"];if(new RegExp(sr).test(i)&&!/IEMobile\\b/.test(i))return[Fr+\" \"+sr,\"\"];var e=/Windows NT ([0-9.]+)/i.exec(i);if(e&&e[1]){var r=e[1],s=Vr[r]||\"\";return/arm/i.test(i)&&(s=\"RT\"),[Fr,s]}return[Fr,\"\"]}],[/((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,t=>{if(t&&t[3]){var i=[t[3],t[4],t[5]||\"0\"];return[nr,i.join(\".\")]}return[nr,\"\"]}],[/(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,t=>{var i=\"\";return t&&t.length>=3&&(i=F(t[2])?t[3]:t[2]),[\"watchOS\",i]}],[new RegExp(\"(\"+or+\" (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|\"+or+\")\",\"i\"),t=>{if(t&&t[2]){var i=[t[2],t[3],t[4]||\"0\"];return[or,i.join(\".\")]}return[or,\"\"]}],[/Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i,t=>{var i=[\"Mac OS X\",\"\"];if(t&&t[1]){var e=[t[1],t[2],t[3]||\"0\"];i[1]=e.join(\".\")}return i}],[/Mac/i,[\"Mac OS X\",\"\"]],[/CrOS/,[mr,\"\"]],[/Linux|debian/i,[\"Linux\",\"\"]]],Zr=function(t){return Wr.test(t)?Tr:qr.test(t)?Rr:Br.test(t)?Ir:new RegExp(Dr,\"i\").test(t)?Dr:new RegExp(\"(\"+Mr+\"|WPDesktop)\",\"i\").test(t)?Mr:/iPad/.test(t)?ur:/iPod/.test(t)?\"iPod Touch\":/iPhone/.test(t)?\"iPhone\":/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(t)?dr:Gr.test(t)?cr:/(kobo)\\s(ereader|touch)/i.test(t)?\"Kobo\":new RegExp(Ar,\"i\").test(t)?Ar:/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i.test(t)||/(kf[a-z]+)( bui|\\)).+silk\\//i.test(t)?\"Kindle Fire\":/(Android|ZTE)/i.test(t)?!new RegExp(sr).test(t)||/(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(t)?/pixel[\\daxl ]{1,6}/i.test(t)&&!/pixel c/i.test(t)||/(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(t)||/lmy47v/i.test(t)&&!/QTAQZ3/i.test(t)?or:lr:or:new RegExp(\"(pda|\"+sr+\")\",\"i\").test(t)?Lr:new RegExp(ar,\"i\").test(t)&&!new RegExp(ar+\" pc\",\"i\").test(t)?Nr:\"\"},ts=\"https?://(.*)\",is=[\"gclid\",\"gclsrc\",\"dclid\",\"gbraid\",\"wbraid\",\"fbclid\",\"msclkid\",\"twclid\",\"li_fat_id\",\"igshid\",\"ttclid\",\"rdt_cid\",\"epik\",\"qclid\",\"sccid\",\"irclid\",\"_kx\"],es=At([\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_content\",\"utm_term\",\"gad_source\",\"mc_cid\"],is),rs=\"<masked>\",ss=[\"li_fat_id\"];function ns(t,i,e){if(!o)return{};var r,s=i?At([],is,e||[]):[],n=os(le(o.URL,s,rs),t),a=(r={},Ft(ss,(function(t){var i=Pe.q(t);r[t]=i||null})),r);return Mt(a,n)}function os(t,i){var e=es.concat(i||[]),r={};return Ft(e,(function(i){var e=ae(t,i);r[i]=e||null})),r}function as(t){var i=function(t){return t?0===t.search(ts+\"google.([^/?]*)\")?\"google\":0===t.search(ts+\"bing.com\")?\"bing\":0===t.search(ts+\"yahoo.com\")?\"yahoo\":0===t.search(ts+\"duckduckgo.com\")?\"duckduckgo\":null:null}(t),e=\"yahoo\"!=i?\"q\":\"p\",r={};if(!D(i)){r.$search_engine=i;var s=o?ae(o.referrer,e):\"\";s.length&&(r.ph_keyword=s)}return r}function ls(){return navigator.language||navigator.userLanguage}function us(){return(null==o?void 0:o.referrer)||\"$direct\"}function hs(t,i){var e=t?At([],is,i||[]):[],r=null==a?void 0:a.href.substring(0,1e3);return{r:us().substring(0,1e3),u:r?le(r,e,rs):void 0}}function ds(t){var i,{r:e,u:r}=t,s={$referrer:e,$referring_domain:null==e?void 0:\"$direct\"==e?\"$direct\":null==(i=ne(e))?void 0:i.host};if(r){s.$current_url=r;var n=ne(r);s.$host=null==n?void 0:n.host,s.$pathname=null==n?void 0:n.pathname;var o=os(r);Mt(s,o)}if(e){var a=as(e);Mt(s,a)}return s}function vs(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch(t){return}}function cs(){try{return(new Date).getTimezoneOffset()}catch(t){return}}function fs(i,e){if(!d)return{};var r,s,n,o=i?At([],is,e||[]):[],[l,u]=function(t){for(var i=0;i<Qr.length;i++){var[e,r]=Qr[i],s=e.exec(t),n=s&&(I(r)?r(s,t):r);if(n)return n}return[\"\",\"\"]}(d);return Mt(Nt({$os:l,$os_version:u,$browser:Kr(d,navigator.vendor),$device:Zr(d),$device_type:(s=d,n=Zr(s),n===ur||n===lr||\"Kobo\"===n||\"Kindle Fire\"===n||n===Nr?ar:n===Tr||n===Ir||n===Rr||n===Dr?\"Console\":n===dr?\"Wearable\":n?sr:\"Desktop\"),$timezone:vs(),$timezone_offset:cs()}),{$current_url:le(null==a?void 0:a.href,o,rs),$host:null==a?void 0:a.host,$pathname:null==a?void 0:a.pathname,$raw_user_agent:d.length>1e3?d.substring(0,997)+\"...\":d,$browser_version:Xr(d,navigator.vendor),$browser_language:ls(),$browser_language_prefix:(r=ls(),\"string\"==typeof r?r.split(\"-\")[0]:void 0),$screen_height:null==t?void 0:t.screen.height,$screen_width:null==t?void 0:t.screen.width,$viewport_height:null==t?void 0:t.innerHeight,$viewport_width:null==t?void 0:t.innerWidth,$lib:\"web\",$lib_version:c.LIB_VERSION,$insert_id:Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10),$time:Date.now()/1e3})}var ps=Tt(\"[Web Vitals]\"),gs=9e5;class _s{constructor(t){var i;this.St=!1,this.P=!1,this.N={url:void 0,metrics:[],firstMetricTimestamp:void 0},this.Et=()=>{clearTimeout(this.kt),0!==this.N.metrics.length&&(this._instance.capture(\"$web_vitals\",this.N.metrics.reduce(((t,i)=>g({},t,{[\"$web_vitals_\"+i.name+\"_event\"]:g({},i),[\"$web_vitals_\"+i.name+\"_value\"]:i.value})),{})),this.N={url:void 0,metrics:[],firstMetricTimestamp:void 0})},this.Pt=t=>{var i,e=null==(i=this._instance.sessionManager)?void 0:i.checkAndGetSessionAndWindowId(!0);if(F(e))ps.error(\"Could not read session ID. Dropping metrics!\");else{this.N=this.N||{url:void 0,metrics:[],firstMetricTimestamp:void 0};var r=this.Tt();if(!F(r))if(j(null==t?void 0:t.name)||j(null==t?void 0:t.value))ps.error(\"Invalid metric received\",t);else if(this.Rt&&t.value>=this.Rt)ps.error(\"Ignoring metric with value >= \"+this.Rt,t);else this.N.url!==r&&(this.Et(),this.kt=setTimeout(this.Et,this.flushToCaptureTimeoutMs)),F(this.N.url)&&(this.N.url=r),this.N.firstMetricTimestamp=F(this.N.firstMetricTimestamp)?Date.now():this.N.firstMetricTimestamp,t.attribution&&t.attribution.interactionTargetElement&&(t.attribution.interactionTargetElement=void 0),this.N.metrics.push(g({},t,{$current_url:r,$session_id:e.sessionId,$window_id:e.windowId,timestamp:Date.now()})),this.N.metrics.length===this.allowedMetrics.length&&this.Et()}},this.rt=()=>{var t,i,e,r,s=v.__PosthogExtensions__;F(s)||F(s.postHogWebVitalsCallbacks)||({onLCP:t,onCLS:i,onFCP:e,onINP:r}=s.postHogWebVitalsCallbacks),t&&i&&e&&r?(this.allowedMetrics.indexOf(\"LCP\")>-1&&t(this.Pt.bind(this)),this.allowedMetrics.indexOf(\"CLS\")>-1&&i(this.Pt.bind(this)),this.allowedMetrics.indexOf(\"FCP\")>-1&&e(this.Pt.bind(this)),this.allowedMetrics.indexOf(\"INP\")>-1&&r(this.Pt.bind(this)),this.P=!0):ps.error(\"web vitals callbacks not loaded - not starting\")},this._instance=t,this.St=!(null==(i=this._instance.persistence)||!i.props[Zt]),this.startIfEnabled()}get allowedMetrics(){var t,i,e=C(this._instance.config.capture_performance)?null==(t=this._instance.config.capture_performance)?void 0:t.web_vitals_allowed_metrics:void 0;return F(e)?(null==(i=this._instance.persistence)?void 0:i.props[ii])||[\"CLS\",\"FCP\",\"INP\",\"LCP\"]:e}get flushToCaptureTimeoutMs(){return(C(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals_delayed_flush_ms:void 0)||5e3}get Rt(){var t=C(this._instance.config.capture_performance)&&L(this._instance.config.capture_performance.__web_vitals_max_value)?this._instance.config.capture_performance.__web_vitals_max_value:gs;return 0<t&&t<=6e4?gs:t}get isEnabled(){var t=null==a?void 0:a.protocol;if(\"http:\"!==t&&\"https:\"!==t)return ps.info(\"Web Vitals are disabled on non-http/https protocols\"),!1;var i=C(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals:N(this._instance.config.capture_performance)?this._instance.config.capture_performance:void 0;return N(i)?i:this.St}startIfEnabled(){this.isEnabled&&!this.P&&(ps.info(\"enabled, starting...\"),this.it(this.rt))}onRemoteConfig(t){var i=C(t.capturePerformance)&&!!t.capturePerformance.web_vitals,e=C(t.capturePerformance)?t.capturePerformance.web_vitals_allowed_metrics:void 0;this._instance.persistence&&(this._instance.persistence.register({[Zt]:i}),this._instance.persistence.register({[ii]:e})),this.St=i,this.startIfEnabled()}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.postHogWebVitalsCallbacks&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"web-vitals\",(i=>{i?ps.error(\"failed to load script\",i):t()}))}Tt(){var i=t?t.location.href:void 0;if(i){var e=this._instance.config.mask_personal_data_properties,r=this._instance.config.custom_personal_data_properties,s=e?At([],is,r||[]):[];return le(i,s,rs)}ps.error(\"Could not determine current URL\")}}var ms=Tt(\"[Heatmaps]\");function ys(t){return C(t)&&\"clientX\"in t&&\"clientY\"in t&&L(t.clientX)&&L(t.clientY)}class bs{constructor(t){var i;this.rageclicks=new ie,this.St=!1,this.P=!1,this.It=null,this.instance=t,this.St=!(null==(i=this.instance.persistence)||!i.props[Kt])}get flushIntervalMilliseconds(){var t=5e3;return C(this.instance.config.capture_heatmaps)&&this.instance.config.capture_heatmaps.flush_interval_milliseconds&&(t=this.instance.config.capture_heatmaps.flush_interval_milliseconds),t}get isEnabled(){return F(this.instance.config.capture_heatmaps)?F(this.instance.config.enable_heatmaps)?this.St:this.instance.config.enable_heatmaps:!1!==this.instance.config.capture_heatmaps}startIfEnabled(){if(this.isEnabled){if(this.P)return;ms.info(\"starting...\"),this.Ct(),this.Ot()}else{var t;clearInterval(null!==(t=this.It)&&void 0!==t?t:void 0),this.Ft(),this.getAndClearBuffer()}}onRemoteConfig(t){var i=!!t.heatmaps;this.instance.persistence&&this.instance.persistence.register({[Kt]:i}),this.St=i,this.startIfEnabled()}getAndClearBuffer(){var t=this.N;return this.N=void 0,t}Mt(t){this.At(t.originalEvent,\"deadclick\")}Ot(){this.It&&clearInterval(this.It),this.It=function(t){return\"visible\"===(null==t?void 0:t.visibilityState)}(o)?setInterval(this.Dt.bind(this),this.flushIntervalMilliseconds):null}Ct(){t&&o&&(this.jt=this.Dt.bind(this),qt(t,\"beforeunload\",this.jt),this.Lt=i=>this.At(i||(null==t?void 0:t.event)),qt(o,\"click\",this.Lt,{capture:!0}),this.Nt=i=>this.Ut(i||(null==t?void 0:t.event)),qt(o,\"mousemove\",this.Nt,{capture:!0}),this.Ht=new He(this.instance,Ne,this.Mt.bind(this)),this.Ht.startIfEnabled(),this.zt=this.Ot.bind(this),qt(o,\"visibilitychange\",this.zt),this.P=!0)}Ft(){var i;t&&o&&(this.jt&&t.removeEventListener(\"beforeunload\",this.jt),this.Lt&&o.removeEventListener(\"click\",this.Lt,{capture:!0}),this.Nt&&o.removeEventListener(\"mousemove\",this.Nt,{capture:!0}),this.zt&&o.removeEventListener(\"visibilitychange\",this.zt),clearTimeout(this.Bt),null==(i=this.Ht)||i.stop(),this.P=!1)}qt(i,e){var r=this.instance.scrollManager.scrollY(),s=this.instance.scrollManager.scrollX(),n=this.instance.scrollManager.scrollElement(),o=function(i,e,r){for(var s=i;s&&Si(s)&&!Ei(s,\"body\");){if(s===r)return!1;if(w(e,null==t?void 0:t.getComputedStyle(s).position))return!0;s=Di(s)}return!1}(Fi(i),[\"fixed\",\"sticky\"],n);return{x:i.clientX+(o?0:s),y:i.clientY+(o?0:r),target_fixed:o,type:e}}At(t,i){var e;if(void 0===i&&(i=\"click\"),!$i(t.target)&&ys(t)){var r=this.qt(t,i);null!=(e=this.rageclicks)&&e.isRageClick(t.clientX,t.clientY,(new Date).getTime())&&this.Wt(g({},r,{type:\"rageclick\"})),this.Wt(r)}}Ut(t){!$i(t.target)&&ys(t)&&(clearTimeout(this.Bt),this.Bt=setTimeout((()=>{this.Wt(this.qt(t,\"mousemove\"))}),500))}Wt(i){if(t){var e=t.location.href,r=this.instance.config.mask_personal_data_properties,s=this.instance.config.custom_personal_data_properties,n=r?At([],is,s||[]):[],o=le(e,n,rs);this.N=this.N||{},this.N[o]||(this.N[o]=[]),this.N[o].push(i)}}Dt(){this.N&&!O(this.N)&&this.instance.capture(\"$$heatmap\",{$heatmap_data:this.getAndClearBuffer()})}}class ws{constructor(t){this._instance=t}doPageView(i,e){var r,s=this.Gt(i,e);return this.Vt={pathname:null!==(r=null==t?void 0:t.location.pathname)&&void 0!==r?r:\"\",pageViewId:e,timestamp:i},this._instance.scrollManager.resetContext(),s}doPageLeave(t){var i;return this.Gt(t,null==(i=this.Vt)?void 0:i.pageViewId)}doEvent(){var t;return{$pageview_id:null==(t=this.Vt)?void 0:t.pageViewId}}Gt(t,i){var e=this.Vt;if(!e)return{$pageview_id:i};var r={$pageview_id:i,$prev_pageview_id:e.pageViewId},s=this._instance.scrollManager.getContext();if(s&&!this._instance.config.disable_scroll_properties){var{maxScrollHeight:n,lastScrollY:o,maxScrollY:a,maxContentHeight:l,lastContentY:u,maxContentY:h}=s;if(!(F(n)||F(o)||F(a)||F(l)||F(u)||F(h))){n=Math.ceil(n),o=Math.ceil(o),a=Math.ceil(a),l=Math.ceil(l),u=Math.ceil(u),h=Math.ceil(h);var d=n<=1?1:J(o/n,0,1,Pt),v=n<=1?1:J(a/n,0,1,Pt),c=l<=1?1:J(u/l,0,1,Pt),f=l<=1?1:J(h/l,0,1,Pt);r=Mt(r,{$prev_pageview_last_scroll:o,$prev_pageview_last_scroll_percentage:d,$prev_pageview_max_scroll:a,$prev_pageview_max_scroll_percentage:v,$prev_pageview_last_content:u,$prev_pageview_last_content_percentage:c,$prev_pageview_max_content:h,$prev_pageview_max_content_percentage:f})}}return e.pathname&&(r.$prev_pageview_pathname=e.pathname),e.timestamp&&(r.$prev_pageview_duration=(t.getTime()-e.timestamp.getTime())/1e3),r}}var xs=Uint8Array,$s=Uint16Array,Ss=Uint32Array,Es=new xs([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),ks=new xs([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Ps=new xs([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ts=function(t,i){for(var e=new $s(31),r=0;r<31;++r)e[r]=i+=1<<t[r-1];var s=new Ss(e[30]);for(r=1;r<30;++r)for(var n=e[r];n<e[r+1];++n)s[n]=n-e[r]<<5|r;return[e,s]},Rs=Ts(Es,2),Is=Rs[0],Cs=Rs[1];Is[28]=258,Cs[258]=28;for(var Os=Ts(ks,0)[1],Fs=new $s(32768),Ms=0;Ms<32768;++Ms){var As=(43690&Ms)>>>1|(21845&Ms)<<1;As=(61680&(As=(52428&As)>>>2|(13107&As)<<2))>>>4|(3855&As)<<4,Fs[Ms]=((65280&As)>>>8|(255&As)<<8)>>>1}var Ds=function(t,i,e){for(var r=t.length,s=0,n=new $s(i);s<r;++s)++n[t[s]-1];var o,a=new $s(i);for(s=0;s<i;++s)a[s]=a[s-1]+n[s-1]<<1;if(e){o=new $s(1<<i);var l=15-i;for(s=0;s<r;++s)if(t[s])for(var u=s<<4|t[s],h=i-t[s],d=a[t[s]-1]++<<h,v=d|(1<<h)-1;d<=v;++d)o[Fs[d]>>>l]=u}else for(o=new $s(r),s=0;s<r;++s)o[s]=Fs[a[t[s]-1]++]>>>15-t[s];return o},js=new xs(288);for(Ms=0;Ms<144;++Ms)js[Ms]=8;for(Ms=144;Ms<256;++Ms)js[Ms]=9;for(Ms=256;Ms<280;++Ms)js[Ms]=7;for(Ms=280;Ms<288;++Ms)js[Ms]=8;var Ls=new xs(32);for(Ms=0;Ms<32;++Ms)Ls[Ms]=5;var Ns=Ds(js,9,0),Us=Ds(Ls,5,0),Hs=function(t){return(t/8>>0)+(7&t&&1)},zs=function(t,i,e){(null==e||e>t.length)&&(e=t.length);var r=new(t instanceof $s?$s:t instanceof Ss?Ss:xs)(e-i);return r.set(t.subarray(i,e)),r},Bs=function(t,i,e){e<<=7&i;var r=i/8>>0;t[r]|=e,t[r+1]|=e>>>8},qs=function(t,i,e){e<<=7&i;var r=i/8>>0;t[r]|=e,t[r+1]|=e>>>8,t[r+2]|=e>>>16},Ws=function(t,i){for(var e=[],r=0;r<t.length;++r)t[r]&&e.push({s:r,f:t[r]});var s=e.length,n=e.slice();if(!s)return[new xs(0),0];if(1==s){var o=new xs(e[0].s+1);return o[e[0].s]=1,[o,1]}e.sort((function(t,i){return t.f-i.f})),e.push({s:-1,f:25001});var a=e[0],l=e[1],u=0,h=1,d=2;for(e[0]={s:-1,f:a.f+l.f,l:a,r:l};h!=s-1;)a=e[e[u].f<e[d].f?u++:d++],l=e[u!=h&&e[u].f<e[d].f?u++:d++],e[h++]={s:-1,f:a.f+l.f,l:a,r:l};var v=n[0].s;for(r=1;r<s;++r)n[r].s>v&&(v=n[r].s);var c=new $s(v+1),f=Gs(e[h-1],c,0);if(f>i){r=0;var p=0,g=f-i,_=1<<g;for(n.sort((function(t,i){return c[i.s]-c[t.s]||t.f-i.f}));r<s;++r){var m=n[r].s;if(!(c[m]>i))break;p+=_-(1<<f-c[m]),c[m]=i}for(p>>>=g;p>0;){var y=n[r].s;c[y]<i?p-=1<<i-c[y]++-1:++r}for(;r>=0&&p;--r){var b=n[r].s;c[b]==i&&(--c[b],++p)}f=i}return[new xs(c),f]},Gs=function(t,i,e){return-1==t.s?Math.max(Gs(t.l,i,e+1),Gs(t.r,i,e+1)):i[t.s]=e},Vs=function(t){for(var i=t.length;i&&!t[--i];);for(var e=new $s(++i),r=0,s=t[0],n=1,o=function(t){e[r++]=t},a=1;a<=i;++a)if(t[a]==s&&a!=i)++n;else{if(!s&&n>2){for(;n>138;n-=138)o(32754);n>2&&(o(n>10?n-11<<5|28690:n-3<<5|12305),n=0)}else if(n>3){for(o(s),--n;n>6;n-=6)o(8304);n>2&&(o(n-3<<5|8208),n=0)}for(;n--;)o(s);n=1,s=t[a]}return[e.subarray(0,r),i]},Js=function(t,i){for(var e=0,r=0;r<i.length;++r)e+=t[r]*i[r];return e},Ks=function(t,i,e){var r=e.length,s=Hs(i+2);t[s]=255&r,t[s+1]=r>>>8,t[s+2]=255^t[s],t[s+3]=255^t[s+1];for(var n=0;n<r;++n)t[s+n+4]=e[n];return 8*(s+4+r)},Ys=function(t,i,e,r,s,n,o,a,l,u,h){Bs(i,h++,e),++s[256];for(var d=Ws(s,15),v=d[0],c=d[1],f=Ws(n,15),p=f[0],g=f[1],_=Vs(v),m=_[0],y=_[1],b=Vs(p),w=b[0],x=b[1],S=new $s(19),E=0;E<m.length;++E)S[31&m[E]]++;for(E=0;E<w.length;++E)S[31&w[E]]++;for(var k=Ws(S,7),P=k[0],T=k[1],R=19;R>4&&!P[Ps[R-1]];--R);var I,C,O,F,M=u+5<<3,A=Js(s,js)+Js(n,Ls)+o,D=Js(s,v)+Js(n,p)+o+14+3*R+Js(S,P)+(2*S[16]+3*S[17]+7*S[18]);if(M<=A&&M<=D)return Ks(i,h,t.subarray(l,l+u));if(Bs(i,h,1+(D<A)),h+=2,D<A){I=Ds(v,c,0),C=v,O=Ds(p,g,0),F=p;var j=Ds(P,T,0);Bs(i,h,y-257),Bs(i,h+5,x-1),Bs(i,h+10,R-4),h+=14;for(E=0;E<R;++E)Bs(i,h+3*E,P[Ps[E]]);h+=3*R;for(var L=[m,w],N=0;N<2;++N){var U=L[N];for(E=0;E<U.length;++E){var H=31&U[E];Bs(i,h,j[H]),h+=P[H],H>15&&(Bs(i,h,U[E]>>>5&127),h+=U[E]>>>12)}}}else I=Ns,C=js,O=Us,F=Ls;for(E=0;E<a;++E)if(r[E]>255){H=r[E]>>>18&31;qs(i,h,I[H+257]),h+=C[H+257],H>7&&(Bs(i,h,r[E]>>>23&31),h+=Es[H]);var z=31&r[E];qs(i,h,O[z]),h+=F[z],z>3&&(qs(i,h,r[E]>>>5&8191),h+=ks[z])}else qs(i,h,I[r[E]]),h+=C[r[E]];return qs(i,h,I[256]),h+C[256]},Xs=new Ss([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Qs=function(){for(var t=new Ss(256),i=0;i<256;++i){for(var e=i,r=9;--r;)e=(1&e&&3988292384)^e>>>1;t[i]=e}return t}(),Zs=function(t,i,e,r,s){return function(t,i,e,r,s,n){var o=t.length,a=new xs(r+o+5*(1+Math.floor(o/7e3))+s),l=a.subarray(r,a.length-s),u=0;if(!i||o<8)for(var h=0;h<=o;h+=65535){var d=h+65535;d<o?u=Ks(l,u,t.subarray(h,d)):(l[h]=n,u=Ks(l,u,t.subarray(h,o)))}else{for(var v=Xs[i-1],c=v>>>13,f=8191&v,p=(1<<e)-1,g=new $s(32768),_=new $s(p+1),m=Math.ceil(e/3),y=2*m,b=function(i){return(t[i]^t[i+1]<<m^t[i+2]<<y)&p},w=new Ss(25e3),x=new $s(288),S=new $s(32),E=0,k=0,P=(h=0,0),T=0,R=0;h<o;++h){var I=b(h),C=32767&h,O=_[I];if(g[C]=O,_[I]=C,T<=h){var F=o-h;if((E>7e3||P>24576)&&F>423){u=Ys(t,l,0,w,x,S,k,P,R,h-R,u),P=E=k=0,R=h;for(var M=0;M<286;++M)x[M]=0;for(M=0;M<30;++M)S[M]=0}var A=2,D=0,j=f,L=C-O&32767;if(F>2&&I==b(h-L))for(var N=Math.min(c,F)-1,U=Math.min(32767,h),H=Math.min(258,F);L<=U&&--j&&C!=O;){if(t[h+A]==t[h+A-L]){for(var z=0;z<H&&t[h+z]==t[h+z-L];++z);if(z>A){if(A=z,D=L,z>N)break;var B=Math.min(L,z-2),q=0;for(M=0;M<B;++M){var W=h-L+M+32768&32767,G=W-g[W]+32768&32767;G>q&&(q=G,O=W)}}}L+=(C=O)-(O=g[C])+32768&32767}if(D){w[P++]=268435456|Cs[A]<<18|Os[D];var V=31&Cs[A],J=31&Os[D];k+=Es[V]+ks[J],++x[257+V],++S[J],T=h+A,++E}else w[P++]=t[h],++x[t[h]]}}u=Ys(t,l,n,w,x,S,k,P,R,h-R,u)}return zs(a,0,r+Hs(u)+s)}(t,null==i.level?6:i.level,null==i.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(t.length)))):12+i.mem,e,r,!0)},tn=function(t,i,e){for(;e;++i)t[i]=e,e>>>=8};function en(t,i){void 0===i&&(i={});var e=function(){var t=4294967295;return{p:function(i){for(var e=t,r=0;r<i.length;++r)e=Qs[255&e^i[r]]^e>>>8;t=e},d:function(){return 4294967295^t}}}(),r=t.length;e.p(t);var s,n=Zs(t,i,10+((s=i).filename&&s.filename.length+1||0),8),o=n.length;return function(t,i){var e=i.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=i.level<2?4:9==i.level?2:0,t[9]=3,0!=i.mtime&&tn(t,4,Math.floor(new Date(i.mtime||Date.now())/1e3)),e){t[3]=8;for(var r=0;r<=e.length;++r)t[r+10]=e.charCodeAt(r)}}(n,i),tn(n,o-8,e.d()),tn(n,o-4,r),n}var rn=function(t){var i,e,r,s,n=\"\";for(i=e=0,r=(t=(t+\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\")).length,s=0;s<r;s++){var o=t.charCodeAt(s),a=null;o<128?e++:a=o>127&&o<2048?String.fromCharCode(o>>6|192,63&o|128):String.fromCharCode(o>>12|224,o>>6&63|128,63&o|128),D(a)||(e>i&&(n+=t.substring(i,e)),n+=a,i=e=s+1)}return e>i&&(n+=t.substring(i,t.length)),n},sn=!!u||!!l,nn=\"text/plain\",on=function(t,i,e){var r;void 0===e&&(e=!0);var[s,n]=t.split(\"?\"),o=g({},i),a=null!==(r=null==n?void 0:n.split(\"&\").map((t=>{var i,[r,s]=t.split(\"=\"),n=e&&null!==(i=o[r])&&void 0!==i?i:s;return delete o[r],r+\"=\"+n})))&&void 0!==r?r:[],l=oe(o);return l&&a.push(l),s+\"?\"+a.join(\"&\")},an=(t,i)=>JSON.stringify(t,((t,i)=>\"bigint\"==typeof i?i.toString():i),i),ln=t=>{var{data:i,compression:e}=t;if(i){if(e===re.GZipJS){var r=en(function(t,i){var e=t.length;if(\"undefined\"!=typeof TextEncoder)return(new TextEncoder).encode(t);for(var r=new xs(t.length+(t.length>>>1)),s=0,n=function(t){r[s++]=t},o=0;o<e;++o){if(s+5>r.length){var a=new xs(s+8+(e-o<<1));a.set(r),r=a}var l=t.charCodeAt(o);l<128||i?n(l):l<2048?(n(192|l>>>6),n(128|63&l)):l>55295&&l<57344?(n(240|(l=65536+(1047552&l)|1023&t.charCodeAt(++o))>>>18),n(128|l>>>12&63),n(128|l>>>6&63),n(128|63&l)):(n(224|l>>>12),n(128|l>>>6&63),n(128|63&l))}return zs(r,0,s)}(an(i)),{mtime:0}),s=new Blob([r],{type:nn});return{contentType:nn,body:s,estimatedSize:s.size}}if(e===re.Base64){var n=function(t){var i,e,r,s,n,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",a=0,l=0,u=\"\",h=[];if(!t)return t;t=rn(t);do{i=(n=t.charCodeAt(a++)<<16|t.charCodeAt(a++)<<8|t.charCodeAt(a++))>>18&63,e=n>>12&63,r=n>>6&63,s=63&n,h[l++]=o.charAt(i)+o.charAt(e)+o.charAt(r)+o.charAt(s)}while(a<t.length);switch(u=h.join(\"\"),t.length%3){case 1:u=u.slice(0,-2)+\"==\";break;case 2:u=u.slice(0,-1)+\"=\"}return u}(an(i)),o=(t=>\"data=\"+encodeURIComponent(\"string\"==typeof t?t:an(t)))(n);return{contentType:\"application/x-www-form-urlencoded\",body:o,estimatedSize:new Blob([o]).size}}var a=an(i);return{contentType:\"application/json\",body:a,estimatedSize:new Blob([a]).size}}},un=[];l&&un.push({transport:\"fetch\",method:t=>{var i,e,{contentType:r,body:s,estimatedSize:n}=null!==(i=ln(t))&&void 0!==i?i:{},o=new Headers;Ft(t.headers,(function(t,i){o.append(i,t)})),r&&o.append(\"Content-Type\",r);var a=t.url,u=null;if(h){var d=new h;u={signal:d.signal,timeout:setTimeout((()=>d.abort()),t.timeout)}}l(a,g({method:(null==t?void 0:t.method)||\"GET\",headers:o,keepalive:\"POST\"===t.method&&(n||0)<52428.8,body:s,signal:null==(e=u)?void 0:e.signal},t.fetchOptions)).then((i=>i.text().then((e=>{var r={statusCode:i.status,text:e};if(200===i.status)try{r.json=JSON.parse(e)}catch(t){Pt.error(t)}null==t.callback||t.callback(r)})))).catch((i=>{Pt.error(i),null==t.callback||t.callback({statusCode:0,text:i})})).finally((()=>u?clearTimeout(u.timeout):null))}}),u&&un.push({transport:\"XHR\",method:t=>{var i,e=new u;e.open(t.method||\"GET\",t.url,!0);var{contentType:r,body:s}=null!==(i=ln(t))&&void 0!==i?i:{};Ft(t.headers,(function(t,i){e.setRequestHeader(i,t)})),r&&e.setRequestHeader(\"Content-Type\",r),t.timeout&&(e.timeout=t.timeout),t.disableXHRCredentials||(e.withCredentials=!0),e.onreadystatechange=()=>{if(4===e.readyState){var i={statusCode:e.status,text:e.responseText};if(200===e.status)try{i.json=JSON.parse(e.responseText)}catch(t){}null==t.callback||t.callback(i)}},e.send(s)}}),null!=n&&n.sendBeacon&&un.push({transport:\"sendBeacon\",method:t=>{var i=on(t.url,{beacon:\"1\"});try{var e,{contentType:r,body:s}=null!==(e=ln(t))&&void 0!==e?e:{},o=\"string\"==typeof s?new Blob([s],{type:r}):s;n.sendBeacon(i,o)}catch(t){}}});var hn=function(t,i){if(!function(t){try{new RegExp(t)}catch(t){return!1}return!0}(i))return!1;try{return new RegExp(i).test(t)}catch(t){return!1}};function dn(t,i,e){return an({distinct_id:t,userPropertiesToSet:i,userPropertiesToSetOnce:e})}var vn={exact:(t,i)=>i.some((i=>t.some((t=>i===t)))),is_not:(t,i)=>i.every((i=>t.every((t=>i!==t)))),regex:(t,i)=>i.some((i=>t.some((t=>hn(i,t))))),not_regex:(t,i)=>i.every((i=>t.every((t=>!hn(i,t))))),icontains:(t,i)=>i.map(cn).some((i=>t.map(cn).some((t=>i.includes(t))))),not_icontains:(t,i)=>i.map(cn).every((i=>t.map(cn).every((t=>!i.includes(t)))))},cn=t=>t.toLowerCase(),fn=Tt(\"[Error tracking]\");class pn{constructor(t){var i,e;this.Jt=[],this.Kt=new ft([new pt,new Et,new _t,new gt,new $t,new xt,new yt,new St],[at,ht]),this._instance=t,this.Jt=null!==(i=null==(e=this._instance.persistence)?void 0:e.get_property(Xt))&&void 0!==i?i:[]}onRemoteConfig(t){var i,e,r,s=null!==(i=null==(e=t.errorTracking)?void 0:e.suppressionRules)&&void 0!==i?i:[],n=null==(r=t.errorTracking)?void 0:r.captureExtensionExceptions;this.Jt=s,this._instance.persistence&&this._instance.persistence.register({[Xt]:this.Jt,[Qt]:n})}get Yt(){var t,i=!!this._instance.get_property(Qt),e=this._instance.config.error_tracking.captureExtensionExceptions;return null!==(t=null!=e?e:i)&&void 0!==t&&t}buildProperties(t,i){return this.Kt.buildFromUnknown(t,{syntheticException:null==i?void 0:i.syntheticException,mechanism:{handled:null==i?void 0:i.handled}})}sendExceptionEvent(t){var i=t.$exception_list;if(this.Xt(i)){if(this.Qt(i))return void fn.info(\"Skipping exception capture because a suppression rule matched\");if(!this.Yt&&this.Zt(i))return void fn.info(\"Skipping exception capture because it was thrown by an extension\");if(!this._instance.config.error_tracking.__capturePostHogExceptions&&this.ti(i))return void fn.info(\"Skipping exception capture because it was thrown by the PostHog SDK\")}return this._instance.capture(\"$exception\",t,{_noTruncate:!0,_batchKey:\"exceptionEvent\"})}Qt(t){if(0===t.length)return!1;var i=t.reduce(((t,i)=>{var{type:e,value:r}=i;return M(e)&&e.length>0&&t.$exception_types.push(e),M(r)&&r.length>0&&t.$exception_values.push(r),t}),{$exception_types:[],$exception_values:[]});return this.Jt.some((t=>{var e=t.values.map((t=>{var e,r=vn[t.operator],s=R(t.value)?t.value:[t.value],n=null!==(e=i[t.key])&&void 0!==e?e:[];return s.length>0&&r(s,n)}));return\"OR\"===t.type?e.some(Boolean):e.every(Boolean)}))}Zt(t){return t.flatMap((t=>{var i,e;return null!==(i=null==(e=t.stacktrace)?void 0:e.frames)&&void 0!==i?i:[]})).some((t=>t.filename&&t.filename.startsWith(\"chrome-extension://\")))}ti(t){if(t.length>0){var i,e,r,s,n=null!==(i=null==(e=t[0].stacktrace)?void 0:e.frames)&&void 0!==i?i:[],o=n[n.length-1];return null!==(r=null==o||null==(s=o.filename)?void 0:s.includes(\"posthog.com/static\"))&&void 0!==r&&r}return!1}Xt(t){return!j(t)&&R(t)}}var gn=Tt(\"[FeatureFlags]\"),_n=\"$active_feature_flags\",mn=\"$override_feature_flags\",yn=\"$feature_flag_payloads\",bn=\"$override_feature_flag_payloads\",wn=\"$feature_flag_request_id\",xn=t=>{var i={};for(var[e,r]of Dt(t||{}))r&&(i[e]=r);return i},$n=t=>{var i=t.flags;return i?(t.featureFlags=Object.fromEntries(Object.keys(i).map((t=>{var e;return[t,null!==(e=i[t].variant)&&void 0!==e?e:i[t].enabled]}))),t.featureFlagPayloads=Object.fromEntries(Object.keys(i).filter((t=>i[t].enabled)).filter((t=>{var e;return null==(e=i[t].metadata)?void 0:e.payload})).map((t=>{var e;return[t,null==(e=i[t].metadata)?void 0:e.payload]})))):gn.warn(\"Using an older version of the feature flags endpoint. Please upgrade your PostHog server to the latest version\"),t},Sn=function(t){return t.FeatureFlags=\"feature_flags\",t.Recordings=\"recordings\",t}({});class En{constructor(t){this.ii=!1,this.ei=!1,this.ri=!1,this.si=!1,this.ni=!1,this.oi=!1,this.ai=!1,this._instance=t,this.featureFlagEventHandlers=[]}li(){var t=this._instance.config.evaluation_environments;return null!=t&&t.length?t.filter((t=>{var i=t&&\"string\"==typeof t&&t.trim().length>0;return i||gn.error(\"Invalid evaluation environment found:\",t,\"Expected non-empty string\"),i})):[]}ui(){return this.li().length>0}flags(){if(this._instance.config.__preview_remote_config)this.oi=!0;else{var t=!this.hi&&(this._instance.config.advanced_disable_feature_flags||this._instance.config.advanced_disable_feature_flags_on_first_load);this.di({disableFlags:t})}}get hasLoadedFlags(){return this.ei}getFlags(){return Object.keys(this.getFlagVariants())}getFlagsWithDetails(){var t=this._instance.get_property(ai),i=this._instance.get_property(mn),e=this._instance.get_property(bn);if(!e&&!i)return t||{};var r=Mt({},t||{}),s=[...new Set([...Object.keys(e||{}),...Object.keys(i||{})])];for(var n of s){var o,a,l=r[n],u=null==i?void 0:i[n],h=F(u)?null!==(o=null==l?void 0:l.enabled)&&void 0!==o&&o:!!u,d=F(u)?l.variant:\"string\"==typeof u?u:void 0,v=null==e?void 0:e[n],c=g({},l,{enabled:h,variant:h?null!=d?d:null==l?void 0:l.variant:void 0});if(h!==(null==l?void 0:l.enabled)&&(c.original_enabled=null==l?void 0:l.enabled),d!==(null==l?void 0:l.variant)&&(c.original_variant=null==l?void 0:l.variant),v)c.metadata=g({},null==l?void 0:l.metadata,{payload:v,original_payload:null==l||null==(a=l.metadata)?void 0:a.payload});r[n]=c}return this.ii||(gn.warn(\" Overriding feature flag details!\",{flagDetails:t,overriddenPayloads:e,finalDetails:r}),this.ii=!0),r}getFlagVariants(){var t=this._instance.get_property(ni),i=this._instance.get_property(mn);if(!i)return t||{};for(var e=Mt({},t),r=Object.keys(i),s=0;s<r.length;s++)e[r[s]]=i[r[s]];return this.ii||(gn.warn(\" Overriding feature flags!\",{enabledFlags:t,overriddenFlags:i,finalFlags:e}),this.ii=!0),e}getFlagPayloads(){var t=this._instance.get_property(yn),i=this._instance.get_property(bn);if(!i)return t||{};for(var e=Mt({},t||{}),r=Object.keys(i),s=0;s<r.length;s++)e[r[s]]=i[r[s]];return this.ii||(gn.warn(\" Overriding feature flag payloads!\",{flagPayloads:t,overriddenPayloads:i,finalPayloads:e}),this.ii=!0),e}reloadFeatureFlags(){this.si||this._instance.config.advanced_disable_feature_flags||this.hi||(this.hi=setTimeout((()=>{this.di()}),5))}vi(){clearTimeout(this.hi),this.hi=void 0}ensureFlagsLoaded(){this.ei||this.ri||this.hi||this.reloadFeatureFlags()}setAnonymousDistinctId(t){this.$anon_distinct_id=t}setReloadingPaused(t){this.si=t}di(t){var i;if(this.vi(),!this._instance.M())if(this.ri)this.ni=!0;else{var e={token:this._instance.config.token,distinct_id:this._instance.get_distinct_id(),groups:this._instance.getGroups(),$anon_distinct_id:this.$anon_distinct_id,person_properties:g({},(null==(i=this._instance.persistence)?void 0:i.get_initial_props())||{},this._instance.get_property(li)||{}),group_properties:this._instance.get_property(ui)};(null!=t&&t.disableFlags||this._instance.config.advanced_disable_feature_flags)&&(e.disable_flags=!0),this.ui()&&(e.evaluation_environments=this.li());var r=this._instance.config.__preview_remote_config,s=r?\"/flags/?v=2\":\"/flags/?v=2&config=true\",n=this._instance.config.advanced_only_evaluate_survey_feature_flags?\"&only_evaluate_survey_feature_flags=true\":\"\",o=this._instance.requestRouter.endpointFor(\"flags\",s+n);r&&(e.timezone=vs()),this.ri=!0,this._instance.ci({method:\"POST\",url:o,data:e,compression:this._instance.config.disable_compression?void 0:re.Base64,timeout:this._instance.config.feature_flag_request_timeout_ms,callback:t=>{var i,r,s=!0;(200===t.statusCode&&(this.ni||(this.$anon_distinct_id=void 0),s=!1),this.ri=!1,this.oi)||(this.oi=!0,this._instance.fi(null!==(r=t.json)&&void 0!==r?r:{}));if(!e.disable_flags||this.ni)if(this.ai=!s,t.json&&null!=(i=t.json.quotaLimited)&&i.includes(Sn.FeatureFlags))gn.warn(\"You have hit your feature flags quota limit, and will not be able to load feature flags until the quota is reset. Please visit https://posthog.com/docs/billing/limits-alerts to learn more.\");else{var n;if(!e.disable_flags)this.receivedFeatureFlags(null!==(n=t.json)&&void 0!==n?n:{},s);this.ni&&(this.ni=!1,this.di())}}})}}getFeatureFlag(t,i){if(void 0===i&&(i={}),this.ei||this.getFlags()&&this.getFlags().length>0){var e=this.getFlagVariants()[t],r=\"\"+e,s=this._instance.get_property(wn)||void 0,n=this._instance.get_property(vi)||{};if((i.send_event||!(\"send_event\"in i))&&(!(t in n)||!n[t].includes(r))){var o,a,l,u,h,d,v,c,f;R(n[t])?n[t].push(r):n[t]=[r],null==(o=this._instance.persistence)||o.register({[vi]:n});var p=this.getFeatureFlagDetails(t),g={$feature_flag:t,$feature_flag_response:e,$feature_flag_payload:this.getFeatureFlagPayload(t)||null,$feature_flag_request_id:s,$feature_flag_bootstrapped_response:(null==(a=this._instance.config.bootstrap)||null==(a=a.featureFlags)?void 0:a[t])||null,$feature_flag_bootstrapped_payload:(null==(l=this._instance.config.bootstrap)||null==(l=l.featureFlagPayloads)?void 0:l[t])||null,$used_bootstrap_value:!this.ai};F(null==p||null==(u=p.metadata)?void 0:u.version)||(g.$feature_flag_version=p.metadata.version);var _,m=null!==(h=null==p||null==(d=p.reason)?void 0:d.description)&&void 0!==h?h:null==p||null==(v=p.reason)?void 0:v.code;if(m&&(g.$feature_flag_reason=m),null!=p&&null!=(c=p.metadata)&&c.id&&(g.$feature_flag_id=p.metadata.id),F(null==p?void 0:p.original_variant)&&F(null==p?void 0:p.original_enabled)||(g.$feature_flag_original_response=F(p.original_variant)?p.original_enabled:p.original_variant),null!=p&&null!=(f=p.metadata)&&f.original_payload)g.$feature_flag_original_payload=null==p||null==(_=p.metadata)?void 0:_.original_payload;this._instance.capture(\"$feature_flag_called\",g)}return e}gn.warn('getFeatureFlag for key \"'+t+\"\\\" failed. Feature flags didn't load in time.\")}getFeatureFlagDetails(t){return this.getFlagsWithDetails()[t]}getFeatureFlagPayload(t){return this.getFlagPayloads()[t]}getRemoteConfigPayload(t,i){var e=this._instance.config.token,r={distinct_id:this._instance.get_distinct_id(),token:e};this.ui()&&(r.evaluation_environments=this.li()),this._instance.ci({method:\"POST\",url:this._instance.requestRouter.endpointFor(\"flags\",\"/flags/?v=2&config=true\"),data:r,compression:this._instance.config.disable_compression?void 0:re.Base64,timeout:this._instance.config.feature_flag_request_timeout_ms,callback:e=>{var r,s=null==(r=e.json)?void 0:r.featureFlagPayloads;i((null==s?void 0:s[t])||void 0)}})}isFeatureEnabled(t,i){if(void 0===i&&(i={}),this.ei||this.getFlags()&&this.getFlags().length>0){var e=this.getFeatureFlag(t,i);return F(e)?void 0:!!e}gn.warn('isFeatureEnabled for key \"'+t+\"\\\" failed. Feature flags didn't load in time.\")}addFeatureFlagsHandler(t){this.featureFlagEventHandlers.push(t)}removeFeatureFlagsHandler(t){this.featureFlagEventHandlers=this.featureFlagEventHandlers.filter((i=>i!==t))}receivedFeatureFlags(t,i){if(this._instance.persistence){this.ei=!0;var e=this.getFlagVariants(),r=this.getFlagPayloads(),s=this.getFlagsWithDetails();!function(t,i,e,r,s){void 0===e&&(e={}),void 0===r&&(r={}),void 0===s&&(s={});var n=$n(t),o=n.flags,a=n.featureFlags,l=n.featureFlagPayloads;if(a){var u=t.requestId;if(R(a)){gn.warn(\"v1 of the feature flags endpoint is deprecated. Please use the latest version.\");var h={};if(a)for(var d=0;d<a.length;d++)h[a[d]]=!0;i&&i.register({[_n]:a,[ni]:h})}else{var v=a,c=l,f=o;t.errorsWhileComputingFlags&&(v=g({},e,v),c=g({},r,c),f=g({},s,f)),i&&i.register(g({[_n]:Object.keys(xn(v)),[ni]:v||{},[yn]:c||{},[ai]:f||{}},u?{[wn]:u}:{}))}}}(t,this._instance.persistence,e,r,s),this.pi(i)}}override(t,i){void 0===i&&(i=!1),gn.warn(\"override is deprecated. Please use overrideFeatureFlags instead.\"),this.overrideFeatureFlags({flags:t,suppressWarning:i})}overrideFeatureFlags(t){if(!this._instance.__loaded||!this._instance.persistence)return gn.uninitializedWarning(\"posthog.featureFlags.overrideFeatureFlags\");if(!1===t)return this._instance.persistence.unregister(mn),this._instance.persistence.unregister(bn),void this.pi();if(t&&\"object\"==typeof t&&(\"flags\"in t||\"payloads\"in t)){var i,e=t;if(this.ii=Boolean(null!==(i=e.suppressWarning)&&void 0!==i&&i),\"flags\"in e)if(!1===e.flags)this._instance.persistence.unregister(mn);else if(e.flags)if(R(e.flags)){for(var r={},s=0;s<e.flags.length;s++)r[e.flags[s]]=!0;this._instance.persistence.register({[mn]:r})}else this._instance.persistence.register({[mn]:e.flags});return\"payloads\"in e&&(!1===e.payloads?this._instance.persistence.unregister(bn):e.payloads&&this._instance.persistence.register({[bn]:e.payloads})),void this.pi()}this.pi()}onFeatureFlags(t){if(this.addFeatureFlagsHandler(t),this.ei){var{flags:i,flagVariants:e}=this.gi();t(i,e)}return()=>this.removeFeatureFlagsHandler(t)}updateEarlyAccessFeatureEnrollment(t,i,e){var r,s=(this._instance.get_property(oi)||[]).find((i=>i.flagKey===t)),n={[\"$feature_enrollment/\"+t]:i},o={$feature_flag:t,$feature_enrollment:i,$set:n};s&&(o.$early_access_feature_name=s.name),e&&(o.$feature_enrollment_stage=e),this._instance.capture(\"$feature_enrollment_update\",o),this.setPersonPropertiesForFlags(n,!1);var a=g({},this.getFlagVariants(),{[t]:i});null==(r=this._instance.persistence)||r.register({[_n]:Object.keys(xn(a)),[ni]:a}),this.pi()}getEarlyAccessFeatures(t,i,e){void 0===i&&(i=!1);var r=this._instance.get_property(oi),s=e?\"&\"+e.map((t=>\"stage=\"+t)).join(\"&\"):\"\";if(r&&!i)return t(r);this._instance.ci({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/early_access_features/?token=\"+this._instance.config.token+s),method:\"GET\",callback:i=>{var e,r;if(i.json){var s=i.json.earlyAccessFeatures;return null==(e=this._instance.persistence)||e.unregister(oi),null==(r=this._instance.persistence)||r.register({[oi]:s}),t(s)}}})}gi(){var t=this.getFlags(),i=this.getFlagVariants();return{flags:t.filter((t=>i[t])),flagVariants:Object.keys(i).filter((t=>i[t])).reduce(((t,e)=>(t[e]=i[e],t)),{})}}pi(t){var{flags:i,flagVariants:e}=this.gi();this.featureFlagEventHandlers.forEach((r=>r(i,e,{errorsLoading:t})))}setPersonPropertiesForFlags(t,i){void 0===i&&(i=!0);var e=this._instance.get_property(li)||{};this._instance.register({[li]:g({},e,t)}),i&&this._instance.reloadFeatureFlags()}resetPersonPropertiesForFlags(){this._instance.unregister(li)}setGroupPropertiesForFlags(t,i){void 0===i&&(i=!0);var e=this._instance.get_property(ui)||{};0!==Object.keys(e).length&&Object.keys(e).forEach((i=>{e[i]=g({},e[i],t[i]),delete t[i]})),this._instance.register({[ui]:g({},e,t)}),i&&this._instance.reloadFeatureFlags()}resetGroupPropertiesForFlags(t){if(t){var i=this._instance.get_property(ui)||{};this._instance.register({[ui]:g({},i,{[t]:{}})})}else this._instance.unregister(ui)}reset(){this.ei=!1,this.ri=!1,this.si=!1,this.ni=!1,this.oi=!1,this.ai=!1,this.$anon_distinct_id=void 0,this.vi(),this.ii=!1}}var kn=[\"cookie\",\"localstorage\",\"localstorage+cookie\",\"sessionstorage\",\"memory\"];class Pn{constructor(t,i){this.C=t,this.props={},this.mi=!1,this.yi=(t=>{var i=\"\";return t.token&&(i=t.token.replace(/\\+/g,\"PL\").replace(/\\//g,\"SL\").replace(/=/g,\"EQ\")),t.persistence_name?\"ph_\"+t.persistence_name:\"ph_\"+i+\"_posthog\"})(t),this.Y=this.bi(t),this.load(),t.debug&&Pt.info(\"Persistence loaded\",t.persistence,g({},this.props)),this.update_config(t,t,i),this.save()}isDisabled(){return!!this.wi}bi(t){-1===kn.indexOf(t.persistence.toLowerCase())&&(Pt.critical(\"Unknown persistence type \"+t.persistence+\"; falling back to localStorage+cookie\"),t.persistence=\"localStorage+cookie\");var i=t.persistence.toLowerCase();return\"localstorage\"===i&&Re.H()?Re:\"localstorage+cookie\"===i&&Ce.H()?Ce:\"sessionstorage\"===i&&Ae.H()?Ae:\"memory\"===i?Fe:\"cookie\"===i?Pe:Ce.H()?Ce:Pe}properties(){var t={};return Ft(this.props,(function(i,e){if(e===ni&&C(i))for(var r=Object.keys(i),n=0;n<r.length;n++)t[\"$feature/\"+r[n]]=i[r[n]];else a=e,l=!1,(D(o=xi)?l:s&&o.indexOf===s?-1!=o.indexOf(a):(Ft(o,(function(t){if(l||(l=t===a))return Ct})),l))||(t[e]=i);var o,a,l})),t}load(){if(!this.wi){var t=this.Y.W(this.yi);t&&(this.props=Mt({},t))}}save(){this.wi||this.Y.G(this.yi,this.props,this.xi,this.$i,this.Si,this.C.debug)}remove(){this.Y.V(this.yi,!1),this.Y.V(this.yi,!0)}clear(){this.remove(),this.props={}}register_once(t,i,e){if(C(t)){F(i)&&(i=\"None\"),this.xi=F(e)?this.Ei:e;var r=!1;if(Ft(t,((t,e)=>{this.props.hasOwnProperty(e)&&this.props[e]!==i||(this.props[e]=t,r=!0)})),r)return this.save(),!0}return!1}register(t,i){if(C(t)){this.xi=F(i)?this.Ei:i;var e=!1;if(Ft(t,((i,r)=>{t.hasOwnProperty(r)&&this.props[r]!==i&&(this.props[r]=i,e=!0)})),e)return this.save(),!0}return!1}unregister(t){t in this.props&&(delete this.props[t],this.save())}update_campaign_params(){if(!this.mi){var t=ns(this.C.custom_campaign_params,this.C.mask_personal_data_properties,this.C.custom_personal_data_properties);O(Nt(t))||this.register(t),this.mi=!0}}update_search_keyword(){var t;this.register((t=null==o?void 0:o.referrer)?as(t):{})}update_referrer_info(){var t;this.register_once({$referrer:us(),$referring_domain:null!=o&&o.referrer&&(null==(t=ne(o.referrer))?void 0:t.host)||\"$direct\"},void 0)}set_initial_person_info(){this.props[gi]||this.props[_i]||this.register_once({[mi]:hs(this.C.mask_personal_data_properties,this.C.custom_personal_data_properties)},void 0)}get_initial_props(){var t={};Ft([_i,gi],(i=>{var e=this.props[i];e&&Ft(e,(function(i,e){t[\"$initial_\"+S(e)]=i}))}));var i,e,r=this.props[mi];if(r){var s=(i=ds(r),e={},Ft(i,(function(t,i){e[\"$initial_\"+S(i)]=t})),e);Mt(t,s)}return t}safe_merge(t){return Ft(this.props,(function(i,e){e in t||(t[e]=i)})),t}update_config(t,i,e){if(this.Ei=this.xi=t.cookie_expiration,this.set_disabled(t.disable_persistence||!!e),this.set_cross_subdomain(t.cross_subdomain_cookie),this.set_secure(t.secure_cookie),t.persistence!==i.persistence){var r=this.bi(t),s=this.props;this.clear(),this.Y=r,this.props=s,this.save()}}set_disabled(t){this.wi=t,this.wi?this.remove():this.save()}set_cross_subdomain(t){t!==this.$i&&(this.$i=t,this.remove(),this.save())}set_secure(t){t!==this.Si&&(this.Si=t,this.remove(),this.save())}set_event_timer(t,i){var e=this.props[Vt]||{};e[t]=i,this.props[Vt]=e,this.save()}remove_event_timer(t){var i=(this.props[Vt]||{})[t];return F(i)||(delete this.props[Vt][t],this.save()),i}get_property(t){return this.props[t]}set_property(t,i){this.props[t]=i,this.save()}}var Tn=function(t){return t.Button=\"button\",t.Tab=\"tab\",t.Selector=\"selector\",t}({}),Rn=function(t){return t.TopLeft=\"top_left\",t.TopRight=\"top_right\",t.TopCenter=\"top_center\",t.MiddleLeft=\"middle_left\",t.MiddleRight=\"middle_right\",t.MiddleCenter=\"middle_center\",t.Left=\"left\",t.Center=\"center\",t.Right=\"right\",t.NextToTrigger=\"next_to_trigger\",t}({}),In=function(t){return t.Popover=\"popover\",t.API=\"api\",t.Widget=\"widget\",t.ExternalSurvey=\"external_survey\",t}({}),Cn=function(t){return t.Open=\"open\",t.MultipleChoice=\"multiple_choice\",t.SingleChoice=\"single_choice\",t.Rating=\"rating\",t.Link=\"link\",t}({}),On=function(t){return t.NextQuestion=\"next_question\",t.End=\"end\",t.ResponseBased=\"response_based\",t.SpecificQuestion=\"specific_question\",t}({}),Fn=function(t){return t.Once=\"once\",t.Recurring=\"recurring\",t.Always=\"always\",t}({}),Mn=function(t){return t.SHOWN=\"survey shown\",t.DISMISSED=\"survey dismissed\",t.SENT=\"survey sent\",t}({}),An=function(t){return t.SURVEY_ID=\"$survey_id\",t.SURVEY_NAME=\"$survey_name\",t.SURVEY_RESPONSE=\"$survey_response\",t.SURVEY_ITERATION=\"$survey_iteration\",t.SURVEY_ITERATION_START_DATE=\"$survey_iteration_start_date\",t.SURVEY_PARTIALLY_COMPLETED=\"$survey_partially_completed\",t.SURVEY_SUBMISSION_ID=\"$survey_submission_id\",t.SURVEY_QUESTIONS=\"$survey_questions\",t.SURVEY_COMPLETED=\"$survey_completed\",t}({}),Dn=function(t){return t.Popover=\"popover\",t.Inline=\"inline\",t}({});class jn{constructor(){this.ki={},this.ki={}}on(t,i){return this.ki[t]||(this.ki[t]=[]),this.ki[t].push(i),()=>{this.ki[t]=this.ki[t].filter((t=>t!==i))}}emit(t,i){for(var e of this.ki[t]||[])e(i);for(var r of this.ki[\"*\"]||[])r(t,i)}}class Ln{constructor(t){this.Pi=new jn,this.Ti=(t,i)=>this.Ri(t,i)&&this.Ii(t,i)&&this.Ci(t,i),this.Ri=(t,i)=>null==i||!i.event||(null==t?void 0:t.event)===(null==i?void 0:i.event),this._instance=t,this.Oi=new Set,this.Fi=new Set}init(){var t;if(!F(null==(t=this._instance)?void 0:t.Mi)){var i;null==(i=this._instance)||i.Mi(((t,i)=>{this.on(t,i)}))}}register(t){var i,e;if(!F(null==(i=this._instance)?void 0:i.Mi)&&(t.forEach((t=>{var i,e;null==(i=this.Fi)||i.add(t),null==(e=t.steps)||e.forEach((t=>{var i;null==(i=this.Oi)||i.add((null==t?void 0:t.event)||\"\")}))})),null!=(e=this._instance)&&e.autocapture)){var r,s=new Set;t.forEach((t=>{var i;null==(i=t.steps)||i.forEach((t=>{null!=t&&t.selector&&s.add(null==t?void 0:t.selector)}))})),null==(r=this._instance)||r.autocapture.setElementSelectors(s)}}on(t,i){var e;null!=i&&0!=t.length&&(this.Oi.has(t)||this.Oi.has(null==i?void 0:i.event))&&this.Fi&&(null==(e=this.Fi)?void 0:e.size)>0&&this.Fi.forEach((t=>{this.Ai(i,t)&&this.Pi.emit(\"actionCaptured\",t.name)}))}Di(t){this.onAction(\"actionCaptured\",(i=>t(i)))}Ai(t,i){if(null==(null==i?void 0:i.steps))return!1;for(var e of i.steps)if(this.Ti(t,e))return!0;return!1}onAction(t,i){return this.Pi.on(t,i)}Ii(t,i){if(null!=i&&i.url){var e,r=null==t||null==(e=t.properties)?void 0:e.$current_url;if(!r||\"string\"!=typeof r)return!1;if(!Ln.ji(r,null==i?void 0:i.url,(null==i?void 0:i.url_matching)||\"contains\"))return!1}return!0}static ji(i,e,r){switch(r){case\"regex\":return!!t&&hn(i,e);case\"exact\":return e===i;case\"contains\":var s=Ln.Li(e).replace(/_/g,\".\").replace(/%/g,\".*\");return hn(i,s);default:return!1}}static Li(t){return t.replace(/[|\\\\{}()[\\]^$+*?.]/g,\"\\\\$&\").replace(/-/g,\"\\\\x2d\")}Ci(t,i){if((null!=i&&i.href||null!=i&&i.tag_name||null!=i&&i.text)&&!this.Ni(t).some((t=>!(null!=i&&i.href&&!Ln.ji(t.href||\"\",null==i?void 0:i.href,(null==i?void 0:i.href_matching)||\"exact\"))&&((null==i||!i.tag_name||t.tag_name===(null==i?void 0:i.tag_name))&&!(null!=i&&i.text&&!Ln.ji(t.text||\"\",null==i?void 0:i.text,(null==i?void 0:i.text_matching)||\"exact\")&&!Ln.ji(t.$el_text||\"\",null==i?void 0:i.text,(null==i?void 0:i.text_matching)||\"exact\"))))))return!1;if(null!=i&&i.selector){var e,r=null==t||null==(e=t.properties)?void 0:e.$element_selectors;if(!r)return!1;if(!r.includes(null==i?void 0:i.selector))return!1}return!0}Ni(t){return null==(null==t?void 0:t.properties.$elements)?[]:null==t?void 0:t.properties.$elements}}var Nn=Tt(\"[Surveys]\");var Un=\"seenSurvey_\",Hn=(t,i)=>{var e=\"$survey_\"+i+\"/\"+t.id;return t.current_iteration&&t.current_iteration>0&&(e=\"$survey_\"+i+\"/\"+t.id+\"/\"+t.current_iteration),e},zn=t=>{var i=\"\"+Un+t.id;return t.current_iteration&&t.current_iteration>0&&(i=\"\"+Un+t.id+\"_\"+t.current_iteration),i},Bn=[In.Popover,In.Widget,In.API],qn={ignoreConditions:!1,ignoreDelay:!1,displayType:Dn.Popover};class Wn{constructor(t){this._instance=t,this.Ui=new Map,this.Hi=new Map}register(t){var i;F(null==(i=this._instance)?void 0:i.Mi)||(this.zi(t),this.Bi(t))}Bi(t){var i=t.filter((t=>{var i,e;return(null==(i=t.conditions)?void 0:i.actions)&&(null==(e=t.conditions)||null==(e=e.actions)||null==(e=e.values)?void 0:e.length)>0}));if(0!==i.length){if(null==this.qi){this.qi=new Ln(this._instance),this.qi.init();this.qi.Di((t=>{this.onAction(t)}))}i.forEach((t=>{var i,e,r,s,n;t.conditions&&null!=(i=t.conditions)&&i.actions&&null!=(e=t.conditions)&&null!=(e=e.actions)&&e.values&&(null==(r=t.conditions)||null==(r=r.actions)||null==(r=r.values)?void 0:r.length)>0&&(null==(s=this.qi)||s.register(t.conditions.actions.values),null==(n=t.conditions)||null==(n=n.actions)||null==(n=n.values)||n.forEach((i=>{if(i&&i.name){var e=this.Hi.get(i.name);e&&e.push(t.id),this.Hi.set(i.name,e||[t.id])}})))}))}}zi(t){var i;if(0!==t.filter((t=>{var i,e;return(null==(i=t.conditions)?void 0:i.events)&&(null==(e=t.conditions)||null==(e=e.events)||null==(e=e.values)?void 0:e.length)>0})).length){null==(i=this._instance)||i.Mi(((t,i)=>{this.onEvent(t,i)})),t.forEach((t=>{var i;null==(i=t.conditions)||null==(i=i.events)||null==(i=i.values)||i.forEach((i=>{if(i&&i.name){var e=this.Ui.get(i.name);e&&e.push(t.id),this.Ui.set(i.name,e||[t.id])}}))}))}}onEvent(t,i){var e,r,s=(null==(e=this._instance)||null==(e=e.persistence)?void 0:e.props[di])||[];if(Mn.SHOWN===t&&i&&s.length>0){var n;Nn.info(\"survey event matched, removing survey from activated surveys\",{event:t,eventPayload:i,existingActivatedSurveys:s});var o=null==i||null==(n=i.properties)?void 0:n.$survey_id;if(o){var a=s.indexOf(o);a>=0&&(s.splice(a,1),this.Wi(s))}}else if(this.Ui.has(t)){Nn.info(\"survey event name matched\",{event:t,eventPayload:i,surveys:this.Ui.get(t)});var l=[];null==(r=this._instance)||r.getSurveys((i=>{l=i.filter((i=>{var e;return null==(e=this.Ui.get(t))?void 0:e.includes(i.id)}))}));var u=l.filter((e=>{var r,s=null==(r=e.conditions)||null==(r=r.events)||null==(r=r.values)?void 0:r.find((i=>i.name===t));return!!s&&(!s.propertyFilters||Object.entries(s.propertyFilters).every((t=>{var e,[r,s]=t,n=null==i||null==(e=i.properties)?void 0:e[r];if(F(n)||D(n))return!1;var o=[String(n)],a=vn[s.operator];return a?a(s.values,o):(Nn.warn(\"Unknown property comparison operator: \"+s.operator),!1)})))}));this.Wi(s.concat(u.map((t=>t.id))||[]))}}onAction(t){var i,e=(null==(i=this._instance)||null==(i=i.persistence)?void 0:i.props[di])||[];this.Hi.has(t)&&this.Wi(e.concat(this.Hi.get(t)||[]))}Wi(t){var i;Nn.info(\"updating activated surveys\",{activatedSurveys:t}),null==(i=this._instance)||null==(i=i.persistence)||i.register({[di]:[...new Set(t)]})}getSurveys(){var t,i=null==(t=this._instance)||null==(t=t.persistence)?void 0:t.props[di];return i||[]}getEventToSurveys(){return this.Ui}Gi(){return this.qi}}class Gn{constructor(t){this.Vi=void 0,this._surveyManager=null,this.Ji=!1,this.Ki=!1,this.Yi=[],this._instance=t,this._surveyEventReceiver=null}onRemoteConfig(t){if(!this._instance.config.disable_surveys){var i=t.surveys;if(j(i))return Nn.warn(\"Flags not loaded yet. Not loading surveys.\");var e=R(i);this.Vi=e?i.length>0:i,Nn.info(\"flags response received, isSurveysEnabled: \"+this.Vi),this.loadIfEnabled()}}reset(){localStorage.removeItem(\"lastSeenSurveyDate\");for(var t=[],i=0;i<localStorage.length;i++){var e=localStorage.key(i);(null!=e&&e.startsWith(Un)||null!=e&&e.startsWith(\"inProgressSurvey_\"))&&t.push(e)}t.forEach((t=>localStorage.removeItem(t)))}loadIfEnabled(){if(!this._surveyManager)if(this.Ki)Nn.info(\"Already initializing surveys, skipping...\");else if(this._instance.config.disable_surveys)Nn.info(\"Disabled. Not loading surveys.\");else if(this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())Nn.info(\"Not loading surveys in cookieless mode without consent.\");else{var t=null==v?void 0:v.__PosthogExtensions__;if(t){if(!F(this.Vi)||this._instance.config.advanced_enable_surveys){var i=this.Vi||this._instance.config.advanced_enable_surveys;this.Ki=!0;try{var e=t.generateSurveys;if(e)return void this.Xi(e,i);var r=t.loadExternalDependency;if(!r)return void this.Qi(\"PostHog loadExternalDependency extension not found.\");r(this._instance,\"surveys\",(e=>{e||!t.generateSurveys?this.Qi(\"Could not load surveys script\",e):this.Xi(t.generateSurveys,i)}))}catch(t){throw this.Qi(\"Error initializing surveys\",t),t}finally{this.Ki=!1}}}else Nn.error(\"PostHog Extensions not found.\")}}Xi(t,i){this._surveyManager=t(this._instance,i),this._surveyEventReceiver=new Wn(this._instance),Nn.info(\"Surveys loaded successfully\"),this.Zi({isLoaded:!0})}Qi(t,i){Nn.error(t,i),this.Zi({isLoaded:!1,error:t})}onSurveysLoaded(t){return this.Yi.push(t),this._surveyManager&&this.Zi({isLoaded:!0}),()=>{this.Yi=this.Yi.filter((i=>i!==t))}}getSurveys(t,i){if(void 0===i&&(i=!1),this._instance.config.disable_surveys)return Nn.info(\"Disabled. Not loading surveys.\"),t([]);var e=this._instance.get_property(hi);if(e&&!i)return t(e,{isLoaded:!0});if(this.Ji)return t([],{isLoaded:!1,error:\"Surveys are already being loaded\"});try{this.Ji=!0,this._instance.ci({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/surveys/?token=\"+this._instance.config.token),method:\"GET\",timeout:this._instance.config.surveys_request_timeout_ms,callback:i=>{var e;this.Ji=!1;var r=i.statusCode;if(200!==r||!i.json){var s=\"Surveys API could not be loaded, status: \"+r;return Nn.error(s),t([],{isLoaded:!1,error:s})}var n,o=i.json.surveys||[],a=o.filter((t=>function(t){return!(!t.start_date||t.end_date)}(t)&&(function(t){var i;return!(null==(i=t.conditions)||null==(i=i.events)||null==(i=i.values)||!i.length)}(t)||function(t){var i;return!(null==(i=t.conditions)||null==(i=i.actions)||null==(i=i.values)||!i.length)}(t))));a.length>0&&(null==(n=this._surveyEventReceiver)||n.register(a));return null==(e=this._instance.persistence)||e.register({[hi]:o}),t(o,{isLoaded:!0})}})}catch(t){throw this.Ji=!1,t}}Zi(t){for(var i of this.Yi)try{if(!t.isLoaded)return i([],t);this.getSurveys(i)}catch(t){Nn.error(\"Error in survey callback\",t)}}getActiveMatchingSurveys(t,i){if(void 0===i&&(i=!1),!j(this._surveyManager))return this._surveyManager.getActiveMatchingSurveys(t,i);Nn.warn(\"init was not called\")}te(t){var i=null;return this.getSurveys((e=>{var r;i=null!==(r=e.find((i=>i.id===t)))&&void 0!==r?r:null})),i}ie(t){if(j(this._surveyManager))return{eligible:!1,reason:\"SDK is not enabled or survey functionality is not yet loaded\"};var i=\"string\"==typeof t?this.te(t):t;return i?this._surveyManager.checkSurveyEligibility(i):{eligible:!1,reason:\"Survey not found\"}}canRenderSurvey(t){if(j(this._surveyManager))return Nn.warn(\"init was not called\"),{visible:!1,disabledReason:\"SDK is not enabled or survey functionality is not yet loaded\"};var i=this.ie(t);return{visible:i.eligible,disabledReason:i.reason}}canRenderSurveyAsync(t,i){return j(this._surveyManager)?(Nn.warn(\"init was not called\"),Promise.resolve({visible:!1,disabledReason:\"SDK is not enabled or survey functionality is not yet loaded\"})):new Promise((e=>{this.getSurveys((i=>{var r,s=null!==(r=i.find((i=>i.id===t)))&&void 0!==r?r:null;if(s){var n=this.ie(s);e({visible:n.eligible,disabledReason:n.reason})}else e({visible:!1,disabledReason:\"Survey not found\"})}),i)}))}renderSurvey(t,i){var e;if(j(this._surveyManager))Nn.warn(\"init was not called\");else{var r=\"string\"==typeof t?this.te(t):t;if(null!=r&&r.id)if(Bn.includes(r.type)){var s=null==o?void 0:o.querySelector(i);if(s)return null!=(e=r.appearance)&&e.surveyPopupDelaySeconds?(Nn.info(\"Rendering survey \"+r.id+\" with delay of \"+r.appearance.surveyPopupDelaySeconds+\" seconds\"),void setTimeout((()=>{var t,i;Nn.info(\"Rendering survey \"+r.id+\" with delay of \"+(null==(t=r.appearance)?void 0:t.surveyPopupDelaySeconds)+\" seconds\"),null==(i=this._surveyManager)||i.renderSurvey(r,s),Nn.info(\"Survey \"+r.id+\" rendered\")}),1e3*r.appearance.surveyPopupDelaySeconds)):void this._surveyManager.renderSurvey(r,s);Nn.warn(\"Survey element not found\")}else Nn.warn(\"Surveys of type \"+r.type+\" cannot be rendered in the app\");else Nn.warn(\"Survey not found\")}}displaySurvey(t,i){var e;if(j(this._surveyManager))Nn.warn(\"init was not called\");else{var r=this.te(t);if(r){var s=r;if(null!=(e=r.appearance)&&e.surveyPopupDelaySeconds&&i.ignoreDelay&&(s=g({},r,{appearance:g({},r.appearance,{surveyPopupDelaySeconds:0})})),!1===i.ignoreConditions){var n=this.canRenderSurvey(r);if(!n.visible)return void Nn.warn(\"Survey is not eligible to be displayed: \",n.disabledReason)}i.displayType!==Dn.Inline?this._surveyManager.handlePopoverSurvey(s):this.renderSurvey(s,i.selector)}else Nn.warn(\"Survey not found\")}}}var Vn=Tt(\"[RateLimiter]\");class Jn{constructor(t){var i,e;this.serverLimits={},this.lastEventRateLimited=!1,this.checkForLimiting=t=>{var i=t.text;if(i&&i.length)try{(JSON.parse(i).quota_limited||[]).forEach((t=>{Vn.info((t||\"events\")+\" is quota limited.\"),this.serverLimits[t]=(new Date).getTime()+6e4}))}catch(t){return void Vn.warn('could not rate limit - continuing. Error: \"'+(null==t?void 0:t.message)+'\"',{text:i})}},this.instance=t,this.captureEventsPerSecond=(null==(i=t.config.rate_limiting)?void 0:i.events_per_second)||10,this.captureEventsBurstLimit=Math.max((null==(e=t.config.rate_limiting)?void 0:e.events_burst_limit)||10*this.captureEventsPerSecond,this.captureEventsPerSecond),this.lastEventRateLimited=this.clientRateLimitContext(!0).isRateLimited}clientRateLimitContext(t){var i,e,r;void 0===t&&(t=!1);var s=(new Date).getTime(),n=null!==(i=null==(e=this.instance.persistence)?void 0:e.get_property(pi))&&void 0!==i?i:{tokens:this.captureEventsBurstLimit,last:s};n.tokens+=(s-n.last)/1e3*this.captureEventsPerSecond,n.last=s,n.tokens>this.captureEventsBurstLimit&&(n.tokens=this.captureEventsBurstLimit);var o=n.tokens<1;return o||t||(n.tokens=Math.max(0,n.tokens-1)),!o||this.lastEventRateLimited||t||this.instance.capture(\"$$client_ingestion_warning\",{$$client_ingestion_warning_message:\"posthog-js client rate limited. Config is set to \"+this.captureEventsPerSecond+\" events per second and \"+this.captureEventsBurstLimit+\" events burst limit.\"},{skip_client_rate_limiting:!0}),this.lastEventRateLimited=o,null==(r=this.instance.persistence)||r.set_property(pi,n),{isRateLimited:o,remainingTokens:n.tokens}}isServerRateLimited(t){var i=this.serverLimits[t||\"events\"]||!1;return!1!==i&&(new Date).getTime()<i}}var Kn=Tt(\"[RemoteConfig]\");class Yn{constructor(t){this._instance=t}get remoteConfig(){var t;return null==(t=v._POSTHOG_REMOTE_CONFIG)||null==(t=t[this._instance.config.token])?void 0:t.config}ee(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.loadExternalDependency?null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"remote-config\",(()=>t(this.remoteConfig))):(Kn.error(\"PostHog Extensions not found. Cannot load remote config.\"),t())}re(t){this._instance.ci({method:\"GET\",url:this._instance.requestRouter.endpointFor(\"assets\",\"/array/\"+this._instance.config.token+\"/config\"),callback:i=>{t(i.json)}})}load(){try{if(this.remoteConfig)return Kn.info(\"Using preloaded remote config\",this.remoteConfig),void this.fi(this.remoteConfig);if(this._instance.M())return void Kn.warn(\"Remote config is disabled. Falling back to local config.\");this.ee((t=>{if(!t)return Kn.info(\"No config found after loading remote JS config. Falling back to JSON.\"),void this.re((t=>{this.fi(t)}));this.fi(t)}))}catch(t){Kn.error(\"Error loading remote config\",t)}}fi(t){t?this._instance.config.__preview_remote_config?(this._instance.fi(t),!1!==t.hasFeatureFlags&&this._instance.featureFlags.ensureFlagsLoaded()):Kn.info(\"__preview_remote_config is disabled. Logging config instead\",t):Kn.error(\"Failed to fetch remote config from PostHog.\")}}var Xn=3e3;class Qn{constructor(t,i){this.se=!0,this.ne=[],this.oe=J((null==i?void 0:i.flush_interval_ms)||Xn,250,5e3,Pt.createLogger(\"flush interval\"),Xn),this.ae=t}enqueue(t){this.ne.push(t),this.le||this.ue()}unload(){this.he();var t=this.ne.length>0?this.de():{},i=Object.values(t);[...i.filter((t=>0===t.url.indexOf(\"/e\"))),...i.filter((t=>0!==t.url.indexOf(\"/e\")))].map((t=>{this.ae(g({},t,{transport:\"sendBeacon\"}))}))}enable(){this.se=!1,this.ue()}ue(){var t=this;this.se||(this.le=setTimeout((()=>{if(this.he(),this.ne.length>0){var i=this.de(),e=function(){var e=i[r],s=(new Date).getTime();e.data&&R(e.data)&&Ft(e.data,(t=>{t.offset=Math.abs(t.timestamp-s),delete t.timestamp})),t.ae(e)};for(var r in i)e()}}),this.oe))}he(){clearTimeout(this.le),this.le=void 0}de(){var t={};return Ft(this.ne,(i=>{var e,r=i,s=(r?r.batchKey:null)||r.url;F(t[s])&&(t[s]=g({},r,{data:[]})),null==(e=t[s].data)||e.push(r.data)})),this.ne=[],t}}var Zn=[\"retriesPerformedSoFar\"];class to{constructor(i){this.ve=!1,this.ce=3e3,this.ne=[],this._instance=i,this.ne=[],this.fe=!0,!F(t)&&\"onLine\"in t.navigator&&(this.fe=t.navigator.onLine,this.pe=()=>{this.fe=!0,this.Dt()},this.ge=()=>{this.fe=!1},qt(t,\"online\",this.pe),qt(t,\"offline\",this.ge))}get length(){return this.ne.length}retriableRequest(t){var{retriesPerformedSoFar:i}=t,e=_(t,Zn);L(i)&&i>0&&(e.url=on(e.url,{retry_count:i})),this._instance.ci(g({},e,{callback:t=>{200!==t.statusCode&&(t.statusCode<400||t.statusCode>=500)&&(null!=i?i:0)<10?this._e(g({retriesPerformedSoFar:i},e)):null==e.callback||e.callback(t)}}))}_e(t){var i=t.retriesPerformedSoFar||0;t.retriesPerformedSoFar=i+1;var e=function(t){var i=3e3*Math.pow(2,t),e=i/2,r=Math.min(18e5,i),s=(Math.random()-.5)*(r-e);return Math.ceil(r+s)}(i),r=Date.now()+e;this.ne.push({retryAt:r,requestOptions:t});var s=\"Enqueued failed request for retry in \"+e;navigator.onLine||(s+=\" (Browser is offline)\"),Pt.warn(s),this.ve||(this.ve=!0,this.me())}me(){if(this.ye&&clearTimeout(this.ye),0===this.ne.length)return this.ve=!1,void(this.ye=void 0);this.ye=setTimeout((()=>{this.fe&&this.ne.length>0&&this.Dt(),this.me()}),this.ce)}Dt(){var t=Date.now(),i=[],e=this.ne.filter((e=>e.retryAt<t||(i.push(e),!1)));if(this.ne=i,e.length>0)for(var{requestOptions:r}of e)this.retriableRequest(r)}unload(){for(var{requestOptions:i}of(this.ye&&(clearTimeout(this.ye),this.ye=void 0),this.ve=!1,F(t)||(this.pe&&(t.removeEventListener(\"online\",this.pe),this.pe=void 0),this.ge&&(t.removeEventListener(\"offline\",this.ge),this.ge=void 0)),this.ne))try{this._instance.ci(g({},i,{transport:\"sendBeacon\"}))}catch(t){Pt.error(t)}this.ne=[]}}class io{constructor(t){this.be=()=>{var t,i,e,r;this.we||(this.we={});var s=this.scrollElement(),n=this.scrollY(),o=s?Math.max(0,s.scrollHeight-s.clientHeight):0,a=n+((null==s?void 0:s.clientHeight)||0),l=(null==s?void 0:s.scrollHeight)||0;this.we.lastScrollY=Math.ceil(n),this.we.maxScrollY=Math.max(n,null!==(t=this.we.maxScrollY)&&void 0!==t?t:0),this.we.maxScrollHeight=Math.max(o,null!==(i=this.we.maxScrollHeight)&&void 0!==i?i:0),this.we.lastContentY=a,this.we.maxContentY=Math.max(a,null!==(e=this.we.maxContentY)&&void 0!==e?e:0),this.we.maxContentHeight=Math.max(l,null!==(r=this.we.maxContentHeight)&&void 0!==r?r:0)},this._instance=t}getContext(){return this.we}resetContext(){var t=this.we;return setTimeout(this.be,0),t}startMeasuringScrollPosition(){qt(t,\"scroll\",this.be,{capture:!0}),qt(t,\"scrollend\",this.be,{capture:!0}),qt(t,\"resize\",this.be)}scrollElement(){if(!this._instance.config.scroll_root_selector)return null==t?void 0:t.document.documentElement;var i=R(this._instance.config.scroll_root_selector)?this._instance.config.scroll_root_selector:[this._instance.config.scroll_root_selector];for(var e of i){var r=null==t?void 0:t.document.querySelector(e);if(r)return r}}scrollY(){if(this._instance.config.scroll_root_selector){var i=this.scrollElement();return i&&i.scrollTop||0}return t&&(t.scrollY||t.pageYOffset||t.document.documentElement.scrollTop)||0}scrollX(){if(this._instance.config.scroll_root_selector){var i=this.scrollElement();return i&&i.scrollLeft||0}return t&&(t.scrollX||t.pageXOffset||t.document.documentElement.scrollLeft)||0}}var eo=t=>hs(null==t?void 0:t.config.mask_personal_data_properties,null==t?void 0:t.config.custom_personal_data_properties);class ro{constructor(t,i,e,r){this.xe=t=>{var i=this.$e();if(!i||i.sessionId!==t){var e={sessionId:t,props:this.Se(this._instance)};this.Ee.register({[fi]:e})}},this._instance=t,this.ke=i,this.Ee=e,this.Se=r||eo,this.ke.onSessionId(this.xe)}$e(){return this.Ee.props[fi]}getSetOnceProps(){var t,i=null==(t=this.$e())?void 0:t.props;return i?\"r\"in i?ds(i):{$referring_domain:i.referringDomain,$pathname:i.initialPathName,utm_source:i.utm_source,utm_campaign:i.utm_campaign,utm_medium:i.utm_medium,utm_content:i.utm_content,utm_term:i.utm_term}:{}}getSessionProps(){var t={};return Ft(Nt(this.getSetOnceProps()),((i,e)=>{\"$current_url\"===e&&(e=\"url\"),t[\"$session_entry_\"+S(e)]=i})),t}}var so=Tt(\"[SessionId]\");class no{on(t,i){return this.Pe.on(t,i)}constructor(t,i,e){var r;if(this.Te=[],this.Re=void 0,this.Pe=new jn,this.Ie=(t,i)=>Math.abs(t-i)>this.sessionTimeoutMs,!t.persistence)throw new Error(\"SessionIdManager requires a PostHogPersistence instance\");if(\"always\"===t.config.cookieless_mode)throw new Error('SessionIdManager cannot be used with cookieless_mode=\"always\"');this.C=t.config,this.Ee=t.persistence,this.Ce=void 0,this.Oe=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this.Fe=i||xe,this.Me=e||xe;var s=this.C.persistence_name||this.C.token,n=this.C.session_idle_timeout_seconds||1800;if(this._sessionTimeoutMs=1e3*J(n,60,36e3,so.createLogger(\"session_idle_timeout_seconds\"),1800),t.register({$configured_session_timeout_ms:this._sessionTimeoutMs}),this.Ae(),this.De=\"ph_\"+s+\"_window_id\",this.je=\"ph_\"+s+\"_primary_window_exists\",this.Le()){var o=Ae.W(this.De),a=Ae.W(this.je);o&&!a?this.Ce=o:Ae.V(this.De),Ae.G(this.je,!0)}if(null!=(r=this.C.bootstrap)&&r.sessionID)try{var l=(t=>{var i=t.replace(/-/g,\"\");if(32!==i.length)throw new Error(\"Not a valid UUID\");if(\"7\"!==i[12])throw new Error(\"Not a UUIDv7\");return parseInt(i.substring(0,12),16)})(this.C.bootstrap.sessionID);this.Ne(this.C.bootstrap.sessionID,(new Date).getTime(),l)}catch(t){so.error(\"Invalid sessionID in bootstrap\",t)}this.Ue()}get sessionTimeoutMs(){return this._sessionTimeoutMs}onSessionId(t){return F(this.Te)&&(this.Te=[]),this.Te.push(t),this.Oe&&t(this.Oe,this.Ce),()=>{this.Te=this.Te.filter((i=>i!==t))}}Le(){return\"memory\"!==this.C.persistence&&!this.Ee.wi&&Ae.H()}He(t){t!==this.Ce&&(this.Ce=t,this.Le()&&Ae.G(this.De,t))}ze(){return this.Ce?this.Ce:this.Le()?Ae.W(this.De):null}Ne(t,i,e){t===this.Oe&&i===this._sessionActivityTimestamp&&e===this._sessionStartTimestamp||(this._sessionStartTimestamp=e,this._sessionActivityTimestamp=i,this.Oe=t,this.Ee.register({[ri]:[i,t,e]}))}Be(){if(this.Oe&&this._sessionActivityTimestamp&&this._sessionStartTimestamp)return[this._sessionActivityTimestamp,this.Oe,this._sessionStartTimestamp];var t=this.Ee.props[ri];return R(t)&&2===t.length&&t.push(t[0]),t||[0,null,0]}resetSessionId(){this.Ne(null,null,null)}destroy(){clearTimeout(this.qe),this.qe=void 0,this.Re&&t&&(t.removeEventListener(\"beforeunload\",this.Re,{capture:!1}),this.Re=void 0),this.Te=[]}Ue(){this.Re=()=>{this.Le()&&Ae.V(this.je)},qt(t,\"beforeunload\",this.Re,{capture:!1})}checkAndGetSessionAndWindowId(t,i){if(void 0===t&&(t=!1),void 0===i&&(i=null),\"always\"===this.C.cookieless_mode)throw new Error('checkAndGetSessionAndWindowId should not be called with cookieless_mode=\"always\"');var e=i||(new Date).getTime(),[r,s,n]=this.Be(),o=this.ze(),a=L(n)&&n>0&&Math.abs(e-n)>864e5,l=!1,u=!s,h=!u&&!t&&this.Ie(e,r);u||h||a?(s=this.Fe(),o=this.Me(),so.info(\"new session ID generated\",{sessionId:s,windowId:o,changeReason:{noSessionId:u,activityTimeout:h,sessionPastMaximumLength:a}}),n=e,l=!0):o||(o=this.Me(),l=!0);var d=0===r||!t||a?e:r,v=0===n?(new Date).getTime():n;return this.He(o),this.Ne(s,d,v),t||this.Ae(),l&&this.Te.forEach((t=>t(s,o,l?{noSessionId:u,activityTimeout:h,sessionPastMaximumLength:a}:void 0))),{sessionId:s,windowId:o,sessionStartTimestamp:v,changeReason:l?{noSessionId:u,activityTimeout:h,sessionPastMaximumLength:a}:void 0,lastActivityTimestamp:r}}Ae(){clearTimeout(this.qe),this.qe=setTimeout((()=>{var[t]=this.Be();if(this.Ie((new Date).getTime(),t)){var i=this.Oe;this.resetSessionId(),this.Pe.emit(\"forcedIdleReset\",{idleSessionId:i})}}),1.1*this.sessionTimeoutMs)}}var oo=[\"$set_once\",\"$set\"],ao=Tt(\"[SiteApps]\");class lo{constructor(t){this._instance=t,this.We=[],this.apps={}}get isEnabled(){return!!this._instance.config.opt_in_site_apps}Ge(t,i){if(i){var e=this.globalsForEvent(i);this.We.push(e),this.We.length>1e3&&(this.We=this.We.slice(10))}}get siteAppLoaders(){var t;return null==(t=v._POSTHOG_REMOTE_CONFIG)||null==(t=t[this._instance.config.token])?void 0:t.siteApps}init(){if(this.isEnabled){var t=this._instance.Mi(this.Ge.bind(this));this.Ve=()=>{t(),this.We=[],this.Ve=void 0}}}globalsForEvent(t){var i,e,r,s,n,o,a;if(!t)throw new Error(\"Event payload is required\");var l={},u=this._instance.get_property(\"$groups\")||[],h=this._instance.get_property(\"$stored_group_properties\")||{};for(var[d,v]of Object.entries(h))l[d]={id:u[d],type:d,properties:v};var{$set_once:c,$set:f}=t;return{event:g({},_(t,oo),{properties:g({},t.properties,f?{$set:g({},null!==(i=null==(e=t.properties)?void 0:e.$set)&&void 0!==i?i:{},f)}:{},c?{$set_once:g({},null!==(r=null==(s=t.properties)?void 0:s.$set_once)&&void 0!==r?r:{},c)}:{}),elements_chain:null!==(n=null==(o=t.properties)?void 0:o.$elements_chain)&&void 0!==n?n:\"\",distinct_id:null==(a=t.properties)?void 0:a.distinct_id}),person:{properties:this._instance.get_property(\"$stored_person_properties\")},groups:l}}setupSiteApp(t){var i=this.apps[t.id],e=()=>{var e;(!i.errored&&this.We.length&&(ao.info(\"Processing \"+this.We.length+\" events for site app with id \"+t.id),this.We.forEach((t=>null==i.processEvent?void 0:i.processEvent(t))),i.processedBuffer=!0),Object.values(this.apps).every((t=>t.processedBuffer||t.errored)))&&(null==(e=this.Ve)||e.call(this))},r=!1,s=s=>{i.errored=!s,i.loaded=!0,ao.info(\"Site app with id \"+t.id+\" \"+(s?\"loaded\":\"errored\")),r&&e()};try{var{processEvent:n}=t.init({posthog:this._instance,callback:t=>{s(t)}});n&&(i.processEvent=n),r=!0}catch(i){ao.error(\"Error while initializing PostHog app with config id \"+t.id,i),s(!1)}if(r&&i.loaded)try{e()}catch(e){ao.error(\"Error while processing buffered events PostHog app with config id \"+t.id,e),i.errored=!0}}Je(){var t=this.siteAppLoaders||[];for(var i of t)this.apps[i.id]={id:i.id,loaded:!1,errored:!1,processedBuffer:!1};for(var e of t)this.setupSiteApp(e)}Ke(t){if(0!==Object.keys(this.apps).length){var i=this.globalsForEvent(t);for(var e of Object.values(this.apps))try{null==e.processEvent||e.processEvent(i)}catch(i){ao.error(\"Error while processing event \"+t.event+\" for site app \"+e.id,i)}}}onRemoteConfig(t){var i,e,r,s=this;if(null!=(i=this.siteAppLoaders)&&i.length)return this.isEnabled?(this.Je(),void this._instance.on(\"eventCaptured\",(t=>this.Ke(t)))):void ao.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.');if(null==(e=this.Ve)||e.call(this),null!=(r=t.siteApps)&&r.length)if(this.isEnabled){var n=function(t){var i;v[\"__$$ph_site_app_\"+t]=s._instance,null==(i=v.__PosthogExtensions__)||null==i.loadSiteApp||i.loadSiteApp(s._instance,a,(i=>{if(i)return ao.error(\"Error while initializing PostHog app with config id \"+t,i)}))};for(var{id:o,url:a}of t.siteApps)n(o)}else ao.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.')}}var uo=function(t,i){if(!t)return!1;var e=t.userAgent;if(e&&y(e,i))return!0;try{var r=null==t?void 0:t.userAgentData;if(null!=r&&r.brands&&r.brands.some((t=>y(null==t?void 0:t.brand,i))))return!0}catch(t){}return!!t.webdriver},ho=function(t){return t.US=\"us\",t.EU=\"eu\",t.CUSTOM=\"custom\",t}({}),vo=\"i.posthog.com\";class co{constructor(t){this.Ye={},this.instance=t}get apiHost(){var t=this.instance.config.api_host.trim().replace(/\\/$/,\"\");return\"https://app.posthog.com\"===t?\"https://us.i.posthog.com\":t}get flagsApiHost(){var t=this.instance.config.flags_api_host;return t?t.trim().replace(/\\/$/,\"\"):this.apiHost}get uiHost(){var t,i=null==(t=this.instance.config.ui_host)?void 0:t.replace(/\\/$/,\"\");return i||(i=this.apiHost.replace(\".\"+vo,\".posthog.com\")),\"https://app.posthog.com\"===i?\"https://us.posthog.com\":i}get region(){return this.Ye[this.apiHost]||(/https:\\/\\/(app|us|us-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)?this.Ye[this.apiHost]=ho.US:/https:\\/\\/(eu|eu-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)?this.Ye[this.apiHost]=ho.EU:this.Ye[this.apiHost]=ho.CUSTOM),this.Ye[this.apiHost]}endpointFor(t,i){if(void 0===i&&(i=\"\"),i&&(i=\"/\"===i[0]?i:\"/\"+i),\"ui\"===t)return this.uiHost+i;if(\"flags\"===t)return this.flagsApiHost+i;if(this.region===ho.CUSTOM)return this.apiHost+i;var e=vo+i;switch(t){case\"assets\":return\"https://\"+this.region+\"-assets.\"+e;case\"api\":return\"https://\"+this.region+\".\"+e}}}var fo={icontains:(i,e)=>!!t&&e.href.toLowerCase().indexOf(i.toLowerCase())>-1,not_icontains:(i,e)=>!!t&&-1===e.href.toLowerCase().indexOf(i.toLowerCase()),regex:(i,e)=>!!t&&hn(e.href,i),not_regex:(i,e)=>!!t&&!hn(e.href,i),exact:(t,i)=>i.href===t,is_not:(t,i)=>i.href!==t};class po{constructor(t){var i=this;this.getWebExperimentsAndEvaluateDisplayLogic=function(t){void 0===t&&(t=!1),i.getWebExperiments((t=>{po.Xe(\"retrieved web experiments from the server\"),i.Qe=new Map,t.forEach((t=>{if(t.feature_flag_key){var e;if(i.Qe)po.Xe(\"setting flag key \",t.feature_flag_key,\" to web experiment \",t),null==(e=i.Qe)||e.set(t.feature_flag_key,t);var r=i._instance.getFeatureFlag(t.feature_flag_key);M(r)&&t.variants[r]&&i.Ze(t.name,r,t.variants[r].transforms)}else if(t.variants)for(var s in t.variants){var n=t.variants[s];po.tr(n)&&i.Ze(t.name,s,n.transforms)}}))}),t)},this._instance=t,this._instance.onFeatureFlags((t=>{this.onFeatureFlags(t)}))}onFeatureFlags(t){if(this._is_bot())po.Xe(\"Refusing to render web experiment since the viewer is a likely bot\");else if(!this._instance.config.disable_web_experiments){if(j(this.Qe))return this.Qe=new Map,this.loadIfEnabled(),void this.previewWebExperiment();po.Xe(\"applying feature flags\",t),t.forEach((t=>{var i;if(this.Qe&&null!=(i=this.Qe)&&i.has(t)){var e,r=this._instance.getFeatureFlag(t),s=null==(e=this.Qe)?void 0:e.get(t);r&&null!=s&&s.variants[r]&&this.Ze(s.name,r,s.variants[r].transforms)}}))}}previewWebExperiment(){var t=po.getWindowLocation();if(null!=t&&t.search){var i=ae(null==t?void 0:t.search,\"__experiment_id\"),e=ae(null==t?void 0:t.search,\"__experiment_variant\");i&&e&&(po.Xe(\"previewing web experiments \"+i+\" && \"+e),this.getWebExperiments((t=>{this.ir(parseInt(i),e,t)}),!1,!0))}}loadIfEnabled(){this._instance.config.disable_web_experiments||this.getWebExperimentsAndEvaluateDisplayLogic()}getWebExperiments(t,i,e){if(this._instance.config.disable_web_experiments&&!e)return t([]);var r=this._instance.get_property(\"$web_experiments\");if(r&&!i)return t(r);this._instance.ci({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/web_experiments/?token=\"+this._instance.config.token),method:\"GET\",callback:i=>{if(200!==i.statusCode||!i.json)return t([]);var e=i.json.experiments||[];return t(e)}})}ir(t,i,e){var r=e.filter((i=>i.id===t));r&&r.length>0&&(po.Xe(\"Previewing web experiment [\"+r[0].name+\"] with variant [\"+i+\"]\"),this.Ze(r[0].name,i,r[0].variants[i].transforms))}static tr(t){return!j(t.conditions)&&(po.er(t)&&po.rr(t))}static er(t){var i;if(j(t.conditions)||j(null==(i=t.conditions)?void 0:i.url))return!0;var e,r,s,n=po.getWindowLocation();return!!n&&(null==(e=t.conditions)||!e.url||fo[null!==(r=null==(s=t.conditions)?void 0:s.urlMatchType)&&void 0!==r?r:\"icontains\"](t.conditions.url,n))}static getWindowLocation(){return null==t?void 0:t.location}static rr(t){var i;if(j(t.conditions)||j(null==(i=t.conditions)?void 0:i.utm))return!0;var e=ns();if(e.utm_source){var r,s,n,o,a,l,u,h,d=null==(r=t.conditions)||null==(r=r.utm)||!r.utm_campaign||(null==(s=t.conditions)||null==(s=s.utm)?void 0:s.utm_campaign)==e.utm_campaign,v=null==(n=t.conditions)||null==(n=n.utm)||!n.utm_source||(null==(o=t.conditions)||null==(o=o.utm)?void 0:o.utm_source)==e.utm_source,c=null==(a=t.conditions)||null==(a=a.utm)||!a.utm_medium||(null==(l=t.conditions)||null==(l=l.utm)?void 0:l.utm_medium)==e.utm_medium,f=null==(u=t.conditions)||null==(u=u.utm)||!u.utm_term||(null==(h=t.conditions)||null==(h=h.utm)?void 0:h.utm_term)==e.utm_term;return d&&c&&f&&v}return!1}static Xe(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];Pt.info(\"[WebExperiments] \"+t,e)}Ze(t,i,e){this._is_bot()?po.Xe(\"Refusing to render web experiment since the viewer is a likely bot\"):\"control\"!==i?e.forEach((e=>{if(e.selector){var r;po.Xe(\"applying transform of variant \"+i+\" for experiment \"+t+\" \",e);var s=null==(r=document)?void 0:r.querySelectorAll(e.selector);null==s||s.forEach((t=>{var i=t;e.html&&(i.innerHTML=e.html),e.css&&i.setAttribute(\"style\",e.css)}))}})):po.Xe(\"Control variants leave the page unmodified.\")}_is_bot(){return n&&this._instance?uo(n,this._instance.config.custom_blocked_useragents):void 0}}var go=Tt(\"[PostHog ExternalIntegrations]\"),_o={intercom:\"intercom-integration\",crispChat:\"crisp-chat-integration\"};class mo{constructor(t){this._instance=t}it(t,i){var e;null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,t,(t=>{if(t)return go.error(\"failed to load script\",t);i()}))}startIfEnabledOrStop(){var t=this,i=function(i){var e,s,n;(!r||null!=(e=v.__PosthogExtensions__)&&null!=(e=e.integrations)&&e[i]||t.it(_o[i],(()=>{var e;null==(e=v.__PosthogExtensions__)||null==(e=e.integrations)||null==(e=e[i])||e.start(t._instance)})),!r&&null!=(s=v.__PosthogExtensions__)&&null!=(s=s.integrations)&&s[i])&&(null==(n=v.__PosthogExtensions__)||null==(n=n.integrations)||null==(n=n[i])||n.stop())};for(var[e,r]of Object.entries(null!==(s=this._instance.config.integrations)&&void 0!==s?s:{})){var s;i(e)}}}var yo=\"[SessionRecording]\",bo=Tt(yo);class wo{get started(){var t;return!(null==(t=this.sr)||!t.isStarted)}get status(){return this.sr?this.sr.status:this.nr&&!this.ar?\"disabled\":\"lazy_loading\"}constructor(t){if(this._forceAllowLocalhostNetworkCapture=!1,this.nr=!1,this.lr=void 0,this._instance=t,!this._instance.sessionManager)throw bo.error(\"started without valid sessionManager\"),new Error(yo+\" started without valid sessionManager. This is a bug.\");if(\"always\"===this._instance.config.cookieless_mode)throw new Error(yo+' cannot be used with cookieless_mode=\"always\"')}get ar(){var i,e=!(null==(i=this._instance.get_property(ei))||!i.enabled),r=!this._instance.config.disable_session_recording,s=this._instance.config.disable_session_recording||this._instance.consent.isOptedOut();return t&&e&&r&&!s}startIfEnabledOrStop(t){var i;if(!this.ar||null==(i=this.sr)||!i.isStarted){var e=!F(Object.assign)&&!F(Array.from);this.ar&&e?(this.ur(t),bo.info(\"starting\")):this.stopRecording()}}ur(t){var i,e,r;this.ar&&(null!=v&&null!=(i=v.__PosthogExtensions__)&&null!=(i=i.rrweb)&&i.record&&null!=(e=v.__PosthogExtensions__)&&e.initSessionRecording?this.hr(t):null==(r=v.__PosthogExtensions__)||null==r.loadExternalDependency||r.loadExternalDependency(this._instance,this.dr,(i=>{if(i)return bo.error(\"could not load recorder\",i);this.hr(t)})))}stopRecording(){var t,i;null==(t=this.lr)||t.call(this),this.lr=void 0,null==(i=this.sr)||i.stop()}vr(){var t;null==(t=this._instance.persistence)||t.unregister(si)}cr(t){if(this._instance.persistence){var i,e,r=this._instance.persistence,s=()=>{var i=!1===t.sessionRecording?void 0:t.sessionRecording,e=null==i?void 0:i.sampleRate,s=j(e)?null:parseFloat(e);j(s)&&this.vr();var n=null==i?void 0:i.minimumDurationMilliseconds;r.register({[ei]:g({enabled:!!i},i,{networkPayloadCapture:g({capturePerformance:t.capturePerformance},null==i?void 0:i.networkPayloadCapture),canvasRecording:{enabled:null==i?void 0:i.recordCanvas,fps:null==i?void 0:i.canvasFps,quality:null==i?void 0:i.canvasQuality},sampleRate:s,minimumDurationMilliseconds:F(n)?null:n,endpoint:null==i?void 0:i.endpoint,triggerMatchType:null==i?void 0:i.triggerMatchType,masking:null==i?void 0:i.masking,urlTriggers:null==i?void 0:i.urlTriggers})})};s(),null==(i=this.lr)||i.call(this),this.lr=null==(e=this._instance.sessionManager)?void 0:e.onSessionId(s)}}onRemoteConfig(t){\"sessionRecording\"in t?!1!==t.sessionRecording?(this.cr(t),this.nr=!0,this.startIfEnabledOrStop()):this.nr=!0:bo.info(\"skipping remote config with no sessionRecording\",t)}log(t,i){var e;void 0===i&&(i=\"log\"),null!=(e=this.sr)&&e.log?this.sr.log(t,i):bo.warn(\"log called before recorder was ready\")}get dr(){var t,i,e=null==(t=this._instance)||null==(t=t.persistence)?void 0:t.get_property(ei);return(null==e||null==(i=e.scriptConfig)?void 0:i.script)||\"lazy-recorder\"}hr(t){var i,e;if(null==(i=v.__PosthogExtensions__)||!i.initSessionRecording)throw Error(\"Called on script loaded before session recording is available\");this.sr||(this.sr=null==(e=v.__PosthogExtensions__)?void 0:e.initSessionRecording(this._instance),this.sr._forceAllowLocalhostNetworkCapture=this._forceAllowLocalhostNetworkCapture);this.sr.start(t)}onRRwebEmit(t){var i;null==(i=this.sr)||null==i.onRRwebEmit||i.onRRwebEmit(t)}overrideLinkedFlag(){var t,i;this.sr||(null==(i=this._instance.persistence)||i.register({$replay_override_linked_flag:!0}));null==(t=this.sr)||t.overrideLinkedFlag()}overrideSampling(){var t,i;this.sr||(null==(i=this._instance.persistence)||i.register({$replay_override_sampling:!0}));null==(t=this.sr)||t.overrideSampling()}overrideTrigger(t){var i,e;this.sr||(null==(e=this._instance.persistence)||e.register({[\"url\"===t?\"$replay_override_url_trigger\":\"$replay_override_event_trigger\"]:!0}));null==(i=this.sr)||i.overrideTrigger(t)}get sdkDebugProperties(){var t;return(null==(t=this.sr)?void 0:t.sdkDebugProperties)||{$recording_status:this.status}}tryAddCustomEvent(t,i){var e;return!(null==(e=this.sr)||!e.tryAddCustomEvent(t,i))}}var xo={},$o=()=>{},So=\"posthog\",Eo=!sn&&-1===(null==d?void 0:d.indexOf(\"MSIE\"))&&-1===(null==d?void 0:d.indexOf(\"Mozilla\")),ko=i=>{var e;return{api_host:\"https://us.i.posthog.com\",flags_api_host:null,ui_host:null,token:\"\",autocapture:!0,rageclick:!0,cross_subdomain_cookie:zt(null==o?void 0:o.location),persistence:\"localStorage+cookie\",persistence_name:\"\",loaded:$o,save_campaign_params:!0,custom_campaign_params:[],custom_blocked_useragents:[],save_referrer:!0,capture_pageview:\"2025-05-24\"!==i||\"history_change\",capture_pageleave:\"if_capture_pageview\",defaults:null!=i?i:\"unset\",debug:a&&M(null==a?void 0:a.search)&&-1!==a.search.indexOf(\"__posthog_debug=true\")||!1,cookie_expiration:365,upgrade:!1,disable_session_recording:!1,disable_persistence:!1,disable_web_experiments:!0,disable_surveys:!1,disable_surveys_automatic_display:!1,disable_external_dependency_loading:!1,enable_recording_console_log:void 0,secure_cookie:\"https:\"===(null==t||null==(e=t.location)?void 0:e.protocol),ip:!1,opt_out_capturing_by_default:!1,opt_out_persistence_by_default:!1,opt_out_useragent_filter:!1,opt_out_capturing_persistence_type:\"localStorage\",consent_persistence_name:null,opt_out_capturing_cookie_prefix:null,opt_in_site_apps:!1,property_denylist:[],respect_dnt:!1,sanitize_properties:null,request_headers:{},request_batching:!0,properties_string_max_length:65535,session_recording:{},mask_all_element_attributes:!1,mask_all_text:!1,mask_personal_data_properties:!1,custom_personal_data_properties:[],advanced_disable_flags:!1,advanced_disable_decide:!1,advanced_disable_feature_flags:!1,advanced_disable_feature_flags_on_first_load:!1,advanced_only_evaluate_survey_feature_flags:!1,advanced_enable_surveys:!1,advanced_disable_toolbar_metrics:!1,feature_flag_request_timeout_ms:3e3,surveys_request_timeout_ms:1e4,on_request_error:t=>{var i=\"Bad HTTP status: \"+t.statusCode+\" \"+t.text;Pt.error(i)},get_device_id:t=>t,capture_performance:void 0,name:\"posthog\",bootstrap:{},disable_compression:!1,session_idle_timeout_seconds:1800,person_profiles:\"identified_only\",before_send:void 0,request_queue_config:{flush_interval_ms:Xn},error_tracking:{},_onCapture:$o,__preview_eager_load_replay:!1}},Po=t=>{var i={};F(t.process_person)||(i.person_profiles=t.process_person),F(t.xhr_headers)||(i.request_headers=t.xhr_headers),F(t.cookie_name)||(i.persistence_name=t.cookie_name),F(t.disable_cookie)||(i.disable_persistence=t.disable_cookie),F(t.store_google)||(i.save_campaign_params=t.store_google),F(t.verbose)||(i.debug=t.verbose);var e=Mt({},i,t);return R(t.property_blacklist)&&(F(t.property_denylist)?e.property_denylist=t.property_blacklist:R(t.property_denylist)?e.property_denylist=[...t.property_blacklist,...t.property_denylist]:Pt.error(\"Invalid value for property_denylist config: \"+t.property_denylist)),e};class To{constructor(){this.__forceAllowLocalhost=!1}get pr(){return this.__forceAllowLocalhost}set pr(t){Pt.error(\"WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`\"),this.__forceAllowLocalhost=t}}class Ro{get decideEndpointWasHit(){var t,i;return null!==(t=null==(i=this.featureFlags)?void 0:i.hasLoadedFlags)&&void 0!==t&&t}get flagsEndpointWasHit(){var t,i;return null!==(t=null==(i=this.featureFlags)?void 0:i.hasLoadedFlags)&&void 0!==t&&t}constructor(){this.webPerformance=new To,this.gr=!1,this.version=c.LIB_VERSION,this._r=new jn,this._calculate_event_properties=this.calculateEventProperties.bind(this),this.config=ko(),this.SentryIntegration=Ye,this.sentryIntegration=t=>function(t,i){var e=Ke(t,i);return{name:Je,processEvent:t=>e(t)}}(this,t),this.__request_queue=[],this.__loaded=!1,this.analyticsDefaultEndpoint=\"/e/\",this.mr=!1,this.yr=null,this.br=null,this.wr=null,this.featureFlags=new En(this),this.toolbar=new ir(this),this.scrollManager=new io(this),this.pageViewManager=new ws(this),this.surveys=new Gn(this),this.experiments=new po(this),this.exceptions=new pn(this),this.rateLimiter=new Jn(this),this.requestRouter=new co(this),this.consent=new je(this),this.externalIntegrations=new mo(this),this.people={set:(t,i,e)=>{var r=M(t)?{[t]:i}:t;this.setPersonProperties(r),null==e||e({})},set_once:(t,i,e)=>{var r=M(t)?{[t]:i}:t;this.setPersonProperties(void 0,r),null==e||e({})}},this.on(\"eventCaptured\",(t=>Pt.info('send \"'+(null==t?void 0:t.event)+'\"',t)))}init(t,i,e){if(e&&e!==So){var r,s=null!==(r=xo[e])&&void 0!==r?r:new Ro;return s._init(t,i,e),xo[e]=s,xo[So][e]=s,s}return this._init(t,i,e)}_init(i,e,r){var s,n;if(void 0===e&&(e={}),F(i)||A(i))return Pt.critical(\"PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()\"),this;if(this.__loaded)return console.warn(\"[PostHog.js]\",\"You have already initialized PostHog! Re-initializing is a no-op\"),this;this.__loaded=!0,this.config={},e.debug=this.$r(e.debug),this.Sr=e,this.Er=[],e.person_profiles&&(this.br=e.person_profiles),this.set_config(Mt({},ko(e.defaults),Po(e),{name:r,token:i})),this.config.on_xhr_error&&Pt.error(\"on_xhr_error is deprecated. Use on_request_error instead\"),this.compression=e.disable_compression?void 0:re.GZipJS;var o=this.kr();this.persistence=new Pn(this.config,o),this.sessionPersistence=\"sessionStorage\"===this.config.persistence||\"memory\"===this.config.persistence?this.persistence:new Pn(g({},this.config,{persistence:\"sessionStorage\"}),o);var a=g({},this.persistence.props),l=g({},this.sessionPersistence.props);this.register({$initialization_time:(new Date).toISOString()}),this.Pr=new Qn((t=>this.Tr(t)),this.config.request_queue_config),this.Rr=new to(this),this.__request_queue=[];var u=\"always\"===this.config.cookieless_mode||\"on_reject\"===this.config.cookieless_mode&&this.consent.isExplicitlyOptedOut();if(u||(this.sessionManager=new no(this),this.sessionPropsManager=new ro(this,this.sessionManager,this.persistence)),new rr(this).startIfEnabledOrStop(),this.siteApps=new lo(this),null==(s=this.siteApps)||s.init(),u||(this.sessionRecording=new wo(this),this.sessionRecording.startIfEnabledOrStop()),this.config.disable_scroll_properties||this.scrollManager.startMeasuringScrollPosition(),this.autocapture=new pe(this),this.autocapture.startIfEnabled(),this.surveys.loadIfEnabled(),this.heatmaps=new bs(this),this.heatmaps.startIfEnabled(),this.webVitalsAutocapture=new _s(this),this.exceptionObserver=new Be(this),this.exceptionObserver.startIfEnabled(),this.deadClicksAutocapture=new He(this,Ue),this.deadClicksAutocapture.startIfEnabled(),this.historyAutocapture=new We(this),this.historyAutocapture.startIfEnabled(),c.DEBUG=c.DEBUG||this.config.debug,c.DEBUG&&Pt.info(\"Starting in debug mode\",{this:this,config:e,thisC:g({},this.config),p:a,s:l}),void 0!==(null==(n=e.bootstrap)?void 0:n.distinctID)){var h,d,v=this.config.get_device_id(xe()),f=null!=(h=e.bootstrap)&&h.isIdentifiedID?v:e.bootstrap.distinctID;this.persistence.set_property(ci,null!=(d=e.bootstrap)&&d.isIdentifiedID?\"identified\":\"anonymous\"),this.register({distinct_id:e.bootstrap.distinctID,$device_id:f})}if(this.Ir()){var p,_,m=Object.keys((null==(p=e.bootstrap)?void 0:p.featureFlags)||{}).filter((t=>{var i;return!(null==(i=e.bootstrap)||null==(i=i.featureFlags)||!i[t])})).reduce(((t,i)=>{var r;return t[i]=(null==(r=e.bootstrap)||null==(r=r.featureFlags)?void 0:r[i])||!1,t}),{}),y=Object.keys((null==(_=e.bootstrap)?void 0:_.featureFlagPayloads)||{}).filter((t=>m[t])).reduce(((t,i)=>{var r,s;null!=(r=e.bootstrap)&&null!=(r=r.featureFlagPayloads)&&r[i]&&(t[i]=null==(s=e.bootstrap)||null==(s=s.featureFlagPayloads)?void 0:s[i]);return t}),{});this.featureFlags.receivedFeatureFlags({featureFlags:m,featureFlagPayloads:y})}if(u)this.register_once({distinct_id:wi,$device_id:null},\"\");else if(!this.get_distinct_id()){var b=this.config.get_device_id(xe());this.register_once({distinct_id:b,$device_id:b},\"\"),this.persistence.set_property(ci,\"anonymous\")}return qt(t,\"onpagehide\"in self?\"pagehide\":\"unload\",this._handle_unload.bind(this),{passive:!1}),this.toolbar.maybeLoadToolbar(),e.segment?Ve(this,(()=>this.Cr())):this.Cr(),I(this.config._onCapture)&&this.config._onCapture!==$o&&(Pt.warn(\"onCapture is deprecated. Please use `before_send` instead\"),this.on(\"eventCaptured\",(t=>this.config._onCapture(t.event,t)))),this.config.ip&&Pt.warn('The `ip` config option has NO EFFECT AT ALL and has been deprecated. Use a custom transformation or \"Discard IP data\" project setting instead. See https://posthog.com/tutorials/web-redact-properties#hiding-customer-ip-address for more information.'),this}fi(t){var i,e,r,s,n,a,l,u;if(!o||!o.body)return Pt.info(\"document not ready yet, trying again in 500 milliseconds...\"),void setTimeout((()=>{this.fi(t)}),500);this.compression=void 0,t.supportedCompression&&!this.config.disable_compression&&(this.compression=w(t.supportedCompression,re.GZipJS)?re.GZipJS:w(t.supportedCompression,re.Base64)?re.Base64:void 0),null!=(i=t.analytics)&&i.endpoint&&(this.analyticsDefaultEndpoint=t.analytics.endpoint),this.set_config({person_profiles:this.br?this.br:\"identified_only\"}),null==(e=this.siteApps)||e.onRemoteConfig(t),null==(r=this.sessionRecording)||r.onRemoteConfig(t),null==(s=this.autocapture)||s.onRemoteConfig(t),null==(n=this.heatmaps)||n.onRemoteConfig(t),this.surveys.onRemoteConfig(t),null==(a=this.webVitalsAutocapture)||a.onRemoteConfig(t),null==(l=this.exceptionObserver)||l.onRemoteConfig(t),this.exceptions.onRemoteConfig(t),null==(u=this.deadClicksAutocapture)||u.onRemoteConfig(t)}Cr(){try{this.config.loaded(this)}catch(t){Pt.critical(\"`loaded` function failed\",t)}this.Or(),this.config.capture_pageview&&setTimeout((()=>{(this.consent.isOptedIn()||\"always\"===this.config.cookieless_mode)&&this.Fr()}),1),new Yn(this).load(),this.featureFlags.flags()}Or(){var t;this.is_capturing()&&(this.config.request_batching&&(null==(t=this.Pr)||t.enable()))}_dom_loaded(){this.is_capturing()&&Ot(this.__request_queue,(t=>this.Tr(t))),this.__request_queue=[],this.Or()}_handle_unload(){var t,i;this.config.request_batching?(this.Mr()&&this.capture(\"$pageleave\"),null==(t=this.Pr)||t.unload(),null==(i=this.Rr)||i.unload()):this.Mr()&&this.capture(\"$pageleave\",null,{transport:\"sendBeacon\"})}ci(t){this.__loaded&&(Eo?this.__request_queue.push(t):this.rateLimiter.isServerRateLimited(t.batchKey)||(t.transport=t.transport||this.config.api_transport,t.url=on(t.url,{ip:this.config.ip?1:0}),t.headers=g({},this.config.request_headers),t.compression=\"best-available\"===t.compression?this.compression:t.compression,t.disableXHRCredentials=this.config.__preview_disable_xhr_credentials,this.config.__preview_disable_beacon&&(t.disableTransport=[\"sendBeacon\"]),t.fetchOptions=t.fetchOptions||this.config.fetch_options,(t=>{var i,e,r,s=g({},t);s.timeout=s.timeout||6e4,s.url=on(s.url,{_:(new Date).getTime().toString(),ver:c.LIB_VERSION,compression:s.compression});var n=null!==(i=s.transport)&&void 0!==i?i:\"fetch\",o=un.filter((t=>!s.disableTransport||!t.transport||!s.disableTransport.includes(t.transport))),a=null!==(e=null==(r=Bt(o,(t=>t.transport===n)))?void 0:r.method)&&void 0!==e?e:o[0].method;if(!a)throw new Error(\"No available transport method\");a(s)})(g({},t,{callback:i=>{var e,r;(this.rateLimiter.checkForLimiting(i),i.statusCode>=400)&&(null==(e=(r=this.config).on_request_error)||e.call(r,i));null==t.callback||t.callback(i)}}))))}Tr(t){this.Rr?this.Rr.retriableRequest(t):this.ci(t)}_execute_array(t){var i,e=[],r=[],s=[];Ot(t,(t=>{t&&(i=t[0],R(i)?s.push(t):I(t)?t.call(this):R(t)&&\"alias\"===i?e.push(t):R(t)&&-1!==i.indexOf(\"capture\")&&I(this[i])?s.push(t):r.push(t))}));var n=function(t,i){Ot(t,(function(t){if(R(t[0])){var e=i;Ft(t,(function(t){e=e[t[0]].apply(e,t.slice(1))}))}else this[t[0]].apply(this,t.slice(1))}),i)};n(e,this),n(r,this),n(s,this)}Ir(){var t,i;return(null==(t=this.config.bootstrap)?void 0:t.featureFlags)&&Object.keys(null==(i=this.config.bootstrap)?void 0:i.featureFlags).length>0||!1}push(t){this._execute_array([t])}capture(t,i,e){var r;if(this.__loaded&&this.persistence&&this.sessionPersistence&&this.Pr){if(this.is_capturing())if(!F(t)&&M(t)){var s=!this.config.opt_out_useragent_filter&&this._is_bot();if(!(s&&!this.config.__preview_capture_bot_pageviews)){var n=null!=e&&e.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(null==n||!n.isRateLimited){null!=i&&i.$current_url&&!M(null==i?void 0:i.$current_url)&&(Pt.error(\"Invalid `$current_url` property provided to `posthog.capture`. Input must be a string. Ignoring provided value.\"),null==i||delete i.$current_url),this.sessionPersistence.update_search_keyword(),this.config.save_campaign_params&&this.sessionPersistence.update_campaign_params(),this.config.save_referrer&&this.sessionPersistence.update_referrer_info(),(this.config.save_campaign_params||this.config.save_referrer)&&this.persistence.set_initial_person_info();var o=new Date,a=(null==e?void 0:e.timestamp)||o,l=xe(),u={uuid:l,event:t,properties:this.calculateEventProperties(t,i||{},a,l)};\"$pageview\"===t&&this.config.__preview_capture_bot_pageviews&&s&&(u.event=\"$bot_pageview\",u.properties.$browser_type=\"bot\"),n&&(u.properties.$lib_rate_limit_remaining_tokens=n.remainingTokens),(null==e?void 0:e.$set)&&(u.$set=null==e?void 0:e.$set);var h,d=this.Ar(null==e?void 0:e.$set_once);if(d&&(u.$set_once=d),(u=Ut(u,null!=e&&e._noTruncate?null:this.config.properties_string_max_length)).timestamp=a,F(null==e?void 0:e.timestamp)||(u.properties.$event_time_override_provided=!0,u.properties.$event_time_override_system_time=o),t===Mn.DISMISSED||t===Mn.SENT){var v=null==i?void 0:i[An.SURVEY_ID],c=null==i?void 0:i[An.SURVEY_ITERATION];h={id:v,current_iteration:c},localStorage.getItem(zn(h))||localStorage.setItem(zn(h),\"true\"),u.$set=g({},u.$set,{[Hn({id:v,current_iteration:c},t===Mn.SENT?\"responded\":\"dismissed\")]:!0})}var f=g({},u.properties.$set,u.$set);if(O(f)||this.setPersonPropertiesForFlags(f),!j(this.config.before_send)){var p=this.Dr(u);if(!p)return;u=p}this._r.emit(\"eventCaptured\",u);var _={method:\"POST\",url:null!==(r=null==e?void 0:e._url)&&void 0!==r?r:this.requestRouter.endpointFor(\"api\",this.analyticsDefaultEndpoint),data:u,compression:\"best-available\",batchKey:null==e?void 0:e._batchKey};return!this.config.request_batching||e&&(null==e||!e._batchKey)||null!=e&&e.send_instantly?this.Tr(_):this.Pr.enqueue(_),u}Pt.critical(\"This capture call is ignored due to client rate limiting.\")}}else Pt.error(\"No event name provided to posthog.capture\")}else Pt.uninitializedWarning(\"posthog.capture\")}Mi(t){return this.on(\"eventCaptured\",(i=>t(i.event,i)))}calculateEventProperties(t,i,e,r,s){if(e=e||new Date,!this.persistence||!this.sessionPersistence)return i;var n=s?void 0:this.persistence.remove_event_timer(t),a=g({},i);if(a.token=this.config.token,a.$config_defaults=this.config.defaults,(\"always\"==this.config.cookieless_mode||\"on_reject\"==this.config.cookieless_mode&&this.consent.isExplicitlyOptedOut())&&(a.$cookieless_mode=!0),\"$snapshot\"===t){var l=g({},this.persistence.properties(),this.sessionPersistence.properties());return a.distinct_id=l.distinct_id,(!M(a.distinct_id)&&!L(a.distinct_id)||A(a.distinct_id))&&Pt.error(\"Invalid distinct_id for replay event. This indicates a bug in your implementation\"),a}var u,h=fs(this.config.mask_personal_data_properties,this.config.custom_personal_data_properties);if(this.sessionManager){var{sessionId:v,windowId:c}=this.sessionManager.checkAndGetSessionAndWindowId(s,e.getTime());a.$session_id=v,a.$window_id=c}this.sessionPropsManager&&Mt(a,this.sessionPropsManager.getSessionProps());try{var f;this.sessionRecording&&Mt(a,this.sessionRecording.sdkDebugProperties),a.$sdk_debug_retry_queue_size=null==(f=this.Rr)?void 0:f.length}catch(t){a.$sdk_debug_error_capturing_properties=String(t)}if(this.requestRouter.region===ho.CUSTOM&&(a.$lib_custom_api_host=this.config.api_host),u=\"$pageview\"!==t||s?\"$pageleave\"!==t||s?this.pageViewManager.doEvent():this.pageViewManager.doPageLeave(e):this.pageViewManager.doPageView(e,r),a=Mt(a,u),\"$pageview\"===t&&o&&(a.title=o.title),!F(n)){var p=e.getTime()-n;a.$duration=parseFloat((p/1e3).toFixed(3))}d&&this.config.opt_out_useragent_filter&&(a.$browser_type=this._is_bot()?\"bot\":\"browser\"),(a=Mt({},h,this.persistence.properties(),this.sessionPersistence.properties(),a)).$is_identified=this._isIdentified(),R(this.config.property_denylist)?Ft(this.config.property_denylist,(function(t){delete a[t]})):Pt.error(\"Invalid value for property_denylist config: \"+this.config.property_denylist+\" or property_blacklist config: \"+this.config.property_blacklist);var _=this.config.sanitize_properties;_&&(Pt.error(\"sanitize_properties is deprecated. Use before_send instead\"),a=_(a,t));var m=this.jr();return a.$process_person_profile=m,m&&!s&&this.Lr(\"_calculate_event_properties\"),a}Ar(t){var i;if(!this.persistence||!this.jr())return t;if(this.gr)return t;var e=this.persistence.get_initial_props(),r=null==(i=this.sessionPropsManager)?void 0:i.getSetOnceProps(),s=Mt({},e,r||{},t||{}),n=this.config.sanitize_properties;return n&&(Pt.error(\"sanitize_properties is deprecated. Use before_send instead\"),s=n(s,\"$set_once\")),this.gr=!0,O(s)?void 0:s}register(t,i){var e;null==(e=this.persistence)||e.register(t,i)}register_once(t,i,e){var r;null==(r=this.persistence)||r.register_once(t,i,e)}register_for_session(t){var i;null==(i=this.sessionPersistence)||i.register(t)}unregister(t){var i;null==(i=this.persistence)||i.unregister(t)}unregister_for_session(t){var i;null==(i=this.sessionPersistence)||i.unregister(t)}Nr(t,i){this.register({[t]:i})}getFeatureFlag(t,i){return this.featureFlags.getFeatureFlag(t,i)}getFeatureFlagPayload(t){var i=this.featureFlags.getFeatureFlagPayload(t);try{return JSON.parse(i)}catch(t){return i}}isFeatureEnabled(t,i){return this.featureFlags.isFeatureEnabled(t,i)}reloadFeatureFlags(){this.featureFlags.reloadFeatureFlags()}updateEarlyAccessFeatureEnrollment(t,i,e){this.featureFlags.updateEarlyAccessFeatureEnrollment(t,i,e)}getEarlyAccessFeatures(t,i,e){return void 0===i&&(i=!1),this.featureFlags.getEarlyAccessFeatures(t,i,e)}on(t,i){return this._r.on(t,i)}onFeatureFlags(t){return this.featureFlags.onFeatureFlags(t)}onSurveysLoaded(t){return this.surveys.onSurveysLoaded(t)}onSessionId(t){var i,e;return null!==(i=null==(e=this.sessionManager)?void 0:e.onSessionId(t))&&void 0!==i?i:()=>{}}getSurveys(t,i){void 0===i&&(i=!1),this.surveys.getSurveys(t,i)}getActiveMatchingSurveys(t,i){void 0===i&&(i=!1),this.surveys.getActiveMatchingSurveys(t,i)}renderSurvey(t,i){this.surveys.renderSurvey(t,i)}displaySurvey(t,i){void 0===i&&(i=qn),this.surveys.displaySurvey(t,i)}canRenderSurvey(t){return this.surveys.canRenderSurvey(t)}canRenderSurveyAsync(t,i){return void 0===i&&(i=!1),this.surveys.canRenderSurveyAsync(t,i)}identify(t,i,e){if(!this.__loaded||!this.persistence)return Pt.uninitializedWarning(\"posthog.identify\");if(L(t)&&(t=t.toString(),Pt.warn(\"The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.\")),t)if([\"distinct_id\",\"distinctid\"].includes(t.toLowerCase()))Pt.critical('The string \"'+t+'\" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.');else if(t!==wi){if(this.Lr(\"posthog.identify\")){var r=this.get_distinct_id();if(this.register({$user_id:t}),!this.get_property(\"$device_id\")){var s=r;this.register_once({$had_persisted_distinct_id:!0,$device_id:s},\"\")}t!==r&&t!==this.get_property(Gt)&&(this.unregister(Gt),this.register({distinct_id:t}));var n=\"anonymous\"===(this.persistence.get_property(ci)||\"anonymous\");t!==r&&n?(this.persistence.set_property(ci,\"identified\"),this.setPersonPropertiesForFlags(g({},e||{},i||{}),!1),this.capture(\"$identify\",{distinct_id:t,$anon_distinct_id:r},{$set:i||{},$set_once:e||{}}),this.wr=dn(t,i,e),this.featureFlags.setAnonymousDistinctId(r)):(i||e)&&this.setPersonProperties(i,e),t!==r&&(this.reloadFeatureFlags(),this.unregister(vi))}}else Pt.critical('The string \"'+wi+'\" was set in posthog.identify which indicates an error. This ID is only used as a sentinel value.');else Pt.error(\"Unique user id has not been set in posthog.identify\")}setPersonProperties(t,i){if((t||i)&&this.Lr(\"posthog.setPersonProperties\")){var e=dn(this.get_distinct_id(),t,i);this.wr!==e?(this.setPersonPropertiesForFlags(g({},i||{},t||{})),this.capture(\"$set\",{$set:t||{},$set_once:i||{}}),this.wr=e):Pt.info(\"A duplicate setPersonProperties call was made with the same properties. It has been ignored.\")}}group(t,i,e){if(t&&i){if(this.Lr(\"posthog.group\")){var r=this.getGroups();r[t]!==i&&this.resetGroupPropertiesForFlags(t),this.register({$groups:g({},r,{[t]:i})}),e&&(this.capture(\"$groupidentify\",{$group_type:t,$group_key:i,$group_set:e}),this.setGroupPropertiesForFlags({[t]:e})),r[t]===i||e||this.reloadFeatureFlags()}}else Pt.error(\"posthog.group requires a group type and group key\")}resetGroups(){this.register({$groups:{}}),this.resetGroupPropertiesForFlags(),this.reloadFeatureFlags()}setPersonPropertiesForFlags(t,i){void 0===i&&(i=!0),this.featureFlags.setPersonPropertiesForFlags(t,i)}resetPersonPropertiesForFlags(){this.featureFlags.resetPersonPropertiesForFlags()}setGroupPropertiesForFlags(t,i){void 0===i&&(i=!0),this.Lr(\"posthog.setGroupPropertiesForFlags\")&&this.featureFlags.setGroupPropertiesForFlags(t,i)}resetGroupPropertiesForFlags(t){this.featureFlags.resetGroupPropertiesForFlags(t)}reset(t){var i,e,r,s;if(Pt.info(\"reset\"),!this.__loaded)return Pt.uninitializedWarning(\"posthog.reset\");var n=this.get_property(\"$device_id\");if(this.consent.reset(),null==(i=this.persistence)||i.clear(),null==(e=this.sessionPersistence)||e.clear(),this.surveys.reset(),this.featureFlags.reset(),null==(r=this.persistence)||r.set_property(ci,\"anonymous\"),null==(s=this.sessionManager)||s.resetSessionId(),this.wr=null,\"always\"===this.config.cookieless_mode)this.register_once({distinct_id:wi,$device_id:null},\"\");else{var o=this.config.get_device_id(xe());this.register_once({distinct_id:o,$device_id:t?o:n},\"\")}this.register({$last_posthog_reset:(new Date).toISOString()},1)}get_distinct_id(){return this.get_property(\"distinct_id\")}getGroups(){return this.get_property(\"$groups\")||{}}get_session_id(){var t,i;return null!==(t=null==(i=this.sessionManager)?void 0:i.checkAndGetSessionAndWindowId(!0).sessionId)&&void 0!==t?t:\"\"}get_session_replay_url(t){if(!this.sessionManager)return\"\";var{sessionId:i,sessionStartTimestamp:e}=this.sessionManager.checkAndGetSessionAndWindowId(!0),r=this.requestRouter.endpointFor(\"ui\",\"/project/\"+this.config.token+\"/replay/\"+i);if(null!=t&&t.withTimestamp&&e){var s,n=null!==(s=t.timestampLookBack)&&void 0!==s?s:10;if(!e)return r;r+=\"?t=\"+Math.max(Math.floor(((new Date).getTime()-e)/1e3)-n,0)}return r}alias(t,i){return t===this.get_property(Wt)?(Pt.critical(\"Attempting to create alias for existing People user - aborting.\"),-2):this.Lr(\"posthog.alias\")?(F(i)&&(i=this.get_distinct_id()),t!==i?(this.Nr(Gt,t),this.capture(\"$create_alias\",{alias:t,distinct_id:i})):(Pt.warn(\"alias matches current distinct_id - skipping api call.\"),this.identify(t),-1)):void 0}set_config(t){var i=g({},this.config);if(C(t)){var e,r,s,n,o;Mt(this.config,Po(t));var a=this.kr();null==(e=this.persistence)||e.update_config(this.config,i,a),this.sessionPersistence=\"sessionStorage\"===this.config.persistence||\"memory\"===this.config.persistence?this.persistence:new Pn(g({},this.config,{persistence:\"sessionStorage\"}),a);var l=this.$r(this.config.debug);N(l)&&(this.config.debug=l),N(this.config.debug)&&(this.config.debug?(c.DEBUG=!0,Re.H()&&Re.G(\"ph_debug\",\"true\"),Pt.info(\"set_config\",{config:t,oldConfig:i,newConfig:g({},this.config)})):(c.DEBUG=!1,Re.H()&&Re.V(\"ph_debug\"))),null==(r=this.sessionRecording)||r.startIfEnabledOrStop(),null==(s=this.autocapture)||s.startIfEnabled(),null==(n=this.heatmaps)||n.startIfEnabled(),this.surveys.loadIfEnabled(),this.Ur(),null==(o=this.externalIntegrations)||o.startIfEnabledOrStop()}}startSessionRecording(t){var i=!0===t,e={sampling:i||!(null==t||!t.sampling),linked_flag:i||!(null==t||!t.linked_flag),url_trigger:i||!(null==t||!t.url_trigger),event_trigger:i||!(null==t||!t.event_trigger)};if(Object.values(e).some(Boolean)){var r,s,n,o,a;if(null==(r=this.sessionManager)||r.checkAndGetSessionAndWindowId(),e.sampling)null==(s=this.sessionRecording)||s.overrideSampling();if(e.linked_flag)null==(n=this.sessionRecording)||n.overrideLinkedFlag();if(e.url_trigger)null==(o=this.sessionRecording)||o.overrideTrigger(\"url\");if(e.event_trigger)null==(a=this.sessionRecording)||a.overrideTrigger(\"event\")}this.set_config({disable_session_recording:!1})}stopSessionRecording(){this.set_config({disable_session_recording:!0})}sessionRecordingStarted(){var t;return!(null==(t=this.sessionRecording)||!t.started)}captureException(t,i){var e=new Error(\"PostHog syntheticException\"),r=this.exceptions.buildProperties(t,{handled:!0,syntheticException:e});return this.exceptions.sendExceptionEvent(g({},r,i))}loadToolbar(t){return this.toolbar.loadToolbar(t)}get_property(t){var i;return null==(i=this.persistence)?void 0:i.props[t]}getSessionProperty(t){var i;return null==(i=this.sessionPersistence)?void 0:i.props[t]}toString(){var t,i=null!==(t=this.config.name)&&void 0!==t?t:So;return i!==So&&(i=So+\".\"+i),i}_isIdentified(){var t,i;return\"identified\"===(null==(t=this.persistence)?void 0:t.get_property(ci))||\"identified\"===(null==(i=this.sessionPersistence)?void 0:i.get_property(ci))}jr(){var t,i;return!(\"never\"===this.config.person_profiles||\"identified_only\"===this.config.person_profiles&&!this._isIdentified()&&O(this.getGroups())&&(null==(t=this.persistence)||null==(t=t.props)||!t[Gt])&&(null==(i=this.persistence)||null==(i=i.props)||!i[yi]))}Mr(){return!0===this.config.capture_pageleave||\"if_capture_pageview\"===this.config.capture_pageleave&&(!0===this.config.capture_pageview||\"history_change\"===this.config.capture_pageview)}createPersonProfile(){this.jr()||this.Lr(\"posthog.createPersonProfile\")&&this.setPersonProperties({},{})}Lr(t){return\"never\"===this.config.person_profiles?(Pt.error(t+' was called, but process_person is set to \"never\". This call will be ignored.'),!1):(this.Nr(yi,!0),!0)}kr(){if(\"always\"===this.config.cookieless_mode)return!0;var t=this.consent.isOptedOut(),i=this.config.opt_out_persistence_by_default||\"on_reject\"===this.config.cookieless_mode;return this.config.disable_persistence||t&&!!i}Ur(){var t,i,e,r,s=this.kr();(null==(t=this.persistence)?void 0:t.wi)!==s&&(null==(e=this.persistence)||e.set_disabled(s));(null==(i=this.sessionPersistence)?void 0:i.wi)!==s&&(null==(r=this.sessionPersistence)||r.set_disabled(s));return s}opt_in_capturing(t){if(\"always\"!==this.config.cookieless_mode){var i,e;if(\"on_reject\"===this.config.cookieless_mode&&this.consent.isExplicitlyOptedOut())this.reset(!0),null==(i=this.sessionManager)||i.destroy(),this.sessionManager=new no(this),this.persistence&&(this.sessionPropsManager=new ro(this,this.sessionManager,this.persistence)),this.sessionRecording=new wo(this),this.sessionRecording.startIfEnabledOrStop();if(this.consent.optInOut(!0),this.Ur(),this.Or(),\"on_reject\"==this.config.cookieless_mode&&this.surveys.loadIfEnabled(),F(null==t?void 0:t.captureEventName)||null!=t&&t.captureEventName)this.capture(null!==(e=null==t?void 0:t.captureEventName)&&void 0!==e?e:\"$opt_in\",null==t?void 0:t.captureProperties,{send_instantly:!0});this.config.capture_pageview&&this.Fr()}else Pt.warn('Consent opt in/out is not valid with cookieless_mode=\"always\" and will be ignored')}opt_out_capturing(){var t,i;\"always\"!==this.config.cookieless_mode?(\"on_reject\"===this.config.cookieless_mode&&this.consent.isOptedIn()&&this.reset(!0),this.consent.optInOut(!1),this.Ur(),\"on_reject\"===this.config.cookieless_mode&&(this.register({distinct_id:wi,$device_id:null}),null==(t=this.sessionManager)||t.destroy(),this.sessionManager=void 0,this.sessionPropsManager=void 0,null==(i=this.sessionRecording)||i.stopRecording(),this.sessionRecording=void 0,this.Fr())):Pt.warn('Consent opt in/out is not valid with cookieless_mode=\"always\" and will be ignored')}has_opted_in_capturing(){return this.consent.isOptedIn()}has_opted_out_capturing(){return this.consent.isOptedOut()}get_explicit_consent_status(){var t=this.consent.consent;return t===De.GRANTED?\"granted\":t===De.DENIED?\"denied\":\"pending\"}is_capturing(){return\"always\"===this.config.cookieless_mode||(\"on_reject\"===this.config.cookieless_mode?this.consent.isExplicitlyOptedOut()||this.consent.isOptedIn():!this.has_opted_out_capturing())}clear_opt_in_out_capturing(){this.consent.reset(),this.Ur()}_is_bot(){return n?uo(n,this.config.custom_blocked_useragents):void 0}Fr(){o&&(\"visible\"===o.visibilityState?this.mr||(this.mr=!0,this.capture(\"$pageview\",{title:o.title},{send_instantly:!0}),this.yr&&(o.removeEventListener(\"visibilitychange\",this.yr),this.yr=null)):this.yr||(this.yr=this.Fr.bind(this),qt(o,\"visibilitychange\",this.yr)))}debug(i){!1===i?(null==t||t.console.log(\"You've disabled debug mode.\"),this.set_config({debug:!1})):(null==t||t.console.log(\"You're now in debug mode. All calls to PostHog will be logged in your console.\\nYou can disable this with `posthog.debug(false)`.\"),this.set_config({debug:!0}))}M(){var t,i,e,r,s,n,o,a=this.Sr||{};return\"advanced_disable_flags\"in a?!!a.advanced_disable_flags:!1!==this.config.advanced_disable_flags?!!this.config.advanced_disable_flags:!0===this.config.advanced_disable_decide?(Pt.warn(\"Config field 'advanced_disable_decide' is deprecated. Please use 'advanced_disable_flags' instead. The old field will be removed in a future major version.\"),!0):(e=\"advanced_disable_decide\",r=!1,s=Pt,n=(i=\"advanced_disable_flags\")in(t=a)&&!F(t[i]),o=e in t&&!F(t[e]),n?t[i]:o?(s&&s.warn(\"Config field '\"+e+\"' is deprecated. Please use '\"+i+\"' instead. The old field will be removed in a future major version.\"),t[e]):r)}Dr(t){if(j(this.config.before_send))return t;var i=R(this.config.before_send)?this.config.before_send:[this.config.before_send],e=t;for(var r of i){if(e=r(e),j(e)){var s=\"Event '\"+t.event+\"' was rejected in beforeSend function\";return H(t.event)?Pt.warn(s+\". This can cause unexpected behavior.\"):Pt.info(s),null}e.properties&&!O(e.properties)||Pt.warn(\"Event '\"+t.event+\"' has no properties after beforeSend function, this is likely an error.\")}return e}getPageViewId(){var t;return null==(t=this.pageViewManager.Vt)?void 0:t.pageViewId}captureTraceFeedback(t,i){this.capture(\"$ai_feedback\",{$ai_trace_id:String(t),$ai_feedback_text:i})}captureTraceMetric(t,i,e){this.capture(\"$ai_metric\",{$ai_trace_id:String(t),$ai_metric_name:i,$ai_metric_value:String(e)})}$r(t){var i=N(t)&&!t,e=Re.H()&&\"true\"===Re.q(\"ph_debug\");return!i&&(!!e||t)}}!function(t,i){for(var e=0;e<i.length;e++)t.prototype[i[e]]=Lt(t.prototype[i[e]])}(Ro,[\"identify\"]);var Io,Co=(Io=xo[So]=new Ro,function(){function i(){i.done||(i.done=!0,Eo=!1,Ft(xo,(function(t){t._dom_loaded()})))}null!=o&&o.addEventListener?\"complete\"===o.readyState?i():qt(o,\"DOMContentLoaded\",i,{capture:!1}):t&&Pt.error(\"Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized\")}(),Io);export{ee as COPY_AUTOCAPTURE_EVENT,re as Compression,Dn as DisplaySurveyType,Ro as PostHog,Mn as SurveyEventName,An as SurveyEventProperties,Rn as SurveyPosition,On as SurveyQuestionBranchingType,Cn as SurveyQuestionType,Fn as SurveySchedule,In as SurveyType,Tn as SurveyWidgetType,Co as default,Co as posthog,se as severityLevels};\n//# sourceMappingURL=module.js.map\n","/**\n * Logger Utility\n * Environment-aware logger wrapper\n * - Logs normally in test/dev environment\n * - In production: silently logs to console\n * - Errors and warnings are always reported to PostHog (when loaded)\n *\n * Usage: Replace `console.log()` with `logger.log()`\n */\n\nimport { useLogger } from '@guiiai/logg'\nimport posthog from 'posthog-js'\n\nexport const logger = useLogger('Web')\n .withErrorProcessor((err: Error | unknown) => {\n captureErrorContext('error', err)\n return err\n })\n .useGlobalConfig()\n\n// 扩展 logger 类型以支持 unknown 参数\nexport const loggerWithUnknown = {\n ...logger,\n error: (message: string, error?: unknown) => {\n if (error !== undefined) {\n logger.error(`${message}: ${error instanceof Error ? error.message : String(error)}`)\n captureErrorContext('error', error)\n }\n else {\n logger.error(message)\n }\n },\n warn: (message: string, error?: unknown) => {\n if (error !== undefined) {\n logger.warn(`${message}: ${error instanceof Error ? error.message : String(error)}`)\n captureErrorContext('warning', error)\n }\n else {\n logger.warn(message)\n }\n },\n}\n\n/**\n * Capture error context for PostHog\n */\nfunction captureErrorContext(level: 'error' | 'warning', error: unknown): void {\n // Only capture when PostHog is loaded\n if (!posthog.__loaded) {\n return\n }\n\n if (import.meta.env.DEV) {\n return\n }\n\n posthog.captureException(\n error,\n {\n level,\n timestamp: Date.now(),\n environment: import.meta.env.MODE || 'production',\n user_agent: navigator.userAgent,\n },\n )\n}\n","/**\n * 音频动画同步播放器\n * 支持 HTMLAudioElement(传统方式)和 StreamingAudioPlayer(流式播放)\n */\n\nimport type { StreamingAudioPlayer } from './StreamingAudioPlayer'\n\nimport { APP_CONFIG } from '../config/app-config'\nimport { logger } from '../utils/logger'\n\nexport class AnimationPlayer {\n private audio: HTMLAudioElement | null = null\n private streamingPlayer: StreamingAudioPlayer | null = null\n private _isPlaying = false\n private fps = APP_CONFIG.animation.fps\n private onEndedCallback?: () => void\n private static audioUnlocked = false\n private useStreaming = false\n\n /**\n * 解锁音频上下文(Safari 自动播放策略)\n * 必须在用户交互事件(如 click)中调用\n */\n static async unlockAudioContext(): Promise<void> {\n if (AnimationPlayer.audioUnlocked) {\n return\n }\n\n try {\n // 创建一个极短的静音音频并播放\n const silentAudio = new Audio()\n silentAudio.src = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA'\n silentAudio.volume = 0\n\n // 尝试播放以解锁音频上下文\n await silentAudio.play()\n\n // 立即停止\n silentAudio.pause()\n silentAudio.currentTime = 0\n\n AnimationPlayer.audioUnlocked = true\n logger.log('✅ Audio context unlocked for Safari')\n }\n catch (err) {\n logger.warn('⚠️ Failed to unlock audio context:', err)\n // 不抛出错误,让后续正常流程继续\n }\n }\n\n /**\n * Initialize with HTMLAudioElement (traditional way)\n */\n async initialize(audioUrl: string, onEnded?: () => void): Promise<void> {\n this.onEndedCallback = onEnded\n this.useStreaming = false\n\n return new Promise((resolve, reject) => {\n this.audio = new Audio(audioUrl)\n\n this.audio.addEventListener('canplaythrough', () => {\n this.setupEventListeners()\n resolve()\n }, { once: true })\n\n this.audio.addEventListener('error', () => {\n reject(new Error(`Failed to load audio: ${audioUrl}`))\n }, { once: true })\n\n this.audio.load()\n })\n }\n\n /**\n * Initialize with StreamingAudioPlayer (streaming way)\n * @deprecated 使用 prepareStreamingPlayer() 代替\n */\n async initializeStreaming(streamingPlayer: StreamingAudioPlayer, onEnded?: () => void): Promise<void> {\n this.streamingPlayer = streamingPlayer\n this.onEndedCallback = onEnded\n this.useStreaming = true\n\n // Set ended callback on streaming player\n this.streamingPlayer.onEnded(() => {\n this._isPlaying = false\n this.onEndedCallback?.()\n })\n }\n\n /**\n * 检查流式播放器是否已准备好\n */\n isStreamingReady(): boolean {\n return this.useStreaming && this.streamingPlayer !== null\n }\n\n /**\n * 创建并初始化流式播放器\n * 在服务连接建立时调用\n */\n async createAndInitializeStreamingPlayer(): Promise<void> {\n if (this.streamingPlayer) {\n // 已创建,直接返回\n return\n }\n\n const { StreamingAudioPlayer } = await import('./StreamingAudioPlayer')\n this.streamingPlayer = new StreamingAudioPlayer({\n sampleRate: 16000,\n channelCount: 1,\n debug: false,\n })\n await this.streamingPlayer.initialize()\n this.useStreaming = true\n }\n\n /**\n * 准备流式播放器(如果未创建则创建并初始化)\n * 停止之前的播放并更新结束回调\n */\n async prepareStreamingPlayer(onEnded?: () => void): Promise<void> {\n if (!this.streamingPlayer) {\n // 如果播放器未创建,创建并初始化\n await this.createAndInitializeStreamingPlayer()\n }\n\n if (!this.streamingPlayer) {\n throw new Error('Failed to create streaming player')\n }\n\n // 停止之前的播放并更新回调\n this.streamingPlayer.stop()\n this.onEndedCallback = onEnded\n this.streamingPlayer.onEnded(() => {\n this._isPlaying = false\n this.onEndedCallback?.()\n })\n }\n\n private setupEventListeners(): void {\n if (!this.audio)\n return\n\n this.audio.addEventListener('play', () => {\n this._isPlaying = true\n })\n\n this.audio.addEventListener('ended', () => {\n this._isPlaying = false\n this.onEndedCallback?.()\n })\n\n }\n\n async play(): Promise<void> {\n if (this.useStreaming) {\n // Streaming mode: just mark as playing (chunks will auto-play)\n this._isPlaying = true\n }\n else {\n // Traditional mode\n if (!this.audio)\n throw new Error('Audio not loaded')\n this.audio.currentTime = 0\n await this.audio.play()\n }\n }\n\n stop(): void {\n this._isPlaying = false\n\n if (this.useStreaming) {\n this.streamingPlayer?.stop()\n }\n else {\n if (this.audio) {\n this.audio.pause()\n this.audio.currentTime = 0\n }\n }\n }\n\n isPlaying(): boolean {\n if (this.useStreaming) {\n return this._isPlaying && this.streamingPlayer?.isPlayingNow() === true\n }\n return this._isPlaying\n }\n\n getCurrentFrameIndex(): number {\n const currentTime = this.getCurrentTime()\n return Math.floor(currentTime * this.fps)\n }\n\n /**\n * Get current playback time\n */\n getCurrentTime(): number {\n if (this.useStreaming) {\n return this.streamingPlayer?.getCurrentTime() ?? 0\n }\n return this.audio?.currentTime ?? 0\n }\n\n /**\n * 添加音频块(仅用于流式播放)\n */\n addAudioChunk(audio: Uint8Array, isLast: boolean = false): void {\n if (this.useStreaming && this.streamingPlayer) {\n this.streamingPlayer.addChunk(audio, isLast)\n } else {\n logger.warn('[AnimationPlayer] Cannot add audio chunk - streaming player not ready')\n }\n }\n\n dispose(): void {\n this.stop()\n\n if (this.audio) {\n this.audio.src = ''\n this.audio = null\n }\n\n if (this.streamingPlayer) {\n this.streamingPlayer.dispose()\n this.streamingPlayer = null\n }\n\n this.onEndedCallback = undefined\n }\n}\n","// Copyright 2008 Google Inc. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Code generated by the Protocol Buffer compiler is owned by the owner\n// of the input file used when generating it. This code is not\n// standalone and requires a support library to be linked with it. This\n// support library is itself covered by the above license.\n/**\n * Read a 64 bit varint as two JS numbers.\n *\n * Returns tuple:\n * [0]: low bits\n * [1]: high bits\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L175\n */\nexport function varint64read() {\n let lowBits = 0;\n let highBits = 0;\n for (let shift = 0; shift < 28; shift += 7) {\n let b = this.buf[this.pos++];\n lowBits |= (b & 0x7f) << shift;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n }\n let middleByte = this.buf[this.pos++];\n // last four bits of the first 32 bit number\n lowBits |= (middleByte & 0x0f) << 28;\n // 3 upper bits are part of the next 32 bit number\n highBits = (middleByte & 0x70) >> 4;\n if ((middleByte & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n for (let shift = 3; shift <= 31; shift += 7) {\n let b = this.buf[this.pos++];\n highBits |= (b & 0x7f) << shift;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n }\n throw new Error(\"invalid varint\");\n}\n/**\n * Write a 64 bit varint, given as two JS numbers, to the given bytes array.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/writer.js#L344\n */\nexport function varint64write(lo, hi, bytes) {\n for (let i = 0; i < 28; i = i + 7) {\n const shift = lo >>> i;\n const hasNext = !(shift >>> 7 == 0 && hi == 0);\n const byte = (hasNext ? shift | 0x80 : shift) & 0xff;\n bytes.push(byte);\n if (!hasNext) {\n return;\n }\n }\n const splitBits = ((lo >>> 28) & 0x0f) | ((hi & 0x07) << 4);\n const hasMoreBits = !(hi >> 3 == 0);\n bytes.push((hasMoreBits ? splitBits | 0x80 : splitBits) & 0xff);\n if (!hasMoreBits) {\n return;\n }\n for (let i = 3; i < 31; i = i + 7) {\n const shift = hi >>> i;\n const hasNext = !(shift >>> 7 == 0);\n const byte = (hasNext ? shift | 0x80 : shift) & 0xff;\n bytes.push(byte);\n if (!hasNext) {\n return;\n }\n }\n bytes.push((hi >>> 31) & 0x01);\n}\n// constants for binary math\nconst TWO_PWR_32_DBL = 0x100000000;\n/**\n * Parse decimal string of 64 bit integer value as two JS numbers.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function int64FromString(dec) {\n // Check for minus sign.\n const minus = dec[0] === \"-\";\n if (minus) {\n dec = dec.slice(1);\n }\n // Work 6 decimal digits at a time, acting like we're converting base 1e6\n // digits to binary. This is safe to do with floating point math because\n // Number.isSafeInteger(ALL_32_BITS * 1e6) == true.\n const base = 1e6;\n let lowBits = 0;\n let highBits = 0;\n function add1e6digit(begin, end) {\n // Note: Number('') is 0.\n const digit1e6 = Number(dec.slice(begin, end));\n highBits *= base;\n lowBits = lowBits * base + digit1e6;\n // Carry bits from lowBits to\n if (lowBits >= TWO_PWR_32_DBL) {\n highBits = highBits + ((lowBits / TWO_PWR_32_DBL) | 0);\n lowBits = lowBits % TWO_PWR_32_DBL;\n }\n }\n add1e6digit(-24, -18);\n add1e6digit(-18, -12);\n add1e6digit(-12, -6);\n add1e6digit(-6);\n return minus ? negate(lowBits, highBits) : newBits(lowBits, highBits);\n}\n/**\n * Losslessly converts a 64-bit signed integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function int64ToString(lo, hi) {\n let bits = newBits(lo, hi);\n // If we're treating the input as a signed value and the high bit is set, do\n // a manual two's complement conversion before the decimal conversion.\n const negative = bits.hi & 0x80000000;\n if (negative) {\n bits = negate(bits.lo, bits.hi);\n }\n const result = uInt64ToString(bits.lo, bits.hi);\n return negative ? \"-\" + result : result;\n}\n/**\n * Losslessly converts a 64-bit unsigned integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function uInt64ToString(lo, hi) {\n ({ lo, hi } = toUnsigned(lo, hi));\n // Skip the expensive conversion if the number is small enough to use the\n // built-in conversions.\n // Number.MAX_SAFE_INTEGER = 0x001FFFFF FFFFFFFF, thus any number with\n // highBits <= 0x1FFFFF can be safely expressed with a double and retain\n // integer precision.\n // Proven by: Number.isSafeInteger(0x1FFFFF * 2**32 + 0xFFFFFFFF) == true.\n if (hi <= 0x1fffff) {\n return String(TWO_PWR_32_DBL * hi + lo);\n }\n // What this code is doing is essentially converting the input number from\n // base-2 to base-1e7, which allows us to represent the 64-bit range with\n // only 3 (very large) digits. Those digits are then trivial to convert to\n // a base-10 string.\n // The magic numbers used here are -\n // 2^24 = 16777216 = (1,6777216) in base-1e7.\n // 2^48 = 281474976710656 = (2,8147497,6710656) in base-1e7.\n // Split 32:32 representation into 16:24:24 representation so our\n // intermediate digits don't overflow.\n const low = lo & 0xffffff;\n const mid = ((lo >>> 24) | (hi << 8)) & 0xffffff;\n const high = (hi >> 16) & 0xffff;\n // Assemble our three base-1e7 digits, ignoring carries. The maximum\n // value in a digit at this step is representable as a 48-bit integer, which\n // can be stored in a 64-bit floating point number.\n let digitA = low + mid * 6777216 + high * 6710656;\n let digitB = mid + high * 8147497;\n let digitC = high * 2;\n // Apply carries from A to B and from B to C.\n const base = 10000000;\n if (digitA >= base) {\n digitB += Math.floor(digitA / base);\n digitA %= base;\n }\n if (digitB >= base) {\n digitC += Math.floor(digitB / base);\n digitB %= base;\n }\n // If digitC is 0, then we should have returned in the trivial code path\n // at the top for non-safe integers. Given this, we can assume both digitB\n // and digitA need leading zeros.\n return (digitC.toString() +\n decimalFrom1e7WithLeadingZeros(digitB) +\n decimalFrom1e7WithLeadingZeros(digitA));\n}\nfunction toUnsigned(lo, hi) {\n return { lo: lo >>> 0, hi: hi >>> 0 };\n}\nfunction newBits(lo, hi) {\n return { lo: lo | 0, hi: hi | 0 };\n}\n/**\n * Returns two's compliment negation of input.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Signed_32-bit_integers\n */\nfunction negate(lowBits, highBits) {\n highBits = ~highBits;\n if (lowBits) {\n lowBits = ~lowBits + 1;\n }\n else {\n // If lowBits is 0, then bitwise-not is 0xFFFFFFFF,\n // adding 1 to that, results in 0x100000000, which leaves\n // the low bits 0x0 and simply adds one to the high bits.\n highBits += 1;\n }\n return newBits(lowBits, highBits);\n}\n/**\n * Returns decimal representation of digit1e7 with leading zeros.\n */\nconst decimalFrom1e7WithLeadingZeros = (digit1e7) => {\n const partial = String(digit1e7);\n return \"0000000\".slice(partial.length) + partial;\n};\n/**\n * Write a 32 bit varint, signed or unsigned. Same as `varint64write(0, value, bytes)`\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/1b18833f4f2a2f681f4e4a25cdf3b0a43115ec26/js/binary/encoder.js#L144\n */\nexport function varint32write(value, bytes) {\n if (value >= 0) {\n // write value as varint 32\n while (value > 0x7f) {\n bytes.push((value & 0x7f) | 0x80);\n value = value >>> 7;\n }\n bytes.push(value);\n }\n else {\n for (let i = 0; i < 9; i++) {\n bytes.push((value & 127) | 128);\n value = value >> 7;\n }\n bytes.push(1);\n }\n}\n/**\n * Read an unsigned 32 bit varint.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L220\n */\nexport function varint32read() {\n let b = this.buf[this.pos++];\n let result = b & 0x7f;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 7;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 14;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 21;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n // Extract only last 4 bits\n b = this.buf[this.pos++];\n result |= (b & 0x0f) << 28;\n for (let readBytes = 5; (b & 0x80) !== 0 && readBytes < 10; readBytes++)\n b = this.buf[this.pos++];\n if ((b & 0x80) != 0)\n throw new Error(\"invalid varint\");\n this.assertBounds();\n // Result can have 32 bits, convert it to unsigned\n return result >>> 0;\n}\n","// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { int64FromString, int64ToString, uInt64ToString, } from \"./wire/varint.js\";\n/**\n * Int64Support for the current environment.\n */\nexport const protoInt64 = /*@__PURE__*/ makeInt64Support();\nfunction makeInt64Support() {\n const dv = new DataView(new ArrayBuffer(8));\n // note that Safari 14 implements BigInt, but not the DataView methods\n const ok = typeof BigInt === \"function\" &&\n typeof dv.getBigInt64 === \"function\" &&\n typeof dv.getBigUint64 === \"function\" &&\n typeof dv.setBigInt64 === \"function\" &&\n typeof dv.setBigUint64 === \"function\" &&\n (!!globalThis.Deno ||\n typeof process != \"object\" ||\n typeof process.env != \"object\" ||\n process.env.BUF_BIGINT_DISABLE !== \"1\");\n if (ok) {\n const MIN = BigInt(\"-9223372036854775808\");\n const MAX = BigInt(\"9223372036854775807\");\n const UMIN = BigInt(\"0\");\n const UMAX = BigInt(\"18446744073709551615\");\n return {\n zero: BigInt(0),\n supported: true,\n parse(value) {\n const bi = typeof value == \"bigint\" ? value : BigInt(value);\n if (bi > MAX || bi < MIN) {\n throw new Error(`invalid int64: ${value}`);\n }\n return bi;\n },\n uParse(value) {\n const bi = typeof value == \"bigint\" ? value : BigInt(value);\n if (bi > UMAX || bi < UMIN) {\n throw new Error(`invalid uint64: ${value}`);\n }\n return bi;\n },\n enc(value) {\n dv.setBigInt64(0, this.parse(value), true);\n return {\n lo: dv.getInt32(0, true),\n hi: dv.getInt32(4, true),\n };\n },\n uEnc(value) {\n dv.setBigInt64(0, this.uParse(value), true);\n return {\n lo: dv.getInt32(0, true),\n hi: dv.getInt32(4, true),\n };\n },\n dec(lo, hi) {\n dv.setInt32(0, lo, true);\n dv.setInt32(4, hi, true);\n return dv.getBigInt64(0, true);\n },\n uDec(lo, hi) {\n dv.setInt32(0, lo, true);\n dv.setInt32(4, hi, true);\n return dv.getBigUint64(0, true);\n },\n };\n }\n return {\n zero: \"0\",\n supported: false,\n parse(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertInt64String(value);\n return value;\n },\n uParse(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertUInt64String(value);\n return value;\n },\n enc(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertInt64String(value);\n return int64FromString(value);\n },\n uEnc(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertUInt64String(value);\n return int64FromString(value);\n },\n dec(lo, hi) {\n return int64ToString(lo, hi);\n },\n uDec(lo, hi) {\n return uInt64ToString(lo, hi);\n },\n };\n}\nfunction assertInt64String(value) {\n if (!/^-?[0-9]+$/.test(value)) {\n throw new Error(\"invalid int64: \" + value);\n }\n}\nfunction assertUInt64String(value) {\n if (!/^[0-9]+$/.test(value)) {\n throw new Error(\"invalid uint64: \" + value);\n }\n}\n","// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nconst symbol = Symbol.for(\"@bufbuild/protobuf/text-encoding\");\n/**\n * Protobuf-ES requires the Text Encoding API to convert UTF-8 from and to\n * binary. This WHATWG API is widely available, but it is not part of the\n * ECMAScript standard. On runtimes where it is not available, use this\n * function to provide your own implementation.\n *\n * Note that the Text Encoding API does not provide a way to validate UTF-8.\n * Our implementation falls back to use encodeURIComponent().\n */\nexport function configureTextEncoding(textEncoding) {\n globalThis[symbol] = textEncoding;\n}\nexport function getTextEncoding() {\n if (globalThis[symbol] == undefined) {\n const te = new globalThis.TextEncoder();\n const td = new globalThis.TextDecoder();\n globalThis[symbol] = {\n encodeUtf8(text) {\n return te.encode(text);\n },\n decodeUtf8(bytes) {\n return td.decode(bytes);\n },\n checkUtf8(text) {\n try {\n encodeURIComponent(text);\n return true;\n }\n catch (_) {\n return false;\n }\n },\n };\n }\n return globalThis[symbol];\n}\n","// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { varint32read, varint32write, varint64read, varint64write, } from \"./varint.js\";\nimport { protoInt64 } from \"../proto-int64.js\";\nimport { getTextEncoding } from \"./text-encoding.js\";\n/**\n * Protobuf binary format wire types.\n *\n * A wire type provides just enough information to find the length of the\n * following value.\n *\n * See https://developers.google.com/protocol-buffers/docs/encoding#structure\n */\nexport var WireType;\n(function (WireType) {\n /**\n * Used for int32, int64, uint32, uint64, sint32, sint64, bool, enum\n */\n WireType[WireType[\"Varint\"] = 0] = \"Varint\";\n /**\n * Used for fixed64, sfixed64, double.\n * Always 8 bytes with little-endian byte order.\n */\n WireType[WireType[\"Bit64\"] = 1] = \"Bit64\";\n /**\n * Used for string, bytes, embedded messages, packed repeated fields\n *\n * Only repeated numeric types (types which use the varint, 32-bit,\n * or 64-bit wire types) can be packed. In proto3, such fields are\n * packed by default.\n */\n WireType[WireType[\"LengthDelimited\"] = 2] = \"LengthDelimited\";\n /**\n * Start of a tag-delimited aggregate, such as a proto2 group, or a message\n * in editions with message_encoding = DELIMITED.\n */\n WireType[WireType[\"StartGroup\"] = 3] = \"StartGroup\";\n /**\n * End of a tag-delimited aggregate.\n */\n WireType[WireType[\"EndGroup\"] = 4] = \"EndGroup\";\n /**\n * Used for fixed32, sfixed32, float.\n * Always 4 bytes with little-endian byte order.\n */\n WireType[WireType[\"Bit32\"] = 5] = \"Bit32\";\n})(WireType || (WireType = {}));\n/**\n * Maximum value for a 32-bit floating point value (Protobuf FLOAT).\n */\nexport const FLOAT32_MAX = 3.4028234663852886e38;\n/**\n * Minimum value for a 32-bit floating point value (Protobuf FLOAT).\n */\nexport const FLOAT32_MIN = -3.4028234663852886e38;\n/**\n * Maximum value for an unsigned 32-bit integer (Protobuf UINT32, FIXED32).\n */\nexport const UINT32_MAX = 0xffffffff;\n/**\n * Maximum value for a signed 32-bit integer (Protobuf INT32, SFIXED32, SINT32).\n */\nexport const INT32_MAX = 0x7fffffff;\n/**\n * Minimum value for a signed 32-bit integer (Protobuf INT32, SFIXED32, SINT32).\n */\nexport const INT32_MIN = -0x80000000;\nexport class BinaryWriter {\n constructor(encodeUtf8 = getTextEncoding().encodeUtf8) {\n this.encodeUtf8 = encodeUtf8;\n /**\n * Previous fork states.\n */\n this.stack = [];\n this.chunks = [];\n this.buf = [];\n }\n /**\n * Return all bytes written and reset this writer.\n */\n finish() {\n if (this.buf.length) {\n this.chunks.push(new Uint8Array(this.buf)); // flush the buffer\n this.buf = [];\n }\n let len = 0;\n for (let i = 0; i < this.chunks.length; i++)\n len += this.chunks[i].length;\n let bytes = new Uint8Array(len);\n let offset = 0;\n for (let i = 0; i < this.chunks.length; i++) {\n bytes.set(this.chunks[i], offset);\n offset += this.chunks[i].length;\n }\n this.chunks = [];\n return bytes;\n }\n /**\n * Start a new fork for length-delimited data like a message\n * or a packed repeated field.\n *\n * Must be joined later with `join()`.\n */\n fork() {\n this.stack.push({ chunks: this.chunks, buf: this.buf });\n this.chunks = [];\n this.buf = [];\n return this;\n }\n /**\n * Join the last fork. Write its length and bytes, then\n * return to the previous state.\n */\n join() {\n // get chunk of fork\n let chunk = this.finish();\n // restore previous state\n let prev = this.stack.pop();\n if (!prev)\n throw new Error(\"invalid state, fork stack empty\");\n this.chunks = prev.chunks;\n this.buf = prev.buf;\n // write length of chunk as varint\n this.uint32(chunk.byteLength);\n return this.raw(chunk);\n }\n /**\n * Writes a tag (field number and wire type).\n *\n * Equivalent to `uint32( (fieldNo << 3 | type) >>> 0 )`.\n *\n * Generated code should compute the tag ahead of time and call `uint32()`.\n */\n tag(fieldNo, type) {\n return this.uint32(((fieldNo << 3) | type) >>> 0);\n }\n /**\n * Write a chunk of raw bytes.\n */\n raw(chunk) {\n if (this.buf.length) {\n this.chunks.push(new Uint8Array(this.buf));\n this.buf = [];\n }\n this.chunks.push(chunk);\n return this;\n }\n /**\n * Write a `uint32` value, an unsigned 32 bit varint.\n */\n uint32(value) {\n assertUInt32(value);\n // write value as varint 32, inlined for speed\n while (value > 0x7f) {\n this.buf.push((value & 0x7f) | 0x80);\n value = value >>> 7;\n }\n this.buf.push(value);\n return this;\n }\n /**\n * Write a `int32` value, a signed 32 bit varint.\n */\n int32(value) {\n assertInt32(value);\n varint32write(value, this.buf);\n return this;\n }\n /**\n * Write a `bool` value, a variant.\n */\n bool(value) {\n this.buf.push(value ? 1 : 0);\n return this;\n }\n /**\n * Write a `bytes` value, length-delimited arbitrary data.\n */\n bytes(value) {\n this.uint32(value.byteLength); // write length of chunk as varint\n return this.raw(value);\n }\n /**\n * Write a `string` value, length-delimited data converted to UTF-8 text.\n */\n string(value) {\n let chunk = this.encodeUtf8(value);\n this.uint32(chunk.byteLength); // write length of chunk as varint\n return this.raw(chunk);\n }\n /**\n * Write a `float` value, 32-bit floating point number.\n */\n float(value) {\n assertFloat32(value);\n let chunk = new Uint8Array(4);\n new DataView(chunk.buffer).setFloat32(0, value, true);\n return this.raw(chunk);\n }\n /**\n * Write a `double` value, a 64-bit floating point number.\n */\n double(value) {\n let chunk = new Uint8Array(8);\n new DataView(chunk.buffer).setFloat64(0, value, true);\n return this.raw(chunk);\n }\n /**\n * Write a `fixed32` value, an unsigned, fixed-length 32-bit integer.\n */\n fixed32(value) {\n assertUInt32(value);\n let chunk = new Uint8Array(4);\n new DataView(chunk.buffer).setUint32(0, value, true);\n return this.raw(chunk);\n }\n /**\n * Write a `sfixed32` value, a signed, fixed-length 32-bit integer.\n */\n sfixed32(value) {\n assertInt32(value);\n let chunk = new Uint8Array(4);\n new DataView(chunk.buffer).setInt32(0, value, true);\n return this.raw(chunk);\n }\n /**\n * Write a `sint32` value, a signed, zigzag-encoded 32-bit varint.\n */\n sint32(value) {\n assertInt32(value);\n // zigzag encode\n value = ((value << 1) ^ (value >> 31)) >>> 0;\n varint32write(value, this.buf);\n return this;\n }\n /**\n * Write a `fixed64` value, a signed, fixed-length 64-bit integer.\n */\n sfixed64(value) {\n let chunk = new Uint8Array(8), view = new DataView(chunk.buffer), tc = protoInt64.enc(value);\n view.setInt32(0, tc.lo, true);\n view.setInt32(4, tc.hi, true);\n return this.raw(chunk);\n }\n /**\n * Write a `fixed64` value, an unsigned, fixed-length 64 bit integer.\n */\n fixed64(value) {\n let chunk = new Uint8Array(8), view = new DataView(chunk.buffer), tc = protoInt64.uEnc(value);\n view.setInt32(0, tc.lo, true);\n view.setInt32(4, tc.hi, true);\n return this.raw(chunk);\n }\n /**\n * Write a `int64` value, a signed 64-bit varint.\n */\n int64(value) {\n let tc = protoInt64.enc(value);\n varint64write(tc.lo, tc.hi, this.buf);\n return this;\n }\n /**\n * Write a `sint64` value, a signed, zig-zag-encoded 64-bit varint.\n */\n sint64(value) {\n const tc = protoInt64.enc(value), \n // zigzag encode\n sign = tc.hi >> 31, lo = (tc.lo << 1) ^ sign, hi = ((tc.hi << 1) | (tc.lo >>> 31)) ^ sign;\n varint64write(lo, hi, this.buf);\n return this;\n }\n /**\n * Write a `uint64` value, an unsigned 64-bit varint.\n */\n uint64(value) {\n const tc = protoInt64.uEnc(value);\n varint64write(tc.lo, tc.hi, this.buf);\n return this;\n }\n}\nexport class BinaryReader {\n constructor(buf, decodeUtf8 = getTextEncoding().decodeUtf8) {\n this.decodeUtf8 = decodeUtf8;\n this.varint64 = varint64read; // dirty cast for `this`\n /**\n * Read a `uint32` field, an unsigned 32 bit varint.\n */\n this.uint32 = varint32read;\n this.buf = buf;\n this.len = buf.length;\n this.pos = 0;\n this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n /**\n * Reads a tag - field number and wire type.\n */\n tag() {\n let tag = this.uint32(), fieldNo = tag >>> 3, wireType = tag & 7;\n if (fieldNo <= 0 || wireType < 0 || wireType > 5)\n throw new Error(\"illegal tag: field no \" + fieldNo + \" wire type \" + wireType);\n return [fieldNo, wireType];\n }\n /**\n * Skip one element and return the skipped data.\n *\n * When skipping StartGroup, provide the tags field number to check for\n * matching field number in the EndGroup tag.\n */\n skip(wireType, fieldNo) {\n let start = this.pos;\n switch (wireType) {\n case WireType.Varint:\n while (this.buf[this.pos++] & 0x80) {\n // ignore\n }\n break;\n // @ts-ignore TS7029: Fallthrough case in switch -- ignore instead of expect-error for compiler settings without noFallthroughCasesInSwitch: true\n case WireType.Bit64:\n this.pos += 4;\n case WireType.Bit32:\n this.pos += 4;\n break;\n case WireType.LengthDelimited:\n let len = this.uint32();\n this.pos += len;\n break;\n case WireType.StartGroup:\n for (;;) {\n const [fn, wt] = this.tag();\n if (wt === WireType.EndGroup) {\n if (fieldNo !== undefined && fn !== fieldNo) {\n throw new Error(\"invalid end group tag\");\n }\n break;\n }\n this.skip(wt, fn);\n }\n break;\n default:\n throw new Error(\"cant skip wire type \" + wireType);\n }\n this.assertBounds();\n return this.buf.subarray(start, this.pos);\n }\n /**\n * Throws error if position in byte array is out of range.\n */\n assertBounds() {\n if (this.pos > this.len)\n throw new RangeError(\"premature EOF\");\n }\n /**\n * Read a `int32` field, a signed 32 bit varint.\n */\n int32() {\n return this.uint32() | 0;\n }\n /**\n * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint.\n */\n sint32() {\n let zze = this.uint32();\n // decode zigzag\n return (zze >>> 1) ^ -(zze & 1);\n }\n /**\n * Read a `int64` field, a signed 64-bit varint.\n */\n int64() {\n return protoInt64.dec(...this.varint64());\n }\n /**\n * Read a `uint64` field, an unsigned 64-bit varint.\n */\n uint64() {\n return protoInt64.uDec(...this.varint64());\n }\n /**\n * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint.\n */\n sint64() {\n let [lo, hi] = this.varint64();\n // decode zig zag\n let s = -(lo & 1);\n lo = ((lo >>> 1) | ((hi & 1) << 31)) ^ s;\n hi = (hi >>> 1) ^ s;\n return protoInt64.dec(lo, hi);\n }\n /**\n * Read a `bool` field, a variant.\n */\n bool() {\n let [lo, hi] = this.varint64();\n return lo !== 0 || hi !== 0;\n }\n /**\n * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer.\n */\n fixed32() {\n // biome-ignore lint/suspicious/noAssignInExpressions: no\n return this.view.getUint32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `sfixed32` field, a signed, fixed-length 32-bit integer.\n */\n sfixed32() {\n // biome-ignore lint/suspicious/noAssignInExpressions: no\n return this.view.getInt32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer.\n */\n fixed64() {\n return protoInt64.uDec(this.sfixed32(), this.sfixed32());\n }\n /**\n * Read a `fixed64` field, a signed, fixed-length 64-bit integer.\n */\n sfixed64() {\n return protoInt64.dec(this.sfixed32(), this.sfixed32());\n }\n /**\n * Read a `float` field, 32-bit floating point number.\n */\n float() {\n // biome-ignore lint/suspicious/noAssignInExpressions: no\n return this.view.getFloat32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `double` field, a 64-bit floating point number.\n */\n double() {\n // biome-ignore lint/suspicious/noAssignInExpressions: no\n return this.view.getFloat64((this.pos += 8) - 8, true);\n }\n /**\n * Read a `bytes` field, length-delimited arbitrary data.\n */\n bytes() {\n let len = this.uint32(), start = this.pos;\n this.pos += len;\n this.assertBounds();\n return this.buf.subarray(start, start + len);\n }\n /**\n * Read a `string` field, length-delimited data converted to UTF-8 text.\n */\n string() {\n return this.decodeUtf8(this.bytes());\n }\n}\n/**\n * Assert a valid signed protobuf 32-bit integer as a number or string.\n */\nfunction assertInt32(arg) {\n if (typeof arg == \"string\") {\n arg = Number(arg);\n }\n else if (typeof arg != \"number\") {\n throw new Error(\"invalid int32: \" + typeof arg);\n }\n if (!Number.isInteger(arg) ||\n arg > INT32_MAX ||\n arg < INT32_MIN)\n throw new Error(\"invalid int32: \" + arg);\n}\n/**\n * Assert a valid unsigned protobuf 32-bit integer as a number or string.\n */\nfunction assertUInt32(arg) {\n if (typeof arg == \"string\") {\n arg = Number(arg);\n }\n else if (typeof arg != \"number\") {\n throw new Error(\"invalid uint32: \" + typeof arg);\n }\n if (!Number.isInteger(arg) ||\n arg > UINT32_MAX ||\n arg < 0)\n throw new Error(\"invalid uint32: \" + arg);\n}\n/**\n * Assert a valid protobuf float value as a number or string.\n */\nfunction assertFloat32(arg) {\n if (typeof arg == \"string\") {\n const o = arg;\n arg = Number(arg);\n if (Number.isNaN(arg) && o !== \"NaN\") {\n throw new Error(\"invalid float32: \" + o);\n }\n }\n else if (typeof arg != \"number\") {\n throw new Error(\"invalid float32: \" + typeof arg);\n }\n if (Number.isFinite(arg) &&\n (arg > FLOAT32_MAX || arg < FLOAT32_MIN))\n throw new Error(\"invalid float32: \" + arg);\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.6.1\n// protoc unknown\n// source: driveningress/v1/driveningress.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"driveningress.v1\";\n\nexport enum MessageType {\n MESSAGE_UNSPECIFIED = 0,\n MESSAGE_ERROR = 2,\n MESSAGE_SERVER_RESPONSE_ANIMATION = 1004,\n MESSAGE_CLIENT_AUDIO_INPUT = 2003,\n UNRECOGNIZED = -1,\n}\n\nexport function messageTypeFromJSON(object: any): MessageType {\n switch (object) {\n case 0:\n case \"MESSAGE_UNSPECIFIED\":\n return MessageType.MESSAGE_UNSPECIFIED;\n case 2:\n case \"MESSAGE_ERROR\":\n return MessageType.MESSAGE_ERROR;\n case 1004:\n case \"MESSAGE_SERVER_RESPONSE_ANIMATION\":\n return MessageType.MESSAGE_SERVER_RESPONSE_ANIMATION;\n case 2003:\n case \"MESSAGE_CLIENT_AUDIO_INPUT\":\n return MessageType.MESSAGE_CLIENT_AUDIO_INPUT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return MessageType.UNRECOGNIZED;\n }\n}\n\nexport function messageTypeToJSON(object: MessageType): string {\n switch (object) {\n case MessageType.MESSAGE_UNSPECIFIED:\n return \"MESSAGE_UNSPECIFIED\";\n case MessageType.MESSAGE_ERROR:\n return \"MESSAGE_ERROR\";\n case MessageType.MESSAGE_SERVER_RESPONSE_ANIMATION:\n return \"MESSAGE_SERVER_RESPONSE_ANIMATION\";\n case MessageType.MESSAGE_CLIENT_AUDIO_INPUT:\n return \"MESSAGE_CLIENT_AUDIO_INPUT\";\n case MessageType.UNRECOGNIZED:\n default:\n return \"UNRECOGNIZED\";\n }\n}\n\n/**\n * 兼容流式传输,只要 req_id 相同,客户端可以将音频分段发若干个 ClientAudioInputData\n * 新 req_id 出现后,老 req_id 的请求将被忽略\n */\nexport interface ClientAudioInputData {\n reqId: string;\n audio: Uint8Array;\n end: boolean;\n}\n\nexport interface Flame {\n /** 平移 */\n translation: number[];\n /** 旋转 */\n rotation: number[];\n /** 脖子 */\n neckPose: number[];\n /** 下巴 */\n jawPose: number[];\n /** 眼睛 */\n eyePose: number[];\n /** 眼皮 */\n eyeLid: number[];\n /** 表情参数 */\n expression: number[];\n}\n\nexport interface FlameAnimation {\n keyframes: Flame[];\n}\n\nexport interface ServerResponseAnimationData {\n reqId: string;\n animation?: FlameAnimation | undefined;\n}\n\nexport interface ErrorInfo {\n reqId: string;\n code: number;\n reason: string;\n}\n\nexport interface Message {\n type: MessageType;\n error?: ErrorInfo | undefined;\n serverResponseAnimation?: ServerResponseAnimationData | undefined;\n clientAudioInput?: ClientAudioInputData | undefined;\n}\n\nfunction createBaseClientAudioInputData(): ClientAudioInputData {\n return { reqId: \"\", audio: new Uint8Array(0), end: false };\n}\n\nexport const ClientAudioInputData: MessageFns<ClientAudioInputData> = {\n encode(message: ClientAudioInputData, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.reqId !== \"\") {\n writer.uint32(10).string(message.reqId);\n }\n if (message.audio.length !== 0) {\n writer.uint32(18).bytes(message.audio);\n }\n if (message.end !== false) {\n writer.uint32(24).bool(message.end);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ClientAudioInputData {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseClientAudioInputData();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.reqId = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.audio = reader.bytes();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.end = reader.bool();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): ClientAudioInputData {\n return {\n reqId: isSet(object.reqId) ? globalThis.String(object.reqId) : \"\",\n audio: isSet(object.audio) ? bytesFromBase64(object.audio) : new Uint8Array(0),\n end: isSet(object.end) ? globalThis.Boolean(object.end) : false,\n };\n },\n\n toJSON(message: ClientAudioInputData): unknown {\n const obj: any = {};\n if (message.reqId !== \"\") {\n obj.reqId = message.reqId;\n }\n if (message.audio.length !== 0) {\n obj.audio = base64FromBytes(message.audio);\n }\n if (message.end !== false) {\n obj.end = message.end;\n }\n return obj;\n },\n\n create<I extends Exact<DeepPartial<ClientAudioInputData>, I>>(base?: I): ClientAudioInputData {\n return ClientAudioInputData.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<ClientAudioInputData>, I>>(object: I): ClientAudioInputData {\n const message = createBaseClientAudioInputData();\n message.reqId = object.reqId ?? \"\";\n message.audio = object.audio ?? new Uint8Array(0);\n message.end = object.end ?? false;\n return message;\n },\n};\n\nfunction createBaseFlame(): Flame {\n return { translation: [], rotation: [], neckPose: [], jawPose: [], eyePose: [], eyeLid: [], expression: [] };\n}\n\nexport const Flame: MessageFns<Flame> = {\n encode(message: Flame, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n writer.uint32(18).fork();\n for (const v of message.translation) {\n writer.float(v);\n }\n writer.join();\n writer.uint32(26).fork();\n for (const v of message.rotation) {\n writer.float(v);\n }\n writer.join();\n writer.uint32(34).fork();\n for (const v of message.neckPose) {\n writer.float(v);\n }\n writer.join();\n writer.uint32(42).fork();\n for (const v of message.jawPose) {\n writer.float(v);\n }\n writer.join();\n writer.uint32(50).fork();\n for (const v of message.eyePose) {\n writer.float(v);\n }\n writer.join();\n writer.uint32(58).fork();\n for (const v of message.eyeLid) {\n writer.float(v);\n }\n writer.join();\n writer.uint32(66).fork();\n for (const v of message.expression) {\n writer.float(v);\n }\n writer.join();\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Flame {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFlame();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 2: {\n if (tag === 21) {\n message.translation.push(reader.float());\n\n continue;\n }\n\n if (tag === 18) {\n const end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) {\n message.translation.push(reader.float());\n }\n\n continue;\n }\n\n break;\n }\n case 3: {\n if (tag === 29) {\n message.rotation.push(reader.float());\n\n continue;\n }\n\n if (tag === 26) {\n const end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) {\n message.rotation.push(reader.float());\n }\n\n continue;\n }\n\n break;\n }\n case 4: {\n if (tag === 37) {\n message.neckPose.push(reader.float());\n\n continue;\n }\n\n if (tag === 34) {\n const end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) {\n message.neckPose.push(reader.float());\n }\n\n continue;\n }\n\n break;\n }\n case 5: {\n if (tag === 45) {\n message.jawPose.push(reader.float());\n\n continue;\n }\n\n if (tag === 42) {\n const end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) {\n message.jawPose.push(reader.float());\n }\n\n continue;\n }\n\n break;\n }\n case 6: {\n if (tag === 53) {\n message.eyePose.push(reader.float());\n\n continue;\n }\n\n if (tag === 50) {\n const end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) {\n message.eyePose.push(reader.float());\n }\n\n continue;\n }\n\n break;\n }\n case 7: {\n if (tag === 61) {\n message.eyeLid.push(reader.float());\n\n continue;\n }\n\n if (tag === 58) {\n const end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) {\n message.eyeLid.push(reader.float());\n }\n\n continue;\n }\n\n break;\n }\n case 8: {\n if (tag === 69) {\n message.expression.push(reader.float());\n\n continue;\n }\n\n if (tag === 66) {\n const end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) {\n message.expression.push(reader.float());\n }\n\n continue;\n }\n\n break;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Flame {\n return {\n translation: globalThis.Array.isArray(object?.translation)\n ? object.translation.map((e: any) => globalThis.Number(e))\n : [],\n rotation: globalThis.Array.isArray(object?.rotation) ? object.rotation.map((e: any) => globalThis.Number(e)) : [],\n neckPose: globalThis.Array.isArray(object?.neckPose) ? object.neckPose.map((e: any) => globalThis.Number(e)) : [],\n jawPose: globalThis.Array.isArray(object?.jawPose) ? object.jawPose.map((e: any) => globalThis.Number(e)) : [],\n eyePose: globalThis.Array.isArray(object?.eyePose) ? object.eyePose.map((e: any) => globalThis.Number(e)) : [],\n eyeLid: globalThis.Array.isArray(object?.eyeLid) ? object.eyeLid.map((e: any) => globalThis.Number(e)) : [],\n expression: globalThis.Array.isArray(object?.expression)\n ? object.expression.map((e: any) => globalThis.Number(e))\n : [],\n };\n },\n\n toJSON(message: Flame): unknown {\n const obj: any = {};\n if (message.translation?.length) {\n obj.translation = message.translation;\n }\n if (message.rotation?.length) {\n obj.rotation = message.rotation;\n }\n if (message.neckPose?.length) {\n obj.neckPose = message.neckPose;\n }\n if (message.jawPose?.length) {\n obj.jawPose = message.jawPose;\n }\n if (message.eyePose?.length) {\n obj.eyePose = message.eyePose;\n }\n if (message.eyeLid?.length) {\n obj.eyeLid = message.eyeLid;\n }\n if (message.expression?.length) {\n obj.expression = message.expression;\n }\n return obj;\n },\n\n create<I extends Exact<DeepPartial<Flame>, I>>(base?: I): Flame {\n return Flame.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<Flame>, I>>(object: I): Flame {\n const message = createBaseFlame();\n message.translation = object.translation?.map((e) => e) || [];\n message.rotation = object.rotation?.map((e) => e) || [];\n message.neckPose = object.neckPose?.map((e) => e) || [];\n message.jawPose = object.jawPose?.map((e) => e) || [];\n message.eyePose = object.eyePose?.map((e) => e) || [];\n message.eyeLid = object.eyeLid?.map((e) => e) || [];\n message.expression = object.expression?.map((e) => e) || [];\n return message;\n },\n};\n\nfunction createBaseFlameAnimation(): FlameAnimation {\n return { keyframes: [] };\n}\n\nexport const FlameAnimation: MessageFns<FlameAnimation> = {\n encode(message: FlameAnimation, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n for (const v of message.keyframes) {\n Flame.encode(v!, writer.uint32(10).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): FlameAnimation {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFlameAnimation();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.keyframes.push(Flame.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): FlameAnimation {\n return {\n keyframes: globalThis.Array.isArray(object?.keyframes) ? object.keyframes.map((e: any) => Flame.fromJSON(e)) : [],\n };\n },\n\n toJSON(message: FlameAnimation): unknown {\n const obj: any = {};\n if (message.keyframes?.length) {\n obj.keyframes = message.keyframes.map((e) => Flame.toJSON(e));\n }\n return obj;\n },\n\n create<I extends Exact<DeepPartial<FlameAnimation>, I>>(base?: I): FlameAnimation {\n return FlameAnimation.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<FlameAnimation>, I>>(object: I): FlameAnimation {\n const message = createBaseFlameAnimation();\n message.keyframes = object.keyframes?.map((e) => Flame.fromPartial(e)) || [];\n return message;\n },\n};\n\nfunction createBaseServerResponseAnimationData(): ServerResponseAnimationData {\n return { reqId: \"\", animation: undefined };\n}\n\nexport const ServerResponseAnimationData: MessageFns<ServerResponseAnimationData> = {\n encode(message: ServerResponseAnimationData, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.reqId !== \"\") {\n writer.uint32(10).string(message.reqId);\n }\n if (message.animation !== undefined) {\n FlameAnimation.encode(message.animation, writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ServerResponseAnimationData {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseServerResponseAnimationData();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.reqId = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.animation = FlameAnimation.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): ServerResponseAnimationData {\n return {\n reqId: isSet(object.reqId) ? globalThis.String(object.reqId) : \"\",\n animation: isSet(object.animation) ? FlameAnimation.fromJSON(object.animation) : undefined,\n };\n },\n\n toJSON(message: ServerResponseAnimationData): unknown {\n const obj: any = {};\n if (message.reqId !== \"\") {\n obj.reqId = message.reqId;\n }\n if (message.animation !== undefined) {\n obj.animation = FlameAnimation.toJSON(message.animation);\n }\n return obj;\n },\n\n create<I extends Exact<DeepPartial<ServerResponseAnimationData>, I>>(base?: I): ServerResponseAnimationData {\n return ServerResponseAnimationData.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<ServerResponseAnimationData>, I>>(object: I): ServerResponseAnimationData {\n const message = createBaseServerResponseAnimationData();\n message.reqId = object.reqId ?? \"\";\n message.animation = (object.animation !== undefined && object.animation !== null)\n ? FlameAnimation.fromPartial(object.animation)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseErrorInfo(): ErrorInfo {\n return { reqId: \"\", code: 0, reason: \"\" };\n}\n\nexport const ErrorInfo: MessageFns<ErrorInfo> = {\n encode(message: ErrorInfo, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.reqId !== \"\") {\n writer.uint32(10).string(message.reqId);\n }\n if (message.code !== 0) {\n writer.uint32(16).int32(message.code);\n }\n if (message.reason !== \"\") {\n writer.uint32(26).string(message.reason);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ErrorInfo {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseErrorInfo();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.reqId = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.code = reader.int32();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.reason = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): ErrorInfo {\n return {\n reqId: isSet(object.reqId) ? globalThis.String(object.reqId) : \"\",\n code: isSet(object.code) ? globalThis.Number(object.code) : 0,\n reason: isSet(object.reason) ? globalThis.String(object.reason) : \"\",\n };\n },\n\n toJSON(message: ErrorInfo): unknown {\n const obj: any = {};\n if (message.reqId !== \"\") {\n obj.reqId = message.reqId;\n }\n if (message.code !== 0) {\n obj.code = Math.round(message.code);\n }\n if (message.reason !== \"\") {\n obj.reason = message.reason;\n }\n return obj;\n },\n\n create<I extends Exact<DeepPartial<ErrorInfo>, I>>(base?: I): ErrorInfo {\n return ErrorInfo.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<ErrorInfo>, I>>(object: I): ErrorInfo {\n const message = createBaseErrorInfo();\n message.reqId = object.reqId ?? \"\";\n message.code = object.code ?? 0;\n message.reason = object.reason ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMessage(): Message {\n return { type: 0, error: undefined, serverResponseAnimation: undefined, clientAudioInput: undefined };\n}\n\nexport const Message: MessageFns<Message> = {\n encode(message: Message, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.type !== 0) {\n writer.uint32(8).int32(message.type);\n }\n if (message.error !== undefined) {\n ErrorInfo.encode(message.error, writer.uint32(18).fork()).join();\n }\n if (message.serverResponseAnimation !== undefined) {\n ServerResponseAnimationData.encode(message.serverResponseAnimation, writer.uint32(26).fork()).join();\n }\n if (message.clientAudioInput !== undefined) {\n ClientAudioInputData.encode(message.clientAudioInput, writer.uint32(34).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Message {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMessage();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.type = reader.int32() as any;\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.error = ErrorInfo.decode(reader, reader.uint32());\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.serverResponseAnimation = ServerResponseAnimationData.decode(reader, reader.uint32());\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.clientAudioInput = ClientAudioInputData.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Message {\n return {\n type: isSet(object.type) ? messageTypeFromJSON(object.type) : 0,\n error: isSet(object.error) ? ErrorInfo.fromJSON(object.error) : undefined,\n serverResponseAnimation: isSet(object.serverResponseAnimation)\n ? ServerResponseAnimationData.fromJSON(object.serverResponseAnimation)\n : undefined,\n clientAudioInput: isSet(object.clientAudioInput)\n ? ClientAudioInputData.fromJSON(object.clientAudioInput)\n : undefined,\n };\n },\n\n toJSON(message: Message): unknown {\n const obj: any = {};\n if (message.type !== 0) {\n obj.type = messageTypeToJSON(message.type);\n }\n if (message.error !== undefined) {\n obj.error = ErrorInfo.toJSON(message.error);\n }\n if (message.serverResponseAnimation !== undefined) {\n obj.serverResponseAnimation = ServerResponseAnimationData.toJSON(message.serverResponseAnimation);\n }\n if (message.clientAudioInput !== undefined) {\n obj.clientAudioInput = ClientAudioInputData.toJSON(message.clientAudioInput);\n }\n return obj;\n },\n\n create<I extends Exact<DeepPartial<Message>, I>>(base?: I): Message {\n return Message.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<Message>, I>>(object: I): Message {\n const message = createBaseMessage();\n message.type = object.type ?? 0;\n message.error = (object.error !== undefined && object.error !== null)\n ? ErrorInfo.fromPartial(object.error)\n : undefined;\n message.serverResponseAnimation =\n (object.serverResponseAnimation !== undefined && object.serverResponseAnimation !== null)\n ? ServerResponseAnimationData.fromPartial(object.serverResponseAnimation)\n : undefined;\n message.clientAudioInput = (object.clientAudioInput !== undefined && object.clientAudioInput !== null)\n ? ClientAudioInputData.fromPartial(object.clientAudioInput)\n : undefined;\n return message;\n },\n};\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n const bin = globalThis.atob(b64);\n const arr = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; ++i) {\n arr[i] = bin.charCodeAt(i);\n }\n return arr;\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n const bin: string[] = [];\n arr.forEach((byte) => {\n bin.push(globalThis.String.fromCharCode(byte));\n });\n return globalThis.btoa(bin.join(\"\"));\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\ntype KeysOfUnion<T> = T extends T ? keyof T : never;\nexport type Exact<P, I extends P> = P extends Builtin ? P\n : P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;\n fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;\n}\n","/**\n * iOS 兼容的角色数据类型定义\n * 对齐 iOS 版本的 API 结构\n */\n\nimport type { CharacterAsset } from '../generated/driveningress/v2/driveningress'\nimport type { CameraSettings, CharacterSettings } from './character-settings'\n\n/**\n * 角色元数据\n */\nexport type CharacterMeta = CharacterAsset & {\n characterSettings?: CharacterSettings\n}\n\nexport type PreloadResources<T> = {\n version: string\n} & T\n\nexport type PreloadCameraSettings = PreloadResources<{ camera: CameraSettings }>\n\n/**\n * 资源类型枚举\n */\nexport enum ResourceType {\n CAMERA = 'camera',\n ANIMATION_IDLE = 'frameIdle',\n ANIMATION_MONO = 'frameMono',\n AUDIO_MONO = 'audioMono',\n MODEL_SHAPE = 'shape',\n MODEL_GS = 'gsStandard',\n}\n\n/**\n * 提取所有资源 URL\n */\nexport function extractResourceUrls(meta: CharacterMeta): Record<ResourceType, string | null> {\n return {\n [ResourceType.CAMERA]: meta.camera?.resource?.remote || null,\n [ResourceType.ANIMATION_IDLE]: meta.animations?.frameIdle?.resource?.remote || null,\n [ResourceType.ANIMATION_MONO]: meta.animations?.frameMono?.resource?.remote || null,\n [ResourceType.AUDIO_MONO]: meta.animations?.audioMono?.resource?.remote || null,\n [ResourceType.MODEL_SHAPE]: meta.models?.shape?.resource?.remote || null,\n [ResourceType.MODEL_GS]: meta.models?.gsStandard?.resource?.remote || null,\n }\n}\n\n/**\n * 检查角色是否有完整的独白资源\n */\nexport function hasMonologue(meta: CharacterMeta): boolean {\n return !!(meta.animations?.frameMono?.resource?.remote && meta.animations?.audioMono?.resource?.remote)\n}\n\n/**\n * 从 RealtimeCharacter 的 modelInfo JSON 中解析是否有独白\n * modelInfo 是一个 JSON 字符串,包含角色的模型信息\n */\nexport function hasMonologueFromModelInfo(modelInfo: string): boolean {\n try {\n const parsed = JSON.parse(modelInfo)\n // 检查是否有 animations.frameMono 和 animations.audioMono\n return !!(\n parsed?.animations?.frameMono?.resource?.remote\n && parsed?.animations?.audioMono?.resource?.remote\n )\n }\n catch {\n return false\n }\n}\n","/**\n * 统一公开类型 & 接口\n */\n\n// 环境配置\nexport enum Environment {\n cn = 'cn',\n us = 'us',\n test = 'test',\n}\n\n// SDK 配置\nexport interface Configuration {\n readonly environment: Environment\n}\n\n// SDK 配置接口响应\nexport interface SdkConfigResponse {\n endpoints: {\n cn?: string\n us?: string\n test?: string\n }\n}\n\n// 加载进度\nexport enum LoadProgress {\n downloading = 'downloading',\n completed = 'completed',\n failed = 'failed',\n}\n\nexport interface LoadProgressInfo {\n type: LoadProgress\n progress?: number // 0-100\n error?: Error\n}\n\n// 连接状态\nexport enum ConnectionState {\n disconnected = 'disconnected',\n connecting = 'connecting',\n connected = 'connected',\n failed = 'failed',\n}\n\n// 数字人状态\nexport enum AvatarState {\n idle = 'idle', // 空闲状态,呈现呼吸态\n active = 'active', // 活跃中,等待可播放内容\n playing = 'playing', // 播放中\n}\n\n// 错误类型\nexport class SPAvatarError extends Error {\n constructor(message: string, public code?: string) {\n super(message)\n this.name = 'SPAvatarError'\n }\n}\n\n// ========== 渲染相关类型 ==========\n\nexport interface FlatSplatData {\n positions: Float32Array\n scales: Float32Array\n rotations: Float32Array\n colors: Float32Array\n opacities: Float32Array\n pointCount: number\n}\n\nexport interface CameraConfig {\n position: [number, number, number]\n target: [number, number, number]\n fov: number\n near: number\n far: number\n up?: [number, number, number]\n aspect?: number\n}\n\n// 渲染性能统计\nexport interface RenderPerformanceStats {\n renderTime: number // 总渲染耗时(毫秒)\n sortTime: number // 排序耗时(毫秒)\n backend: 'webgpu' | 'webgl' | null // 当前使用的渲染后端\n pointCount?: number // 当前渲染的点云数量\n}\n\n// ========== 角色相关类型 ==========\n// 从 character.ts 重新导出所有角色相关类型,避免重复定义\n\nexport * from './character'\n","/**\n * SDK 配置加载器\n * 从远程配置接口获取 SDK 端点配置\n */\n\nimport type { SdkConfigResponse } from '../types'\n\nimport { Environment } from '../types'\nimport { logger } from '../utils/logger'\n\ninterface SdkConfigCache {\n config: Partial<Record<Environment, string>> | null\n promise: Promise<void> | null\n}\n\n// 全局缓存,避免重复请求\nconst configCache: SdkConfigCache = {\n config: null,\n promise: null,\n}\n\n/**\n * 从远程配置接口获取 SDK 配置\n * @param version SDK 版本号\n * @returns 解析后的配置映射\n */\nexport async function fetchSdkConfig(version: string): Promise<Partial<Record<Environment, string>>> {\n // 如果已经在获取中,等待之前的请求完成\n if (configCache.promise) {\n await configCache.promise\n return configCache.config || {}\n }\n\n // 如果已经有缓存,直接返回\n if (configCache.config) {\n return configCache.config\n }\n\n // 创建新的请求\n configCache.promise = (async () => {\n try {\n // 开发环境使用代理,生产环境直接请求\n const isDev = typeof window !== 'undefined' && (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1')\n const configUrl = isDev\n ? `/api/config/sdk?version=${version}`\n : `https://config.spatialwalk.top/sdk?version=${version}`\n logger.log(`[SdkConfigLoader] Fetching SDK config from: ${configUrl}`)\n\n const response = await fetch(configUrl, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status} ${response.statusText}`)\n }\n\n const data = await response.json() as SdkConfigResponse\n\n if (!data.endpoints) {\n throw new Error('Invalid config response: missing endpoints')\n }\n\n // 解析并存储配置\n const config: Partial<Record<Environment, string>> = {}\n if (data.endpoints.cn) {\n config[Environment.cn] = `https://${data.endpoints.cn}`\n }\n if (data.endpoints.us) {\n config[Environment.us] = `https://${data.endpoints.us}`\n }\n if (data.endpoints.test) {\n config[Environment.test] = `https://${data.endpoints.test}`\n }\n\n configCache.config = config\n logger.log(`[SdkConfigLoader] SDK config fetched successfully:`, config)\n }\n catch (error) {\n logger.warn('[SdkConfigLoader] Failed to fetch SDK config:', error instanceof Error ? error.message : String(error))\n // 不抛出错误,返回空对象,让调用方使用默认配置\n configCache.config = {}\n }\n finally {\n configCache.promise = null\n }\n })()\n\n await configCache.promise\n return configCache.config || {}\n}\n\n/**\n * 清除配置缓存(用于测试或重新加载)\n */\nexport function clearSdkConfigCache(): void {\n configCache.config = null\n configCache.promise = null\n}\n","/* eslint-disable style/max-statements-per-line */\n\n/**\n * Avatar Core WASM 内存管理工具\n *\n * 提供高效的内存分配、数据传递和零拷贝访问功能\n * 专门为 avatar_core_wasm 优化\n */\n\n// WASM 模块接口定义\ninterface WASMModule {\n _malloc: (size: number) => number\n _free: (ptr: number) => void\n writeArrayToMemory: (array: Uint8Array, ptr: number) => void\n HEAPU8: Uint8Array\n HEAP32: Int32Array\n HEAPF32: Float32Array\n getValue: (ptr: number, type: string) => number\n setValue: (ptr: number, value: number, type: string) => void\n}\n\n// 内存分配结果\ninterface MemoryAllocation {\n ptr: number\n size: number\n}\n\n// 模板资源接口\nexport interface TemplateResources {\n flameModel: ArrayBuffer\n flameTemplate: ArrayBuffer\n teethPb: ArrayBuffer\n teethNpz: ArrayBuffer\n}\n\n// 角色数据接口(预留)\nexport interface CharacterData {\n shape: ArrayBuffer\n pointCloud: ArrayBuffer\n}\n\n// 表情参数接口(预留)\nexport interface ExpressionParams {\n expression?: number[]\n jaw?: number[]\n eyeR?: number[]\n eyeL?: number[]\n pose?: number[]\n neck?: number[]\n translation?: number[]\n}\n\n// 数组元数据(预留)\nexport interface ArrayMetadata {\n ptr: number\n size: number\n dtype: string\n}\n\nexport class AvatarCoreMemoryManager {\n private module: WASMModule\n private allocatedPointers: Set<number>\n private structPointers: Map<string, number>\n\n constructor(wasmModule: WASMModule) {\n this.module = wasmModule\n this.allocatedPointers = new Set() // 跟踪所有分配的指针\n this.structPointers = new Map() // 跟踪结构体指针\n }\n\n /**\n * 分配 WASM 内存并复制数据 - 纯 API 方式\n */\n allocateAndCopy(arrayBuffer: ArrayBuffer): MemoryAllocation {\n const size = arrayBuffer.byteLength\n const ptr = this.module._malloc(size)\n\n if (!ptr) {\n throw new Error(`Failed to allocate ${size} bytes in WASM memory`)\n }\n\n const uint8Array = new Uint8Array(arrayBuffer)\n\n // 使用 writeArrayToMemory 进行数据写入\n this.module.writeArrayToMemory(uint8Array, ptr)\n\n this.allocatedPointers.add(ptr)\n return { ptr, size }\n }\n\n /**\n * 创建 AvatarTemplateConfig 结构体\n */\n createTemplateConfig(resources: TemplateResources): number {\n const structSize = 10 * 4\n const configPtr = this.module._malloc(structSize)\n\n if (!configPtr) {\n throw new Error('Failed to allocate AvatarTemplateConfig structure')\n }\n\n // 验证必需资源\n if (!resources.flameModel || resources.flameModel.byteLength === 0) {\n throw new Error('flameModel is missing or empty!')\n }\n if (!resources.flameTemplate || resources.flameTemplate.byteLength === 0) {\n throw new Error('flameTemplate is missing or empty!')\n }\n if (!resources.teethPb || resources.teethPb.byteLength === 0) {\n throw new Error('teethPb is missing or empty!')\n }\n if (!resources.teethNpz || resources.teethNpz.byteLength === 0) {\n throw new Error('teethNpz is missing or empty!')\n }\n\n // 分配并复制所有资源数据\n const flameModel = this.allocateAndCopy(resources.flameModel)\n const flameTemplate = this.allocateAndCopy(resources.flameTemplate)\n const teethPb = this.allocateAndCopy(resources.teethPb)\n const teethNpz = this.allocateAndCopy(resources.teethNpz)\n\n let offset = 0\n\n // flame_model_data, flame_model_size\n this.module.setValue(configPtr + offset, flameModel.ptr, 'i32'); offset += 4\n this.module.setValue(configPtr + offset, flameModel.size, 'i32'); offset += 4\n\n // flame_template_data, flame_template_size\n this.module.setValue(configPtr + offset, flameTemplate.ptr, 'i32'); offset += 4\n this.module.setValue(configPtr + offset, flameTemplate.size, 'i32'); offset += 4\n\n // teeth_pb_data, teeth_pb_size\n this.module.setValue(configPtr + offset, teethPb.ptr, 'i32'); offset += 4\n this.module.setValue(configPtr + offset, teethPb.size, 'i32'); offset += 4\n\n // teeth_npz_data, teeth_npz_size\n this.module.setValue(configPtr + offset, teethNpz.ptr, 'i32'); offset += 4\n this.module.setValue(configPtr + offset, teethNpz.size, 'i32'); offset += 4\n\n // teeth_mask_npz_data, teeth_mask_npz_size (可选)\n this.module.setValue(configPtr + offset, 0, 'i32'); offset += 4\n this.module.setValue(configPtr + offset, 0, 'i32'); offset += 4\n\n this.structPointers.set('template_config', configPtr)\n return configPtr\n }\n\n /**\n * 创建 AvatarCharacterData 结构体 - 新版 Emscripten 方式\n */\n createCharacterData(shapeBuffer: ArrayBuffer, plyBuffer: ArrayBuffer): number {\n const structSize = 4 * 4 // 4 个字段\n const dataPtr = this.module._malloc(structSize)\n\n if (!dataPtr) {\n throw new Error('Failed to allocate AvatarCharacterData structure')\n }\n\n // 分配并复制数据\n const shape = this.allocateAndCopy(shapeBuffer)\n const ply = this.allocateAndCopy(plyBuffer)\n\n // 填充结构体 - 使用 setValue\n let offset = 0\n\n // shape_data, shape_size\n this.module.setValue(dataPtr + offset, shape.ptr, 'i32'); offset += 4\n this.module.setValue(dataPtr + offset, shape.size, 'i32'); offset += 4\n\n // gs_points_data, gs_points_size\n this.module.setValue(dataPtr + offset, ply.ptr, 'i32'); offset += 4\n this.module.setValue(dataPtr + offset, ply.size, 'i32'); offset += 4\n\n this.structPointers.set('character_data', dataPtr)\n return dataPtr\n }\n\n /**\n * 读取 AvatarFlameParams 结构体数据\n * Used to extract current animation frame parameters from WASM memory\n */\n readFlameParams(paramsPtr: number): {\n shape_params: number[]\n expr_params: number[]\n rotation: number[]\n translation: number[]\n neck_pose: number[]\n jaw_pose: number[]\n eyes_pose: number[]\n eyelid: number[]\n has_eyelid: boolean\n } {\n let byteOffset = 0\n\n // shape_params[300]\n const shape_params: number[] = []\n for (let i = 0; i < 300; i++) {\n shape_params.push(this.module.getValue(paramsPtr + byteOffset, 'float'))\n byteOffset += 4\n }\n\n // expr_params[100]\n const expr_params: number[] = []\n for (let i = 0; i < 100; i++) {\n expr_params.push(this.module.getValue(paramsPtr + byteOffset, 'float'))\n byteOffset += 4\n }\n\n // rotation[3]\n const rotation: number[] = []\n for (let i = 0; i < 3; i++) {\n rotation.push(this.module.getValue(paramsPtr + byteOffset, 'float'))\n byteOffset += 4\n }\n\n // translation[3]\n const translation: number[] = []\n for (let i = 0; i < 3; i++) {\n translation.push(this.module.getValue(paramsPtr + byteOffset, 'float'))\n byteOffset += 4\n }\n\n // neck_pose[3]\n const neck_pose: number[] = []\n for (let i = 0; i < 3; i++) {\n neck_pose.push(this.module.getValue(paramsPtr + byteOffset, 'float'))\n byteOffset += 4\n }\n\n // jaw_pose[3]\n const jaw_pose: number[] = []\n for (let i = 0; i < 3; i++) {\n jaw_pose.push(this.module.getValue(paramsPtr + byteOffset, 'float'))\n byteOffset += 4\n }\n\n // eyes_pose[6]\n const eyes_pose: number[] = []\n for (let i = 0; i < 6; i++) {\n eyes_pose.push(this.module.getValue(paramsPtr + byteOffset, 'float'))\n byteOffset += 4\n }\n\n // eyelid[2]\n const eyelid: number[] = []\n for (let i = 0; i < 2; i++) {\n eyelid.push(this.module.getValue(paramsPtr + byteOffset, 'float'))\n byteOffset += 4\n }\n\n // has_eyelid\n const has_eyelid = this.module.getValue(paramsPtr + byteOffset, 'i32') !== 0\n\n return {\n shape_params,\n expr_params,\n rotation,\n translation,\n neck_pose,\n jaw_pose,\n eyes_pose,\n eyelid,\n has_eyelid,\n }\n }\n\n /**\n * 创建 AvatarFlameParams 结构体 - 新版 Emscripten 方式\n */\n createFlameParams(params: {\n shape_params?: number[]\n expr_params?: number[]\n rotation?: number[]\n translation?: number[]\n neck_pose?: number[]\n jaw_pose?: number[]\n eyes_pose?: number[]\n eyelid?: number[]\n has_eyelid?: boolean\n }): number {\n const structSize = (300 + 100 + 3 + 3 + 3 + 3 + 6 + 2 + 1) * 4 // shape[300] + expr[100] + rotation[3] + translation[3] + neck[3] + jaw[3] + eyes[6] + eyelid[2] + has_eyelid[1]\n const paramsPtr = this.module._malloc(structSize)\n\n if (!paramsPtr) {\n throw new Error('Failed to allocate AvatarFlameParams structure')\n }\n\n let byteOffset = 0\n\n // shape_params[300] - 必须在最前面!\n for (let i = 0; i < 300; i++) {\n const value = params.shape_params?.[i] || 0.0\n this.module.setValue(paramsPtr + byteOffset, value, 'float')\n byteOffset += 4\n }\n\n // expr_params[100]\n for (let i = 0; i < 100; i++) {\n const value = params.expr_params?.[i] || 0.0\n this.module.setValue(paramsPtr + byteOffset, value, 'float')\n byteOffset += 4\n }\n\n // rotation[3]\n for (let i = 0; i < 3; i++) {\n const value = params.rotation?.[i] || 0.0\n this.module.setValue(paramsPtr + byteOffset, value, 'float')\n byteOffset += 4\n }\n\n // translation[3]\n for (let i = 0; i < 3; i++) {\n const value = params.translation?.[i] || 0.0\n this.module.setValue(paramsPtr + byteOffset, value, 'float')\n byteOffset += 4\n }\n\n // neck_pose[3]\n for (let i = 0; i < 3; i++) {\n const value = params.neck_pose?.[i] || 0.0\n this.module.setValue(paramsPtr + byteOffset, value, 'float')\n byteOffset += 4\n }\n\n // jaw_pose[3]\n for (let i = 0; i < 3; i++) {\n const value = params.jaw_pose?.[i] || 0.0\n this.module.setValue(paramsPtr + byteOffset, value, 'float')\n byteOffset += 4\n }\n\n // eyes_pose[6]\n for (let i = 0; i < 6; i++) {\n const value = params.eyes_pose?.[i] || 0.0\n this.module.setValue(paramsPtr + byteOffset, value, 'float')\n byteOffset += 4\n }\n\n // eyelid[2]\n for (let i = 0; i < 2; i++) {\n const value = params.eyelid?.[i] || 0.0\n this.module.setValue(paramsPtr + byteOffset, value, 'float')\n byteOffset += 4\n }\n\n // has_eyelid\n this.module.setValue(paramsPtr + byteOffset, params.has_eyelid ? 1 : 0, 'i32')\n byteOffset += 4\n\n return paramsPtr\n }\n\n /**\n * 读取 AvatarSplatPointFlatArray 结构体数据(预计算协方差)\n *\n * 结构体布局:\n * - AvatarSplatPointFlat* points (0-3, 32位指针)\n * - uint32_t point_count (4-7)\n * - float compute_time_ms (8-11)\n *\n * 每个点布局 (52 bytes):\n * - position[3] (12 bytes)\n * - color[4] (16 bytes, RGBA)\n * - covariance[6] (24 bytes, 预计算好的协方差矩阵上三角)\n *\n * ⚠️ 使用 getValue 逐个读取,避免动态内存的 HEAPF32 detachment 问题\n */\n readSplatPointFlatArray(arrayPtr: number): Float32Array | null {\n if (!arrayPtr) {\n throw new Error('Invalid array pointer')\n }\n\n // 读取结构体头部\n const pointsPtr = this.module.getValue(arrayPtr, 'i32')\n const pointCount = this.module.getValue(arrayPtr + 4, 'i32')\n\n if (pointCount === 0 || !pointsPtr) {\n return null\n }\n\n // 每个点: position[3] + color[4] + covariance[6] = 13 floats\n const floatsPerPoint = 13\n const totalFloats = pointCount * floatsPerPoint\n const floatOffset = pointsPtr / 4 // Float32 是 4 字节对齐\n\n // 零拷贝: 直接从 HEAPF32 复制数据\n const flatData = new Float32Array(totalFloats)\n flatData.set(this.module.HEAPF32.subarray(floatOffset, floatOffset + totalFloats))\n\n return flatData\n }\n\n /**\n * 读取AvatarMeshData结构体数据\n */\n readMeshData(outputPtr: number): {\n vertices: Float32Array\n vertexCount: number\n faces: Uint32Array\n faceCount: number\n landmarks: Float32Array | null\n landmarkCount: number\n computeTime: number\n } {\n // AvatarMeshData WASM结构体布局 (32位指针):\n // float* vertices; // 0-3 (32位指针)\n // uint32_t vertex_count; // 4-7\n // uint32_t* faces; // 8-11 (32位指针)\n // uint32_t face_count; // 12-15\n // float compute_time_ms; // 16-19\n // float* landmarks; // 20-23 (32位指针)\n // uint32_t landmark_count; // 24-27\n\n const verticesPtr = this.module.getValue(outputPtr + 0, '*')\n const vertexCount = this.module.getValue(outputPtr + 4, 'i32')\n const facesPtr = this.module.getValue(outputPtr + 8, '*')\n const faceCount = this.module.getValue(outputPtr + 12, 'i32')\n const computeTime = this.module.getValue(outputPtr + 16, 'float')\n const landmarksPtr = this.module.getValue(outputPtr + 20, '*')\n const landmarkCount = this.module.getValue(outputPtr + 24, 'i32')\n\n // 读取顶点数据 (x,y,z,x,y,z,...)\n const vertices = new Float32Array(vertexCount * 3)\n if (verticesPtr && vertexCount > 0) {\n for (let i = 0; i < vertexCount * 3; i++) {\n vertices[i] = this.module.getValue(verticesPtr + i * 4, 'float')\n }\n }\n\n // 读取面片数据 (i1,i2,i3,i1,i2,i3,...)\n const faces = new Uint32Array(faceCount * 3)\n if (facesPtr && faceCount > 0) {\n for (let i = 0; i < faceCount * 3; i++) {\n faces[i] = this.module.getValue(facesPtr + i * 4, 'i32')\n }\n }\n\n // 读取关键点数据 (可选)\n let landmarks = null\n if (landmarksPtr && landmarkCount > 0) {\n landmarks = new Float32Array(landmarkCount * 3)\n for (let i = 0; i < landmarkCount * 3; i++) {\n landmarks[i] = this.module.getValue(landmarksPtr + i * 4, 'float')\n }\n }\n\n return {\n vertices,\n vertexCount,\n faces,\n faceCount,\n landmarks,\n landmarkCount,\n computeTime,\n }\n }\n\n /**\n * 释放指定指针的内存\n */\n free(ptr: number): void {\n if (ptr && this.allocatedPointers.has(ptr)) {\n this.module._free(ptr)\n this.allocatedPointers.delete(ptr)\n }\n }\n\n /**\n * 释放结构体内存\n */\n freeStruct(name: string): void {\n const ptr = this.structPointers.get(name)\n if (ptr) {\n this.module._free(ptr)\n this.structPointers.delete(name)\n }\n }\n\n /**\n * 清理所有分配的内存\n */\n cleanup(): void {\n // 释放所有分配的指针\n for (const ptr of this.allocatedPointers) {\n this.module._free(ptr)\n }\n this.allocatedPointers.clear()\n\n // 释放所有结构体指针\n for (const [, ptr] of this.structPointers) {\n this.module._free(ptr)\n }\n this.structPointers.clear()\n }\n\n /**\n * 获取内存使用统计\n */\n getMemoryStats(): {\n allocatedPointers: number\n structPointers: number\n totalAllocatedMB: number\n } {\n return {\n allocatedPointers: this.allocatedPointers.size,\n structPointers: this.structPointers.size,\n totalAllocatedMB: Math.round((this.allocatedPointers.size * 1024) / 1024),\n }\n }\n}\n","/**\n * Avatar Core WASM 适配器\n *\n * 完全替换 FlameComplete3DGSManager,提供 avatar_core_wasm 的完整功能\n * 包括牙齿细分、眼部追踪等高级特性\n */\n\nimport type { TemplateResources } from './avatarCoreMemory'\n\nimport { logger } from '../utils/logger'\nimport { AvatarCoreMemoryManager } from './avatarCoreMemory'\n\n// WASM memory management (gc function may be available in debug mode)\ndeclare const gc: (() => void) | undefined\n\n// WASM 模块配置类型\nexport interface WasmModuleConfig {\n baseUrl?: string\n [key: string]: unknown\n}\n\n// 类型定义\nexport interface AvatarCoreOptions {\n logLevel?: 'basic' | 'verbose'\n enableValidation?: boolean\n enablePerformanceMetrics?: boolean\n retryCount?: number\n baseAssetsPath?: string\n modelFolder?: string\n wasmConfig?: WasmModuleConfig\n wasmPath?: string\n}\n\ninterface PerformanceMetrics {\n initTime: number\n loadTime: number\n computeFrames: number\n totalComputeTime: number\n averageComputeTime: number\n}\n\nexport interface FlameInfo {\n vertexCount: number\n faceCount: number\n jointCount: number\n}\n\nexport interface CharacterInfo {\n pointCount: number\n hasAnimation: boolean\n}\n\ninterface ProgressCallback {\n (info: { message: string, progress: number }): void\n}\n\nexport interface FlameParams {\n shape_params?: number[]\n expr_params?: number[]\n rotation?: number[]\n translation?: number[]\n neck_pose?: number[]\n jaw_pose?: number[]\n eyes_pose?: number[]\n eyelid?: number[]\n has_eyelid?: boolean\n}\n\nexport class AvatarCoreAdapter {\n // 配置\n private options: Required<Omit<AvatarCoreOptions, 'wasmConfig'>> & { wasmConfig?: WasmModuleConfig }\n private wasmConfig: WasmModuleConfig\n\n // 核心组件\n // eslint-disable-next-line ts/no-explicit-any\n private wasmModule: any\n private memoryManager: AvatarCoreMemoryManager | null\n\n // Avatar Core handles\n private coreHandle: number | null\n private characterHandle: number | null\n private animationHandle: number | null\n private totalFrames: number | null\n\n // 状态管理\n private isInitialized: boolean\n private isCharacterLoaded: boolean\n\n // C API 函数包装\n // eslint-disable-next-line ts/no-explicit-any\n private api: any\n\n // 性能监控\n private performanceMetrics: PerformanceMetrics\n public wasmTime = 0 // 最近一次 WASM 计算耗时\n\n // 错误码映射\n private errorCodes: Record<number, string>\n\n // 模型信息\n private flameInfo?: FlameInfo\n private characterInfo?: CharacterInfo\n\n constructor(options: AvatarCoreOptions = {}) {\n this.options = {\n logLevel: 'basic',\n enableValidation: true,\n enablePerformanceMetrics: true,\n retryCount: 3,\n baseAssetsPath: '/',\n modelFolder: '3dgs',\n wasmPath: './wasm/avatar_core_wasm.wasm',\n ...options,\n }\n\n // Store wasmConfig for use in loadWASMModule\n this.wasmConfig = options.wasmConfig || { baseUrl: undefined }\n\n // 核心组件\n this.wasmModule = null\n this.memoryManager = null\n\n // Avatar Core handles\n this.coreHandle = null\n this.characterHandle = null\n this.animationHandle = null\n this.totalFrames = null // 缓存动画总帧数\n\n // 状态管理\n this.isInitialized = false\n this.isCharacterLoaded = false\n\n // C API 函数包装\n this.api = {}\n\n // 性能监控\n this.performanceMetrics = {\n initTime: 0,\n loadTime: 0,\n computeFrames: 0,\n totalComputeTime: 0,\n averageComputeTime: 0,\n }\n\n // 错误码映射\n this.errorCodes = {\n 0: 'AVATAR_SUCCESS',\n 1: 'AVATAR_ERROR_INVALID_PARAMETER',\n 2: 'AVATAR_ERROR_MEMORY_ALLOCATION',\n 3: 'AVATAR_ERROR_INVALID_DATA_FORMAT',\n 4: 'AVATAR_ERROR_CHARACTER_NOT_FOUND',\n 5: 'AVATAR_ERROR_ANIMATION_NOT_FOUND',\n 6: 'AVATAR_ERROR_COMPUTATION_FAILED',\n }\n }\n\n /**\n * 加载 WASM 模块并设置 API\n * 每次都创建全新的 WASM 实例,确保 C++ 内存是干净的\n * \n * 注意:这里使用动态 import() 导入 WASM 模块。\n * Vite 在构建时会自动为 WASM 文件和 JS glue 代码添加 hash(如 avatar_core_wasm-CxWuw7eS.wasm),\n * 确保浏览器缓存与版本一致,不会有缓存问题。\n * \n * Hash 的作用机制:\n * - WASM 文件内容变化 → hash 自动变化 → URL 变化 → 浏览器拉取新版本\n * - WASM 文件内容不变 → hash 保持不变 → URL 不变 → 浏览器使用缓存\n * - Emscripten 生成的 JS 内部会使用 hard-coded 的 hash 路径加载 .wasm 文件\n */\n async loadWASMModule(): Promise<void> {\n try {\n // 静态导入 WASM 模块(Vite 会正确处理路径)\n // @ts-expect-error - WASM module import\n const { default: AvatarCoreModule } = await import('./avatar_core_wasm.js')\n\n // 如果有 wasmConfig,传递给 WASM 模块初始化\n if (this.wasmConfig && Object.keys(this.wasmConfig).length > 0) {\n this.wasmModule = await AvatarCoreModule(this.wasmConfig)\n }\n else {\n this.wasmModule = await AvatarCoreModule()\n }\n\n // 验证 WASM 模块\n this.validateWASMModule()\n\n // 初始化内存管理器\n this.memoryManager = new AvatarCoreMemoryManager(this.wasmModule)\n\n // 设置 C API 函数\n this.setupCAPIFunctions()\n\n logger.log('✅ Created new WASM instance with clean C++ memory')\n }\n catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`Failed to load WASM module: ${errorMessage}`)\n }\n }\n\n /**\n * 验证 WASM 模块功能\n */\n private validateWASMModule(): void {\n // 验证基础函数\n const requiredFunctions = ['cwrap', '_malloc', '_free', 'setValue', 'getValue', 'writeArrayToMemory']\n\n for (const funcName of requiredFunctions) {\n if (typeof this.wasmModule[funcName] !== 'function') {\n throw new TypeError(`WASM module missing required function: ${funcName}`)\n }\n }\n\n // 初始化内存视图\n this.initializeMemoryViews()\n }\n\n /**\n * 初始化内存视图\n */\n private initializeMemoryViews(): void {\n try {\n // 测试内存分配和读写\n const testPtr = this.wasmModule._malloc(4)\n if (!testPtr) {\n throw new Error('Memory allocation test failed')\n }\n\n const testValue = 0x12345678\n this.wasmModule.setValue(testPtr, testValue, 'i32')\n const readValue = this.wasmModule.getValue(testPtr, 'i32')\n\n if (readValue !== testValue) {\n throw new Error('Memory read/write test failed')\n }\n\n this.wasmModule._free(testPtr)\n }\n catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`Memory system initialization failed: ${errorMessage}`)\n }\n }\n\n /**\n * 设置 C API 函数包装\n */\n private setupCAPIFunctions(): void {\n this.api = {\n // 核心系统管理\n initialize: this.wasmModule.cwrap('avatar_core_initialize', 'number', ['number']), // 返回 handle\n release: this.wasmModule.cwrap('avatar_core_release', null, ['number']),\n getVersion: this.wasmModule.cwrap('avatar_core_get_version', 'string', []),\n getErrorString: this.wasmModule.cwrap('avatar_core_get_error_string', 'string', ['number']),\n resetProcessorForReuse: this.wasmModule.cwrap('avatar_core_reset_processor_for_reuse', null, ['number']),\n // 角色管理\n loadCharacter: this.wasmModule.cwrap('avatar_core_load_character', 'number', ['number', 'number']), // 返回 handle\n removeCharacter: this.wasmModule.cwrap('avatar_core_remove_character', null, ['number', 'number']),\n getCharacterInfo: this.wasmModule.cwrap('avatar_core_get_character_info', 'number', ['number', 'number', 'number']),\n\n // 动画管理\n loadAnimation: this.wasmModule.cwrap('avatar_core_load_animation', 'number', ['number', 'number']),\n parseAnimationFramesFromFile: this.wasmModule.cwrap('avatar_core_parse_animation_frames_from_file', 'number', ['number', 'number', 'number']),\n getAnimationFrameCount: this.wasmModule.cwrap('avatar_core_get_animation_frame_count', 'number', ['number', 'number']),\n getFrameFromAnimation: this.wasmModule.cwrap('avatar_core_get_frame_from_animation', 'number', ['number', 'number', 'number']),\n removeAnimation: this.wasmModule.cwrap('avatar_core_remove_animation', null, ['number', 'number']),\n\n // 帧计算 (Flat 格式 - GPU 优化版本,协方差预计算)\n computeFrameFlat: this.wasmModule.cwrap('avatar_core_compute_frame_as_splat_points_flat', 'number', ['number', 'number', 'number', 'number']), // 返回错误码\n freeSplatPointsFlat: this.wasmModule.cwrap('avatar_core_free_splat_points_flat', null, ['number']),\n\n // Mesh 计算(用于传统 mesh 渲染)\n computeFrameAsMesh: this.wasmModule.cwrap('avatar_core_compute_frame_as_mesh', 'number', ['number', 'number', 'number', 'number']), // 返回错误码\n freeMeshData: this.wasmModule.cwrap('avatar_core_free_mesh_data', null, ['number']),\n\n // 眼部追踪(高级功能)\n setEyeTrackingConfig: this.wasmModule.cwrap('avatar_core_set_eye_tracking_config', 'number', ['number', 'number', 'number']), // core, character, config\n setGazeTarget: this.wasmModule.cwrap('avatar_core_set_gaze_target', 'number', ['number', 'number', 'number', 'number', 'number']), // core, character, x, y, z\n resetEyeTracking: this.wasmModule.cwrap('avatar_core_reset_eye_tracking', 'number', ['number']),\n\n // FLAME 信息查询\n getFlameInfo: this.wasmModule.cwrap('avatar_core_get_flame_info', 'number', ['number', 'number', 'number', 'number']),\n }\n }\n\n /**\n * 读取当前动画帧的 FlameParams(用于过渡或调试)\n */\n async getCurrentFrameParams(frameIndex: number = 0): Promise<FlameParams> {\n // 直接复用已验证的 API:getAnimationFrameParams(出参 + 错误码)\n const paramsPtr = await this.getAnimationFrameParams(frameIndex)\n try {\n const params = this.memoryManager!.readFlameParams(paramsPtr)\n return params as FlameParams\n }\n finally {\n this.wasmModule._free(paramsPtr)\n }\n }\n\n /**\n * 初始化 Avatar Core 核心\n */\n private async initializeAvatarCore(templateResources: TemplateResources): Promise<void> {\n try {\n // 创建模板配置结构体\n const configPtr = this.memoryManager!.createTemplateConfig(templateResources)\n\n // 调用 avatar_core_initialize - 返回 handle,失败时返回 NULL\n const coreHandle = this.api.initialize(configPtr)\n\n if (!coreHandle) {\n throw new Error('avatar_core_initialize returned NULL - initialization failed')\n }\n\n // 保存 core handle\n this.coreHandle = coreHandle\n\n // 查询 FLAME 模型信息\n await this.queryFlameInfo()\n }\n catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`Failed to initialize Avatar Core: ${errorMessage}`)\n }\n }\n\n /**\n * 加载模板资源(从预加载的 ArrayBuffers)\n */\n async loadTemplateResourcesFromBuffers(templateResources: Record<string, ArrayBuffer>): Promise<boolean> {\n // Convert Record<string, ArrayBuffer> to TemplateResources format\n const formattedResources: TemplateResources = {\n flameModel: templateResources.flameModel || templateResources['model.pb'] || new ArrayBuffer(0),\n flameTemplate: templateResources.flameTemplate || templateResources['flame_template.pb'] || new ArrayBuffer(0),\n teethPb: templateResources.teethPb || templateResources['teeth.pb'] || new ArrayBuffer(0),\n teethNpz: templateResources.teethNpz || templateResources['teeth.npz'] || new ArrayBuffer(0),\n }\n if (!this.wasmModule || !this.memoryManager) {\n throw new Error('WASM module not loaded')\n }\n\n // 如果已经初始化,跳过\n if (this.isInitialized && this.coreHandle) {\n return true\n }\n\n try {\n // 初始化 Avatar Core\n await this.initializeAvatarCore(formattedResources)\n this.isInitialized = true\n return true\n }\n catch (error) {\n logger.errorWithError('❌ Template resources loading failed:', error)\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`Template resources loading failed: ${errorMessage}`)\n }\n }\n\n /**\n * 加载角色数据(从预加载的 ArrayBuffers)\n */\n async loadCharacterFromBuffers(\n shapeBuffer: ArrayBuffer,\n pointCloudBuffer: ArrayBuffer,\n ): Promise<boolean> {\n if (!this.isInitialized) {\n throw new Error('Avatar Core not initialized')\n }\n\n const startTime = performance.now()\n\n try {\n // 创建角色数据结构体\n const dataPtr = this.memoryManager!.createCharacterData(\n shapeBuffer,\n pointCloudBuffer,\n )\n\n // 调用 avatar_core_load_character - 返回 handle,失败时返回 NULL\n const characterHandle = this.api.loadCharacter(this.coreHandle, dataPtr)\n\n if (!characterHandle) {\n throw new Error('avatar_core_load_character returned NULL - character loading failed')\n }\n\n // 保存 character handle\n this.characterHandle = characterHandle\n this.isCharacterLoaded = true\n\n // 查询角色信息\n await this.queryCharacterInfo()\n\n this.performanceMetrics.loadTime = performance.now() - startTime\n\n return true\n }\n catch (error) {\n logger.errorWithError('❌ Character loading failed:', error)\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`Character loading failed: ${errorMessage}`)\n }\n }\n\n private async loadAnimationFromData(animData: ArrayBuffer): Promise<number> {\n const animPtr = this.memoryManager!.allocateAndCopy(animData)\n const animStruct = this.wasmModule._malloc(8)\n this.wasmModule.setValue(animStruct, animPtr.ptr, 'i32')\n this.wasmModule.setValue(animStruct + 4, animPtr.size, 'i32')\n\n const handle = this.api.loadAnimation(this.coreHandle, animStruct)\n this.wasmModule._free(animStruct)\n\n if (!handle) {\n throw new Error('avatar_core_load_animation returned NULL')\n }\n\n return handle\n }\n\n /**\n * Load animation from ArrayBuffer (for CDN-based dynamic loading)\n */\n async loadAnimationFromBuffer(animData: ArrayBuffer): Promise<number> {\n if (!this.isInitialized) {\n throw new Error('Avatar Core not initialized')\n }\n\n try {\n this.animationHandle = await this.loadAnimationFromData(animData)\n await this.getAnimationTotalFrames()\n return this.animationHandle\n }\n catch (error) {\n logger.errorWithError('❌ Failed to load animation from buffer:', error)\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`Failed to load animation from buffer: ${errorMessage}`)\n }\n }\n\n async switchAnimationFile(animationFile: string): Promise<number> {\n if (!this.isInitialized) {\n throw new Error('Avatar Core not initialized')\n }\n\n try {\n const animationPath = `${this.options.baseAssetsPath}/${this.options.modelFolder}/${animationFile}`\n const fullUrl = this.wasmConfig.baseUrl ? `${this.wasmConfig.baseUrl}${animationPath}` : animationPath\n const response = await fetch(fullUrl)\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n\n const animData = await response.arrayBuffer()\n const newHandle = await this.loadAnimationFromData(animData)\n\n this.animationHandle = newHandle\n this.totalFrames = null\n await this.getAnimationTotalFrames()\n\n return this.totalFrames!\n }\n catch (error) {\n logger.errorWithError(`❌ Failed to switch animation to ${animationFile}:`, error)\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`Failed to switch animation: ${errorMessage}`)\n }\n }\n\n /**\n * 获取动画总帧数\n */\n async getAnimationTotalFrames(): Promise<number> {\n if (this.totalFrames !== null) {\n return this.totalFrames\n }\n\n if (!this.animationHandle) {\n throw new Error('No animation loaded')\n }\n\n try {\n // 分配输出参数内存\n const frameCountPtr = this.wasmModule._malloc(4) // uint32_t\n\n // 调用 avatar_core_get_animation_frame_count\n const result = this.api.getAnimationFrameCount(this.animationHandle, frameCountPtr)\n\n if (result !== 0) { // AVATAR_SUCCESS = 0\n this.wasmModule._free(frameCountPtr)\n const errorMsg = this.api.getErrorString(result)\n throw new Error(`Failed to get animation frame count: ${errorMsg}`)\n }\n\n // 读取帧数\n const frameCount = this.wasmModule.getValue(frameCountPtr, 'i32') as number\n this.wasmModule._free(frameCountPtr)\n this.totalFrames = frameCount\n\n return frameCount\n }\n catch (error) {\n logger.errorWithError('❌ Failed to get animation frame count:', error)\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`Failed to get animation frame count: ${errorMessage}`)\n }\n }\n\n /**\n * 从动画中获取指定帧的参数\n */\n async getAnimationFrameParams(frameIndex: number = 0): Promise<number> {\n if (!this.animationHandle) {\n throw new Error('No animation loaded')\n }\n\n // 验证帧索引范围,循环播放\n if (this.totalFrames !== null && this.totalFrames > 0) {\n frameIndex = frameIndex % this.totalFrames\n if (frameIndex < 0)\n frameIndex += this.totalFrames\n }\n\n try {\n // 分配AvatarFlameParams结构体内存 (118个float = 472字节)\n const paramsPtr = this.wasmModule._malloc(118 * 4)\n\n // 调用avatar_core_get_frame_from_animation\n const result = this.api.getFrameFromAnimation(this.animationHandle, frameIndex, paramsPtr)\n\n if (result !== 0) { // AVATAR_SUCCESS = 0\n this.wasmModule._free(paramsPtr)\n const errorMsg = this.api.getErrorString(result)\n throw new Error(`Failed to get frame ${frameIndex}: ${errorMsg}`)\n }\n\n return paramsPtr // 返回参数指针,由computeFrame使用\n }\n catch (error) {\n logger.errorWithError(`❌ Failed to get animation frame ${frameIndex}:`, error)\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`Failed to get animation frame ${frameIndex}: ${errorMessage}`)\n }\n }\n\n /**\n * 设置眼部追踪配置(对齐 app 实现)\n */\n async setEyeTrackingConfig(config: {\n enabled: boolean\n auto_eyelid_adjustment?: boolean\n eyelid_threshold?: number\n }): Promise<boolean> {\n if (!this.isCharacterLoaded) {\n throw new Error('Character not loaded')\n }\n try {\n // struct { bool enabled; bool auto_eyelid_adjustment; float eyelid_threshold; }\n const configPtr = this.wasmModule._malloc(12)\n this.wasmModule.setValue(configPtr, config.enabled ? 1 : 0, 'i32')\n this.wasmModule.setValue(configPtr + 4, config.auto_eyelid_adjustment !== false ? 1 : 0, 'i32')\n this.wasmModule.setValue(configPtr + 8, config.eyelid_threshold || 0.2, 'float')\n\n const result = this.api.setEyeTrackingConfig(this.coreHandle, this.characterHandle, configPtr)\n this.wasmModule._free(configPtr)\n this.checkError(result, 'avatar_core_set_eye_tracking_config')\n return true\n }\n catch (error) {\n logger.errorWithError('❌ Failed to set eye tracking config:', error)\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`Failed to set eye tracking config: ${errorMessage}`)\n }\n }\n\n /**\n * 设置眼部追踪目标(高级功能)\n */\n async setGazeTarget(x: number, y: number, z: number): Promise<boolean> {\n if (!this.isCharacterLoaded) {\n throw new Error('Character not loaded')\n }\n\n try {\n const result = this.api.setGazeTarget(this.coreHandle, this.characterHandle, x, y, z)\n this.checkError(result, 'avatar_core_set_gaze_target')\n\n return true\n }\n catch (error) {\n logger.errorWithError('❌ Failed to set gaze target:', error)\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`Failed to set gaze target: ${errorMessage}`)\n }\n }\n\n /**\n * 重置眼部追踪\n */\n async resetEyeTracking(): Promise<boolean> {\n if (!this.isCharacterLoaded) {\n throw new Error('Character not loaded')\n }\n\n try {\n const result = this.api.resetEyeTracking(this.coreHandle)\n this.checkError(result, 'avatar_core_reset_eye_tracking')\n\n return true\n }\n catch (error) {\n logger.errorWithError('❌ Failed to reset eye tracking:', error)\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`Failed to reset eye tracking: ${errorMessage}`)\n }\n }\n\n /**\n * 查询 FLAME 模型信息\n */\n private async queryFlameInfo(): Promise<void> {\n try {\n // 分配输出参数\n const vertexCountPtr = this.wasmModule._malloc(4)\n const faceCountPtr = this.wasmModule._malloc(4)\n const jointCountPtr = this.wasmModule._malloc(4)\n\n const result = this.api.getFlameInfo(\n this.coreHandle,\n vertexCountPtr,\n faceCountPtr,\n jointCountPtr,\n )\n\n this.checkError(result, 'avatar_core_get_flame_info')\n\n // 读取结果\n const vertexCount = this.wasmModule.getValue(vertexCountPtr, 'i32')\n const faceCount = this.wasmModule.getValue(faceCountPtr, 'i32')\n const jointCount = this.wasmModule.getValue(jointCountPtr, 'i32')\n\n // 释放内存\n this.wasmModule._free(vertexCountPtr)\n this.wasmModule._free(faceCountPtr)\n this.wasmModule._free(jointCountPtr)\n\n this.flameInfo = { vertexCount, faceCount, jointCount }\n }\n catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n logger.errorWithError('❌ Failed to query FLAME info:', errorMessage)\n }\n }\n\n /**\n * 查询角色信息\n */\n private async queryCharacterInfo(): Promise<void> {\n try {\n const pointCountPtr = this.wasmModule._malloc(4)\n const hasAnimationPtr = this.wasmModule._malloc(1)\n\n const result = this.api.getCharacterInfo(\n this.characterHandle,\n pointCountPtr,\n hasAnimationPtr,\n )\n\n this.checkError(result, 'avatar_core_get_character_info')\n\n const pointCount = this.wasmModule.getValue(pointCountPtr, 'i32')\n const hasAnimation = this.wasmModule.getValue(hasAnimationPtr, 'i8') !== 0\n\n this.wasmModule._free(pointCountPtr)\n this.wasmModule._free(hasAnimationPtr)\n\n this.characterInfo = { pointCount, hasAnimation }\n }\n catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n logger.errorWithError('❌ Failed to query character info:', errorMessage)\n }\n }\n\n /**\n * 检查错误码并抛出异常\n */\n private checkError(errorCode: number, functionName: string): void {\n if (errorCode !== 0) {\n const errorName = this.errorCodes[errorCode] || `UNKNOWN_ERROR_${errorCode}`\n const errorMessage = this.api.getErrorString(errorCode)\n logger.errorWithError(`❌ ${functionName} failed: code=${errorCode}, name=${errorName}, message=${errorMessage}`, new Error(`${functionName} failed: ${errorName} - ${errorMessage}`))\n throw new Error(`${functionName} failed: ${errorName} - ${errorMessage}`)\n }\n }\n\n /**\n * 更新进度回调\n */\n private async updateProgress(callback: ProgressCallback | null, message: string, progress: number): Promise<void> {\n if (callback && typeof callback === 'function') {\n callback({ message, progress })\n }\n }\n\n /**\n * 获取性能指标\n */\n getPerformanceMetrics(): PerformanceMetrics & {\n memoryStats?: ReturnType<AvatarCoreMemoryManager['getMemoryStats']>\n flameInfo?: FlameInfo\n characterInfo?: CharacterInfo\n version?: string\n } {\n return {\n ...this.performanceMetrics,\n memoryStats: this.memoryManager?.getMemoryStats(),\n flameInfo: this.flameInfo,\n characterInfo: this.characterInfo,\n version: this.api.getVersion?.() || 'unknown',\n }\n }\n\n /**\n * 释放当前角色和动画资源(但保留 core)\n */\n releaseCurrentCharacter(): void {\n try {\n // 先清理动画句柄(如果存在)\n if (this.animationHandle && this.coreHandle) {\n this.api.removeAnimation(this.coreHandle, this.animationHandle)\n this.animationHandle = null\n this.totalFrames = null\n }\n\n // 释放角色(会自动清理关联的动画资源)\n if (this.characterHandle && this.coreHandle) {\n this.api.removeCharacter(this.coreHandle, this.characterHandle)\n this.characterHandle = null\n this.isCharacterLoaded = false\n }\n\n this.api.resetProcessorForReuse(this.coreHandle)\n\n // 清理内存\n if (this.memoryManager) {\n this.memoryManager.cleanup()\n }\n\n // 重置 isCharacterLoaded 状态,但不设置 isInitialized = false(保持 core 初始化状态)\n }\n catch (error) {\n logger.errorWithError('❌ Failed to release character:', error)\n }\n }\n\n /**\n * 释放所有资源(包括 core)\n */\n release(): void {\n try {\n // 先释放角色和动画\n this.releaseCurrentCharacter()\n\n // 释放 Core\n if (this.coreHandle) {\n this.api.release(this.coreHandle)\n this.coreHandle = null\n }\n\n // 清理内存\n if (this.memoryManager) {\n this.memoryManager.cleanup()\n }\n\n this.isInitialized = false\n\n if (this.wasmModule.HEAPU8) {\n // 清理可能的缓存\n if (this.wasmModule.HEAPU8.buffer) {\n // 强制垃圾回收(如果支持)\n if (typeof gc !== 'undefined') {\n gc()\n }\n }\n }\n }\n catch (error) {\n logger.errorWithError('❌ Failed to release resources:', error)\n }\n }\n\n /**\n * 兼容性接口:提供与 FlameComplete3DGSManager 相同的接口\n */\n\n // 兼容 loadFlameModel\n // eslint-disable-next-line ts/no-explicit-any\n async loadFlameModel(_modelData: any): Promise<boolean> {\n // Avatar Core 通过初始化时加载模板资源,这里是空实现\n return true\n }\n\n // 兼容 load3DGSData\n // eslint-disable-next-line ts/no-explicit-any\n async load3DGSData(_original3DGSPoints: any, _binding: any, _flameFaces: any): Promise<boolean> {\n // Avatar Core 通过 loadCharacter 处理,这里是空实现\n return true\n }\n\n /**\n * 计算帧并返回 GPU 友好的 flat 格式(零拷贝,协方差预计算)\n * 🚀 性能优化版本:\n * - C++ 预计算协方差矩阵\n * - 零拷贝直接访问 WASM 内存http://localhost:3000/us/\n * - 直接输出 GPU 格式 [pos3, color4, cov6]\n */\n async computeCompleteFrameFlat(params?: { frameIndex?: number }): Promise<Float32Array | null> {\n if (!this.isCharacterLoaded) {\n throw new Error('Character not loaded')\n }\n\n const startTime = performance.now()\n let outputPtr: number | null = null\n let paramsPtr: number | null = null\n\n try {\n const frameIndex = params?.frameIndex ?? 0\n\n // 获取指定帧的参数\n paramsPtr = await this.getAnimationFrameParams(frameIndex)\n\n // 分配输出结构体\n outputPtr = this.wasmModule._malloc(16) // AvatarSplatPointFlatArray 大小\n\n // 调用 flat 版本的计算函数\n const result = this.api.computeFrameFlat(\n this.coreHandle,\n this.characterHandle,\n paramsPtr,\n outputPtr,\n )\n\n this.checkError(result, 'avatar_core_compute_frame_as_splat_points_flat')\n\n // 读取结果(已经是复制的数据,无需再次复制)\n const flatData = this.memoryManager!.readSplatPointFlatArray(outputPtr!)\n\n // 更新性能指标\n const computeTime = performance.now() - startTime\n this.wasmTime = computeTime // 记录最近一次耗时\n this.performanceMetrics.computeFrames++\n this.performanceMetrics.totalComputeTime += computeTime\n this.performanceMetrics.averageComputeTime\n = this.performanceMetrics.totalComputeTime / this.performanceMetrics.computeFrames\n\n return flatData\n }\n catch (error) {\n logger.errorWithError('❌ computeCompleteFrameFlat failed:', error)\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`computeCompleteFrameFlat failed: ${errorMessage}`)\n }\n finally {\n // 清理内存(必须按正确顺序)\n if (outputPtr !== null) {\n // 释放 C++ 分配的点云数据\n this.api.freeSplatPointsFlat(outputPtr)\n // 释放输出结构体\n this.wasmModule._free(outputPtr)\n }\n if (paramsPtr !== null) {\n this.wasmModule._free(paramsPtr)\n }\n }\n }\n\n /**\n * 计算帧并返回 GPU 友好的 flat 格式(从 FLAME 参数)\n * 🔑 用于 Realtime: 接受自定义 FLAME 参数并计算 Splat\n */\n async computeFrameFlatFromParams(flameParams: FlameParams): Promise<Float32Array | null> {\n if (!this.isCharacterLoaded) {\n throw new Error('Character not loaded')\n }\n\n const startTime = performance.now()\n let outputPtr: number | null = null\n let paramsPtr: number | null = null\n\n try {\n // 创建参数结构体\n paramsPtr = this.memoryManager!.createFlameParams(flameParams)\n\n // 分配输出结构体\n outputPtr = this.wasmModule._malloc(16) // AvatarSplatPointFlatArray 大小\n\n // 调用 flat 版本的计算函数\n const result = this.api.computeFrameFlat(\n this.coreHandle,\n this.characterHandle,\n paramsPtr,\n outputPtr,\n )\n\n this.checkError(result, 'avatar_core_compute_frame_as_splat_points_flat')\n\n // 读取结果\n const flatData = this.memoryManager!.readSplatPointFlatArray(outputPtr!)\n\n // 更新性能指标\n const computeTime = performance.now() - startTime\n this.wasmTime = computeTime\n this.performanceMetrics.computeFrames++\n this.performanceMetrics.totalComputeTime += computeTime\n this.performanceMetrics.averageComputeTime\n = this.performanceMetrics.totalComputeTime / this.performanceMetrics.computeFrames\n\n return flatData\n }\n catch (error) {\n logger.errorWithError('❌ computeFrameFlatFromParams failed:', error)\n const errorMessage = error instanceof Error ? error.message : String(error)\n throw new Error(`computeFrameFlatFromParams failed: ${errorMessage}`)\n }\n finally {\n // 清理内存\n if (outputPtr !== null) {\n this.api.freeSplatPointsFlat(outputPtr)\n this.wasmModule._free(outputPtr)\n }\n if (paramsPtr !== null) {\n this.wasmModule._free(paramsPtr)\n }\n }\n }\n}\n","/**\n * AvatarKit:负责 SDK 初始化和配置\n * 所有公开接口全部采用 Class/Static Func;无需开发者访问单例/实例化\n */\n\nimport type { Configuration } from '../types'\n\nimport { clearSdkConfigCache, fetchSdkConfig } from '../config/sdk-config-loader'\nimport { Environment } from '../types'\nimport { logger } from '../utils/logger'\nimport { AvatarCoreAdapter } from '../wasm/avatarCoreAdapter'\n\nexport class AvatarKit {\n private static _isInitialized = false\n private static _configuration: Configuration | null = null\n private static _sessionToken: string | null = null\n private static _userId: string | null = null\n private static readonly _version: string = typeof __SDK_VERSION__ !== 'undefined' ? __SDK_VERSION__ : '1.0.0'\n private static _avatarCore: AvatarCoreAdapter | null = null\n private static _dynamicSdkConfig: Partial<Record<Environment, string>> | null = null\n\n /**\n * SDK 初始化\n * @param appId 前端需要在 HTTP Headers 和 WebSocket Headers 中都带上\n * @param configuration 配置参数\n */\n static async initialize(appId: string, configuration: Configuration): Promise<void> {\n try {\n if (this._isInitialized) {\n // 如果已经初始化,只需要更新配置\n logger.log(`[AvatarKit] Re-initializing with new environment: ${configuration.environment}`)\n this._configuration = configuration\n return\n }\n\n logger.log(`[AvatarKit] Initializing with appId: ${appId}, environment: ${configuration.environment}`)\n\n // 1. 初始化配置\n this._configuration = configuration\n\n // 2. 从配置接口获取sdkApiBaseUrl(与WASM初始化并行)\n this._fetchSdkConfig().catch((err) => {\n logger.warn('Failed to fetch SDK config from remote, using defaults:', err instanceof Error ? err.message : String(err))\n })\n\n // 3. 初始化WASM模块\n await this.initializeWASMModule()\n\n this._isInitialized = true\n\n logger.log(`[AvatarKit] Successfully initialized`)\n }\n catch (error) {\n logger.error('Failed to initialize AvatarKit:', error instanceof Error ? error.message : String(error))\n throw error\n }\n }\n\n /**\n * 初始化WASM模块(跟随整个SDK生命周期)\n */\n private static async initializeWASMModule(): Promise<void> {\n try {\n logger.log('[AvatarKit] Initializing WASM module...')\n\n // 创建AvatarCoreAdapter实例\n this._avatarCore = new AvatarCoreAdapter({\n logLevel: 'basic',\n enableValidation: true,\n enablePerformanceMetrics: true,\n baseAssetsPath: '',\n wasmPath: './avatar_core_wasm.js',\n wasmConfig: {\n // Print function for debugging WASM output\n print: (text: string) => {\n logger.log(`[WASM] ${text}`)\n },\n printErr: (text: string) => {\n logger.error(`[WASM ERROR] ${text}`)\n },\n // 配置 locateFile 以确保能找到 WASM 文件\n // WASM 文件与 Emscripten JS 文件在同一目录(dist/ 根目录)\n locateFile: (path: string, prefix: string) => {\n // 如果 path 已经是完整 URL(data URL 或 http(s) URL),直接返回\n if (path.startsWith('data:') || path.startsWith('http://') || path.startsWith('https://')) {\n return path\n }\n // 确保路径拼接正确:如果 prefix 末尾没有斜杠,则添加\n return prefix.endsWith('/') ? prefix + path : `${prefix}/${path}`\n },\n },\n })\n\n // 加载WASM模块\n await this._avatarCore.loadWASMModule()\n\n logger.log('[AvatarKit] WASM module initialized successfully')\n }\n catch (error) {\n logger.error('Failed to initialize WASM module:', error instanceof Error ? error.message : String(error))\n throw new Error(`WASM module initialization failed: ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n\n /**\n * 设置 sessionToken\n * 开发者 Client -> 开发者 Server -> SP Server -> return sessionToken(最长一小时有效时间)\n * 在 WebSocket Headers 中带上,用于数字人 WebSocket 服务鉴权\n */\n static setSessionToken(token: string): void {\n this._sessionToken = token\n }\n\n /**\n * 设置 userId\n * 开发者可选接口,SDK 在日志埋点中带上\n */\n static setUserId(userId: string): void {\n this._userId = userId\n }\n\n // 只读属性\n static get isInitialized(): boolean {\n return this._isInitialized\n }\n\n static get configuration(): Configuration | null {\n return this._configuration\n }\n\n static get sessionToken(): string | null {\n return this._sessionToken\n }\n\n static get userId(): string | null {\n return this._userId\n }\n\n static get version(): string {\n return this._version\n }\n\n /**\n * 获取AvatarCore实例(仅供 SDK 内部使用)\n * @internal\n */\n static getAvatarCore(): AvatarCoreAdapter | null {\n return this._avatarCore\n }\n\n /**\n * 清理资源\n */\n static cleanup(): void {\n if (!this._isInitialized) {\n return\n }\n\n try {\n if (this._avatarCore) {\n this._avatarCore.release()\n this._avatarCore = null\n }\n\n this._configuration = null\n this._sessionToken = null\n this._userId = null\n this._dynamicSdkConfig = null\n this._isInitialized = false\n\n clearSdkConfigCache()\n\n logger.log('[AvatarKit] Cleanup completed')\n }\n catch (error) {\n logger.error('Failed to cleanup AvatarKit:', error instanceof Error ? error.message : String(error))\n }\n }\n\n /**\n * 从远程配置接口获取SDK配置(已简化,逻辑移到 config/sdk-config-loader.ts)\n */\n private static async _fetchSdkConfig(): Promise<void> {\n try {\n this._dynamicSdkConfig = await fetchSdkConfig(this._version)\n }\n catch (error) {\n logger.warn('Failed to fetch SDK config from remote, using defaults:', error instanceof Error ? error.message : String(error))\n // 不抛出错误,使用默认配置\n }\n }\n\n /**\n * 获取环境配置(对齐 web 应用的 region-config)\n */\n static getEnvironmentConfig(): {\n sdkApiBaseUrl: string\n realtimeApiBaseUrl: string\n realtimeWsUrl: string\n driveningressWsUrl: string\n } {\n if (!this._configuration) {\n throw new Error('AvatarKit not initialized')\n }\n\n // 默认配置(降级方案)\n const defaultConfigs: Record<Environment, { sdkApiBaseUrl: string, realtimeApiBaseUrl: string, realtimeWsUrl: string, driveningressWsUrl: string }> = {\n [Environment.cn]: {\n sdkApiBaseUrl: 'https://api.spatialwalk.top',\n realtimeApiBaseUrl: 'https://enjoi.spatialwalk.top',\n realtimeWsUrl: 'wss://enjoi.spatialwalk.top/v1/realtime',\n driveningressWsUrl: 'wss://api.spatialwalk.top/v1/driveningress/websocket',\n },\n [Environment.us]: {\n sdkApiBaseUrl: 'https://api.spatialwalk.cloud',\n realtimeApiBaseUrl: 'https://enjoi.spatialwalk.cloud',\n realtimeWsUrl: 'wss://enjoi.spatialwalk.cloud/v1/realtime',\n driveningressWsUrl: 'wss://api.spatialwalk.cloud/v1/driveningress/websocket',\n },\n [Environment.test]: {\n sdkApiBaseUrl: 'https://api-test.spatialwalk.top',\n realtimeApiBaseUrl: 'https://enjoi-test.spatialwalk.top',\n realtimeWsUrl: 'wss://enjoi-test.spatialwalk.top/v1/realtime',\n driveningressWsUrl: 'wss://api-test.spatialwalk.top/v1/driveningress/websocket',\n },\n }\n\n const defaultConfig = defaultConfigs[this._configuration.environment]\n if (!defaultConfig) {\n throw new Error('Unknown environment')\n }\n\n // 如果已获取动态配置,使用动态配置的sdkApiBaseUrl,否则使用默认值\n const sdkApiBaseUrl = this._dynamicSdkConfig?.[this._configuration.environment] || defaultConfig.sdkApiBaseUrl\n\n return {\n sdkApiBaseUrl,\n realtimeApiBaseUrl: defaultConfig.realtimeApiBaseUrl,\n realtimeWsUrl: defaultConfig.realtimeWsUrl,\n driveningressWsUrl: defaultConfig.driveningressWsUrl,\n }\n }\n}\n","/**\n * Error Utility Functions\n * Provides consistent error handling and formatting across the application\n */\n\n/**\n * Convert unknown error to a readable error message string\n *\n * @param err - Unknown error object (could be Error, string, object, etc.)\n * @returns Formatted error message string\n *\n * @example\n * try {\n * riskyOperation()\n * } catch (err) {\n * const message = errorToMessage(err)\n * logger.error('Operation failed:', message)\n * }\n */\nexport function errorToMessage(err: unknown): string {\n if (err instanceof Error) {\n return err.message\n }\n\n if (typeof err === 'string') {\n return err\n }\n\n if (typeof err === 'object' && err !== null) {\n // Try to extract message property if it exists\n if ('message' in err && typeof err.message === 'string') {\n return err.message\n }\n\n // Try to stringify object\n try {\n return JSON.stringify(err)\n }\n catch {\n return String(err)\n }\n }\n\n return String(err)\n}\n\n/**\n * Convert unknown error to a detailed error message with stack trace (for logging)\n *\n * @param err - Unknown error object\n * @returns Detailed error message with stack if available\n */\nexport function errorToDetailedMessage(err: unknown): string {\n if (err instanceof Error) {\n return err.stack || `${err.name}: ${err.message}`\n }\n\n return errorToMessage(err)\n}\n","/**\n * PostHog Error & Event Tracking Utility\n *\n * Centralized tracking for realtime mode errors, warnings, and events.\n * Provides type-safe event tracking with privacy-aware property filtering.\n *\n * Environment-aware tracking:\n * - Development (DEV=true): Tracking disabled for faster development\n * - Test (VITE_ENV_TEST=true): Full detailed tracking enabled\n * - Production (default): Minimal tracking without verbose debug info\n */\n\nimport posthog from 'posthog-js'\n\nimport { APP_CONFIG } from '../config/app-config'\nimport { POSTHOG_TRACK_EVENTS } from '../config/constants'\n\n/**\n * Check if detailed tracking is enabled\n * Detailed tracking is enabled in test environments but disabled in production\n * Includes URL parameter check (debug=1)\n */\nfunction shouldTrackDetails(): boolean {\n return !APP_CONFIG.debug\n}\n\n/**\n * Event categories for organizing telemetry data\n */\nexport type EventCategory\n = | 'connection'\n | 'audio'\n | 'vad'\n | 'sync'\n | 'playback'\n | 'wasm'\n | 'rendering'\n | 'user_action'\n\n/**\n * Base properties for all events\n */\ninterface BaseEventProperties {\n timestamp: number\n category: EventCategory\n environment: string\n [key: string]: unknown\n}\n\n/**\n * Connection-related event properties\n */\ninterface ConnectionEventProperties extends BaseEventProperties {\n category: 'connection'\n character_id?: string\n retry_count?: number\n error_message?: string\n duration_ms?: number\n websocket_state?: string\n}\n\n/**\n * Audio-related event properties\n */\ninterface AudioEventProperties extends BaseEventProperties {\n category: 'audio'\n device_type?: 'microphone' | 'speaker'\n sample_rate?: number\n buffer_size?: number\n error_message?: string\n permission_granted?: boolean\n}\n\n/**\n * VAD-related event properties\n */\ninterface VADEventProperties extends BaseEventProperties {\n category: 'vad'\n vad_state?: 'initializing' | 'ready' | 'active' | 'error'\n error_message?: string\n duration_ms?: number\n blocked_reason?: string\n}\n\n/**\n * Sync-related event properties\n */\ninterface SyncEventProperties extends BaseEventProperties {\n category: 'sync'\n buffer_duration_ms?: number\n drift_ms?: number\n session_id?: string\n audio_chunks?: number\n flame_keyframes?: number\n error_message?: string\n}\n\n/**\n * Playback-related event properties\n */\ninterface PlaybackEventProperties extends BaseEventProperties {\n category: 'playback'\n session_id?: string\n duration_ms?: number\n chunks_played?: number\n error_message?: string\n}\n\n/**\n * WASM-related event properties\n */\ninterface WASMEventProperties extends BaseEventProperties {\n category: 'wasm'\n operation?: 'compute' | 'load' | 'convert'\n error_message?: string\n duration_ms?: number\n}\n\n/**\n * Rendering-related event properties\n */\ninterface RenderingEventProperties extends BaseEventProperties {\n category: 'rendering'\n frame_count?: number\n error_message?: string\n render_mode?: string\n}\n\n/**\n * User action event properties\n */\ninterface UserActionEventProperties extends BaseEventProperties {\n category: 'user_action'\n action_type?: 'interrupt' | 'text_send' | 'speech_send' | 'vad_toggle'\n success?: boolean\n error_message?: string\n}\n\n/**\n * Union type for all event properties\n */\ntype EventProperties\n = | ConnectionEventProperties\n | AudioEventProperties\n | VADEventProperties\n | SyncEventProperties\n | PlaybackEventProperties\n | WASMEventProperties\n | RenderingEventProperties\n | UserActionEventProperties\n\n/**\n * Sanitize error messages to remove PII\n */\nfunction sanitizeErrorMessage(message: string): string {\n // Remove URLs with query parameters that might contain tokens\n return message.replace(/https?:\\/\\/\\S+\\?\\S+/g, '[URL_REDACTED]')\n}\n\n/**\n * Get environment info\n */\nfunction getEnvironment(): string {\n return import.meta.env.MODE || 'unknown'\n}\n\n/**\n * Sanitize event properties based on environment\n * In production, remove verbose debug details to reduce data volume\n */\nfunction sanitizePropertiesForEnvironment(properties: Partial<EventProperties>): Partial<EventProperties> {\n if (shouldTrackDetails()) {\n // Test/Dev: Keep all properties\n return properties\n }\n\n // Production: Remove verbose details but keep critical error info\n const sanitized = { ...properties }\n\n // Remove verbose metrics in production\n const verboseFields = ['buffer_size', 'sample_rate', 'audio_chunks', 'flame_keyframes', 'chunks_played']\n verboseFields.forEach((field) => {\n delete sanitized[field]\n })\n\n return sanitized\n}\n\n/**\n * Track a custom event with PostHog\n */\nfunction trackEvent(eventName: string, properties: Partial<EventProperties>): void {\n if (!POSTHOG_TRACK_EVENTS) {\n return\n }\n\n // Only track if PostHog is initialized\n if (!posthog.__loaded) {\n return\n }\n\n // Sanitize properties based on environment\n const sanitizedProperties = sanitizePropertiesForEnvironment(properties)\n\n // Add base properties\n const enrichedProperties: BaseEventProperties = {\n timestamp: Date.now(),\n environment: getEnvironment(),\n category: properties.category || ('connection' as EventCategory),\n ...sanitizedProperties,\n }\n\n // Sanitize error messages\n if (enrichedProperties.error_message) {\n enrichedProperties.error_message = sanitizeErrorMessage(\n enrichedProperties.error_message as string,\n )\n }\n\n posthog.capture(eventName, enrichedProperties)\n}\n\n/**\n * Connection tracking functions\n */\nexport const PostHogTracker = {\n // Connection lifecycle\n connection: {\n connectStart: (characterId: string): void => {\n trackEvent('realtime_connect_start', {\n category: 'connection',\n character_id: characterId,\n })\n },\n\n connectSuccess: (characterId: string, durationMs: number): void => {\n trackEvent('realtime_connect_success', {\n category: 'connection',\n character_id: characterId,\n duration_ms: durationMs,\n })\n },\n\n connectFailed: (characterId: string, error: string, retryCount: number = 0): void => {\n trackEvent('realtime_connect_failed', {\n category: 'connection',\n character_id: characterId,\n error_message: error,\n retry_count: retryCount,\n })\n },\n\n reconnectAttempt: (retryCount: number): void => {\n trackEvent('websocket_reconnect_attempt', {\n category: 'connection',\n retry_count: retryCount,\n })\n },\n\n reconnectFailed: (retryCount: number, error: string): void => {\n trackEvent('websocket_reconnect_failed', {\n category: 'connection',\n retry_count: retryCount,\n error_message: error,\n })\n },\n\n messageSendError: (messageType: string, error: string): void => {\n trackEvent('websocket_message_send_error', {\n category: 'connection',\n error_message: `${messageType}: ${error}`,\n })\n },\n\n messageDecodeError: (error: string): void => {\n trackEvent('websocket_message_decode_error', {\n category: 'connection',\n error_message: error,\n })\n },\n\n stateChange: (oldState: string, newState: string): void => {\n trackEvent('websocket_state_change', {\n category: 'connection',\n websocket_state: `${oldState} -> ${newState}`,\n })\n },\n },\n\n // Audio system tracking\n audio: {\n deviceAccessRequest: (deviceType: 'microphone' | 'speaker'): void => {\n trackEvent('audio_device_access_request', {\n category: 'audio',\n device_type: deviceType,\n })\n },\n\n deviceAccessGranted: (deviceType: 'microphone' | 'speaker'): void => {\n trackEvent('audio_device_access_granted', {\n category: 'audio',\n device_type: deviceType,\n permission_granted: true,\n })\n },\n\n deviceAccessDenied: (deviceType: 'microphone' | 'speaker', error: string): void => {\n trackEvent('audio_device_access_denied', {\n category: 'audio',\n device_type: deviceType,\n permission_granted: false,\n error_message: error,\n })\n },\n\n bufferUnderrun: (bufferSize: number): void => {\n trackEvent('audio_buffer_underrun', {\n category: 'audio',\n buffer_size: bufferSize,\n })\n },\n\n decodeError: (error: string): void => {\n trackEvent('audio_decode_error', {\n category: 'audio',\n error_message: error,\n })\n },\n\n contextInitFailed: (error: string): void => {\n trackEvent('audio_context_init_failed', {\n category: 'audio',\n error_message: error,\n })\n },\n\n contextSuspended: (): void => {\n trackEvent('audio_context_suspended', {\n category: 'audio',\n })\n },\n\n contextResumed: (): void => {\n trackEvent('audio_context_resumed', {\n category: 'audio',\n })\n },\n },\n\n // VAD tracking\n vad: {\n initializeStart: (): void => {\n trackEvent('vad_initialize_start', {\n category: 'vad',\n vad_state: 'initializing',\n })\n },\n\n initializeSuccess: (durationMs: number): void => {\n trackEvent('vad_initialize_success', {\n category: 'vad',\n vad_state: 'ready',\n duration_ms: durationMs,\n })\n },\n\n initializeFailed: (error: string): void => {\n trackEvent('vad_initialize_failed', {\n category: 'vad',\n vad_state: 'error',\n error_message: error,\n })\n },\n\n speechStart: (): void => {\n trackEvent('vad_speech_start', {\n category: 'vad',\n vad_state: 'active',\n })\n },\n\n speechEnd: (durationMs: number): void => {\n trackEvent('vad_speech_end', {\n category: 'vad',\n duration_ms: durationMs,\n })\n },\n\n speechReady: (audioDurationMs: number): void => {\n trackEvent('vad_speech_ready', {\n category: 'vad',\n duration_ms: audioDurationMs,\n })\n },\n\n blocked: (reason: string): void => {\n trackEvent('vad_blocked', {\n category: 'vad',\n blocked_reason: reason,\n })\n },\n\n unblocked: (): void => {\n trackEvent('vad_unblocked', {\n category: 'vad',\n })\n },\n\n restartFailed: (error: string): void => {\n trackEvent('vad_restart_failed', {\n category: 'vad',\n error_message: error,\n })\n },\n },\n\n // Sync & buffer tracking\n sync: {\n bufferOverflow: (sessionId: string, bufferDurationMs: number): void => {\n trackEvent('sync_buffer_overflow', {\n category: 'sync',\n session_id: sessionId,\n buffer_duration_ms: bufferDurationMs,\n })\n },\n\n alignmentIssue: (sessionId: string, driftMs: number): void => {\n trackEvent('sync_alignment_issue', {\n category: 'sync',\n session_id: sessionId,\n drift_ms: driftMs,\n })\n },\n\n sessionCreated: (sessionId: string): void => {\n trackEvent('sync_session_created', {\n category: 'sync',\n session_id: sessionId,\n })\n },\n\n sessionCleanup: (sessionId: string, audioChunks: number, flameKeyframes: number): void => {\n trackEvent('sync_session_cleanup', {\n category: 'sync',\n session_id: sessionId,\n audio_chunks: audioChunks,\n flame_keyframes: flameKeyframes,\n })\n },\n\n keyframeStarvation: (sessionId: string): void => {\n trackEvent('sync_keyframe_starvation', {\n category: 'sync',\n session_id: sessionId,\n })\n },\n\n audioChunkStarvation: (sessionId: string): void => {\n trackEvent('sync_audio_chunk_starvation', {\n category: 'sync',\n session_id: sessionId,\n })\n },\n },\n\n // Playback tracking\n playback: {\n started: (sessionId: string): void => {\n trackEvent('streaming_playback_started', {\n category: 'playback',\n session_id: sessionId,\n })\n },\n\n ended: (sessionId: string, durationMs: number, chunksPlayed: number): void => {\n trackEvent('streaming_playback_ended', {\n category: 'playback',\n session_id: sessionId,\n duration_ms: durationMs,\n chunks_played: chunksPlayed,\n })\n },\n\n scheduleFailed: (sessionId: string, error: string): void => {\n trackEvent('playback_schedule_failed', {\n category: 'playback',\n session_id: sessionId,\n error_message: error,\n })\n },\n\n interrupted: (sessionId: string): void => {\n trackEvent('playback_interrupted', {\n category: 'playback',\n session_id: sessionId,\n })\n },\n },\n\n // WASM tracking\n wasm: {\n computeError: (error: string): void => {\n trackEvent('wasm_compute_error', {\n category: 'wasm',\n operation: 'compute',\n error_message: error,\n })\n },\n\n conversionError: (error: string): void => {\n trackEvent('wasm_flame_conversion_error', {\n category: 'wasm',\n operation: 'convert',\n error_message: error,\n })\n },\n\n loadError: (error: string): void => {\n trackEvent('wasm_load_error', {\n category: 'wasm',\n operation: 'load',\n error_message: error,\n })\n },\n },\n\n // Rendering tracking\n rendering: {\n renderLoopError: (error: string): void => {\n trackEvent('render_loop_error', {\n category: 'rendering',\n error_message: error,\n })\n },\n\n splatLoadError: (error: string): void => {\n trackEvent('splat_load_error', {\n category: 'rendering',\n error_message: error,\n })\n },\n\n textOnlyStateDetected: (durationMs: number): void => {\n trackEvent('text_only_state_detected', {\n category: 'rendering',\n duration_ms: durationMs,\n })\n },\n },\n\n // User action tracking\n user: {\n manualInterrupt: (): void => {\n trackEvent('manual_interrupt', {\n category: 'user_action',\n action_type: 'interrupt',\n success: true,\n })\n },\n\n textSent: (success: boolean, error?: string): void => {\n trackEvent('text_input_sent', {\n category: 'user_action',\n action_type: 'text_send',\n success,\n error_message: error,\n })\n },\n\n speechSent: (success: boolean, error?: string): void => {\n trackEvent('speech_sent', {\n category: 'user_action',\n action_type: 'speech_send',\n success,\n error_message: error,\n })\n },\n\n vadToggled: (enabled: boolean): void => {\n trackEvent('vad_toggled', {\n category: 'user_action',\n action_type: 'vad_toggle',\n success: enabled,\n })\n },\n },\n}\n","/* @ts-self-types=\"./index.d.ts\" */\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << Math.log2(alphabet.length - 1)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step | 0\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length >= size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size | 0, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","/**\n * ReqID 生成工具\n * \n * 统一格式:时间戳(UTC时间,秒级,格式:YYYYMMDDHHmmss)+ 下划线 + 12位 NanoID\n * 示例:20251027143034_aB3dEf9hIjKl\n * \n * 时间部分使用 UTC 时间,便于跨端日志排查时统一转换时区检索\n */\n\nimport { customAlphabet } from 'nanoid'\n\n/**\n * 自定义字符集:只使用大小写字母和数字(URL 安全,不包含连字符)\n * 字符集:A-Z, a-z, 0-9 (62 个字符)\n */\nconst nanoid = customAlphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 12)\n\n/**\n * 生成统一的请求 ID\n * \n * 格式:时间戳(UTC时间,秒级,格式:YYYYMMDDHHmmss)+ 下划线 + 12位 NanoID\n * 时间部分使用 UTC 时间,便于跨端日志排查时统一转换时区检索\n * \n * @returns 格式为 YYYYMMDDHHmmss_nanoid 的请求 ID\n * @example\n * generateReqId() // \"20251027143034_aB3dEf9hIjKl\"\n */\nexport function generateReqId(): string {\n // 获取当前 UTC 时间\n const now = new Date()\n \n // 格式化为 YYYYMMDDHHmmss(UTC 时间)\n const year = now.getUTCFullYear()\n const month = String(now.getUTCMonth() + 1).padStart(2, '0')\n const day = String(now.getUTCDate()).padStart(2, '0')\n const hours = String(now.getUTCHours()).padStart(2, '0')\n const minutes = String(now.getUTCMinutes()).padStart(2, '0')\n const seconds = String(now.getUTCSeconds()).padStart(2, '0')\n \n const timestamp = `${year}${month}${day}${hours}${minutes}${seconds}`\n \n // 生成 12 位 NanoID(只包含字母和数字)\n const nanoId = nanoid()\n \n return `${timestamp}_${nanoId}`\n}\n\n","/**\n * Simple Event Emitter\n */\n\n// eslint-disable-next-line ts/no-explicit-any\ntype EventHandler = (...args: any[]) => void\n\nexport class EventEmitter {\n private events: Map<string, Set<EventHandler>> = new Map()\n\n on(event: string, handler: EventHandler): void {\n if (!this.events.has(event)) {\n this.events.set(event, new Set())\n }\n this.events.get(event)!.add(handler)\n }\n\n off(event: string, handler: EventHandler): void {\n const handlers = this.events.get(event)\n if (handlers) {\n handlers.delete(handler)\n if (handlers.size === 0) {\n this.events.delete(event)\n }\n }\n }\n\n // eslint-disable-next-line ts/no-explicit-any\n emit(event: string, ...args: any[]): void {\n const handlers = this.events.get(event)\n if (handlers) {\n handlers.forEach(handler => handler(...args))\n }\n }\n\n removeAllListeners(event?: string): void {\n if (event) {\n this.events.delete(event)\n }\n else {\n this.events.clear()\n }\n }\n}\n","/**\n * AnimationWebSocketClient:动画专用 WebSocket 客户端\n * 使用 driveningress/v1 协议,只处理音频输入和动画输出\n */\n\nimport type { Message } from '../generated/driveningress/v1/driveningress'\n\nimport { BinaryReader, BinaryWriter } from '@bufbuild/protobuf/wire'\n\nimport { Message as MessageCodec, MessageType } from '../generated/driveningress/v1/driveningress'\nimport { errorToMessage } from '../utils/error-utils'\nimport { logger } from '../utils/logger'\nimport { PostHogTracker } from '../utils/posthog-tracker'\nimport { generateReqId } from '../utils/reqId'\nimport { EventEmitter } from './utils/eventEmitter'\n\nexport interface AnimationWebSocketClientOptions {\n wsUrl: string\n reconnectAttempts?: number\n debug?: boolean\n jwtToken?: string\n}\n\nexport class AnimationWebSocketClient extends EventEmitter {\n private wsUrl: string\n private reconnectAttempts: number\n private debug: boolean\n private jwtToken?: string\n\n private ws: WebSocket | null = null\n private currentCharacterId: string = ''\n private currentRetryCount: number = 0\n private isConnecting: boolean = false\n private isManuallyDisconnected: boolean = false\n private reconnectTimer: number | null = null\n\n constructor(options: AnimationWebSocketClientOptions) {\n super()\n this.wsUrl = options.wsUrl\n this.reconnectAttempts = options.reconnectAttempts ?? 5\n this.debug = options.debug ?? false\n this.jwtToken = options.jwtToken\n }\n\n /**\n * 连接WebSocket\n */\n async connect(characterId: string): Promise<void> {\n if (this.ws && this.ws.readyState === WebSocket.OPEN) {\n logger.log('[AnimationWebSocketClient] Already connected')\n return\n }\n\n if (this.isConnecting) {\n logger.log('[AnimationWebSocketClient] Already connecting')\n return\n }\n\n try {\n this.isConnecting = true\n this.currentCharacterId = characterId\n\n const url = this.buildWebSocketUrl(characterId)\n logger.log('[AnimationWebSocketClient] Connecting to:', url)\n\n await this.connectWebSocket(url)\n logger.log('[AnimationWebSocketClient] Connected successfully')\n }\n catch (error) {\n this.isConnecting = false\n logger.error('[AnimationWebSocketClient] Connection failed:', error instanceof Error ? error.message : String(error))\n throw error\n }\n }\n\n /**\n * 断开连接\n */\n disconnect(): void {\n if (this.ws) {\n this.ws.close(1000, 'Normal closure')\n this.ws = null\n }\n\n this.currentRetryCount = 0\n this.isConnecting = false\n this.isManuallyDisconnected = true\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer)\n this.reconnectTimer = null\n }\n logger.log('[AnimationWebSocketClient] Disconnected')\n }\n\n /**\n * 发送音频数据\n */\n sendAudioData(reqId: string, audioData: ArrayBuffer, end: boolean): boolean {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n logger.error('[AnimationWebSocketClient] WebSocket not connected')\n return false\n }\n\n try {\n const message: Message = {\n type: MessageType.MESSAGE_CLIENT_AUDIO_INPUT,\n clientAudioInput: {\n reqId,\n audio: new Uint8Array(audioData),\n end,\n },\n }\n\n const writer = new BinaryWriter()\n MessageCodec.encode(message, writer)\n const bytes = writer.finish()\n\n this.ws.send(bytes)\n return true\n }\n catch (error) {\n logger.error('[AnimationWebSocketClient] Failed to send audio data:', error instanceof Error ? error.message : String(error))\n PostHogTracker.connection.messageSendError('MESSAGE_CLIENT_AUDIO_INPUT', errorToMessage(error))\n this.emit('error', error as Error)\n return false\n }\n }\n\n /**\n * 生成请求ID\n * 使用统一的 ReqID 生成规则:YYYYMMDDHHmmss_nanoid\n */\n generateReqId(): string {\n return generateReqId()\n }\n\n /**\n * 获取连接状态\n */\n isConnected(): boolean {\n return this.ws !== null && this.ws.readyState === WebSocket.OPEN\n }\n\n /**\n * 获取当前角色ID\n */\n getCurrentCharacterId(): string {\n return this.currentCharacterId\n }\n\n // ========== 私有方法 ==========\n\n private buildWebSocketUrl(characterId: string): string {\n const url = new URL(this.wsUrl)\n url.searchParams.set('id', characterId)\n\n if (this.jwtToken) {\n url.searchParams.set('token', this.jwtToken)\n }\n\n return url.toString()\n }\n\n private connectWebSocket(url: string): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n this.ws = new WebSocket(url)\n\n this.ws.onopen = () => {\n this.isConnecting = false\n this.currentRetryCount = 0\n this.isManuallyDisconnected = false\n this.emit('connected')\n resolve()\n }\n\n this.ws.onmessage = (event) => {\n if (event.data instanceof ArrayBuffer) {\n this.handleMessage(event.data)\n }\n else if (event.data instanceof Blob) {\n event.data.arrayBuffer().then(this.handleMessage.bind(this)).catch((err) => {\n logger.error('[AnimationWebSocketClient] Failed to convert Blob to ArrayBuffer:', err)\n this.emit('error', err as Error)\n })\n }\n else {\n logger.warn('[AnimationWebSocketClient] Received non-binary data:', typeof event.data)\n }\n }\n\n this.ws.onerror = (error) => {\n logger.errorWithError('[AnimationWebSocketClient] WebSocket error:', error)\n this.emit('error', new Error('WebSocket error'))\n if (!this.isManuallyDisconnected && this.currentRetryCount < this.reconnectAttempts) {\n this.scheduleReconnect()\n }\n }\n\n this.ws.onclose = (event) => {\n logger.log('[AnimationWebSocketClient] WebSocket closed:', event.code, event.reason)\n this.emit('disconnected', event.reason || 'Connection closed')\n\n if (!this.isManuallyDisconnected && this.currentRetryCount < this.reconnectAttempts) {\n this.scheduleReconnect()\n }\n }\n }\n catch (error) {\n this.isConnecting = false\n reject(error)\n }\n })\n }\n\n private handleMessage(data: ArrayBuffer): void {\n try {\n const reader = new BinaryReader(new Uint8Array(data))\n const message = MessageCodec.decode(reader)\n\n // 检查消息中是否包含错误信息\n if (message.error) {\n logger.error(`[AnimationWebSocketClient] Server error: reqId=${message.error.reqId}, code=${message.error.code}, reason=${message.error.reason}`)\n this.emit('error', new Error(message.error.reason || 'Server error'))\n return\n }\n\n if (message.type === MessageType.MESSAGE_ERROR) {\n logger.warn('[AnimationWebSocketClient] MESSAGE_ERROR received but no error field in message')\n this.emit('error', new Error('Server returned error message without error details'))\n return\n }\n\n this.emit('message', message)\n }\n catch (error) {\n logger.error('[AnimationWebSocketClient] Failed to decode message:', error instanceof Error ? error.message : String(error))\n this.emit('error', error as Error)\n }\n }\n\n private scheduleReconnect(): void {\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer)\n }\n\n this.currentRetryCount++\n const delay = Math.min(1000 * Math.pow(2, this.currentRetryCount - 1), 30000)\n\n logger.log(`[AnimationWebSocketClient] Scheduling reconnect attempt ${this.currentRetryCount}/${this.reconnectAttempts} in ${delay}ms`)\n\n this.reconnectTimer = window.setTimeout(() => {\n if (!this.isManuallyDisconnected && this.currentCharacterId) {\n this.emit('reconnecting', `Reconnect attempt ${this.currentRetryCount}`)\n this.connect(this.currentCharacterId).catch((error) => {\n logger.error('[AnimationWebSocketClient] Reconnect failed:', error instanceof Error ? error.message : String(error))\n })\n }\n }, delay)\n }\n}\n","/**\n * AvatarController:数字人控制器(Animation Only 模式)\n * SDK 对外暴露的默认控制器,只处理动画驱动,不包含 TTS/ASR\n * 用户需要自己提供音频数据,并与接收到的动画数据同步播放\n */\n\nimport type { Flame } from '../generated/driveningress/v1/driveningress'\nimport type { Message } from '../generated/driveningress/v1/driveningress'\nimport type { Avatar } from './Avatar'\n\nimport { AnimationPlayer } from '../audio/AnimationPlayer'\nimport { MessageType } from '../generated/driveningress/v1/driveningress'\nimport { AvatarState, ConnectionState, SPAvatarError } from '../types'\nimport { logger } from '../utils/logger'\nimport { AvatarKit } from './AvatarKit'\nimport { AnimationWebSocketClient } from '../animation/AnimationWebSocketClient'\n\nexport class AvatarController {\n // 基础属性\n protected avatar: Avatar\n protected isConnected = false\n protected isMuted = false\n protected currentState: AvatarState = AvatarState.idle\n\n // 音频和动画播放\n protected animationPlayer: AnimationPlayer | null = null\n protected currentKeyframes: Flame[] = []\n protected transitionKeyframes: Flame[] = []\n protected currentReqId: string | null = null\n protected isPlaying = false\n private hasSentEnd = false // 标记当前请求是否已发送过 end=true\n\n // 公共事件回调(外部可访问)\n public onConnectionState: ((state: ConnectionState) => void) | null = null\n public onAvatarState: ((state: AvatarState) => void) | null = null\n public onError: ((error: Error) => void) | null = null\n\n // 私有事件系统(内部使用)\n // eslint-disable-next-line ts/no-explicit-any\n private eventListeners = new Map<string, Set<(data?: any) => void>>()\n\n // Animation WebSocket 客户端(driveningress/v1 协议)\n private wsClient: AnimationWebSocketClient | null = null\n\n // 音频数据缓存(在流式播放器初始化前缓存音频数据)\n private pendingAudioChunks: Array<{ data: Uint8Array, isLast: boolean }> = []\n\n constructor(avatar: Avatar) {\n this.avatar = avatar\n }\n\n // ========== 公共方法 ==========\n\n /**\n * 启动服务\n */\n async start(): Promise<void> {\n if (this.isConnected) {\n return\n }\n\n try {\n this.onConnectionState?.(ConnectionState.connecting)\n\n await this.initializePlayers()\n\n if (!this.wsClient) {\n throw new Error('WebSocket client not initialized')\n }\n\n await this.wsClient.connect(this.avatar.id)\n }\n catch (error) {\n this.onConnectionState?.(ConnectionState.failed)\n this.onError?.(new SPAvatarError('Failed to start service', 'CONNECTION_FAILED'))\n logger.error('[AvatarController] Failed to start:', error instanceof Error ? error.message : String(error))\n throw error\n }\n }\n\n /**\n * 发送音频数据\n */\n send(audioData: ArrayBuffer, end: boolean = false): void {\n if (!this.isConnected || !this.wsClient) {\n this.onError?.(new SPAvatarError('Service not connected', 'NOT_CONNECTED'))\n return\n }\n\n this.onAvatarState?.(AvatarState.active)\n\n try {\n // 如果上一个请求已经发送过 end=true 且正在播放,说明这是新请求\n // 需要打断当前播放并生成新的 reqId(无论新请求的第一个音频是 end=false 还是 end=true)\n // 服务端要求连续两个 end=true 之间的 reqId 必须不同\n if (this.hasSentEnd && this.isPlaying && this.currentReqId) {\n this.stopPlayback()\n // stopPlayback() 已经会重置 currentReqId 和 hasSentEnd\n }\n\n // 生成请求ID(如果还没有的话)\n if (!this.currentReqId) {\n // 开始新的请求时,重置播放状态和标记\n this.isPlaying = false\n this.hasSentEnd = false\n this.currentReqId = this.wsClient.generateReqId()\n this.currentKeyframes = []\n this.pendingAudioChunks = []\n }\n\n // 如果发送了 end=true,标记当前请求已发送过\n if (end) {\n this.hasSentEnd = true\n }\n\n // 检查音频数据是否为空\n if (audioData.byteLength === 0 && !end) {\n logger.warn('[AvatarController] Warning: sending empty audio data (size=0, end=false)')\n }\n\n // 发送到服务器(driveningress/v1 协议)\n const sent = this.wsClient.sendAudioData(this.currentReqId, audioData, end)\n if (!sent) {\n logger.error('[AvatarController] Failed to send audio data to WebSocket')\n this.onError?.(new SPAvatarError('Failed to send audio data to WebSocket', 'SEND_FAILED'))\n return\n }\n\n // 如果播放器已准备好且正在播放,直接添加到播放器\n // 这样可以处理播放过程中继续发送的音频数据(包括 end=true)\n // 否则缓存到 pendingAudioChunks,等收到动画数据后再添加\n if (this.isPlaying && this.animationPlayer?.isStreamingReady()) {\n const pcmData = new Uint8Array(audioData)\n this.animationPlayer.addAudioChunk(pcmData, end)\n } else {\n // 缓存到 pendingAudioChunks,等收到动画数据后再添加\n if (audioData.byteLength > 0 || end) {\n this.pendingAudioChunks.push({\n data: new Uint8Array(audioData),\n isLast: end,\n })\n }\n }\n }\n catch (error) {\n logger.error('[AvatarController] Failed to send audio data:', error instanceof Error ? error.message : String(error))\n this.onError?.(new SPAvatarError('Failed to send audio data', 'SEND_FAILED'))\n }\n }\n\n /**\n * 发送文字消息(Animation Only 模式不支持文字输入)\n */\n sendText(_text: string): void {\n logger.warn('[AvatarController] sendText() is not supported in animation_only mode')\n this.onError?.(new SPAvatarError('Text input is not supported in animation_only mode', 'NOT_SUPPORTED'))\n }\n\n /**\n * 打断当前对话\n */\n interrupt(): void {\n this.stopPlayback()\n this.onAvatarState?.(AvatarState.idle)\n }\n\n /**\n * 关闭服务(断开连接)\n */\n close(): void {\n this.isConnected = false\n\n this.cleanupPlayers()\n\n // 不清空回调,因为角色视图还存在,重新连接时需要这些回调\n }\n\n /**\n * 静音切换\n */\n get mute(): boolean {\n return this.isMuted\n }\n\n set mute(value: boolean) {\n this.isMuted = value\n }\n\n /**\n * 获取当前状态\n */\n get state(): AvatarState {\n return this.currentState\n }\n\n /**\n * 获取动画播放器实例\n * @internal\n */\n public getAnimationPlayer(): AnimationPlayer | null {\n return this.animationPlayer\n }\n\n /**\n * 提供给视图层读取的过渡关键帧(Idle->Speaking),独立于主序列\n */\n protected getTransitionKeyframes(): Flame[] {\n return this.transitionKeyframes\n }\n\n /**\n * 获取连接状态\n */\n get connected(): boolean {\n return this.isConnected\n }\n\n /**\n * 为 AvatarView 提供注册内部事件的接口\n * @internal\n */\n public setupInternalEventListeners(callbacks: {\n onKeyframesUpdate?: (keyframes: Flame[]) => void\n onStartRendering?: () => void\n onStopRendering?: () => void\n }): void {\n if (callbacks.onKeyframesUpdate) {\n this.registerEventListener('keyframesUpdate', callbacks.onKeyframesUpdate)\n }\n if (callbacks.onStartRendering) {\n this.registerEventListener('startRendering', callbacks.onStartRendering)\n }\n if (callbacks.onStopRendering) {\n this.registerEventListener('stopRendering', callbacks.onStopRendering)\n }\n }\n\n // ========== 保护方法 ==========\n\n /**\n * 初始化播放器和客户端\n */\n protected async initializePlayers(): Promise<void> {\n try {\n // 提前创建 AnimationPlayer 实例(等音频数据准备好后再初始化)\n this.animationPlayer = new AnimationPlayer()\n\n // 初始化 AnimationWebSocketClient(driveningress/v1)\n const config = AvatarKit.getEnvironmentConfig()\n this.wsClient = new AnimationWebSocketClient({\n wsUrl: config.driveningressWsUrl,\n reconnectAttempts: 5,\n debug: false,\n jwtToken: AvatarKit.sessionToken || undefined,\n })\n\n // 设置事件监听器\n this.setupWebSocketListeners()\n }\n catch (error) {\n logger.error('[AvatarController] Failed to initialize:', error instanceof Error ? error.message : String(error))\n throw error\n }\n }\n\n /**\n * 清理播放器和客户端\n */\n protected cleanupPlayers(): void {\n if (this.animationPlayer) {\n this.animationPlayer.dispose() // dispose 会清理 streamingPlayer\n this.animationPlayer = null\n }\n\n if (this.wsClient) {\n this.wsClient.disconnect()\n this.wsClient = null\n }\n\n this.currentKeyframes = []\n this.currentReqId = null\n this.isPlaying = false\n this.hasSentEnd = false\n this.pendingAudioChunks = []\n }\n\n /**\n * 停止播放\n */\n protected stopPlayback(): void {\n if (this.animationPlayer) {\n this.animationPlayer.stop()\n // animationPlayer.stop() 在流式模式下会停止 streamingPlayer\n }\n\n // 通知停止渲染\n this.emit('stopRendering')\n\n // 清理当前请求ID,确保下次对话能生成新的ID\n this.currentReqId = null\n this.isPlaying = false\n this.hasSentEnd = false\n // 不清理 streamingPlayer,以便复用(由 AnimationPlayer 管理)\n this.pendingAudioChunks = []\n this.onAvatarState?.(AvatarState.idle)\n }\n\n /**\n * 开始播放音频和动画\n */\n protected async startPlayback(): Promise<void> {\n if (!this.animationPlayer) {\n logger.error('[AvatarController] AnimationPlayer not initialized')\n return\n }\n\n try {\n // 开始动画播放(包含音频播放)\n await this.animationPlayer.play()\n\n // 通知切换到实时渲染\n this.emit('startRendering')\n\n this.onAvatarState?.(AvatarState.playing)\n }\n catch (error) {\n logger.error('[AvatarController] Failed to start playback:', error instanceof Error ? error.message : String(error))\n this.onError?.(new SPAvatarError('Failed to start playback', 'PLAYBACK_FAILED'))\n }\n }\n\n // ========== 私有方法 ==========\n\n /**\n * 注册内部事件监听器(仅供内部使用)\n */\n // eslint-disable-next-line ts/no-explicit-any\n private registerEventListener(event: string, callback: (data?: any) => void): void {\n if (!this.eventListeners.has(event)) {\n this.eventListeners.set(event, new Set())\n }\n this.eventListeners.get(event)!.add(callback)\n }\n\n /**\n * 触发内部事件(仅供内部使用)\n */\n // eslint-disable-next-line ts/no-explicit-any\n private emit(event: string, data?: any): void {\n const listeners = this.eventListeners.get(event)\n if (listeners) {\n listeners.forEach(callback => callback(data))\n }\n }\n\n /**\n * 处理接收到的消息\n */\n private handleMessage(message: Message): void {\n try {\n switch (message.type) {\n case MessageType.MESSAGE_SERVER_RESPONSE_ANIMATION:\n this.handleAnimationMessage(message)\n break\n case MessageType.MESSAGE_ERROR:\n if (message.error) {\n logger.error(`[AvatarController] Server error: reqId=${message.error.reqId}, code=${message.error.code}, reason=${message.error.reason}`)\n\n this.onError?.(new SPAvatarError(\n message.error.reason || 'Server error occurred',\n message.error.code?.toString() || 'SERVER_ERROR',\n ))\n\n // 如果是当前请求的错误,停止播放并清理状态\n if (this.currentReqId && message.error.reqId === this.currentReqId) {\n this.stopPlayback()\n // stopPlayback() 已经会重置 currentReqId 和 hasSentEnd\n this.onAvatarState?.(AvatarState.idle)\n }\n } else {\n logger.warn('[AvatarController] MESSAGE_ERROR received but message.error is empty')\n // 检查是否包含动画数据(可能是消息类型解析错误)\n if (message.serverResponseAnimation) {\n logger.warn('[AvatarController] MESSAGE_ERROR contains animation data, treating as animation message')\n this.handleAnimationMessage(message)\n }\n }\n break\n default:\n // 忽略未知消息类型\n }\n }\n catch (error) {\n logger.error('[AvatarController] Failed to handle message:', error instanceof Error ? error.message : String(error))\n }\n }\n\n /**\n * 处理动画消息(从服务器接收)\n */\n private handleAnimationMessage(message: Message): void {\n if (!message.serverResponseAnimation) {\n logger.error('[AvatarController] Invalid animation message')\n return\n }\n\n const { reqId, animation } = message.serverResponseAnimation\n\n // 只接受当前活跃请求的动画\n if (!this.currentReqId || reqId !== this.currentReqId) {\n logger.warn(`[AvatarController] Ignoring mismatched animation message - expected reqId: ${this.currentReqId}, received reqId: ${reqId}`)\n return\n }\n\n if (animation?.keyframes && animation.keyframes.length > 0) {\n const isFirstMessage = this.currentKeyframes.length === 0\n\n if (isFirstMessage) {\n // 第一段:直接替换(初始化)\n this.currentKeyframes = animation.keyframes\n } else {\n // 后续段:追加到现有关键帧\n this.currentKeyframes.push(...animation.keyframes)\n }\n\n // 通知关键帧更新(每次收到新数据都要通知,让渲染循环可以使用新数据)\n this.emit('keyframesUpdate', this.currentKeyframes)\n\n // 如果还没有开始播放,开始流式播放\n if (!this.isPlaying) {\n // 收到第一条动画数据时,开始流式播放\n this.startStreamingPlayback()\n }\n } else {\n logger.warn(`[AvatarController] Animation message has no keyframes - reqId: ${reqId}`)\n }\n }\n\n /**\n * 开始流式播放(准备播放器、添加音频数据、开始播放动画)\n */\n private async startStreamingPlayback(): Promise<void> {\n if (!this.animationPlayer) {\n logger.error('[AvatarController] AnimationPlayer not initialized')\n return\n }\n\n // 如果没有动画数据,不能播放\n if (!this.currentKeyframes || this.currentKeyframes.length === 0) {\n logger.warn('[AvatarController] No animation keyframes to play')\n return\n }\n\n try {\n // 让 AnimationPlayer 准备播放器\n await this.animationPlayer.prepareStreamingPlayer(() => {\n // 播放结束回调\n this.isPlaying = false\n this.onAvatarState?.(AvatarState.idle)\n this.emit('stopRendering')\n // 清理请求ID和标记\n this.currentReqId = null\n this.hasSentEnd = false\n this.pendingAudioChunks = []\n })\n\n // 将之前缓存的音频数据添加到流式播放器\n for (const chunk of this.pendingAudioChunks) {\n this.animationPlayer.addAudioChunk(chunk.data, chunk.isLast)\n }\n this.pendingAudioChunks = []\n\n // 标记为播放中(流式播放器会在有足够音频块时自动开始播放)\n this.isPlaying = true\n\n // 通知开始渲染动画\n await this.startPlayback()\n }\n catch (error) {\n logger.error('[AvatarController] Failed to start streaming playback:', error instanceof Error ? error.message : String(error))\n this.onError?.(new SPAvatarError('Failed to start streaming playback', 'INIT_FAILED'))\n // 重置播放状态(不需要清理 streamingPlayer,由 AnimationPlayer 管理)\n this.isPlaying = false\n }\n }\n\n /**\n * 开始同步播放(用户音频 + 动画)\n * 注意:流式模式下,这个方法由 startStreamingPlayback() 调用\n */\n private async startSynchronizedPlayback(): Promise<void> {\n // 流式模式下,直接调用 startStreamingPlayback\n await this.startStreamingPlayback()\n }\n\n /**\n * 将 PCM 数据转换为 WAV Blob URL\n * 注意:流式模式下不再需要此方法,保留用于兼容性\n */\n private createAudioBlobURL(pcmData: Uint8Array, sampleRate: number): string {\n // WAV 文件头(44 字节)\n const header = new ArrayBuffer(44)\n const view = new DataView(header)\n \n const writeString = (offset: number, str: string) => {\n for (let i = 0; i < str.length; i++) {\n view.setUint8(offset + i, str.charCodeAt(i))\n }\n }\n \n // RIFF chunk\n writeString(0, 'RIFF')\n view.setUint32(4, 36 + pcmData.length, true)\n writeString(8, 'WAVE')\n \n // fmt sub-chunk\n writeString(12, 'fmt ')\n view.setUint32(16, 16, true)\n view.setUint16(20, 1, true) // PCM\n view.setUint16(22, 1, true) // mono\n view.setUint32(24, sampleRate, true)\n view.setUint32(28, sampleRate * 2, true) // byte rate\n view.setUint16(32, 2, true) // block align\n view.setUint16(34, 16, true) // bits per sample\n \n // data sub-chunk\n writeString(36, 'data')\n view.setUint32(40, pcmData.length, true)\n \n // 合并 WAV 头和数据\n const wavData = new Uint8Array(44 + pcmData.length)\n wavData.set(new Uint8Array(header), 0)\n wavData.set(pcmData, 44)\n \n const blob = new Blob([wavData], { type: 'audio/wav' })\n return URL.createObjectURL(blob)\n }\n\n /**\n * 设置 WebSocket 事件监听器\n */\n private setupWebSocketListeners(): void {\n if (!this.wsClient) {\n return\n }\n\n this.wsClient.on('connected', async () => {\n this.isConnected = true\n \n // 创建并初始化流式播放器\n if (this.animationPlayer) {\n try {\n await this.animationPlayer.createAndInitializeStreamingPlayer()\n } catch (error) {\n logger.error('[AvatarController] Failed to create streaming player:', error instanceof Error ? error.message : String(error))\n // 不阻止连接,但记录错误\n }\n }\n \n this.onConnectionState?.(ConnectionState.connected)\n })\n\n this.wsClient.on('disconnected', () => {\n this.isConnected = false\n this.stopPlayback()\n\n if (this.onConnectionState) {\n this.onConnectionState(ConnectionState.disconnected)\n }\n\n // 不清理资源,因为可能是网络问题导致的断开,需要重连\n // 资源清理只在 close() 方法中进行(手动关闭时)\n })\n\n this.wsClient.on('reconnecting', () => {\n // Reconnecting in progress\n })\n\n this.wsClient.on('error', (error: Error) => {\n logger.error('[AvatarController] WebSocket error:', error instanceof Error ? error.message : String(error))\n })\n\n this.wsClient.on('message', (message: Message) => {\n this.handleMessage(message)\n })\n }\n}\n","/**\n * Avatar Downloader (iOS Compatible)\n * Downloads character resources from CharacterMeta structure\n */\n\nimport type { CharacterMeta, PreloadCameraSettings } from '../types/character'\nimport type { CharacterSettings } from '../types/character-settings'\n\nimport { APP_CONFIG } from '../config/app-config'\nimport { errorToMessage } from '../utils/error-utils'\nimport { logger } from '../utils/logger'\nimport { AvatarKit } from './AvatarKit'\n\ninterface ProgressInfo {\n stage: string\n filename: string\n loaded: number\n total: number\n progress: number\n}\n\ntype ProgressCallback = (info: ProgressInfo) => void\n\ninterface TemplateResources {\n [key: string]: ArrayBuffer\n}\n\ninterface FlameResources {\n flameModel?: { remote?: string }\n flameTemplate?: { remote?: string }\n teethPb?: { remote?: string }\n teethNpz?: { remote?: string }\n}\n\ninterface CharacterDataResult {\n shape: ArrayBuffer\n pointCloud: ArrayBuffer\n idleAnimation?: ArrayBuffer // optional: frameIdle animation\n monoAnimation?: ArrayBuffer // optional: frameMono animation\n monoAudioUrl?: string // optional: audioMono URL (for <audio> playback)\n}\n\nexport interface PreloadResult {\n templateResources: TemplateResources\n characterData: CharacterDataResult\n preloadCameraSettings?: PreloadCameraSettings // 相机配置\n characterSettings?: CharacterSettings // 角色设置(包含 eyelid 等)\n}\n\n/**\n * Simple download helper with CORS proxy support for development\n */\nasync function downloadResource(url: string): Promise<ArrayBuffer> {\n try {\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(`HTTP ${response.status} ${response.statusText}`)\n }\n return await response.arrayBuffer()\n }\n catch (err) {\n const msg = errorToMessage(err)\n throw new Error(`[downloadResource] ${url} → ${msg}`)\n }\n}\n\n/**\n * Cached download helper (in-memory)\n * Avoids duplicate network fetch for shared/template resources and repeated character loads\n */\nconst _resourceCache = new Map<string, ArrayBuffer>()\n\nasync function downloadResourceCached(url: string): Promise<ArrayBuffer> {\n const cached = _resourceCache.get(url)\n if (cached)\n return cached\n const data = await downloadResource(url)\n _resourceCache.set(url, data)\n return data\n}\n\nexport class AvatarDownloader {\n private baseAssetsPath: string\n private characterAssets: Map<string, ArrayBuffer>\n\n constructor(baseAssetsPath = '/') {\n this.baseAssetsPath = baseAssetsPath\n this.characterAssets = new Map()\n }\n\n /**\n * Load template resources from CharacterMeta flame CDN URLs\n * Falls back to global CDN config if not provided by API\n */\n async loadTemplateResources(\n flameResources?: FlameResources,\n progressCallback: ProgressCallback | null = null,\n ): Promise<TemplateResources> {\n // Determine resource URLs: use API-provided URLs if available, otherwise use global CDN config\n const useApiResources = flameResources && Object.keys(flameResources).length > 0\n\n if (!useApiResources) {\n logger.log('⚠️ FLAME resources not provided in CharacterMeta, using global CDN config')\n return this.loadGlobalFlameResources(progressCallback)\n }\n\n logger.log('✅ Using FLAME resources from CharacterMeta API')\n\n const templateFiles: Record<string, { url: string | undefined, resourceName: string }> = {\n flameModel: {\n url: flameResources.flameModel?.remote,\n resourceName: 'model.pb',\n },\n flameTemplate: {\n url: flameResources.flameTemplate?.remote,\n resourceName: 'flame_template.pb',\n },\n teethPb: {\n url: flameResources.teethPb?.remote,\n resourceName: 'teeth.pb',\n },\n teethNpz: {\n url: flameResources.teethNpz?.remote,\n resourceName: 'teeth.npz',\n },\n }\n\n const totalFiles = Object.keys(templateFiles).length\n let loadedFiles = 0\n\n const updateProgress = (filename: string, loaded: boolean): void => {\n if (progressCallback) {\n if (loaded)\n loadedFiles++\n\n progressCallback({\n stage: 'template',\n filename,\n loaded: loadedFiles,\n total: totalFiles,\n progress: Math.round((loadedFiles / totalFiles) * 100),\n })\n }\n }\n\n const templateResources: TemplateResources = {}\n\n // Load all template files in parallel from CDN\n const promises = Object.entries(templateFiles).map(async ([key, { url, resourceName }]) => {\n if (!url) {\n throw new Error(`[loadTemplateResources] Missing CDN URL for ${key} (${resourceName})`)\n }\n\n updateProgress(resourceName, false)\n\n logger.log(`📥 Loading ${key} from API CDN: ${url}`)\n const buffer = await downloadResourceCached(url)\n logger.log(`✅ ${key} loaded: ${buffer.byteLength} bytes`)\n\n templateResources[key] = buffer\n updateProgress(resourceName, true)\n })\n\n await Promise.all(promises)\n\n return templateResources\n }\n\n /**\n * Load global FLAME template resources from CDN\n * Uses centralized FLAME CDN config (shared across all characters)\n */\n private async loadGlobalFlameResources(\n progressCallback: ProgressCallback | null = null,\n ): Promise<TemplateResources> {\n const { cdnBaseUrl, resources } = APP_CONFIG.flame\n\n const templateFiles: Record<string, { url: string, resourceName: string }> = {\n flameModel: {\n url: `${cdnBaseUrl}/${resources.flameModel}`,\n resourceName: resources.flameModel,\n },\n flameTemplate: {\n url: `${cdnBaseUrl}/${resources.flameTemplate}`,\n resourceName: resources.flameTemplate,\n },\n teethPb: {\n url: `${cdnBaseUrl}/${resources.teethPb}`,\n resourceName: resources.teethPb,\n },\n teethNpz: {\n url: `${cdnBaseUrl}/${resources.teethNpz}`,\n resourceName: resources.teethNpz,\n },\n }\n\n const totalFiles = Object.keys(templateFiles).length\n let loadedFiles = 0\n\n const updateProgress = (filename: string, loaded: boolean): void => {\n if (progressCallback) {\n if (loaded)\n loadedFiles++\n\n progressCallback({\n stage: 'template',\n filename,\n loaded: loadedFiles,\n total: totalFiles,\n progress: Math.round((loadedFiles / totalFiles) * 100),\n })\n }\n }\n\n const templateResources: TemplateResources = {}\n\n // Load all template files in parallel from global CDN\n const promises = Object.entries(templateFiles).map(async ([key, { url, resourceName }]) => {\n updateProgress(resourceName, false)\n\n logger.log(`📥 Loading ${key} from global CDN: ${url}`)\n const buffer = await downloadResourceCached(url)\n logger.log(`✅ ${key} loaded: ${buffer.byteLength} bytes`)\n\n templateResources[key] = buffer\n updateProgress(resourceName, true)\n })\n\n await Promise.all(promises)\n\n return templateResources\n }\n\n /**\n * Load camera settings from CharacterMeta (optional)\n */\n async loadCameraSettings(characterMeta: CharacterMeta): Promise<PreloadCameraSettings | undefined> {\n const cameraUrl = characterMeta.camera?.resource?.remote\n if (!cameraUrl) {\n logger.log('ℹ️ No camera resource URL provided')\n return undefined\n }\n\n try {\n logger.log(`📥 Loading camera info from: ${cameraUrl}`)\n const response = await fetch(cameraUrl)\n if (!response.ok) {\n throw new Error(`Failed to fetch camera info: ${response.statusText}`)\n }\n\n const cameraSettings = await response.json() as PreloadCameraSettings\n logger.log('✅ Camera info loaded:', cameraSettings)\n return cameraSettings\n }\n catch (error) {\n logger.warn('⚠️ Failed to load camera info, using default:', error)\n return undefined\n }\n }\n\n /**\n * Load character data from CharacterMeta (iOS compatible)\n */\n async loadCharacterData(\n characterMeta: CharacterMeta,\n options?: { loadMonologue?: boolean, progressCallback?: ProgressCallback | null },\n ): Promise<CharacterDataResult> {\n const { loadMonologue = false, progressCallback = null } = options || {}\n // Extract required resource URLs\n const shapeUrl = characterMeta.models?.shape?.resource?.remote\n const pointCloudUrl = characterMeta.models?.gsStandard?.resource?.remote\n const idleAnimationUrl = characterMeta.animations?.frameIdle?.resource?.remote\n const monoAnimationUrl = characterMeta.animations?.frameMono?.resource?.remote\n const monoAudioUrl = characterMeta.animations?.audioMono?.resource?.remote\n\n if (!shapeUrl || !pointCloudUrl) {\n throw new Error('Missing required resources: shape or gsStandard (point cloud)')\n }\n\n const filesToLoad: Array<{ key: string, url: string, filename: string, optional?: boolean }> = [\n { key: 'shape', url: shapeUrl, filename: 'shape.pb' },\n { key: 'pointCloud', url: pointCloudUrl, filename: 'point_cloud.ply' },\n ]\n\n // Add idle animation if available\n if (idleAnimationUrl) {\n filesToLoad.push({ key: 'idleAnimation', url: idleAnimationUrl, filename: 'idle.pb', optional: true })\n }\n\n // Add monologue animation only if explicitly requested\n if (loadMonologue && monoAnimationUrl) {\n logger.log('📥 Loading monologue animation (enabled by option)')\n filesToLoad.push({ key: 'monoAnimation', url: monoAnimationUrl, filename: 'mono.pb', optional: true })\n }\n else if (!loadMonologue && monoAnimationUrl) {\n logger.log('⏭️ Skipping monologue animation (disabled by option)')\n }\n\n let loadedFiles = 0\n const totalFiles = filesToLoad.length\n\n const updateProgress = (filename: string, loaded: boolean): void => {\n if (progressCallback) {\n if (loaded)\n loadedFiles++\n\n progressCallback({\n stage: 'character',\n filename,\n loaded: loadedFiles,\n total: totalFiles,\n progress: Math.round((loadedFiles / totalFiles) * 100),\n })\n }\n }\n\n // Download assets in parallel\n const characterData: Partial<CharacterDataResult> = {}\n\n const downloadPromises = filesToLoad.map(async ({ key, url, filename, optional }) => {\n updateProgress(filename, false)\n try {\n const arrayBuffer = await downloadResourceCached(url)\n\n if (key === 'shape') {\n characterData.shape = arrayBuffer\n }\n else if (key === 'pointCloud') {\n characterData.pointCloud = arrayBuffer\n }\n else if (key === 'idleAnimation') {\n characterData.idleAnimation = arrayBuffer\n }\n else if (key === 'monoAnimation') {\n characterData.monoAnimation = arrayBuffer\n }\n\n this.characterAssets.set(key, arrayBuffer)\n updateProgress(filename, true)\n return { key, success: true }\n }\n catch (error) {\n if (!optional) {\n throw error\n }\n logger.warn(`⚠️ Optional resource ${filename} failed to load:`, error)\n updateProgress(filename, true)\n return { key, success: false }\n }\n })\n\n await Promise.all(downloadPromises)\n\n // Save monologue audio URL only if monologue is enabled\n if (loadMonologue && monoAudioUrl) {\n characterData.monoAudioUrl = monoAudioUrl\n }\n\n if (!characterData.shape || !characterData.pointCloud) {\n throw new Error('Failed to load character data')\n }\n\n return characterData as CharacterDataResult\n }\n\n /**\n * Preload all resources (template + character data + camera info + settings)\n */\n async preloadResources(\n characterMeta: CharacterMeta,\n options?: {\n loadMonologue?: boolean\n progressCallback?: ProgressCallback | null\n },\n ): Promise<PreloadResult> {\n const { loadMonologue = false, progressCallback = null } = options || {}\n\n const [templateResources, characterData, preloadCameraSettings] = await Promise.all([\n this.loadTemplateResources((characterMeta as CharacterMeta & { flame?: FlameResources }).flame, (info) => {\n if (progressCallback) {\n progressCallback({\n ...info,\n stage: `template-${info.stage}`,\n })\n }\n }),\n this.loadCharacterData(characterMeta, {\n loadMonologue,\n progressCallback: (info) => {\n if (progressCallback) {\n progressCallback({\n ...info,\n stage: `character-${info.stage}`,\n })\n }\n },\n }),\n this.loadCameraSettings(characterMeta),\n ])\n\n return {\n templateResources,\n characterData,\n preloadCameraSettings,\n characterSettings: characterMeta.characterSettings,\n }\n }\n\n /**\n * Get loaded character asset by key\n */\n getCharacterAsset(key: string): ArrayBuffer | undefined {\n return this.characterAssets.get(key)\n }\n\n /**\n * Clear cached assets\n */\n clear() {\n this.characterAssets.clear()\n }\n\n // ============ API Client Methods ============\n\n /**\n * Get Main App API Client (enjoi.spatialwalk.top)\n * Used for: character list, auth, customization, etc.\n */\n private getMainAppClient() {\n return {\n async request(url: string, options: RequestInit = {}) {\n // Get environment config from AvatarKit\n const config = AvatarKit.getEnvironmentConfig()\n const baseUrl = config.realtimeApiBaseUrl\n const fullUrl = baseUrl + url\n try {\n const response = await fetch(fullUrl, {\n method: options.method || 'GET',\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n body: options.body ? JSON.stringify(options.body) : undefined,\n })\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status} ${response.statusText}`)\n }\n\n return response.json()\n }\n catch (err) {\n const msg = errorToMessage(err)\n throw new Error(`[MainAppClient] ${fullUrl} → ${msg}`)\n }\n },\n }\n }\n\n /**\n * Get SPAvatarKit SDK API Client (api.spatialwalk.top)\n * Used for: character details and resource URLs (public endpoints, no auth required)\n */\n private getSdkApiClient() {\n return {\n async request(url: string, options: RequestInit = {}) {\n // Get environment config from AvatarKit\n const config = AvatarKit.getEnvironmentConfig()\n const baseUrl = config.sdkApiBaseUrl\n const fullUrl = baseUrl + url\n try {\n const response = await fetch(fullUrl, {\n method: options.method || 'GET',\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n body: options.body ? JSON.stringify(options.body) : undefined,\n })\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status} ${response.statusText}`)\n }\n\n return response.json()\n }\n catch (err) {\n const msg = errorToMessage(err)\n throw new Error(`[SdkApiClient] ${fullUrl} → ${msg}`)\n }\n },\n }\n }\n\n /**\n * Get single character by ID from SPAvatarKit SDK API (v2, iOS compatible)\n * Domain: api.spatialwalk.top\n * Auth: Public endpoint, no authentication required\n * Returns CharacterMeta with nested resource structure\n */\n async getCharacterById(characterId: string): Promise<CharacterMeta> {\n try {\n const client = this.getSdkApiClient()\n const response = await client.request(`/v2/character/${characterId}`, {\n method: 'GET',\n })\n\n return response as CharacterMeta\n }\n catch (error: unknown) {\n logger.errorWithError('Failed to fetch character:', error)\n const errorMessage = error && typeof error === 'object' && 'message' in error\n ? String((error as { message?: unknown }).message)\n : 'Failed to fetch character'\n const dataMessage = error && typeof error === 'object' && 'data' in error && typeof (error as { data?: unknown }).data === 'object' && (error as { data?: { message?: unknown } }).data?.message\n ? String((error as { data: { message?: unknown } }).data.message)\n : null\n throw new Error(dataMessage || errorMessage)\n }\n }\n\n}\n","/**\n * AvatarManager:负责数字人管理,内部协调「数字人下载」和「数字人缓存」\n */\n\nimport type { LoadProgressInfo } from '../types'\n\nimport { LoadProgress } from '../types'\nimport { logger } from '../utils/logger'\nimport { Avatar } from './Avatar'\nimport { AvatarDownloader } from './AvatarDownloader'\nimport { AvatarKit } from './AvatarKit'\n\nexport class AvatarManager {\n private static _instance: AvatarManager | null = null\n private avatarDownloader: AvatarDownloader | null = null\n private _templateInitialized: boolean = false\n\n /**\n * 通过全局单例来访问\n */\n static get shared(): AvatarManager {\n if (!this._instance) {\n this._instance = new AvatarManager()\n }\n return this._instance\n }\n\n /**\n * 加载数字人\n * @param id 数字人 ID\n * @param onProgress 进度回调\n * @param options 加载选项\n * @returns Promise<Avatar>\n */\n async load(\n id: string,\n onProgress?: (progress: LoadProgressInfo) => void,\n options?: { enableMonologue?: boolean },\n ): Promise<Avatar> {\n logger.log(`[AvatarManager] Loading avatar with id: ${id}`)\n\n try {\n // 检查AvatarKit是否已初始化\n if (!AvatarKit.isInitialized) {\n throw new Error('AvatarKit not initialized. Please call AvatarKit.initialize() first.')\n }\n\n // 1. 初始化资源下载器\n if (!this.avatarDownloader) {\n this.avatarDownloader = new AvatarDownloader()\n }\n\n // 2. 获取角色元数据\n logger.log('[AvatarManager] Step 1: Fetching character metadata...')\n onProgress?.({ type: LoadProgress.downloading, progress: 10 })\n const characterMeta = await this.avatarDownloader.getCharacterById(id)\n\n // 3. 下载资源\n logger.log('[AvatarManager] Step 2: Downloading resources...')\n onProgress?.({ type: LoadProgress.downloading, progress: 30 })\n\n const resources = await this.avatarDownloader.preloadResources(characterMeta, {\n loadMonologue: options?.enableMonologue ?? false,\n progressCallback: (info) => {\n // 将内部进度转换为外部进度 (30-80%)\n const externalProgress = 30 + (info.progress / 100) * 50\n onProgress?.({\n type: LoadProgress.downloading,\n progress: Math.round(externalProgress),\n })\n },\n })\n\n // 4. 初始化WASM Core模板资源(仅首次初始化)\n const avatarCore = AvatarKit.getAvatarCore()\n if (!avatarCore) {\n throw new Error('AvatarCore not available. AvatarKit initialization may have failed.')\n }\n\n if (!this._templateInitialized) {\n logger.log('[AvatarManager] Step 3: Initializing WASM Core template resources (first time)...')\n onProgress?.({ type: LoadProgress.downloading, progress: 80 })\n\n // 加载模板资源到WASM Core\n await avatarCore.loadTemplateResourcesFromBuffers(resources.templateResources)\n this._templateInitialized = true\n logger.log('[AvatarManager] WASM Core template resources initialized successfully')\n }\n else {\n logger.log('[AvatarManager] WASM Core template resources already initialized, skipping...')\n }\n\n // 5. 创建 Avatar 实例\n logger.log('[AvatarManager] Step 4: Creating Avatar instance...')\n const avatar = new Avatar(id, characterMeta, resources)\n\n logger.log('[AvatarManager] Avatar loaded successfully')\n onProgress?.({ type: LoadProgress.completed })\n\n return avatar\n }\n catch (error) {\n logger.error('Failed to load avatar:', error instanceof Error ? error.message : String(error))\n onProgress?.({ type: LoadProgress.failed, error: error as Error })\n throw error\n }\n }\n\n /**\n * 清理资源加载器缓存\n */\n clearCache(): void {\n if (this.avatarDownloader) {\n this.avatarDownloader.clear()\n }\n }\n}\n","/**\n * Convert proto Flame to WASM FlameParams\n */\n\nimport type { Flame } from '../../generated/driveningress/v1/driveningress'\n\nexport interface FlameParams {\n shape_params?: number[]\n expr_params?: number[]\n rotation?: number[]\n translation?: number[]\n neck_pose?: number[]\n jaw_pose?: number[]\n eyes_pose?: number[]\n eyelid?: number[]\n has_eyelid?: boolean\n}\n\n/**\n * Convert proto Flame to WASM FlameParams format\n */\nexport function convertProtoFlameToWasmParams(protoFlame: Flame): FlameParams {\n return {\n translation: protoFlame.translation || [0, 0, 0],\n rotation: protoFlame.rotation || [0, 0, 0],\n neck_pose: protoFlame.neckPose || [0, 0, 0],\n jaw_pose: protoFlame.jawPose || [0, 0, 0],\n eyes_pose: protoFlame.eyePose || [0, 0, 0, 0, 0, 0],\n eyelid: protoFlame.eyeLid || [0, 0],\n expr_params: protoFlame.expression || [],\n shape_params: [], // Realtime doesn't provide shape params, use default\n has_eyelid: (protoFlame.eyeLid?.length || 0) > 0,\n }\n}\n\n/**\n * Convert WASM FlameParams to proto Flame format\n * Used for transition animation from idle to speaking\n */\nexport function convertWasmParamsToProtoFlame(wasmParams: FlameParams): Flame {\n return {\n translation: wasmParams.translation || [0, 0, 0],\n rotation: wasmParams.rotation || [0, 0, 0],\n neckPose: wasmParams.neck_pose || [0, 0, 0],\n jawPose: wasmParams.jaw_pose || [0, 0, 0],\n eyePose: wasmParams.eyes_pose || [0, 0, 0, 0, 0, 0],\n eyeLid: wasmParams.eyelid || [0, 0],\n expression: wasmParams.expr_params || [],\n }\n}\n\n/**\n * Create a neutral proto Flame (zero pose)\n */\nexport function createNeutralFlameProto(): Flame {\n return {\n translation: [0, 0, 0],\n rotation: [0, 0, 0],\n neckPose: [0, 0, 0],\n jawPose: [0, 0, 0],\n eyePose: [0, 0, 0, 0, 0, 0],\n eyeLid: [0, 0],\n expression: [],\n }\n}\n","/**\n * Splat 深度排序(Radix Sort 优化版)\n * 使用 11-bit 两轮基数排序,O(n) 时间复杂度\n */\n\n// 复用缓冲区(避免每帧重新分配)\nlet depthBuffer: Float32Array | null = null\nlet depthInt: Uint32Array | null = null\nlet indices0: Uint32Array | null = null\nlet indices1: Uint32Array | null = null\nlet result: Uint32Array | null = null\nlet counts: Uint32Array | null = null\n\nconst BUCKET_SIZE = 2048 // 11 位 = 2^11\nconst MASK = BUCKET_SIZE - 1\n\n/**\n * 对 splats 进行深度排序(Radix Sort)\n * @param packedData Packed 格式数据 [pos3, color4, cov6] x N\n * @param cameraPosition 相机位置\n * @param cameraForward 相机前向向量\n */\nexport function sortSplats(\n packedData: Float32Array,\n cameraPosition: [number, number, number],\n cameraForward: [number, number, number],\n): Uint32Array {\n const floatsPerPoint = 13\n const splatCount = packedData.length / floatsPerPoint\n\n // 初始化或复用缓冲区\n if (!depthBuffer || depthBuffer.length !== splatCount) {\n depthBuffer = new Float32Array(splatCount)\n depthInt = new Uint32Array(depthBuffer.buffer)\n indices0 = new Uint32Array(splatCount)\n indices1 = new Uint32Array(splatCount)\n result = new Uint32Array(splatCount)\n counts = new Uint32Array(BUCKET_SIZE)\n }\n\n const depths = depthBuffer!\n const depthsInt = depthInt!\n const idx0 = indices0!\n const idx1 = indices1!\n const out = result!\n const cnt = counts!\n\n // 1. 计算深度值\n const cx = cameraPosition[0]\n const cy = cameraPosition[1]\n const cz = cameraPosition[2]\n const fx = cameraForward[0]\n const fy = cameraForward[1]\n const fz = cameraForward[2]\n\n for (let i = 0; i < splatCount; i++) {\n const offset = i * floatsPerPoint\n depths[i]\n = (packedData[offset] - cx) * fx\n + (packedData[offset + 1] - cy) * fy\n + (packedData[offset + 2] - cz) * fz\n idx0[i] = i\n }\n\n // 2. 转换深度为整数(用于基数排序)\n // 浮点数翻转负数位以保证排序正确\n for (let i = 0; i < splatCount; i++) {\n const d = depthsInt[i]\n depthsInt[i] = d ^ (-(d >> 31) | 0x80000000)\n }\n\n // 3. 第一轮:按低 11 位排序\n radixPass(depthsInt, idx0, idx1, cnt, 0, splatCount)\n\n // 4. 第二轮:按中间 11 位排序\n radixPass(depthsInt, idx1, idx0, cnt, 11, splatCount)\n\n // 5. 第三轮:按高 10 位排序(32 位总共需要 3 轮)\n radixPass(depthsInt, idx0, idx1, cnt, 22, splatCount)\n\n // 6. 翻转结果(从远到近)\n for (let i = 0; i < splatCount; i++) {\n out[i] = idx1[splatCount - 1 - i]\n }\n\n return out\n}\n\n/**\n * 基数排序单轮\n */\nfunction radixPass(\n keys: Uint32Array,\n indicesIn: Uint32Array,\n indicesOut: Uint32Array,\n counts: Uint32Array,\n shift: number,\n count: number,\n): void {\n // 清零计数\n counts.fill(0)\n\n // 统计桶\n for (let i = 0; i < count; i++) {\n const key = (keys[indicesIn[i]] >> shift) & MASK\n counts[key]++\n }\n\n // 累积计数(前缀和)\n let sum = 0\n for (let i = 0; i < BUCKET_SIZE; i++) {\n const c = counts[i]\n counts[i] = sum\n sum += c\n }\n\n // 分配到输出\n for (let i = 0; i < count; i++) {\n const idx = indicesIn[i]\n const key = (keys[idx] >> shift) & MASK\n indicesOut[counts[key]++] = idx\n }\n}\n","/**\n * Packed Data 工具函数\n *\n * Packed 格式:[pos3, color4, cov6] x N 个点\n * 每个点 13 个 float,共 52 bytes\n */\n\nconst FLOATS_PER_POINT = 13\n\n// 复用缓冲区,避免每帧分配\nlet reorderedBuffer: Float32Array | null = null\n\n/**\n * 重新排序 packed 数据(复用缓冲区)\n * @param packedData 原始数据 [pos3, color4, cov6] x N\n * @param sortOrder 排序索引数组\n * @returns 重排序后的数据(复用的缓冲区引用)\n */\nexport function reorderPackedData(\n packedData: Float32Array,\n sortOrder: Uint32Array,\n): Float32Array {\n const pointCount = sortOrder.length\n const requiredLength = pointCount * FLOATS_PER_POINT\n\n // 仅在尺寸变化时重新分配\n if (!reorderedBuffer || reorderedBuffer.length !== requiredLength) {\n reorderedBuffer = new Float32Array(requiredLength)\n }\n\n // 复用缓冲区\n for (let i = 0; i < pointCount; i++) {\n const srcIdx = sortOrder[i]\n const srcOffset = srcIdx * FLOATS_PER_POINT\n const dstOffset = i * FLOATS_PER_POINT\n\n for (let j = 0; j < FLOATS_PER_POINT; j++) {\n reorderedBuffer[dstOffset + j] = packedData[srcOffset + j]\n }\n }\n\n return reorderedBuffer\n}\n","export default \"#version 300 es\\nprecision highp float;\\n\\nin vec2 v_relativePosition;\\nin vec4 v_color;\\n\\nout vec4 fragColor;\\n\\nconst float BOUNDS_RADIUS = 3.0;\\nconst float BOUNDS_RADIUS_SQUARED = BOUNDS_RADIUS * BOUNDS_RADIUS;\\n\\nfloat splatFragmentAlpha(vec2 relativePosition, float splatAlpha) {\\n // ✅ 修复:完全匹配MetalSplatter的计算方式\\n float negativeMagnitudeSquared = -dot(relativePosition, relativePosition);\\n\\n // 边界检查:超出椭圆边界的点被剔除\\n if (negativeMagnitudeSquared < -BOUNDS_RADIUS_SQUARED) {\\n return 0.0;\\n }\\n\\n // ✅ 修复:高斯衰减,使用MetalSplatter的公式 exp(0.5 * negative)\\n return exp(0.5 * negativeMagnitudeSquared) * splatAlpha;\\n}\\n\\nvoid main() {\\n float alpha = splatFragmentAlpha(v_relativePosition, v_color.a);\\n\\n // 预乘 alpha 输出(匹配 premultipliedAlpha: true)\\n // 颜色值需要乘以 alpha,这样 WebGL 才能正确混合\\n fragColor = vec4(v_color.rgb * alpha, alpha);\\n}\"","export default \"#version 300 es\\nprecision highp float;\\n\\n// 基础四边形顶点属性(共享4个顶点)\\nlayout(location = 0) in vec2 a_quadVertex; // (-1,-1), (-1,1), (1,-1), (1,1)\\n\\n// 实例化属性(每个splat实例)\\nlayout(location = 1) in vec3 a_position; // splat中心位置\\nlayout(location = 2) in vec4 a_color; // RGBA颜色\\nlayout(location = 3) in vec3 a_covA; // 协方差矩阵上三角\\nlayout(location = 4) in vec3 a_covB; // 协方差矩阵下三角\\n\\n// Uniform变量\\nuniform mat4 u_viewMatrix;\\nuniform mat4 u_projectionMatrix;\\nuniform vec2 u_screenSize;\\nuniform int u_enableFrustumCulling;\\n\\n// 输出到片段着色器\\nout vec2 v_relativePosition;\\nout vec4 v_color;\\n\\n// 常量定义\\nconst float BOUNDS_RADIUS = 3.0;\\n\\n/**\\n * 计算2D协方差矩阵(复刻Metal版本)\\n */\\nvec3 calcCovariance2D(vec3 viewPos, vec3 cov3Da, vec3 cov3Db, mat4 viewMatrix, mat4 projectionMatrix, vec2 screenSize) {\\n float invViewPosZ = 1.0 / viewPos.z;\\n float invViewPosZSquared = invViewPosZ * invViewPosZ;\\n\\n // FOV限制\\n float tanHalfFovX = 1.0 / projectionMatrix[0][0];\\n float tanHalfFovY = 1.0 / projectionMatrix[1][1];\\n float limX = 1.3 * tanHalfFovX;\\n float limY = 1.3 * tanHalfFovY;\\n\\n viewPos.x = clamp(viewPos.x * invViewPosZ, -limX, limX) * viewPos.z;\\n viewPos.y = clamp(viewPos.y * invViewPosZ, -limY, limY) * viewPos.z;\\n\\n // 焦距计算\\n float focalX = screenSize.x * projectionMatrix[0][0] / 2.0;\\n float focalY = screenSize.y * projectionMatrix[1][1] / 2.0;\\n\\n // 雅可比矩阵 J\\n mat3 J = mat3(\\n focalX * invViewPosZ, 0.0, 0.0,\\n 0.0, focalY * invViewPosZ, 0.0,\\n -(focalX * viewPos.x) * invViewPosZSquared, -(focalY * viewPos.y) * invViewPosZSquared, 0.0\\n );\\n\\n // 视图变换矩阵 W (仅旋转部分) - 固定使用转置(经验最清晰)\\n mat3 W = transpose(mat3(viewMatrix[0].xyz, viewMatrix[1].xyz, viewMatrix[2].xyz));\\n\\n // 投影变换 T = J * W\\n mat3 T = J * W;\\n\\n // 3D协方差矩阵 Vrk\\n mat3 Vrk = mat3(\\n cov3Da.x, cov3Da.y, cov3Da.z,\\n cov3Da.y, cov3Db.x, cov3Db.y,\\n cov3Da.z, cov3Db.y, cov3Db.z\\n );\\n\\n // 2D协方差矩阵\\n mat3 cov = T * Vrk * transpose(T);\\n\\n // 低通滤波器\\n cov[0][0] += 0.3;\\n cov[1][1] += 0.3;\\n\\n return vec3(cov[0][0], cov[0][1], cov[1][1]);\\n}\\n\\n/**\\n * 分解协方差矩阵\\n */\\nvoid decomposeCovariance(vec3 cov2D, out vec2 v1, out vec2 v2) {\\n float a = cov2D.x;\\n float b = cov2D.y;\\n float d = cov2D.z;\\n\\n float det = a * d - b * b;\\n float trace = a + d;\\n\\n float mean = 0.5 * trace;\\n float dist = max(0.1, sqrt(mean * mean - det));\\n\\n // 特征值\\n float lambda1 = mean + dist;\\n float lambda2 = mean - dist;\\n\\n // 确保特征值为正\\n lambda1 = max(lambda1, 0.01);\\n lambda2 = max(lambda2, 0.01);\\n\\n // 特征向量 - 完全复刻MetalSplatter的算法\\n vec2 eigenvector1;\\n if (abs(b) < 1e-6) {\\n eigenvector1 = (a > d) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\\n } else {\\n // ✅ 修复:使用MetalSplatter的公式 (b, d - lambda2) 而不是 (b, lambda1 - a)\\n eigenvector1 = normalize(vec2(b, d - lambda2));\\n }\\n\\n // ✅ 修复:正交特征向量,使用MetalSplatter的方向 (y, -x) 而不是 (-y, x)\\n vec2 eigenvector2 = vec2(eigenvector1.y, -eigenvector1.x);\\n\\n v1 = eigenvector1 * sqrt(lambda1);\\n v2 = eigenvector2 * sqrt(lambda2);\\n}\\n\\nvoid main() {\\n // 直接使用原始位置数据,不进行硬编码缩放\\n vec3 scaledPosition = a_position;\\n\\n // 转换到视图空间\\n vec4 viewPosition4 = u_viewMatrix * vec4(scaledPosition, 1.0);\\n vec3 viewPosition3 = viewPosition4.xyz;\\n\\n // 计算2D协方差矩阵\\n vec3 cov2D = calcCovariance2D(viewPosition3, a_covA, a_covB, u_viewMatrix, u_projectionMatrix, u_screenSize);\\n\\n // 分解协方差矩阵\\n vec2 axis1, axis2;\\n decomposeCovariance(cov2D, axis1, axis2);\\n\\n // 投影到屏幕空间\\n vec4 projectedCenter = u_projectionMatrix * viewPosition4;\\n\\n // 视锥体剔除(对齐MetalSplatter边界,可调试禁用)\\n if (u_enableFrustumCulling == 1) {\\n float bounds = 1.2 * projectedCenter.w;\\n if (projectedCenter.z < 0.0 ||\\n projectedCenter.z > projectedCenter.w ||\\n projectedCenter.x < -bounds ||\\n projectedCenter.x > bounds ||\\n projectedCenter.y < -bounds ||\\n projectedCenter.y > bounds) {\\n // 剔除到屏幕外\\n gl_Position = vec4(1.0, 1.0, 0.0, 1.0);\\n return;\\n }\\n }\\n\\n // 使用实例化的四边形顶点\\n vec2 relativeCoord = a_quadVertex;\\n\\n // 计算椭圆变换后的相对位置(像素单位)\\n vec2 ellipseRelativePos = relativeCoord.x * axis1 + relativeCoord.y * axis2;\\n\\n // 计算屏幕空间偏移\\n vec2 screenSizeFloat = u_screenSize;\\n vec2 projectedScreenDelta = ellipseRelativePos * 2.0 * BOUNDS_RADIUS / screenSizeFloat;\\n\\n // 最终顶点位置\\n gl_Position = vec4(\\n projectedCenter.x + projectedScreenDelta.x * projectedCenter.w,\\n projectedCenter.y + projectedScreenDelta.y * projectedCenter.w,\\n projectedCenter.z,\\n projectedCenter.w\\n );\\n\\n // 传递标准化坐标给片段着色器(椭圆内[-1,1]范围)\\n v_relativePosition = relativeCoord * BOUNDS_RADIUS;\\n v_color = a_color;\\n}\"","/**\n * WebGL 3DGS 渲染器\n */\n\nimport type { I3DGSRenderer } from '../renderer'\n\nimport { logger } from '../../utils/logger'\nimport fragmentShaderSource from './fragment.glsl?raw'\nimport vertexShaderSource from './vertex.glsl?raw'\n\nexport class WebGLRenderer implements I3DGSRenderer {\n private canvas: HTMLCanvasElement\n private backgroundColor: [number, number, number, number]\n private gl: WebGL2RenderingContext | null\n private shaderProgram: WebGLProgram | null\n private uniformLocations: Record<string, WebGLUniformLocation | null>\n private attributeLocations: Record<string, number>\n\n private splatBuffer: WebGLBuffer | null\n private quadVertexBuffer: WebGLBuffer | null\n private vertexArray: WebGLVertexArrayObject | null\n\n private splatCount: number\n private isInitialized: boolean\n private splatBufferSize: number // 跟踪当前 buffer 大小\n\n constructor(canvas: HTMLCanvasElement, backgroundColor?: [number, number, number, number]) {\n this.canvas = canvas\n this.backgroundColor = backgroundColor || [1.0, 1.0, 1.0, 1.0]\n\n // WebGL 上下文和程序\n this.gl = null\n this.shaderProgram = null\n this.uniformLocations = {}\n this.attributeLocations = {}\n\n // 缓冲区\n this.splatBuffer = null\n this.quadVertexBuffer = null\n this.vertexArray = null\n\n // 渲染状态\n this.splatCount = 0\n this.isInitialized = false\n this.splatBufferSize = 0\n }\n\n /**\n * 初始化 WebGL 渲染器\n */\n async initialize(): Promise<void> {\n try {\n // 创建 WebGL2 上下文\n this.gl = this.canvas.getContext('webgl2', {\n antialias: false,\n alpha: true, // 启用透明度,让 CSS 背景透出\n premultipliedAlpha: true,\n powerPreference: 'high-performance',\n preserveDrawingBuffer: false,\n })\n\n if (!this.gl) {\n throw new Error('WebGL2 not supported')\n }\n\n const gl = this.gl\n\n // 创建着色器程序\n this.shaderProgram = this.createShaderProgram(gl)\n\n // 获取 uniform 和 attribute 位置\n this.setupShaderLocations()\n\n // 设置 WebGL 状态\n this.setupWebGLState()\n\n // 创建缓冲区\n this.createBuffers()\n\n this.isInitialized = true\n }\n catch (error) {\n logger.errorWithError('WebGLRenderer initialize failed', error)\n throw error\n }\n }\n\n /**\n * 设置着色器位置\n */\n private setupShaderLocations() {\n const gl = this.gl\n if (!gl)\n throw new Error('WebGL context not initialized')\n const program = this.shaderProgram\n if (!program)\n throw new Error('Shader program not initialized')\n\n this.uniformLocations = {\n viewMatrix: gl.getUniformLocation(program, 'u_viewMatrix'),\n projectionMatrix: gl.getUniformLocation(program, 'u_projectionMatrix'),\n screenSize: gl.getUniformLocation(program, 'u_screenSize'),\n enableFrustumCulling: gl.getUniformLocation(program, 'u_enableFrustumCulling'),\n }\n\n this.attributeLocations = {\n quadVertex: 0, // a_quadVertex (共享四边形顶点)\n position: 1, // a_position (实例化)\n color: 2, // a_color (实例化)\n covA: 3, // a_covA (实例化)\n covB: 4, // a_covB (实例化)\n }\n }\n\n /**\n * 设置 WebGL 渲染状态\n */\n private setupWebGLState() {\n const gl = this.gl\n if (!gl)\n throw new Error('WebGL context not initialized')\n\n gl.disable(gl.DEPTH_TEST)\n gl.depthMask(true)\n gl.enable(gl.BLEND)\n // 预乘 alpha 混合(匹配 premultipliedAlpha: true)\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA)\n // 透明背景,让 CSS 背景透出\n gl.clearColor(0.0, 0.0, 0.0, 0.0)\n }\n\n /**\n * 创建渲染缓冲区\n */\n private createBuffers() {\n const gl = this.gl\n if (!gl)\n throw new Error('WebGL context not initialized')\n\n // 创建实例化渲染 VAO 和缓冲区\n this.vertexArray = gl.createVertexArray()\n this.splatBuffer = gl.createBuffer()\n this.createQuadVertexBuffer()\n }\n\n /**\n * 创建四边形顶点缓冲区(实例化渲染用)\n */\n private createQuadVertexBuffer() {\n const gl = this.gl\n if (!gl)\n throw new Error('WebGL context not initialized')\n\n // 四边形顶点(2D 坐标,将被实例化)\n const quadVertices = new Float32Array([\n -1.0,\n -1.0, // 左下\n -1.0,\n 1.0, // 左上\n 1.0,\n -1.0, // 右下\n 1.0,\n 1.0, // 右上\n ])\n\n this.quadVertexBuffer = gl.createBuffer()\n gl.bindBuffer(gl.ARRAY_BUFFER, this.quadVertexBuffer)\n gl.bufferData(gl.ARRAY_BUFFER, quadVertices, gl.STATIC_DRAW)\n }\n\n /**\n * 从已打包数据加载(零拷贝,GPU 优化路径)\n * 🚀 性能优化版本:直接使用 WASM 输出的 packed 数据\n * 🚀 Buffer 复用:避免每帧重新分配,使用 bufferSubData 更新\n * @param packedData Float32Array [pos3, color4, cov6] x N 个点\n * @param pointCount 点数\n * @param _sortOrder WebGL 忽略此参数(已在 RenderSystem 中重排序)\n */\n loadSplatsFromPackedData(packedData: Float32Array, pointCount: number, _sortOrder?: Uint32Array) {\n if (!this.isInitialized) {\n throw new Error('Renderer not initialized')\n }\n\n this.splatCount = pointCount\n\n // 直接上传\n this.uploadToGPU(packedData)\n }\n\n /**\n * 上传数据到 GPU\n */\n private uploadToGPU(packedData: Float32Array) {\n const gl = this.gl\n if (!gl)\n throw new Error('WebGL context not initialized')\n\n gl.bindBuffer(gl.ARRAY_BUFFER, this.splatBuffer)\n\n // 只在 buffer 不存在或大小变化时重新分配\n if (this.splatBufferSize !== packedData.byteLength) {\n gl.bufferData(gl.ARRAY_BUFFER, packedData, gl.DYNAMIC_DRAW)\n this.splatBufferSize = packedData.byteLength\n }\n else {\n // 使用 bufferSubData 更新数据(无需重新分配)\n gl.bufferSubData(gl.ARRAY_BUFFER, 0, packedData)\n }\n }\n\n /**\n * 设置实例化渲染顶点属性\n */\n private setupVertexAttributes() {\n const gl = this.gl\n if (!gl)\n throw new Error('WebGL context not initialized')\n\n // 绑定 VAO\n gl.bindVertexArray(this.vertexArray)\n\n // 设置共享四边形顶点属性\n gl.bindBuffer(gl.ARRAY_BUFFER, this.quadVertexBuffer)\n gl.enableVertexAttribArray(this.attributeLocations.quadVertex)\n gl.vertexAttribPointer(\n this.attributeLocations.quadVertex,\n 2,\n gl.FLOAT,\n false,\n 0,\n 0,\n )\n\n // 设置实例化 splat 属性\n gl.bindBuffer(gl.ARRAY_BUFFER, this.splatBuffer)\n\n const floatsPerSplat = 13\n const bytesPerFloat = 4\n const strideBytes = floatsPerSplat * bytesPerFloat\n\n // Position 属性 (location 1)\n gl.enableVertexAttribArray(this.attributeLocations.position)\n gl.vertexAttribPointer(\n this.attributeLocations.position,\n 3,\n gl.FLOAT,\n false,\n strideBytes,\n 0,\n )\n gl.vertexAttribDivisor(this.attributeLocations.position, 1)\n\n // Color 属性 (location 2)\n gl.enableVertexAttribArray(this.attributeLocations.color)\n gl.vertexAttribPointer(\n this.attributeLocations.color,\n 4,\n gl.FLOAT,\n false,\n strideBytes,\n 3 * bytesPerFloat,\n )\n gl.vertexAttribDivisor(this.attributeLocations.color, 1)\n\n // CovA 属性 (location 3)\n gl.enableVertexAttribArray(this.attributeLocations.covA)\n gl.vertexAttribPointer(\n this.attributeLocations.covA,\n 3,\n gl.FLOAT,\n false,\n strideBytes,\n 7 * bytesPerFloat,\n )\n gl.vertexAttribDivisor(this.attributeLocations.covA, 1)\n\n // CovB 属性 (location 4)\n gl.enableVertexAttribArray(this.attributeLocations.covB)\n gl.vertexAttribPointer(\n this.attributeLocations.covB,\n 3,\n gl.FLOAT,\n false,\n strideBytes,\n 10 * bytesPerFloat,\n )\n gl.vertexAttribDivisor(this.attributeLocations.covB, 1)\n }\n\n /**\n * 渲染一帧\n */\n render(\n viewMatrix: Float32Array,\n projectionMatrix: Float32Array,\n screenSize: [number, number],\n ) {\n if (!this.isInitialized || this.splatCount === 0) {\n return\n }\n\n const gl = this.gl\n if (!gl)\n throw new Error('WebGL context not initialized')\n\n gl.viewport(0, 0, screenSize[0], screenSize[1])\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)\n\n // 使用实例化着色器\n gl.useProgram(this.shaderProgram)\n\n // 设置 uniform 变量\n gl.uniformMatrix4fv(this.uniformLocations.viewMatrix, false, viewMatrix)\n gl.uniformMatrix4fv(this.uniformLocations.projectionMatrix, false, projectionMatrix)\n gl.uniform2fv(this.uniformLocations.screenSize, screenSize)\n gl.uniform1i(this.uniformLocations.enableFrustumCulling, 1)\n\n // 设置顶点属性\n this.setupVertexAttributes()\n\n // 实例化绘制\n gl.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, this.splatCount)\n }\n\n /**\n * 创建着色器程序\n */\n private createShaderProgram(gl: WebGL2RenderingContext): WebGLProgram {\n // 编译顶点着色器\n const vertexShader = gl.createShader(gl.VERTEX_SHADER)\n if (!vertexShader)\n throw new Error('Failed to create vertex shader')\n\n gl.shaderSource(vertexShader, vertexShaderSource)\n gl.compileShader(vertexShader)\n\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n const info = gl.getShaderInfoLog(vertexShader)\n gl.deleteShader(vertexShader)\n throw new Error(`顶点着色器编译失败:${info}`)\n }\n\n // 编译片段着色器\n const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER)\n if (!fragmentShader) {\n gl.deleteShader(vertexShader)\n throw new Error('Failed to create fragment shader')\n }\n\n gl.shaderSource(fragmentShader, fragmentShaderSource)\n gl.compileShader(fragmentShader)\n\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n const info = gl.getShaderInfoLog(fragmentShader)\n gl.deleteShader(vertexShader)\n gl.deleteShader(fragmentShader)\n throw new Error(`片段着色器编译失败:${info}`)\n }\n\n // 链接着色器程序\n const program = gl.createProgram()\n if (!program) {\n gl.deleteShader(vertexShader)\n gl.deleteShader(fragmentShader)\n throw new Error('Failed to create shader program')\n }\n\n gl.attachShader(program, vertexShader)\n gl.attachShader(program, fragmentShader)\n gl.linkProgram(program)\n\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n const info = gl.getProgramInfoLog(program)\n gl.deleteShader(vertexShader)\n gl.deleteShader(fragmentShader)\n gl.deleteProgram(program)\n throw new Error(`着色器程序链接失败:${info}`)\n }\n\n // 清理着色器对象\n gl.deleteShader(vertexShader)\n gl.deleteShader(fragmentShader)\n\n return program\n }\n\n /**\n * 清理资源\n */\n dispose() {\n if (!this.gl)\n return\n\n const gl = this.gl\n\n // 删除缓冲区\n if (this.splatBuffer)\n gl.deleteBuffer(this.splatBuffer)\n if (this.quadVertexBuffer)\n gl.deleteBuffer(this.quadVertexBuffer)\n if (this.vertexArray)\n gl.deleteVertexArray(this.vertexArray)\n\n // 删除着色器程序\n if (this.shaderProgram)\n gl.deleteProgram(this.shaderProgram)\n\n // Optionally lose the context to aggressively free VRAM\n try {\n const lose = gl.getExtension('WEBGL_lose_context') as { loseContext?: () => void } | null\n if (lose && typeof lose.loseContext === 'function') {\n lose.loseContext()\n }\n }\n catch {\n // best-effort only\n }\n\n this.isInitialized = false\n }\n}\n","export default \"/**\\n * WebGPU 3DGS 渲染着色器\\n *\\n * 实例化渲染:每个 splat 绘制一个四边形\\n * 对应 WebGL 版本的 GLSL 着色器\\n */\\n\\n// ============ Uniform Bindings ============\\n\\nstruct Uniforms {\\n viewMatrix: mat4x4f,\\n projectionMatrix: mat4x4f,\\n screenSize: vec2f,\\n enableFrustumCulling: u32,\\n}\\n\\n@group(0) @binding(0) var<uniform> uniforms: Uniforms;\\n\\n// ============ Storage Buffer Bindings (间接索引渲染) ============\\n\\n@group(1) @binding(0) var<storage, read> sortIndices: array<u32>;\\n@group(1) @binding(1) var<storage, read> splatData: array<f32>;\\n\\n// ============ Vertex Shader ============\\n\\nstruct VertexInput {\\n // 共享四边形顶点 (per-vertex)\\n @location(0) quadVertex: vec2f,\\n}\\n\\nstruct VertexOutput {\\n @builtin(position) position: vec4f,\\n @location(0) relativePosition: vec2f,\\n @location(1) color: vec4f,\\n}\\n\\n// 常量定义\\nconst BOUNDS_RADIUS: f32 = 3.0;\\n\\n/**\\n * 计算2D协方差矩阵(复刻 WebGL 版本)\\n */\\nfn calcCovariance2D(\\n viewPos: vec3f,\\n cov3Da: vec3f,\\n cov3Db: vec3f,\\n viewMatrix: mat4x4f,\\n projectionMatrix: mat4x4f,\\n screenSize: vec2f\\n) -> vec3f {\\n let invViewPosZ = 1.0 / viewPos.z;\\n let invViewPosZSquared = invViewPosZ * invViewPosZ;\\n\\n // FOV 限制\\n let tanHalfFovX = 1.0 / projectionMatrix[0][0];\\n let tanHalfFovY = 1.0 / projectionMatrix[1][1];\\n let limX = 1.3 * tanHalfFovX;\\n let limY = 1.3 * tanHalfFovY;\\n\\n var clampedViewPos = viewPos;\\n clampedViewPos.x = clamp(viewPos.x * invViewPosZ, -limX, limX) * viewPos.z;\\n clampedViewPos.y = clamp(viewPos.y * invViewPosZ, -limY, limY) * viewPos.z;\\n\\n // 焦距计算\\n let focalX = screenSize.x * projectionMatrix[0][0] / 2.0;\\n let focalY = screenSize.y * projectionMatrix[1][1] / 2.0;\\n\\n // 雅可比矩阵 J\\n let J = mat3x3f(\\n focalX * invViewPosZ, 0.0, -(focalX * clampedViewPos.x) * invViewPosZSquared,\\n 0.0, focalY * invViewPosZ, -(focalY * clampedViewPos.y) * invViewPosZSquared,\\n 0.0, 0.0, 0.0\\n );\\n\\n // 视图变换矩阵 W (仅旋转部分) - 转置\\n let W = transpose(mat3x3f(\\n viewMatrix[0].xyz,\\n viewMatrix[1].xyz,\\n viewMatrix[2].xyz\\n ));\\n\\n // 投影变换 T = J * W\\n let T = J * W;\\n\\n // 3D 协方差矩阵 Vrk(对称矩阵)\\n let Vrk = mat3x3f(\\n cov3Da.x, cov3Da.y, cov3Da.z,\\n cov3Da.y, cov3Db.x, cov3Db.y,\\n cov3Da.z, cov3Db.y, cov3Db.z\\n );\\n\\n // 2D 协方差矩阵: cov = T * Vrk * T^T\\n let cov = T * Vrk * transpose(T);\\n\\n // 低通滤波器\\n var result = vec3f(cov[0][0], cov[0][1], cov[1][1]);\\n result.x += 0.3;\\n result.z += 0.3;\\n\\n return result;\\n}\\n\\n/**\\n * 分解协方差矩阵\\n */\\nfn decomposeCovariance(cov2D: vec3f) -> array<vec2f, 2> {\\n let a = cov2D.x;\\n let b = cov2D.y;\\n let d = cov2D.z;\\n\\n let det = a * d - b * b;\\n let trace = a + d;\\n\\n let mean = 0.5 * trace;\\n let dist = max(0.1, sqrt(mean * mean - det));\\n\\n // 特征值\\n var lambda1 = mean + dist;\\n var lambda2 = mean - dist;\\n\\n // 确保特征值为正\\n lambda1 = max(lambda1, 0.01);\\n lambda2 = max(lambda2, 0.01);\\n\\n // 特征向量(复刻 WebGL MetalSplatter 算法)\\n var eigenvector1: vec2f;\\n if (abs(b) < 1e-6) {\\n eigenvector1 = select(vec2f(0.0, 1.0), vec2f(1.0, 0.0), a > d);\\n } else {\\n eigenvector1 = normalize(vec2f(b, d - lambda2));\\n }\\n\\n // 正交特征向量\\n let eigenvector2 = vec2f(eigenvector1.y, -eigenvector1.x);\\n\\n let v1 = eigenvector1 * sqrt(lambda1);\\n let v2 = eigenvector2 * sqrt(lambda2);\\n\\n return array<vec2f, 2>(v1, v2);\\n}\\n\\n@vertex\\nfn vertexMain(\\n input: VertexInput,\\n @builtin(instance_index) instanceIndex: u32\\n) -> VertexOutput {\\n var output: VertexOutput;\\n\\n // 🚀 间接索引:通过排序索引读取实际数据\\n let sortedIdx = sortIndices[instanceIndex];\\n let dataOffset = sortedIdx * 13u;\\n\\n // 从 storage buffer 读取 splat 数据\\n let position = vec3f(\\n splatData[dataOffset + 0u],\\n splatData[dataOffset + 1u],\\n splatData[dataOffset + 2u]\\n );\\n let color = vec4f(\\n splatData[dataOffset + 3u],\\n splatData[dataOffset + 4u],\\n splatData[dataOffset + 5u],\\n splatData[dataOffset + 6u]\\n );\\n let covA = vec3f(\\n splatData[dataOffset + 7u],\\n splatData[dataOffset + 8u],\\n splatData[dataOffset + 9u]\\n );\\n let covB = vec3f(\\n splatData[dataOffset + 10u],\\n splatData[dataOffset + 11u],\\n splatData[dataOffset + 12u]\\n );\\n\\n // 转换到视图空间\\n let viewPosition4 = uniforms.viewMatrix * vec4f(position, 1.0);\\n let viewPosition3 = viewPosition4.xyz;\\n\\n // 计算 2D 协方差矩阵\\n let cov2D = calcCovariance2D(\\n viewPosition3,\\n covA,\\n covB,\\n uniforms.viewMatrix,\\n uniforms.projectionMatrix,\\n uniforms.screenSize\\n );\\n\\n // 分解协方差矩阵\\n let axes = decomposeCovariance(cov2D);\\n let axis1 = axes[0];\\n let axis2 = axes[1];\\n\\n // 投影到屏幕空间\\n let projectedCenter = uniforms.projectionMatrix * viewPosition4;\\n\\n // 视锥体剔除\\n if (uniforms.enableFrustumCulling == 1u) {\\n let bounds = 1.2 * projectedCenter.w;\\n if (projectedCenter.z < 0.0 ||\\n projectedCenter.z > projectedCenter.w ||\\n projectedCenter.x < -bounds ||\\n projectedCenter.x > bounds ||\\n projectedCenter.y < -bounds ||\\n projectedCenter.y > bounds) {\\n // 剔除到屏幕外\\n output.position = vec4f(2.0, 2.0, 0.0, 1.0);\\n output.relativePosition = vec2f(0.0);\\n output.color = vec4f(0.0);\\n return output;\\n }\\n }\\n\\n // 使用实例化的四边形顶点\\n let relativeCoord = input.quadVertex;\\n\\n // 计算椭圆变换后的相对位置(像素单位)\\n let ellipseRelativePos = relativeCoord.x * axis1 + relativeCoord.y * axis2;\\n\\n // 计算屏幕空间偏移\\n let projectedScreenDelta = ellipseRelativePos * 2.0 * BOUNDS_RADIUS / uniforms.screenSize;\\n\\n // 最终顶点位置\\n output.position = vec4f(\\n projectedCenter.x + projectedScreenDelta.x * projectedCenter.w,\\n projectedCenter.y + projectedScreenDelta.y * projectedCenter.w,\\n projectedCenter.z,\\n projectedCenter.w\\n );\\n\\n // 传递给 fragment shader\\n output.relativePosition = relativeCoord * BOUNDS_RADIUS;\\n output.color = color;\\n\\n return output;\\n}\\n\\n// ============ Fragment Shader ============\\n\\nconst BOUNDS_RADIUS_SQUARED: f32 = BOUNDS_RADIUS * BOUNDS_RADIUS;\\n\\nfn splatFragmentAlpha(relativePosition: vec2f, splatAlpha: f32) -> f32 {\\n // 复刻 WebGL MetalSplatter 计算方式\\n let negativeMagnitudeSquared = -dot(relativePosition, relativePosition);\\n\\n // 边界检查:超出椭圆边界的点被剔除\\n if (negativeMagnitudeSquared < -BOUNDS_RADIUS_SQUARED) {\\n return 0.0;\\n }\\n\\n // 高斯衰减\\n return exp(0.5 * negativeMagnitudeSquared) * splatAlpha;\\n}\\n\\n@fragment\\nfn fragmentMain(input: VertexOutput) -> @location(0) vec4f {\\n let alpha = splatFragmentAlpha(input.relativePosition, input.color.a);\\n\\n // 预乘 alpha 输出(匹配 alphaMode: 'premultiplied')\\n return vec4f(input.color.rgb * alpha, alpha);\\n}\\n\"","/**\n * WebGPU 3DGS 渲染器\n */\n\nimport type { I3DGSRenderer } from '../renderer'\n\nimport renderShaderCode from './render.wgsl?raw'\n\nexport class WebGPURenderer implements I3DGSRenderer {\n private canvas: HTMLCanvasElement\n private backgroundColor: [number, number, number, number]\n private device: GPUDevice | null = null\n private context: GPUCanvasContext | null = null\n private renderPipeline: GPURenderPipeline | null = null\n private quadVertexBuffer: GPUBuffer | null = null\n private uniformBuffer: GPUBuffer | null = null\n private uniformBindGroup: GPUBindGroup | null = null\n\n // 🚀 间接索引渲染 buffers\n private sortIndexBuffer: GPUBuffer | null = null\n private splatDataBuffer: GPUBuffer | null = null\n private storageBindGroup: GPUBindGroup | null = null\n private lastSortOrder: Uint32Array | null = null // 缓存上次的排序索引\n private bindGroupNeedsUpdate = false // 标记 bind group 是否需要更新\n\n private splatCount = 0\n private presentationFormat: GPUTextureFormat = 'bgra8unorm'\n\n constructor(canvas: HTMLCanvasElement, backgroundColor?: [number, number, number, number]) {\n this.canvas = canvas\n this.backgroundColor = backgroundColor || [1.0, 1.0, 1.0, 1.0]\n }\n\n /**\n * 初始化 WebGPU 渲染器\n */\n async initialize(): Promise<void> {\n // 1. 获取 GPU adapter\n const adapter = await navigator.gpu.requestAdapter({\n powerPreference: 'high-performance',\n })\n if (!adapter) {\n throw new Error('WebGPU: No GPU adapter found')\n }\n\n // 2. 请求 device\n this.device = await adapter.requestDevice()\n\n // 3. 配置 canvas context\n this.context = this.canvas.getContext('webgpu')\n if (!this.context) {\n throw new Error('WebGPU: Failed to get canvas context')\n }\n\n this.presentationFormat = navigator.gpu.getPreferredCanvasFormat()\n this.context.configure({\n device: this.device,\n format: this.presentationFormat,\n alphaMode: 'premultiplied',\n })\n\n // 4. 创建 uniform buffer\n this.createUniformBuffer()\n\n // 5. 创建 quad vertex buffer(共享四边形)\n this.createQuadVertexBuffer()\n\n // 6. 创建 render pipeline\n await this.createRenderPipeline()\n }\n\n /**\n * 创建 Uniform Buffer\n */\n private createUniformBuffer(): void {\n if (!this.device)\n return\n\n // Uniform 结构:\n // - viewMatrix: mat4x4f (64 bytes)\n // - projectionMatrix: mat4x4f (64 bytes)\n // - screenSize: vec2f (8 bytes) + padding 8 bytes\n // - enableFrustumCulling: u32 (4 bytes) + padding 12 bytes\n // Total: 160 bytes\n\n const uniformBufferSize = 160\n\n this.uniformBuffer = this.device.createBuffer({\n label: 'Uniform Buffer',\n size: uniformBufferSize,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n })\n }\n\n /**\n * 创建四边形顶点缓冲区(实例化渲染用)\n */\n private createQuadVertexBuffer(): void {\n if (!this.device)\n return\n\n const quadVertices = new Float32Array([\n -1.0,\n -1.0, // 左下\n -1.0,\n 1.0, // 左上\n 1.0,\n -1.0, // 右下\n 1.0,\n 1.0, // 右上\n ])\n\n this.quadVertexBuffer = this.device.createBuffer({\n label: 'Quad Vertex Buffer',\n size: quadVertices.byteLength,\n usage: GPUBufferUsage.VERTEX,\n mappedAtCreation: true,\n })\n\n new Float32Array(this.quadVertexBuffer.getMappedRange()).set(quadVertices)\n this.quadVertexBuffer.unmap()\n }\n\n /**\n * 创建 Render Pipeline\n */\n private async createRenderPipeline(): Promise<void> {\n if (!this.device)\n return\n\n // 创建 shader module\n const shaderModule = this.device.createShaderModule({\n label: '3DGS Render Shader',\n code: renderShaderCode,\n })\n\n // Bind Group 0: Uniforms\n const uniformBindGroupLayout = this.device.createBindGroupLayout({\n label: 'Uniform Bind Group Layout',\n entries: [\n {\n binding: 0,\n visibility: GPUShaderStage.VERTEX,\n buffer: { type: 'uniform' },\n },\n ],\n })\n\n // Bind Group 1: Storage Buffers (间接索引)\n const storageBindGroupLayout = this.device.createBindGroupLayout({\n label: 'Storage Bind Group Layout',\n entries: [\n {\n binding: 0, // sortIndices\n visibility: GPUShaderStage.VERTEX,\n buffer: { type: 'read-only-storage' },\n },\n {\n binding: 1, // splatData\n visibility: GPUShaderStage.VERTEX,\n buffer: { type: 'read-only-storage' },\n },\n ],\n })\n\n const pipelineLayout = this.device.createPipelineLayout({\n label: 'Render Pipeline Layout',\n bindGroupLayouts: [uniformBindGroupLayout, storageBindGroupLayout],\n })\n\n // Vertex buffer layouts (只保留 quad vertices)\n const vertexBufferLayouts: GPUVertexBufferLayout[] = [\n // Buffer 0: Quad vertices (per-vertex)\n {\n arrayStride: 8, // 2 floats\n stepMode: 'vertex',\n attributes: [\n {\n shaderLocation: 0, // quadVertex\n offset: 0,\n format: 'float32x2',\n },\n ],\n },\n ]\n\n // Create render pipeline\n this.renderPipeline = this.device.createRenderPipeline({\n label: '3DGS Render Pipeline',\n layout: pipelineLayout,\n vertex: {\n module: shaderModule,\n entryPoint: 'vertexMain',\n buffers: vertexBufferLayouts,\n },\n fragment: {\n module: shaderModule,\n entryPoint: 'fragmentMain',\n targets: [\n {\n format: this.presentationFormat,\n blend: {\n // 预乘 alpha 混合(匹配 alphaMode: 'premultiplied')\n color: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add',\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add',\n },\n },\n },\n ],\n },\n primitive: {\n topology: 'triangle-strip',\n stripIndexFormat: undefined,\n },\n depthStencil: undefined, // 3DGS 不使用深度测试\n })\n\n // 创建 uniform bind group (group 0)\n this.uniformBindGroup = this.device.createBindGroup({\n label: 'Uniform Bind Group',\n layout: uniformBindGroupLayout,\n entries: [\n {\n binding: 0,\n resource: { buffer: this.uniformBuffer! },\n },\n ],\n })\n\n // storage bind group 将在 loadSplatsFromPackedData 中创建\n }\n\n /**\n * 从已打包数据加载\n * 🚀 间接索引渲染:packedData 是原始数据,sortOrder 是排序索引\n * 🚀 完全消除 CPU 重排序开销\n */\n loadSplatsFromPackedData(\n packedData: Float32Array,\n pointCount: number,\n sortOrder?: Uint32Array,\n ): void {\n if (!this.device)\n throw new Error('Device not initialized')\n\n this.splatCount = pointCount\n\n // 1. 创建或更新 splat data buffer\n if (!this.splatDataBuffer || this.splatDataBuffer.size !== packedData.byteLength) {\n if (this.splatDataBuffer) {\n this.splatDataBuffer.destroy()\n }\n\n this.splatDataBuffer = this.device.createBuffer({\n label: 'Splat Data Buffer',\n size: packedData.byteLength,\n usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,\n })\n this.bindGroupNeedsUpdate = true // buffer 重建,需要更新 bind group\n }\n\n // 上传原始数据\n this.device.queue.writeBuffer(\n this.splatDataBuffer,\n 0,\n packedData.buffer,\n packedData.byteOffset,\n packedData.byteLength,\n )\n\n // 2. 创建或更新 sort index buffer\n if (sortOrder) {\n const indexBufferSize = sortOrder.byteLength\n\n // 检查是否需要更新索引(避免重复上传相同数据)\n const sortOrderChanged = !this.lastSortOrder || sortOrder !== this.lastSortOrder\n\n if (!this.sortIndexBuffer || this.sortIndexBuffer.size !== indexBufferSize) {\n if (this.sortIndexBuffer) {\n this.sortIndexBuffer.destroy()\n }\n\n this.sortIndexBuffer = this.device.createBuffer({\n label: 'Sort Index Buffer',\n size: indexBufferSize,\n usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,\n })\n this.bindGroupNeedsUpdate = true // buffer 重建,需要更新 bind group\n }\n\n // 只在排序索引变化时上传\n if (sortOrderChanged) {\n this.device.queue.writeBuffer(\n this.sortIndexBuffer,\n 0,\n sortOrder.buffer,\n sortOrder.byteOffset,\n sortOrder.byteLength,\n )\n this.lastSortOrder = sortOrder\n }\n\n // 3. 创建或更新 storage bind group (group 1)\n if (this.bindGroupNeedsUpdate && this.renderPipeline && this.sortIndexBuffer && this.splatDataBuffer) {\n const storageBindGroupLayout = this.renderPipeline.getBindGroupLayout(1)\n\n this.storageBindGroup = this.device.createBindGroup({\n label: 'Storage Bind Group',\n layout: storageBindGroupLayout,\n entries: [\n {\n binding: 0,\n resource: { buffer: this.sortIndexBuffer },\n },\n {\n binding: 1,\n resource: { buffer: this.splatDataBuffer },\n },\n ],\n })\n this.bindGroupNeedsUpdate = false\n }\n }\n }\n\n /**\n * 渲染一帧\n */\n render(\n viewMatrix: Float32Array,\n projectionMatrix: Float32Array,\n screenSize: [number, number],\n ): void {\n if (!this.device || !this.context || !this.renderPipeline)\n return\n if (this.splatCount === 0 || !this.storageBindGroup)\n return\n\n // 更新 uniform buffer\n this.updateUniforms(viewMatrix, projectionMatrix, screenSize)\n\n // 获取当前 texture\n const textureView = this.context.getCurrentTexture().createView()\n\n // 创建 command encoder\n const commandEncoder = this.device.createCommandEncoder({\n label: 'Render Command Encoder',\n })\n\n const renderPass = commandEncoder.beginRenderPass({\n label: 'Render Pass',\n colorAttachments: [\n {\n view: textureView,\n // 透明清屏以便 CSS 背景透出\n clearValue: { r: 0.0, g: 0.0, b: 0.0, a: 0.0 },\n loadOp: 'clear',\n storeOp: 'store',\n },\n ],\n })\n\n renderPass.setPipeline(this.renderPipeline)\n renderPass.setBindGroup(0, this.uniformBindGroup!) // Uniforms\n renderPass.setBindGroup(1, this.storageBindGroup!) // Storage buffers (间接索引)\n renderPass.setVertexBuffer(0, this.quadVertexBuffer!) // Quad vertices\n renderPass.draw(4, this.splatCount) // 4 vertices per quad, N instances\n\n renderPass.end()\n\n // Submit\n this.device.queue.submit([commandEncoder.finish()])\n }\n\n /**\n * 更新 Uniform Buffer\n */\n private updateUniforms(\n viewMatrix: Float32Array,\n projectionMatrix: Float32Array,\n screenSize: [number, number],\n ): void {\n if (!this.device || !this.uniformBuffer)\n return\n\n // 准备 uniform 数据(160 bytes)\n const uniformData = new ArrayBuffer(160)\n const float32View = new Float32Array(uniformData)\n const uint32View = new Uint32Array(uniformData)\n\n // viewMatrix (16 floats, 64 bytes)\n float32View.set(viewMatrix, 0)\n\n // projectionMatrix (16 floats, 64 bytes)\n float32View.set(projectionMatrix, 16)\n\n // screenSize (2 floats, 8 bytes) + padding 8 bytes\n float32View[32] = screenSize[0]\n float32View[33] = screenSize[1]\n\n // enableFrustumCulling (u32, 4 bytes) + padding 12 bytes\n uint32View[36] = 1 // true\n\n // 写入 buffer\n this.device.queue.writeBuffer(this.uniformBuffer, 0, uniformData)\n }\n\n /**\n * 清理资源\n */\n dispose(): void {\n this.sortIndexBuffer?.destroy()\n this.splatDataBuffer?.destroy()\n this.quadVertexBuffer?.destroy()\n this.uniformBuffer?.destroy()\n this.device?.destroy()\n\n this.sortIndexBuffer = null\n this.splatDataBuffer = null\n this.quadVertexBuffer = null\n this.uniformBuffer = null\n this.uniformBindGroup = null\n this.storageBindGroup = null\n this.device = null\n this.context = null\n this.renderPipeline = null\n }\n}\n","/**\n * 渲染系统 - 统一管理 WebGL/WebGPU 渲染\n *\n * 职责:\n * 1. 自动选择渲染后端 (WebGPU 优先,不支持则回退 WebGL)\n * 2. 相机管理\n * 3. 矩阵计算\n */\n\nimport type { CameraConfig } from '../types'\nimport type { I3DGSRenderer, RenderBackend } from './renderer'\n\nimport { logger } from '../utils/logger'\nimport { sortSplats } from './sortSplats'\nimport { reorderPackedData } from './webgl/reorderData'\nimport { WebGLRenderer } from './webgl/webglRenderer'\nimport { WebGPURenderer } from './webgpu/webgpuRenderer'\n\nexport interface RenderSystemOptions {\n canvas: HTMLCanvasElement\n preferBackend?: RenderBackend\n backgroundColor?: [number, number, number, number]\n camera?: CameraConfig\n}\n\nexport class RenderSystem {\n private renderer: I3DGSRenderer | null = null\n private backend: RenderBackend | null = null\n private canvas: HTMLCanvasElement\n private options: RenderSystemOptions\n\n // 相机配置\n private camera: CameraConfig & {\n up: [number, number, number]\n aspect: number\n }\n\n // 矩阵缓存(复用缓冲区,避免每帧分配)\n private viewMatrix = new Float32Array(16)\n private projectionMatrix = new Float32Array(16)\n\n // 当前数据(GPU 格式:[pos3, color4, cov6] x N)\n private originalPackedData: Float32Array | null = null\n\n // 性能统计\n public renderTime = 0 // 总渲染耗时\n public sortTime = 0 // 排序耗时\n\n constructor(options: RenderSystemOptions) {\n this.options = options\n this.canvas = options.canvas\n\n // 初始化相机(从配置或使用默认值)\n const cameraConfig = options.camera || {\n position: [-0.02, -0.013, 1.5],\n target: [0, 0, 0],\n fov: 22,\n near: 0.1,\n far: 100,\n }\n\n this.camera = {\n ...cameraConfig,\n up: [0, 1, 0],\n aspect: 1,\n }\n }\n\n /**\n * 初始化渲染系统\n */\n async initialize(): Promise<void> {\n const { preferBackend, backgroundColor } = this.options\n\n if (preferBackend !== 'webgl') {\n const webgpuSupported = await this.checkWebGPUSupport()\n if (webgpuSupported) {\n try {\n this.renderer = new WebGPURenderer(this.canvas, backgroundColor)\n await this.renderer.initialize()\n this.backend = 'webgpu'\n logger.log('✅ Using WebGPU renderer')\n this.updateCameraAspect()\n return\n }\n catch (err) {\n logger.warn('⚠️ WebGPU init failed, fallback to WebGL:', err)\n }\n }\n }\n\n this.renderer = new WebGLRenderer(this.canvas, backgroundColor)\n await this.renderer.initialize()\n this.backend = 'webgl'\n logger.log('✅ Using WebGL renderer')\n this.updateCameraAspect()\n }\n\n /**\n * 加载已打包的 Splat 数据(零拷贝,GPU 格式)\n * 直接接收 WASM 的 packed 数据\n *\n * @param packedData Float32Array [pos3, color4, cov6] x N 个点\n */\n loadSplatsFromPackedData(packedData: Float32Array): void {\n if (!this.renderer)\n throw new Error('Renderer not initialized')\n\n // 保存原始数据\n this.originalPackedData = packedData\n }\n\n /**\n * 渲染一帧\n */\n renderFrame(): void {\n if (!this.renderer || !this.originalPackedData)\n return\n\n const startRender = performance.now()\n\n this.updateCameraMatrices()\n\n const pointCount = Math.floor(this.originalPackedData.length / 13)\n\n // 计算排序索引(直接从 packed data 读取 position,无需提取)\n const startSort = performance.now()\n const sortOrder = sortSplats(\n this.originalPackedData,\n this.camera.position,\n this.getCameraForward(),\n )\n this.sortTime = performance.now() - startSort\n\n // 根据后端类型决定如何传递数据\n if (this.backend === 'webgpu') {\n // WebGPU: 传递原始数据 + 排序索引(GPU 间接索引渲染)\n this.renderer.loadSplatsFromPackedData(this.originalPackedData, pointCount, sortOrder)\n }\n else {\n // WebGL: 传递 CPU 重排序后的数据\n const reorderedData = reorderPackedData(this.originalPackedData, sortOrder)\n this.renderer.loadSplatsFromPackedData(reorderedData, pointCount)\n }\n\n // 渲染\n this.renderer.render(\n this.viewMatrix,\n this.projectionMatrix,\n [this.canvas.width, this.canvas.height],\n )\n\n this.renderTime = performance.now() - startRender\n }\n\n /**\n * 更新相机参数\n */\n updateCamera(params: Partial<CameraConfig>): void {\n Object.assign(this.camera, params)\n this.updateCameraAspect()\n }\n\n /**\n * 处理窗口大小变化\n */\n handleResize(): void {\n this.updateCameraAspect()\n }\n\n /**\n * 获取当前使用的后端\n */\n getBackend(): RenderBackend | null {\n return this.backend\n }\n\n /**\n * 清理资源\n */\n dispose(): void {\n this.renderer?.dispose()\n this.renderer = null\n }\n\n // ========== 私有方法 ==========\n\n /**\n * 检查 WebGPU 支持\n */\n private async checkWebGPUSupport(): Promise<boolean> {\n if (!navigator.gpu)\n return false\n try {\n const adapter = await navigator.gpu.requestAdapter()\n return adapter !== null\n }\n catch {\n return false\n }\n }\n\n /**\n * 更新相机长宽比\n */\n private updateCameraAspect(): void {\n this.camera.aspect = this.canvas.width / this.canvas.height\n }\n\n /**\n * 更新相机矩阵\n */\n private updateCameraMatrices(): void {\n this.updatePerspectiveMatrix(\n this.camera.fov,\n this.camera.aspect,\n this.camera.near,\n this.camera.far,\n )\n\n this.updateLookAtMatrix(\n this.camera.position,\n this.camera.target,\n this.camera.up,\n )\n }\n\n /**\n * 获取相机前向向量\n */\n private getCameraForward(): [number, number, number] {\n const forward: [number, number, number] = [\n this.camera.target[0] - this.camera.position[0],\n this.camera.target[1] - this.camera.position[1],\n this.camera.target[2] - this.camera.position[2],\n ]\n\n const length = Math.sqrt(\n forward[0] ** 2 + forward[1] ** 2 + forward[2] ** 2,\n )\n if (length > 0) {\n forward[0] /= length\n forward[1] /= length\n forward[2] /= length\n }\n\n return forward\n }\n\n /**\n * 更新透视投影矩阵(复用缓冲区)\n */\n private updatePerspectiveMatrix(\n fov: number,\n aspect: number,\n near: number,\n far: number,\n ): void {\n const f = 1.0 / Math.tan((fov * Math.PI) / 180 / 2)\n const rangeInv = 1.0 / (near - far)\n\n const m = this.projectionMatrix\n m[0] = f / aspect\n m[1] = 0\n m[2] = 0\n m[3] = 0\n m[4] = 0\n m[5] = f\n m[6] = 0\n m[7] = 0\n m[8] = 0\n m[9] = 0\n m[10] = (near + far) * rangeInv\n m[11] = -1\n m[12] = 0\n m[13] = 0\n m[14] = near * far * rangeInv * 2\n m[15] = 0\n }\n\n /**\n * 更新视图矩阵 (Look At,复用缓冲区)\n */\n private updateLookAtMatrix(\n eye: [number, number, number],\n target: [number, number, number],\n up: [number, number, number],\n ): void {\n // Z 轴 (相机指向)\n const zAxis: [number, number, number] = [\n eye[0] - target[0],\n eye[1] - target[1],\n eye[2] - target[2],\n ]\n const zLen = Math.sqrt(zAxis[0] ** 2 + zAxis[1] ** 2 + zAxis[2] ** 2)\n zAxis[0] /= zLen\n zAxis[1] /= zLen\n zAxis[2] /= zLen\n\n // X 轴 (右方向)\n const xAxis: [number, number, number] = [\n up[1] * zAxis[2] - up[2] * zAxis[1],\n up[2] * zAxis[0] - up[0] * zAxis[2],\n up[0] * zAxis[1] - up[1] * zAxis[0],\n ]\n const xLen = Math.sqrt(xAxis[0] ** 2 + xAxis[1] ** 2 + xAxis[2] ** 2)\n xAxis[0] /= xLen\n xAxis[1] /= xLen\n xAxis[2] /= xLen\n\n // Y 轴 (上方向)\n const yAxis: [number, number, number] = [\n zAxis[1] * xAxis[2] - zAxis[2] * xAxis[1],\n zAxis[2] * xAxis[0] - zAxis[0] * xAxis[2],\n zAxis[0] * xAxis[1] - zAxis[1] * xAxis[0],\n ]\n\n const m = this.viewMatrix\n m[0] = xAxis[0]\n m[1] = yAxis[0]\n m[2] = zAxis[0]\n m[3] = 0\n m[4] = xAxis[1]\n m[5] = yAxis[1]\n m[6] = zAxis[1]\n m[7] = 0\n m[8] = xAxis[2]\n m[9] = yAxis[2]\n m[10] = zAxis[2]\n m[11] = 0\n m[12] = -(xAxis[0] * eye[0] + xAxis[1] * eye[1] + xAxis[2] * eye[2])\n m[13] = -(yAxis[0] * eye[0] + yAxis[1] * eye[1] + yAxis[2] * eye[2])\n m[14] = -(zAxis[0] * eye[0] + zAxis[1] * eye[1] + zAxis[2] * eye[2])\n m[15] = 1\n }\n}\n","/**\n * Animation Interpolation Utilities (SDK)\n * Linear interpolation with cosine easing between Flame frames\n * Aligned with app implementation and iOS behavior\n */\n\nimport type { Flame } from '../generated/driveningress/v1/driveningress'\n\nfunction lerpArrays(from: number[], to: number[], progress: number): number[] {\n const length = Math.min(from.length, to.length)\n const result: number[] = Array.from({ length })\n for (let i = 0; i < length; i++) {\n result[i] = from[i] + (to[i] - from[i]) * progress\n }\n return result\n}\n\n/**\n * Linear interpolation with cosine easing (ease-in-ease-out)\n * 0.5 - cos(progress * π) * 0.5\n */\nexport function linearLerp(from: Flame, to: Flame, progress: number): Flame {\n const easedProgress = 0.5 - Math.cos(progress * Math.PI) * 0.5\n\n return {\n translation: lerpArrays(from.translation || [0, 0, 0], to.translation || [0, 0, 0], easedProgress),\n rotation: lerpArrays(from.rotation || [0, 0, 0], to.rotation || [0, 0, 0], easedProgress),\n neckPose: lerpArrays(from.neckPose || [0, 0, 0], to.neckPose || [0, 0, 0], easedProgress),\n jawPose: lerpArrays(from.jawPose || [0, 0, 0], to.jawPose || [0, 0, 0], easedProgress),\n eyePose: lerpArrays(from.eyePose || [0, 0, 0, 0, 0, 0], to.eyePose || [0, 0, 0, 0, 0, 0], easedProgress),\n eyeLid: (() => {\n const fromEyelid = from.eyeLid\n const toEyelid = to.eyeLid\n if (fromEyelid && fromEyelid.length > 0 && toEyelid && toEyelid.length > 0)\n return lerpArrays(fromEyelid, toEyelid, easedProgress)\n return fromEyelid || toEyelid || []\n })(),\n expression: lerpArrays(from.expression || [], to.expression || [], easedProgress),\n }\n}\n\n/**\n * Generate transition keyframes between two Flame states\n * @param durationMs Transition duration (e.g. 400ms)\n * @param fps Frames per second (default 25)\n */\nexport function generateTransitionFrames(\n from: Flame,\n to: Flame,\n durationMs: number,\n fps = 25,\n): Flame[] {\n const steps = Math.max(1, Math.floor((durationMs / 1000) * fps))\n const frames: Flame[] = Array.from({ length: steps })\n for (let i = 0; i < steps; i++) {\n const progress = i / (steps - 1)\n frames[i] = linearLerp(from, to, progress)\n }\n return frames\n}\n\n/**\n * Create a neutral Flame\n */\nexport function createNeutralFlame(): Flame {\n return {\n translation: [0, 0, 0],\n rotation: [0, 0, 0],\n neckPose: [0, 0, 0],\n jawPose: [0, 0, 0],\n eyePose: [0, 0, 0, 0, 0, 0],\n eyeLid: [0, 0],\n expression: [],\n }\n}\n","/**\n * AvatarView:数字人视图\n * 构造函数内部使用 Avatar 实例来创建 AvatarController 实例\n * 由 SDK 内部来维护 AvatarController 实例的生命周期,并开放给开发者来控制数字人行为和监听事件\n */\n\nimport type { Flame } from '../generated/driveningress/v1/driveningress'\nimport type { CameraConfig, RenderPerformanceStats } from '../types'\nimport type { CharacterMeta, PreloadCameraSettings } from '../types/character'\nimport type { Avatar } from './Avatar'\n\nimport { APP_CONFIG } from '../config/app-config'\nimport { convertProtoFlameToWasmParams, convertWasmParamsToProtoFlame } from '../animation/utils/flameConverter'\nimport { RenderSystem } from '../renderer/RenderSystem'\nimport { generateTransitionFrames } from '../utils/animation-interpolation'\nimport { logger } from '../utils/logger'\nimport { AvatarKit } from './AvatarKit'\nimport { AvatarController } from './AvatarController'\n\nexport class AvatarView {\n public readonly avatarController: AvatarController\n public backgroundImage: string | null = null\n public backgroundOpaque: boolean = false\n\n // Canvas and rendering\n private canvas: HTMLCanvasElement\n private renderSystem: RenderSystem | null = null\n private isInitialized: boolean = false\n private cameraConfig: CameraConfig | null = null\n\n // Realtime animation state\n private isRealtimePlaying: boolean = false\n private currentKeyframes: Flame[] = []\n private lastRenderedFrameIndex: number = -1\n private realtimeStartTime: number = 0\n private lastRealtimeProtoFrame: Flame | null = null\n private idleResumeIndexPending: number | null = null\n\n // Animation loop types\n private idleAnimationLoopId: number | null = null\n private realtimeAnimationLoopId: number | null = null\n private resizeObserver: ResizeObserver | null = null\n private onWindowResize = () => this.handleResize()\n\n // Transition (Idle -> Speaking) independent sequence\n private transitionKeyframes: Flame[] = []\n private isTransitioning: boolean = false\n private transitionStartTime: number = 0\n private readonly transitionDurationMs: number = 400\n private endToIdleAfterTransition: boolean = false\n private cachedIdleFirstFrame: Flame | null = null\n private idleCurrentFrameIndex: number = 0\n\n /**\n * 对齐两端 Flame 维度:标量统一长度,expression 取最大长度并零填充\n */\n private alignFlamePair(from: Flame, to: Flame): { from: Flame, to: Flame } {\n const ensureLen = (arr: number[] | undefined, len: number): number[] => {\n const a = Array.isArray(arr) ? arr.slice(0, len) : []\n while (a.length < len) a.push(0)\n return a\n }\n const fromFixed = {\n translation: ensureLen(from?.translation, 3),\n rotation: ensureLen(from?.rotation, 3),\n neckPose: ensureLen(from?.neckPose, 3),\n jawPose: ensureLen(from?.jawPose, 3),\n eyePose: ensureLen(from?.eyePose, 6),\n eyeLid: ensureLen(from?.eyeLid, 2),\n expression: Array.isArray(from?.expression) ? from.expression.slice() : [],\n }\n const toFixed = {\n translation: ensureLen(to?.translation, 3),\n rotation: ensureLen(to?.rotation, 3),\n neckPose: ensureLen(to?.neckPose, 3),\n jawPose: ensureLen(to?.jawPose, 3),\n eyePose: ensureLen(to?.eyePose, 6),\n eyeLid: ensureLen(to?.eyeLid, 2),\n expression: Array.isArray(to?.expression) ? to.expression.slice() : [],\n }\n const exprLen = Math.max(fromFixed.expression.length, toFixed.expression.length)\n fromFixed.expression = ensureLen(fromFixed.expression, exprLen)\n toFixed.expression = ensureLen(toFixed.expression, exprLen)\n return { from: fromFixed, to: toFixed }\n }\n\n /**\n * 判断是否为空 Flame(用于跳过 isLast=true 的哨兵帧)\n */\n private isEmptyFlame(frame: Flame): boolean {\n if (!frame)\n return true\n const arrs = [\n frame.translation,\n frame.rotation,\n frame.neckPose,\n frame.jawPose,\n frame.eyePose,\n frame.eyeLid,\n frame.expression,\n ]\n return arrs.every((a: number[] | undefined) => !a || a.length === 0)\n }\n\n /**\n * 生成并对齐过渡帧,确保首尾帧与起止帧完全一致\n */\n private generateAndAlignTransitionFrames(from: Flame, to: Flame): Flame[] {\n const aligned = this.alignFlamePair(from, to)\n let keyframes = generateTransitionFrames(\n aligned.from,\n aligned.to,\n this.transitionDurationMs,\n APP_CONFIG.animation.fps,\n )\n\n if (keyframes.length < 2) {\n keyframes = [aligned.from, aligned.to]\n }\n\n // 强制首尾帧与起止帧一致,避免边界离散\n keyframes[0] = aligned.from\n keyframes[keyframes.length - 1] = aligned.to\n\n return keyframes\n }\n\n /**\n * 获取缓存的 Idle 首帧,如果未缓存则获取并缓存\n */\n private async getCachedIdleFirstFrame(): Promise<Flame | null> {\n if (!this.cachedIdleFirstFrame) {\n const avatarCore = AvatarKit.getAvatarCore()\n if (avatarCore) {\n try {\n const idle0Params = await avatarCore.getCurrentFrameParams(0)\n this.cachedIdleFirstFrame = convertWasmParamsToProtoFlame(idle0Params)\n }\n catch (e) {\n logger.warn('[AvatarView] Failed to get idle first frame:', e instanceof Error ? e.message : String(e))\n }\n }\n }\n return this.cachedIdleFirstFrame\n }\n\n /**\n * 构造函数\n * 使用 AvatarController(纯动画驱动模式)\n */\n constructor(\n avatar: Avatar,\n canvasContainer?: HTMLElement\n ) {\n // 使用 AvatarController(纯动画驱动模式)\n this.avatarController = new AvatarController(avatar)\n\n // 创建自己管理的canvas\n this.canvas = this.createCanvas(canvasContainer)\n\n // 初始化渲染和动画系统\n this.initializeView(avatar)\n\n // 监听 AvatarController 的事件\n this.setupControllerEventListeners()\n }\n\n /**\n * 创建canvas元素\n */\n private createCanvas(container?: HTMLElement): HTMLCanvasElement {\n const canvas = document.createElement('canvas')\n\n // 获取容器尺寸\n let containerWidth = 800\n let containerHeight = 600\n\n if (container) {\n containerWidth = container.offsetWidth || 800\n containerHeight = container.offsetHeight || 600\n }\n\n // 设置 Canvas 内部尺寸(实际渲染分辨率)\n const dpr = window.devicePixelRatio || 1\n canvas.width = Math.floor(containerWidth * dpr)\n canvas.height = Math.floor(containerHeight * dpr)\n\n // 设置 Canvas 显示尺寸(CSS 像素尺寸,与线上/应用一致)\n canvas.style.width = `${containerWidth}px`\n canvas.style.height = `${containerHeight}px`\n canvas.style.display = 'block'\n // 去除绝对定位,保持标准文档流(与线上一致)\n canvas.style.position = ''\n canvas.style.top = ''\n canvas.style.left = ''\n canvas.style.zIndex = ''\n canvas.style.background = 'none'\n canvas.style.border = 'none'\n\n if (container) {\n // 如果提供了容器,添加到容器中\n container.appendChild(canvas)\n // 设置容器为相对定位,以便canvas的绝对定位生效\n container.style.position = 'relative'\n\n // 监听容器尺寸变化,更新画布分辨率并通知渲染系统\n this.resizeObserver = new ResizeObserver(() => {\n const dpr = window.devicePixelRatio || 1\n const w = Math.floor(container.offsetWidth || 0)\n const h = Math.floor(container.offsetHeight || 0)\n canvas.width = Math.floor(w * dpr)\n canvas.height = Math.floor(h * dpr)\n // 同步 CSS 尺寸为像素值\n canvas.style.width = `${w}px`\n canvas.style.height = `${h}px`\n this.handleResize()\n })\n this.resizeObserver.observe(container)\n }\n else {\n // 如果没有提供容器,添加到body\n document.body.appendChild(canvas)\n }\n\n // 兜底监听窗口尺寸变化\n window.addEventListener('resize', this.onWindowResize)\n\n return canvas\n }\n\n /**\n * 获取canvas元素(供外部访问)\n */\n getCanvas(): HTMLCanvasElement {\n return this.canvas\n }\n\n /**\n * 初始化视图系统\n */\n private async initializeView(avatar: Avatar): Promise<void> {\n try {\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Initializing avatar view...')\n\n // 获取AvatarCore实例\n const avatarCore = AvatarKit.getAvatarCore()\n if (!avatarCore) {\n throw new Error('AvatarCore not available. AvatarKit initialization may have failed.')\n }\n\n // 获取资源数据\n const resources = avatar.getResources()\n\n // 加载角色数据\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Loading character data...')\n await avatarCore.loadCharacterFromBuffers(\n resources.characterData.shape,\n resources.characterData.pointCloud,\n )\n\n // 加载idle动画(如果可用)\n if (resources.characterData.idleAnimation) {\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Loading idle animation...')\n await avatarCore.loadAnimationFromBuffer(resources.characterData.idleAnimation)\n }\n\n // 初始化渲染系统(相机配置优先从 resources.preloadCameraSettings 获取)\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Initializing render system...')\n const cameraConfig = this.convertPreloadCameraToConfig(resources.preloadCameraSettings)\n await this.initializeRenderSystem(cameraConfig)\n\n // 绑定 CSS 背景(与 app useAvatarApp 行为一致)\n this.setCanvasBackground(this.canvas, avatar.getCharacterMeta())\n\n // 开始渲染\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Starting rendering...')\n await this.renderFirstFrame()\n this.startIdleAnimationLoop()\n\n this.isInitialized = true\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Avatar view initialized successfully')\n }\n catch (error) {\n logger.error('[AvatarView] Failed to initialize avatar view:', error instanceof Error ? error.message : String(error))\n throw error\n }\n }\n\n /**\n * 初始化渲染系统\n */\n private async initializeRenderSystem(cameraInfo?: CameraConfig): Promise<void> {\n // 相机配置优先级:优先使用resources中的配置,不存在时使用默认静态配置\n this.cameraConfig = cameraInfo || this.getDefaultCameraConfig()\n\n if (cameraInfo) {\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Using camera config from resources:', cameraInfo)\n }\n else {\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] No camera config in resources, using default static config:', this.cameraConfig)\n }\n\n // 创建RenderSystem实例\n this.renderSystem = new RenderSystem({\n canvas: this.canvas,\n camera: this.cameraConfig,\n backgroundColor: APP_CONFIG.rendering.backgroundColor,\n })\n\n // 初始化渲染系统\n await this.renderSystem.initialize()\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Render system initialized successfully')\n }\n\n /**\n * 获取默认相机配置\n */\n private getDefaultCameraConfig(): CameraConfig {\n // 从APP_CONFIG中读取静态相机配置\n return APP_CONFIG.camera\n }\n\n /**\n * 根据 PreloadCameraSettings 转换为 CameraConfig\n */\n private convertPreloadCameraToConfig(preload?: PreloadCameraSettings): CameraConfig | undefined {\n const defaultConfig = APP_CONFIG.camera\n const cam = preload?.camera\n if (!cam)\n return defaultConfig\n // 业务端:弧度 → 角度;保持对齐,但当缺失/为0/非法时回退到默认FOV\n const fovDegRaw = (cam.fovYRadians ?? 0) * (180 / Math.PI)\n const fovDeg = Number.isFinite(fovDegRaw) && fovDegRaw > 0 ? fovDegRaw : defaultConfig.fov\n // 业务端:直接使用 translationX/Y/Z;不最小限制\n return {\n position: [cam.translationX ?? 0, cam.translationY ?? 0, cam.translationZ ?? 0],\n target: defaultConfig.target,\n fov: fovDeg,\n near: 0.1,\n far: 100,\n up: [0, 1, 0],\n // 不显式设置 aspect,交由渲染系统基于 canvas 计算(与 app 对齐)\n } as unknown as CameraConfig\n }\n\n /**\n * 渲染第一帧\n */\n private async renderFirstFrame(): Promise<void> {\n if (!this.renderSystem) {\n throw new Error('Render system not initialized')\n }\n\n // 获取AvatarCore实例\n const avatarCore = AvatarKit.getAvatarCore()\n if (!avatarCore) {\n throw new Error('AvatarCore not available')\n }\n\n // 计算第一帧(使用中性参数)\n const neutralParams = {\n shape_params: Array.from({ length: 100 }, () => 0),\n expr_params: Array.from({ length: 50 }, () => 0),\n rotation: [0, 0, 0],\n translation: [0, 0, 0],\n neck_pose: [0, 0, 0],\n jaw_pose: [0, 0, 0],\n eyes_pose: [0, 0, 0, 0, 0, 0],\n }\n\n // 计算第一帧的splat数据\n const splatData = await avatarCore.computeFrameFlatFromParams(neutralParams)\n if (splatData) {\n this.renderSystem.loadSplatsFromPackedData(splatData)\n\n // 渲染第一帧\n this.renderSystem.renderFrame()\n\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] First frame rendered successfully')\n }\n else {\n throw new Error('Failed to compute first frame splat data')\n }\n }\n\n /**\n * 开始idle动画循环\n */\n private startIdleAnimationLoop(): void {\n if (this.idleAnimationLoopId) {\n return // 已经在运行\n }\n // 若实时渲染已开启,不启动 Idle 循环\n if (this.isRealtimePlaying) {\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Skip starting idle loop because realtime is playing')\n return\n }\n\n this.idleCurrentFrameIndex = 0\n let lastTime = 0\n const targetFPS = 25 // 动画目标帧率(通常为25fps)\n const frameInterval = 1000 / targetFPS // 每帧间隔(毫秒)\n\n const renderFrame = async (currentTime: number) => {\n try {\n if (!this.renderSystem) {\n return\n }\n\n // 如果正在播放实时对话,暂停idle动画\n if (this.isRealtimePlaying) {\n this.idleAnimationLoopId = requestAnimationFrame(renderFrame)\n return\n }\n\n // 控制动画帧率\n if (currentTime - lastTime < frameInterval) {\n this.idleAnimationLoopId = requestAnimationFrame(renderFrame)\n return\n }\n lastTime = currentTime\n\n // 获取AvatarCore实例\n const avatarCore = AvatarKit.getAvatarCore()\n if (!avatarCore) {\n return\n }\n\n // Idle动画模式:使用递增的帧索引\n const splatData = await avatarCore.computeCompleteFrameFlat({ frameIndex: this.idleCurrentFrameIndex })\n this.idleCurrentFrameIndex++\n\n if (splatData) {\n // 避免在状态切换帧仍渲染 Idle\n if (this.isRealtimePlaying) {\n return\n }\n // 加载splat数据到渲染系统\n this.renderSystem.loadSplatsFromPackedData(splatData)\n // 渲染当前帧(Idle)\n this.renderSystem.renderFrame()\n }\n\n // 继续下一帧\n this.idleAnimationLoopId = requestAnimationFrame(renderFrame)\n }\n catch (error) {\n logger.error('[AvatarView] Idle animation loop error:', error instanceof Error ? error.message : String(error))\n this.stopIdleAnimationLoop()\n }\n }\n\n this.idleAnimationLoopId = requestAnimationFrame(renderFrame)\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Idle animation loop started')\n }\n\n /**\n * 开始实时对话动画循环\n */\n private startRealtimeAnimationLoop(): void {\n if (this.realtimeAnimationLoopId) {\n return // 已经在运行\n }\n\n let lastTime = 0\n const targetFPS = 25 // 动画目标帧率(通常为25fps)\n const frameInterval = 1000 / targetFPS // 每帧间隔(毫秒)\n\n const renderFrame = async (currentTime: number) => {\n try {\n if (!this.renderSystem || !this.isRealtimePlaying) {\n this.realtimeAnimationLoopId = null\n return\n }\n\n // 控制动画帧率\n if (currentTime - lastTime < frameInterval) {\n this.realtimeAnimationLoopId = requestAnimationFrame(renderFrame)\n return\n }\n lastTime = currentTime\n\n // Transition phase first (wall-clock driven)\n if (this.isTransitioning && this.transitionKeyframes.length > 0) {\n const elapsed = performance.now() - this.transitionStartTime\n const progress = Math.min(1, Math.max(0, elapsed / this.transitionDurationMs))\n const steps = this.transitionKeyframes.length\n const idx = Math.min(steps - 1, Math.floor(progress * (steps - 1)))\n const currentFrame = this.transitionKeyframes[idx]\n const wasmParams = convertProtoFlameToWasmParams(currentFrame)\n const avatarCore = AvatarKit.getAvatarCore()\n if (avatarCore) {\n const sd = await avatarCore.computeFrameFlatFromParams(wasmParams)\n if (sd) {\n this.renderSystem.loadSplatsFromPackedData(sd)\n this.renderSystem.renderFrame()\n }\n }\n if (progress >= 1) {\n // 过渡完成\n this.isTransitioning = false\n this.transitionKeyframes = []\n\n if (this.endToIdleAfterTransition) {\n // 结束回到 Idle:直接停止实时循环,让 Idle 循环接管\n this.endToIdleAfterTransition = false\n this.isRealtimePlaying = false\n this.currentKeyframes = []\n this.realtimeStartTime = 0\n this.stopRealtimeAnimationLoop()\n\n // 直接启动 Idle 循环,不要桥接帧(对齐 useRealtimeAvatar.ts)\n this.startIdleAnimationLoop()\n return\n }\n }\n this.realtimeAnimationLoopId = requestAnimationFrame(renderFrame)\n return\n }\n\n // 实时对话模式:使用音画同步\n const splatData = await this.renderRealtimeFrame()\n\n if (splatData) {\n // 加载splat数据到渲染系统\n this.renderSystem.loadSplatsFromPackedData(splatData)\n // 渲染当前帧(Realtime)\n this.renderSystem.renderFrame()\n }\n\n // 继续下一帧\n this.realtimeAnimationLoopId = requestAnimationFrame(renderFrame)\n }\n catch (error) {\n logger.error('[AvatarView] Realtime animation loop error:', error instanceof Error ? error.message : String(error))\n this.stopRealtimeAnimationLoop()\n }\n }\n\n this.realtimeAnimationLoopId = requestAnimationFrame(renderFrame)\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Realtime animation loop started')\n }\n\n /**\n * 停止idle动画循环\n */\n private stopIdleAnimationLoop(): void {\n if (this.idleAnimationLoopId) {\n cancelAnimationFrame(this.idleAnimationLoopId)\n this.idleAnimationLoopId = null\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Idle animation loop stopped')\n }\n }\n\n /**\n * 停止实时对话动画循环\n */\n private stopRealtimeAnimationLoop(): void {\n if (this.realtimeAnimationLoopId) {\n cancelAnimationFrame(this.realtimeAnimationLoopId)\n this.realtimeAnimationLoopId = null\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Realtime animation loop stopped')\n }\n }\n\n /**\n * 停止所有动画循环\n */\n private stopAllAnimationLoops(): void {\n this.stopIdleAnimationLoop()\n this.stopRealtimeAnimationLoop()\n }\n\n // 已统一使用严格转换 convertProtoFlameToWasmParams;删除宽松转换方法\n\n /**\n * 渲染实时对话帧\n */\n private async renderRealtimeFrame(): Promise<Float32Array | null> {\n const animationPlayer = this.avatarController.getAnimationPlayer()\n if (!animationPlayer) {\n return null\n }\n\n try {\n // 使用音画同步逻辑:以音频时间为主时钟\n const fps = APP_CONFIG.animation.fps\n let frameIndex = animationPlayer.getCurrentFrameIndex()\n\n // 音画同步:使用音频时间作为主时钟\n const audioTime = animationPlayer.getCurrentTime()\n let desiredIndex = Math.floor(audioTime * fps)\n\n // 如果音频还没开始播放,使用时间递增的方式\n if (audioTime === 0) {\n const elapsedTime = (performance.now() - this.realtimeStartTime) / 1000 // 转换为秒\n desiredIndex = Math.floor(elapsedTime * fps)\n frameIndex = Math.max(0, desiredIndex)\n }\n else if (audioTime < 0.1) { // 前100ms\n frameIndex = Math.max(0, desiredIndex)\n }\n else {\n // 漂移校正:如果偏差较大则跳跃,否则渐进调整\n const driftFrames = desiredIndex - frameIndex\n const absDrift = Math.abs(driftFrames)\n\n if (absDrift >= 3) {\n // 大偏差:直接跳跃(>= ~120ms at 25fps)\n frameIndex = desiredIndex\n }\n else if (absDrift >= 1) {\n // 小偏差:渐进调整\n frameIndex += Math.sign(driftFrames)\n }\n }\n\n // 限制在有效范围内\n if (frameIndex < 0)\n frameIndex = 0\n if (frameIndex >= this.currentKeyframes.length) {\n frameIndex = this.currentKeyframes.length - 1\n }\n\n // 性能优化:跳过重复帧渲染\n if (frameIndex === this.lastRenderedFrameIndex) {\n return null\n }\n\n this.lastRenderedFrameIndex = frameIndex\n\n if (frameIndex >= 0 && frameIndex < this.currentKeyframes.length) {\n const currentFrame = this.currentKeyframes[frameIndex]\n // 使用严格转换,保持与业务端一致\n const wasmParams = convertProtoFlameToWasmParams(currentFrame)\n // 使用AvatarCore计算当前帧的splat数据\n const avatarCore = AvatarKit.getAvatarCore()\n if (avatarCore) {\n const splatData = await avatarCore.computeFrameFlatFromParams(wasmParams)\n if (splatData) {\n // 缓存刚渲染的 proto 帧,供结尾过渡作为起点使用\n this.lastRealtimeProtoFrame = currentFrame\n if (APP_CONFIG.debug)\n logger.log(`[AvatarView] Rendered realtime frame ${frameIndex}, data length: ${splatData.length}`)\n return splatData\n }\n else {\n logger.warn(`[AvatarView] No splat data for frame ${frameIndex}`)\n }\n }\n else {\n logger.warn('[AvatarView] AvatarCore not available')\n }\n }\n else {\n logger.warn(`[AvatarView] Invalid frameIndex: ${frameIndex}, keyframes: ${this.currentKeyframes.length}`)\n }\n\n return null\n }\n catch (error) {\n logger.error('[AvatarView] Realtime render error:', error instanceof Error ? error.message : String(error))\n return null\n }\n }\n\n /**\n * 设置 AvatarController 事件监听器\n */\n private setupControllerEventListeners(): void {\n this.avatarController.setupInternalEventListeners({\n onKeyframesUpdate: (keyframes: Flame[]) => {\n this.setCurrentKeyframes(keyframes)\n },\n onStartRendering: () => {\n this.startRealtimeRendering(this.currentKeyframes)\n },\n onStopRendering: () => {\n this.stopRealtimeRendering()\n },\n })\n }\n\n /**\n * 设置当前关键帧数据\n */\n private setCurrentKeyframes(keyframes: Flame[]): void {\n // 如果新数组和当前数组是同一个引用,不需要做任何操作\n // 这样可以避免不必要的引用替换,保持数组引用的一致性\n // 从第二次开始,AvatarController 会追加到现有数组,所以引用会保持一致\n if (this.currentKeyframes === keyframes) {\n return\n }\n \n this.currentKeyframes = keyframes\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Keyframes updated:', keyframes.length, 'frames')\n }\n\n /**\n * 开始实时对话渲染\n */\n private startRealtimeRendering(keyframes: Flame[]): void {\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Starting realtime rendering with', keyframes.length, 'keyframes')\n \n // 检查并重置过渡态:如果处于过渡态,直接清空重置\n if (this.isTransitioning) {\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Clearing transition state before starting new rendering')\n this.isTransitioning = false\n this.transitionKeyframes = []\n this.transitionStartTime = 0\n this.endToIdleAfterTransition = false\n }\n \n // 确保 Idle 循环停止,避免覆盖实时渲染\n this.stopIdleAnimationLoop()\n this.isRealtimePlaying = true\n this.currentKeyframes = keyframes\n this.lastRenderedFrameIndex = -1\n this.realtimeStartTime = performance.now()\n\n // 在视图层生成 Idle -> Speaking 过渡(对齐 useRealtimeAvatar 方案)\n ;(async () => {\n try {\n const avatarCore = AvatarKit.getAvatarCore()\n if (avatarCore && this.currentKeyframes.length > 0) {\n // 读取 Idle 的\"实际最后渲染帧\"作为起点,避免起步顿挫\n const idleParams = await avatarCore.getCurrentFrameParams(this.idleCurrentFrameIndex)\n const idleFrameProto = convertWasmParamsToProtoFlame(idleParams)\n // 缓存 Idle 第 0 帧,用于后续 Speaking -> Idle 过渡\n await this.getCachedIdleFirstFrame()\n\n const firstSpeaking = this.currentKeyframes[0]\n this.transitionKeyframes = this.generateAndAlignTransitionFrames(idleFrameProto, firstSpeaking)\n this.isTransitioning = this.transitionKeyframes.length > 0\n this.transitionStartTime = this.isTransitioning ? performance.now() : 0\n if (this.isTransitioning) {\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Transition started:', this.transitionKeyframes.length, 'frames')\n }\n }\n }\n catch (e) {\n logger.warn('[AvatarView] Transition generation failed:', e instanceof Error ? e.message : String(e))\n }\n })()\n\n // 启动实时对话动画循环\n this.startRealtimeAnimationLoop()\n }\n\n /**\n * 停止实时对话渲染\n */\n private stopRealtimeRendering(): void {\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Stopping realtime rendering')\n // 生成 Speaking -> Idle 过渡,过渡结束后再切回 Idle\n ;(async () => {\n try {\n const avatarCore = AvatarKit.getAvatarCore()\n if (avatarCore && this.currentKeyframes.length > 0) {\n const lastSpeaking = this.lastRealtimeProtoFrame || this.currentKeyframes[Math.max(0, this.lastRenderedFrameIndex)]\n // 目标固定:Idle 第 0 帧(使用缓存的 idle 首帧)\n const idleFirstProto = await this.getCachedIdleFirstFrame()\n if (idleFirstProto) {\n this.transitionKeyframes = this.generateAndAlignTransitionFrames(lastSpeaking, idleFirstProto)\n }\n this.isTransitioning = this.transitionKeyframes.length > 0\n this.transitionStartTime = this.isTransitioning ? performance.now() : 0\n this.endToIdleAfterTransition = this.isTransitioning\n if (this.isTransitioning) {\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Return transition started:', this.transitionKeyframes.length, 'frames')\n // 确保实时循环在跑,用于渲染这段回退过渡\n if (!this.realtimeAnimationLoopId)\n this.startRealtimeAnimationLoop()\n return\n }\n }\n }\n catch (e) {\n logger.warn('[AvatarView] Return transition generation failed:', e instanceof Error ? e.message : String(e))\n }\n // 无法过渡时,立即切回 Idle(兜底)\n this.isRealtimePlaying = false\n this.currentKeyframes = []\n this.lastRenderedFrameIndex = -1\n this.realtimeStartTime = 0\n this.stopRealtimeAnimationLoop()\n this.startIdleAnimationLoop()\n })()\n }\n\n /**\n * 设置背景图\n * 支持开发者来设置渲染数字人背景图\n */\n setBackgroundImage(imageUrl: string | null): void {\n this.backgroundImage = imageUrl\n }\n\n /**\n * 设置背景是否不透明\n * 支持开发者来设置是否背景不透明\n */\n setBackgroundOpaque(opaque: boolean): void {\n this.backgroundOpaque = opaque\n }\n\n /**\n * 清理视图资源\n * 关闭 avatarController 并清理所有相关资源\n */\n dispose(): void {\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Disposing avatar view...')\n\n // 关闭 avatarController(由其管理生命周期)\n if (this.avatarController) {\n this.avatarController.close()\n }\n\n // 停止所有动画循环\n this.stopAllAnimationLoops()\n\n // 🚨 修复:释放 AvatarCore 的角色和动画资源(但保留 core,因为它是全局共享的)\n const avatarCore = AvatarKit.getAvatarCore()\n if (avatarCore) {\n try {\n avatarCore.releaseCurrentCharacter()\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] AvatarCore character resources released')\n }\n catch (error) {\n logger.error('[AvatarView] Failed to release AvatarCore resources:', error instanceof Error ? error.message : String(error))\n }\n }\n\n // 清理渲染系统\n if (this.renderSystem) {\n this.renderSystem.dispose()\n this.renderSystem = null\n }\n\n // 清理canvas\n if (this.canvas && this.canvas.parentNode) {\n this.canvas.parentNode.removeChild(this.canvas)\n }\n\n // 取消尺寸监听\n if (this.resizeObserver) {\n this.resizeObserver.disconnect()\n this.resizeObserver = null\n }\n window.removeEventListener('resize', this.onWindowResize)\n\n this.isInitialized = false\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Avatar view disposed successfully')\n }\n\n /**\n * 获取相机配置\n */\n getCameraConfig(): CameraConfig | null {\n return this.cameraConfig\n }\n\n /**\n * 更新相机配置\n */\n updateCameraConfig(cameraConfig: CameraConfig): void {\n this.cameraConfig = cameraConfig\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Camera config updated:', cameraConfig)\n\n // 将新的相机配置应用到渲染系统\n if (this.renderSystem) {\n this.renderSystem.updateCamera(cameraConfig)\n if (APP_CONFIG.debug)\n logger.log('[AvatarView] Applied new camera config to render system')\n }\n }\n\n /**\n * 处理尺寸变化:通知渲染系统更新视口与投影\n */\n private handleResize(): void {\n if (this.renderSystem) {\n this.renderSystem.handleResize()\n }\n }\n\n /**\n * 获取渲染性能统计\n * @returns 渲染性能统计数据,如果渲染系统未初始化则返回 null\n */\n getPerformanceStats(): RenderPerformanceStats | null {\n if (!this.renderSystem || !this.isInitialized) {\n return null\n }\n\n return {\n renderTime: this.renderSystem.renderTime,\n sortTime: this.renderSystem.sortTime,\n backend: this.renderSystem.getBackend(),\n // pointCount 可后续通过 AvatarCoreAdapter 添加公开方法获取\n }\n }\n\n /**\n * 将 CameraInfo 转换为 CameraConfig\n */\n /**\n * 设置 canvas 的 CSS 背景(与 app 对齐)\n */\n private setCanvasBackground(canvas: HTMLCanvasElement, characterMeta: CharacterMeta): void {\n const url = characterMeta.background?.resource?.remote\n const mode = APP_CONFIG.rendering.backgroundMode || 'cover'\n\n if (url) {\n if (APP_CONFIG.debug) {\n logger.log('🖼️ Setting CSS background:', url)\n }\n canvas.style.backgroundImage = `url(${url})`\n canvas.style.backgroundSize = mode === 'cover' ? 'cover' : '100% 100%'\n canvas.style.backgroundPosition = 'center'\n canvas.style.backgroundRepeat = 'no-repeat'\n }\n else {\n // 清除背景\n canvas.style.background = 'none'\n }\n }\n}\n"],"names":["hasDebugParam","isDebugMode","APP_CONFIG","Avatar","id","characterMeta","resources","__publicField","root","factory","module","this","_isNumber","n","_capitalize","str","_getter","p","booleanProps","numericProps","stringProps","arrayProps","objectProps","props","StackFrame","obj","i","v","fileName","lineNumber","columnNumber","functionName","argsStartIndex","argsEndIndex","args","locationString","parts","j","k","require$$0","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","error","urlLike","regExp","filtered","line","sanitizedLine","location","locationParts","functionNameRegex","matches","e","lineRE","lines","result","len","match","tokens","functionCall","argsRaw","_lazyMatch","__lib__","m","V","G","T","q","r","H","a","t","J","w","re","A","d","Q","W","K","X","b","h","Y","rr","er","ar","nr","o","u","s","c","g","C","_","M","tr","f","x","l","_a","Z","D","U","ee","E","P","ir","O","S","or","R","z","ur","sr","cr","lr","y","pr","vr","hr","L","dr","fr","xr","gr","mr","_r","Sr","yr","N","$r","wr","Ar","br","Cr","Mr","Er","B","Pr","Or","Rr","zr","jr","Nr","I","kr","Br","Ir","Fr","Lr","Zr","F","Dr","Ur","Vr","Gr","Tr","qr","Hr","Jr","Qr","Wr","Kr","Xr","Yr","$","_match","zeptomatch","path","pattern","_DRIVE_LETTER_START_RE","normalizeWindowsPath","input","_UNC_REGEX","_IS_ABSOLUTE_RE","_DRIVE_LETTER_RE","_ROOT_FOLDER_RE","_EXTNAME_RE","_PATH_ROOT_RE","sep","normalize","isUNCPath","isPathAbsolute","isAbsolute","trailingSeparator","normalizeString","join","segments","seg","pathTrailing","segLeading","cwd","resolve","arguments_","argument","resolvedPath","resolvedAbsolute","index","allowAboveRoot","res","lastSegmentLength","lastSlash","dots","char","lastSlashIndex","toNamespacedPath","extname","relative","from","to","_from","_to","_fromCopy","segment","dirname","format","ext","basename","extension","lastSegment","val","parse","_b","base","matchesGlob","_path","delimiter","_platforms","mix","del","prop","posix","win32","LogLevel","LogLevel2","LogLevelString","LogLevelString2","Format","Format2","isColorSupported","formatter","open","close","replace","string","replaceClose","start","end","nextIndex","createColors","enabled","pc","logLevelStringToLogLevelMap","logLevelToLogLevelStringMap","availableLogLevelStrings","logLevelToColorMap","availableLogLevels","availableFormats","parseErrorStacks","errorLike","item","isErrorLike","err","newLog","logLevel","context","fields","message","timeFormatter","fieldsObj","now","newErrorLog","errorStack","log","prettyFormatValue","value","valueString","toPrettyString","messagePartials","contextString","fieldsEntries","key","shouldOutputDebugLevelLogWhenLogLevelIsOneOf","shouldOutputVerboseLevelLogWhenLogLevelIsOneOf","shouldOutputLogLevelLogWhenLogLevelIsOneOf","shouldOutputWarningLevelLogWhenLogLevelIsOneOf","shouldOutputErrorLevelLogWhenLogLevelIsOneOf","isBrowser","shouldUseHyperlink","getGlobalFormat","withHyperlink","basePath","GLOBAL_CONFIG","inputDate","getGlobalLogLevel","getGlobalTimeFormatter","createLogg","logObj","logger","context2","logLevelString","stacks","fn","getEffectiveLogLevel","getEffectiveFormat","getEffectiveTimeFormatter","mergeOptionalParams","optionalParams","outputToConsole","raw","consoleMethod","mergedFields","fieldsToOutput","output","logLevelCheckMap","consoleMethodMap","logWithLevel","levelString","shouldOutput","stack","createLogger","currentStack","ErrorStackParser","useLogger","tt","it","et","rt","st","nt","ot","at","lt","ut","ht","dt","vt","ct","ft","pt","gt","_t","mt","yt","bt","wt","xt","$t","St","Et","kt","Pt","Tt","Rt","It","Ct","Ot","Ft","Mt","At","Dt","jt","Lt","Nt","Ut","Ht","zt","Bt","qt","Wt","Gt","Vt","Jt","Kt","Yt","Xt","Qt","Zt","ti","ii","ei","ri","si","ni","oi","ai","li","ui","hi","di","vi","ci","fi","pi","gi","_i","mi","yi","bi","wi","xi","$i","Si","Ei","ki","Pi","Ti","Ri","Ii","Ci","Ki","Oi","Hi","zi","Fi","Mi","Ai","Di","ji","Li","Ni","Ui","Bi","qi","Wi","Gi","Vi","Ji","Yi","Xi","Qi","Zi","te","ie","ne","oe","ae","le","ue","he","de","ve","ce","fe","pe","ge","_e","me","we","ye","be","xe","$e","Se","Ee","ke","Pe","Te","Re","Ie","Ce","Oe","Fe","Me","Ae","De","je","Le","Ne","Ue","He","ze","Be","qe","We","Ge","Ve","Je","Ke","Ye","Xe","Qe","Ze","ts","is","es","rs","ss","ns","os","as","ls","us","hs","ds","vs","cs","fs","ps","gs","_s","ms","ys","bs","ws","xs","$s","Ss","Es","ks","Ps","Ts","Rs","Is","Cs","Os","Fs","Ms","As","Ds","js","Ls","Ns","Us","Hs","zs","Bs","qs","Ws","Gs","Vs","Js","Ks","Ys","Xs","Qs","Zs","tn","en","rn","sn","nn","on","an","ln","un","hn","dn","vn","cn","pn","gn","_n","mn","yn","bn","wn","xn","$n","Sn","En","kn","Pn","In","Mn","An","Dn","jn","Ln","Nn","Un","Hn","zn","Bn","qn","Wn","Gn","Vn","Jn","Kn","Yn","Xn","Qn","Zn","io","eo","ro","so","no","oo","ao","lo","uo","ho","vo","co","fo","po","go","_o","mo","yo","bo","wo","xo","$o","So","Eo","ko","Po","To","Ro","Io","Co","captureErrorContext","level","posthog","_AnimationPlayer","silentAudio","audioUrl","onEnded","reject","streamingPlayer","StreamingAudioPlayer","currentTime","audio","isLast","AnimationPlayer","varint64read","lowBits","highBits","shift","middleByte","varint64write","bytes","hasNext","byte","splitBits","hasMoreBits","TWO_PWR_32_DBL","int64FromString","dec","minus","add1e6digit","begin","digit1e6","negate","newBits","int64ToString","bits","negative","uInt64ToString","toUnsigned","low","mid","high","digitA","digitB","digitC","decimalFrom1e7WithLeadingZeros","digit1e7","partial","varint32write","varint32read","readBytes","protoInt64","makeInt64Support","dv","MIN","MAX","UMIN","UMAX","assertInt64String","assertUInt64String","symbol","getTextEncoding","td","text","WireType","FLOAT32_MAX","FLOAT32_MIN","UINT32_MAX","INT32_MAX","INT32_MIN","BinaryWriter","encodeUtf8","offset","chunk","prev","fieldNo","type","assertUInt32","assertInt32","assertFloat32","view","tc","sign","BinaryReader","buf","decodeUtf8","tag","wireType","zze","arg","MessageType","messageTypeFromJSON","object","messageTypeToJSON","createBaseClientAudioInputData","ClientAudioInputData","writer","length","reader","isSet","bytesFromBase64","base64FromBytes","createBaseFlame","Flame","end2","_c","_d","_f","_g","createBaseFlameAnimation","FlameAnimation","createBaseServerResponseAnimationData","ServerResponseAnimationData","createBaseErrorInfo","ErrorInfo","createBaseMessage","Message","b64","bin","arr","ResourceType","extractResourceUrls","meta","_h","_j","_k","_l","_m","_p","_q","hasMonologue","hasMonologueFromModelInfo","modelInfo","parsed","Environment","LoadProgress","ConnectionState","AvatarState","SPAvatarError","code","configCache","fetchSdkConfig","version","configUrl","response","data","config","clearSdkConfigCache","AvatarCoreMemoryManager","wasmModule","arrayBuffer","size","ptr","uint8Array","configPtr","flameModel","flameTemplate","teethPb","teethNpz","shapeBuffer","plyBuffer","dataPtr","shape","ply","paramsPtr","byteOffset","shape_params","expr_params","rotation","translation","neck_pose","jaw_pose","eyes_pose","eyelid","has_eyelid","params","arrayPtr","pointsPtr","pointCount","totalFloats","floatOffset","flatData","outputPtr","verticesPtr","vertexCount","facesPtr","faceCount","computeTime","landmarksPtr","landmarkCount","vertices","faces","landmarks","name","AvatarCoreAdapter","options","AvatarCoreModule","errorMessage","requiredFunctions","funcName","testPtr","testValue","frameIndex","templateResources","coreHandle","formattedResources","pointCloudBuffer","startTime","characterHandle","animData","animPtr","animStruct","handle","animationFile","animationPath","fullUrl","newHandle","frameCountPtr","errorMsg","frameCount","vertexCountPtr","faceCountPtr","jointCountPtr","jointCount","pointCountPtr","hasAnimationPtr","hasAnimation","errorCode","errorName","callback","progress","_modelData","_original3DGSPoints","_binding","_flameFaces","flameParams","AvatarKit","appId","configuration","prefix","token","userId","defaultConfig","errorToMessage","PostHogTracker","characterId","durationMs","retryCount","messageType","oldState","newState","random","customRandom","alphabet","defaultSize","getRandom","mask","step","customAlphabet","nanoid","generateReqId","year","month","day","hours","minutes","seconds","timestamp","nanoId","EventEmitter","event","handler","handlers","AnimationWebSocketClient","url","reqId","audioData","MessageCodec","delay","AvatarController","avatar","pcmData","_text","callbacks","listeners","animation","sampleRate","header","writeString","wavData","blob","downloadResource","msg","_resourceCache","downloadResourceCached","cached","AvatarDownloader","baseAssetsPath","flameResources","progressCallback","templateFiles","totalFiles","loadedFiles","updateProgress","filename","loaded","promises","resourceName","buffer","cdnBaseUrl","cameraUrl","cameraSettings","loadMonologue","shapeUrl","pointCloudUrl","idleAnimationUrl","monoAnimationUrl","monoAudioUrl","filesToLoad","characterData","downloadPromises","optional","preloadCameraSettings","info","dataMessage","_AvatarManager","onProgress","externalProgress","avatarCore","AvatarManager","convertProtoFlameToWasmParams","protoFlame","convertWasmParamsToProtoFlame","wasmParams","depthBuffer","depthInt","indices0","indices1","counts","BUCKET_SIZE","MASK","sortSplats","packedData","cameraPosition","cameraForward","splatCount","depths","depthsInt","idx0","idx1","out","cnt","cx","cy","cz","fx","fy","fz","radixPass","keys","indicesIn","indicesOut","count","sum","idx","FLOATS_PER_POINT","reorderedBuffer","reorderPackedData","sortOrder","requiredLength","srcOffset","dstOffset","fragmentShaderSource","vertexShaderSource","WebGLRenderer","canvas","backgroundColor","gl","program","quadVertices","_sortOrder","floatsPerSplat","bytesPerFloat","strideBytes","viewMatrix","projectionMatrix","screenSize","vertexShader","fragmentShader","lose","renderShaderCode","WebGPURenderer","adapter","uniformBufferSize","shaderModule","uniformBindGroupLayout","storageBindGroupLayout","pipelineLayout","vertexBufferLayouts","indexBufferSize","sortOrderChanged","textureView","commandEncoder","renderPass","uniformData","float32View","uint32View","RenderSystem","cameraConfig","preferBackend","startRender","startSort","reorderedData","forward","fov","aspect","near","far","rangeInv","eye","target","up","zAxis","zLen","xAxis","xLen","yAxis","lerpArrays","linearLerp","easedProgress","fromEyelid","toEyelid","generateTransitionFrames","fps","steps","frames","AvatarView","canvasContainer","ensureLen","fromFixed","toFixed","exprLen","frame","aligned","keyframes","idle0Params","container","containerWidth","containerHeight","dpr","cameraInfo","preload","cam","fovDegRaw","fovDeg","neutralParams","splatData","lastTime","frameInterval","renderFrame","elapsed","currentFrame","sd","animationPlayer","audioTime","desiredIndex","elapsedTime","driftFrames","absDrift","idleParams","idleFrameProto","firstSpeaking","lastSpeaking","idleFirstProto","imageUrl","opaque","mode"],"mappings":"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","x_google_ignoreList":[3,4,5,6,7,8,11,12,13,14,24]}