untitled-rhythm-game/js/libpixi_v891gl.min.js
2025-04-18 19:29:23 +08:00

1098 lines
912 KiB
JavaScript

window.PIXI=function(exports){"use strict";var __defProp$1d=Object.defineProperty,__defProps$r=Object.defineProperties,__getOwnPropDescs$r=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$1d=Object.getOwnPropertySymbols,__hasOwnProp$1d=Object.prototype.hasOwnProperty,__propIsEnum$1d=Object.prototype.propertyIsEnumerable,__defNormalProp$1d=(obj,key,value)=>key in obj?__defProp$1d(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$1d=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$1d.call(b,prop)&&__defNormalProp$1d(a,prop,b[prop]);if(__getOwnPropSymbols$1d)for(var prop of __getOwnPropSymbols$1d(b))__propIsEnum$1d.call(b,prop)&&__defNormalProp$1d(a,prop,b[prop]);return a},ExtensionType2={Application:"application",WebGLPipes:"webgl-pipes",WebGLPipesAdaptor:"webgl-pipes-adaptor",WebGLSystem:"webgl-system",WebGPUPipes:"webgpu-pipes",WebGPUPipesAdaptor:"webgpu-pipes-adaptor",WebGPUSystem:"webgpu-system",CanvasSystem:"canvas-system",CanvasPipesAdaptor:"canvas-pipes-adaptor",CanvasPipes:"canvas-pipes",Asset:"asset",LoadParser:"load-parser",ResolveParser:"resolve-parser",CacheParser:"cache-parser",DetectionParser:"detection-parser",MaskEffect:"mask-effect",BlendMode:"blend-mode",TextureSource:"texture-source",Environment:"environment",ShapeBuilder:"shape-builder",Batcher:"batcher"};const normalizeExtension=ext=>{if("function"==typeof ext||"object"==typeof ext&&ext.extension){if(!ext.extension)throw new Error("Extension class must have an extension object");var metadata="object"!=typeof ext.extension?{type:ext.extension}:ext.extension,metadata=__spreadValues$1d({},metadata);ext=__defProps$r(metadata,__getOwnPropDescs$r({ref:ext}))}if("object"!=typeof ext)throw new Error("Invalid extension type");return"string"==typeof(ext=__spreadValues$1d({},ext)).type&&(ext.type=[ext.type]),ext},normalizeExtensionPriority=(ext,defaultPriority)=>null!=(ext=normalizeExtension(ext).priority)?ext:defaultPriority,extensions={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...extensions2){return extensions2.map(normalizeExtension).forEach(ext=>{ext.type.forEach(type=>{var _a;return null==(type=(_a=this._removeHandlers)[type])?void 0:type.call(_a,ext)})}),this},add(...extensions2){return extensions2.map(normalizeExtension).forEach(ext=>{ext.type.forEach(type=>{var _b,handlers=this._addHandlers,queue=this._queue;handlers[type]?null!=(_b=handlers[type])&&_b.call(handlers,ext):(queue[type]=queue[type]||[],null!=(_b=queue[type])&&_b.push(ext))})}),this},handle(type,onAdd,onRemove){var addHandlers=this._addHandlers,removeHandlers=this._removeHandlers;if(addHandlers[type]||removeHandlers[type])throw new Error(`Extension type ${type} already has a handler`);return addHandlers[type]=onAdd,removeHandlers[type]=onRemove,(addHandlers=this._queue)[type]&&(null!=(removeHandlers=addHandlers[type])&&removeHandlers.forEach(ext=>onAdd(ext)),delete addHandlers[type]),this},handleByMap(type,map){return this.handle(type,extension=>{extension.name&&(map[extension.name]=extension.ref)},extension=>{extension.name&&delete map[extension.name]})},handleByNamedList(type,map,defaultPriority=-1){return this.handle(type,extension=>{0<=map.findIndex(item=>item.name===extension.name)||(map.push({name:extension.name,value:extension.ref}),map.sort((a,b)=>normalizeExtensionPriority(b.value,defaultPriority)-normalizeExtensionPriority(a.value,defaultPriority)))},extension=>{var index=map.findIndex(item=>item.name===extension.name);-1!==index&&map.splice(index,1)})},handleByList(type,list,defaultPriority=-1){return this.handle(type,extension=>{list.includes(extension.ref)||(list.push(extension.ref),list.sort((a,b)=>normalizeExtensionPriority(b,defaultPriority)-normalizeExtensionPriority(a,defaultPriority)))},extension=>{-1!==(extension=list.indexOf(extension.ref))&&list.splice(extension,1)})},mixin(Target,...sources){for(const source of sources)Object.defineProperties(Target.prototype,Object.getOwnPropertyDescriptors(source))}};function getDefaultExportFromCjs(x){return x&&x.__esModule&&Object.prototype.hasOwnProperty.call(x,"default")?x.default:x}var eventemitter3$1={exports:{}};function t(r){return"string"==typeof r?0<r.length:"number"==typeof r}function n(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0}function e(r,t,n){return void 0===t&&(t=0),(n=void 0===n?1:n)<r?n:t<r?r:t}function u(r){return 0<(r=isFinite(r)?r%360:0)?r:r+360}function a(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}}function o(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}}function s(r){return(r=r.toString(16)).length<2?"0"+r:r}function h(r){var t=r.r,n=r.g,e=r.b,r=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e);return{h:60*((e=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0)<0?6+e:e),s:a?o/a*100:0,v:a/255*100,a:r}}function b(r){var t=r.h,n=r.s,e=r.v,r=r.a,t=t/360*6,a=(n/=100,e/=100,Math.floor(t)),o=e*(1-n),i=e*(1-(t-a)*n);return{r:255*[e,i,o,o,t=e*(1-(1-t+a)*n),e][n=a%6],g:255*[t,e,e,i,o,o][n],b:255*[o,o,t,e,e,i][n],a:r}}function g(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}}function d(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}}function f(r){return b((n=r.s,{h:r.h,s:0<(n*=((e=r.l)<50?e:100-e)/100)?2*n/(e+n)*100:0,v:e+n,a:r.a}));var n,e}function c(r){return{h:(r=h(r)).h,s:0<(u=(200-(n=r.s))*(e=r.v)/100)&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:r.a};var n,e,u}function M(r,t){return{h:(r=c(r)).h,s:e(r.s+100*t,0,100),l:r.l,a:r.a}}function H(r){return(299*r.r+587*r.g+114*r.b)/1e3/255}function $(r,t){return{h:(r=c(r)).h,s:r.s,l:e(r.l+100*t,0,100),a:r.a}}function N(r,t){for(var n=0;n<t.length;n++){var e=t[n][0](r);if(e)return[e,t[n][1]]}return[null,void 0]}!function(module){var has=Object.prototype.hasOwnProperty,prefix="~";function Events(){}function EE(fn,context,once){this.fn=fn,this.context=context,this.once=once||!1}function addListener(emitter,event,fn,context,once){if("function"!=typeof fn)throw new TypeError("The listener must be a function");return fn=new EE(fn,context||emitter,once),context=prefix?prefix+event:event,emitter._events[context]?emitter._events[context].fn?emitter._events[context]=[emitter._events[context],fn]:emitter._events[context].push(fn):(emitter._events[context]=fn,emitter._eventsCount++),emitter}function clearEvent(emitter,evt){0==--emitter._eventsCount?emitter._events=new Events:delete emitter._events[evt]}function EventEmitter(){this._events=new Events,this._eventsCount=0}Object.create&&(Events.prototype=Object.create(null),(new Events).__proto__||(prefix=!1)),EventEmitter.prototype.eventNames=function(){var events,name,names=[];if(0===this._eventsCount)return names;for(name in events=this._events)has.call(events,name)&&names.push(prefix?name.slice(1):name);return Object.getOwnPropertySymbols?names.concat(Object.getOwnPropertySymbols(events)):names},EventEmitter.prototype.listeners=function(event){var event=prefix?prefix+event:event,handlers=this._events[event];if(!handlers)return[];if(handlers.fn)return[handlers.fn];for(var i=0,l=handlers.length,ee=new Array(l);i<l;i++)ee[i]=handlers[i].fn;return ee},EventEmitter.prototype.listenerCount=function(event){return event=prefix?prefix+event:event,(event=this._events[event])?event.fn?1:event.length:0},EventEmitter.prototype.emit=function(event,a1,a2,a3,a4,a5){var evt=prefix?prefix+event:event;if(!this._events[evt])return!1;var args,listeners=this._events[evt],len=arguments.length;if(listeners.fn){switch(listeners.once&&this.removeListener(event,listeners.fn,void 0,!0),len){case 1:return listeners.fn.call(listeners.context),!0;case 2:return listeners.fn.call(listeners.context,a1),!0;case 3:return listeners.fn.call(listeners.context,a1,a2),!0;case 4:return listeners.fn.call(listeners.context,a1,a2,a3),!0;case 5:return listeners.fn.call(listeners.context,a1,a2,a3,a4),!0;case 6:return listeners.fn.call(listeners.context,a1,a2,a3,a4,a5),!0}for(i=1,args=new Array(len-1);i<len;i++)args[i-1]=arguments[i];listeners.fn.apply(listeners.context,args)}else for(var j,length=listeners.length,i=0;i<length;i++)switch(listeners[i].once&&this.removeListener(event,listeners[i].fn,void 0,!0),len){case 1:listeners[i].fn.call(listeners[i].context);break;case 2:listeners[i].fn.call(listeners[i].context,a1);break;case 3:listeners[i].fn.call(listeners[i].context,a1,a2);break;case 4:listeners[i].fn.call(listeners[i].context,a1,a2,a3);break;default:if(!args)for(j=1,args=new Array(len-1);j<len;j++)args[j-1]=arguments[j];listeners[i].fn.apply(listeners[i].context,args)}return!0},EventEmitter.prototype.on=function(event,fn,context){return addListener(this,event,fn,context,!1)},EventEmitter.prototype.once=function(event,fn,context){return addListener(this,event,fn,context,!0)},EventEmitter.prototype.removeListener=function(event,fn,context,once){if(event=prefix?prefix+event:event,this._events[event])if(fn){var listeners=this._events[event];if(listeners.fn)listeners.fn!==fn||once&&!listeners.once||context&&listeners.context!==context||clearEvent(this,event);else{for(var i=0,events=[],length=listeners.length;i<length;i++)(listeners[i].fn!==fn||once&&!listeners[i].once||context&&listeners[i].context!==context)&&events.push(listeners[i]);events.length?this._events[event]=1===events.length?events[0]:events:clearEvent(this,event)}}else clearEvent(this,event);return this},EventEmitter.prototype.removeAllListeners=function(event){return event?(event=prefix?prefix+event:event,this._events[event]&&clearEvent(this,event)):(this._events=new Events,this._eventsCount=0),this},EventEmitter.prototype.off=EventEmitter.prototype.removeListener,EventEmitter.prototype.addListener=EventEmitter.prototype.on,EventEmitter.prefixed=prefix,module.exports=EventEmitter.EventEmitter=EventEmitter}(eventemitter3$1);var EventEmitter=getDefaultExportFromCjs(eventemitter3$1.exports),r={grad:.9,turn:360,rad:360/(2*Math.PI)},i=/^#([0-9a-f]{3,8})$/i,l=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,p=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,v=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,m=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(r){return(r=v.exec(r)||m.exec(r))&&r[2]===r[4]&&r[4]===r[6]?a({r:Number(r[1])/(r[2]?100/255:1),g:Number(r[3])/(r[4]?100/255:1),b:Number(r[5])/(r[6]?100/255:1),a:void 0===r[7]?1:Number(r[7])/(r[8]?100:1)}):null},"rgb"],[function(t){var u,e;return(t=l.exec(t)||p.exec(t))?f(g({h:(e=t[1],void 0===(u=t[2])&&(u="deg"),Number(e)*(r[u]||1)),s:Number(t[3]),l:Number(t[4]),a:void 0===t[5]?1:Number(t[5])/(t[6]?100:1)})):null},"hsl"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,r=void 0===(r=r.a)?1:r;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(r)}):null},"rgb"],[function(r){var n=r.h,e=r.s,u=r.l,r=void 0===(r=r.a)?1:r;return t(n)&&t(e)&&t(u)?f(g({h:Number(n),s:Number(e),l:Number(u),a:Number(r)})):null},"hsl"],[function(r){var n=r.h,a=r.s,o=r.v,r=void 0===(r=r.a)?1:r;return t(n)&&t(a)&&t(o)?b(function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(r)})):null},"hsv"]]},j=function(){function r(r){this.parsed=function(r){return"string"==typeof r?N(r.trim(),y.string):"object"==typeof r&&null!==r?N(r,y.object):[null,void 0]}(r)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return null!==this.parsed},r.prototype.brightness=function(){return n(H(this.rgba),2)},r.prototype.isDark=function(){return H(this.rgba)<.5},r.prototype.isLight=function(){return.5<=H(this.rgba)},r.prototype.toHex=function(){return t=(r=o(this.rgba)).r,e=r.g,u=r.b,r=(r=r.a)<1?s(n(255*r)):"","#"+s(t)+s(e)+s(u)+r;var t,e,u,r},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return t=(r=o(this.rgba)).r,n=r.g,e=r.b,(r=r.a)<1?"rgba("+t+", "+n+", "+e+", "+r+")":"rgb("+t+", "+n+", "+e+")";var t,n,e,r},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return t=(r=d(c(this.rgba))).h,n=r.s,e=r.l,(r=r.a)<1?"hsla("+t+", "+n+"%, "+e+"%, "+r+")":"hsl("+t+", "+n+"%, "+e+"%)";var t,n,e,r},r.prototype.toHsv=function(){return{h:n((r=h(this.rgba)).h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return w(M(this.rgba,r=void 0===r?.1:r))},r.prototype.desaturate=function(r){return w(M(this.rgba,-(r=void 0===r?.1:r)))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return w($(this.rgba,r=void 0===r?.1:r))},r.prototype.darken=function(r){return w($(this.rgba,-(r=void 0===r?.1:r)))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return"number"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return"number"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],__defProp$1c=Object.defineProperty,__getOwnPropSymbols$1c=Object.getOwnPropertySymbols,__hasOwnProp$1c=Object.prototype.hasOwnProperty,__propIsEnum$1c=Object.prototype.propertyIsEnumerable,__defNormalProp$1c=(obj,key,value)=>key in obj?__defProp$1c(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;!function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})}([function(e,f){var d,a={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},r={};for(d in a)r[a[d]]=d;var l={};e.prototype.toName=function(f){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var n=r[this.toHex()];if(n)return n;if(null!=f&&f.closest){var g,o=this.toRgb(),t=1/0,b="black";if(!l.length)for(var c in a)l[c]=new e(a[c]).toRgb();for(g in a){var d=o,i=l[g];(d=Math.pow(d.r-i.r,2)+Math.pow(d.g-i.g,2)+Math.pow(d.b-i.b,2))<t&&(t=d,b=g)}return b}},f.string.push([function(f){return(f="transparent"===(f=f.toLowerCase())?"#0000":a[f])?new e(f).toRgb():null},"name"])}]);const _Color=class _Color{constructor(value=16777215){this._value=null,this._components=new Float32Array(4),this._components.fill(1),this._int=16777215,this.value=value}get red(){return this._components[0]}get green(){return this._components[1]}get blue(){return this._components[2]}get alpha(){return this._components[3]}setValue(value){return this.value=value,this}set value(value){if(value instanceof _Color)this._value=this._cloneSource(value._value),this._int=value._int,this._components.set(value._components);else{if(null===value)throw new Error("Cannot set Color#value to null");null!==this._value&&this._isSourceEqual(this._value,value)||(this._value=this._cloneSource(value),this._normalize(this._value))}}get value(){return this._value}_cloneSource(value){if("string"==typeof value||"number"==typeof value||value instanceof Number||null===value)return value;if(Array.isArray(value)||ArrayBuffer.isView(value))return value.slice(0);if("object"!=typeof value||null===value)return value;var b,a={};for(prop in b=value||{})__hasOwnProp$1c.call(b,prop)&&__defNormalProp$1c(a,prop,b[prop]);if(__getOwnPropSymbols$1c)for(var prop of __getOwnPropSymbols$1c(b))__propIsEnum$1c.call(b,prop)&&__defNormalProp$1c(a,prop,b[prop]);return a}_isSourceEqual(value1,value2){var keys2,type1=typeof value1;return type1==typeof value2&&("number"==type1||"string"==type1||value1 instanceof Number?value1===value2:Array.isArray(value1)&&Array.isArray(value2)||ArrayBuffer.isView(value1)&&ArrayBuffer.isView(value2)?value1.length===value2.length&&value1.every((v,i)=>v===value2[i]):null!==value1&&null!==value2?(type1=Object.keys(value1),keys2=Object.keys(value2),type1.length===keys2.length&&type1.every(key=>value1[key]===value2[key])):value1===value2)}toRgba(){var[r,g,b,a]=this._components;return{r:r,g:g,b:b,a:a}}toRgb(){var[r,g,b]=this._components;return{r:r,g:g,b:b}}toRgbaString(){var[r,g,b]=this.toUint8RgbArray();return`rgba(${r},${g},${b},${this.alpha})`}toUint8RgbArray(out){var[r,g,b]=this._components;return this._arrayRgb||(this._arrayRgb=[]),(out=out||this._arrayRgb)[0]=Math.round(255*r),out[1]=Math.round(255*g),out[2]=Math.round(255*b),out}toArray(out){this._arrayRgba||(this._arrayRgba=[]),out=out||this._arrayRgba;var[r,g,b,a]=this._components;return out[0]=r,out[1]=g,out[2]=b,out[3]=a,out}toRgbArray(out){this._arrayRgb||(this._arrayRgb=[]),out=out||this._arrayRgb;var[r,g,b]=this._components;return out[0]=r,out[1]=g,out[2]=b,out}toNumber(){return this._int}toBgrNumber(){var[r,g,b]=this.toUint8RgbArray();return(b<<16)+(g<<8)+r}toLittleEndianNumber(){var value=this._int;return(value>>16)+(65280&value)+((255&value)<<16)}multiply(value){var[value,g,b,a]=_Color._temp.setValue(value)._components;return this._components[0]*=value,this._components[1]*=g,this._components[2]*=b,this._components[3]*=a,this._refreshInt(),this._value=null,this}premultiply(alpha,applyToRGB=!0){return applyToRGB&&(this._components[0]*=alpha,this._components[1]*=alpha,this._components[2]*=alpha),this._components[3]=alpha,this._refreshInt(),this._value=null,this}toPremultiplied(alpha,applyToRGB=!0){if(1===alpha)return(255<<24)+this._int;if(0===alpha)return applyToRGB?0:this._int;let r=this._int>>16&255,g=this._int>>8&255,b=255&this._int;return applyToRGB&&(r=r*alpha+.5|0,g=g*alpha+.5|0,b=b*alpha+.5|0),(255*alpha<<24)+(r<<16)+(g<<8)+b}toHex(){var hexString=this._int.toString(16);return"#"+("000000".substring(0,6-hexString.length)+hexString)}toHexa(){var alphaString=Math.round(255*this._components[3]).toString(16);return this.toHex()+"00".substring(0,2-alphaString.length)+alphaString}setAlpha(alpha){return this._components[3]=this._clamp(alpha),this}_normalize(value){let r,g,b,a;var match;if(("number"==typeof value||value instanceof Number)&&0<=value&&value<=16777215?(r=(value>>16&255)/255,g=(value>>8&255)/255,b=(255&value)/255,a=1):(Array.isArray(value)||value instanceof Float32Array)&&3<=value.length&&value.length<=4?(value=this._clamp(value),[r,g,b,a=1]=value):(value instanceof Uint8Array||value instanceof Uint8ClampedArray)&&3<=value.length&&value.length<=4?(value=this._clamp(value,0,255),[r,g,b,a=255]=value,r/=255,g/=255,b/=255,a/=255):"string"!=typeof value&&"object"!=typeof value||("string"==typeof value&&(match=_Color.HEX_PATTERN.exec(value))&&(value="#"+match[2]),(match=w(value)).isValid()&&({r,g,b,a}=match.rgba,r/=255,g/=255,b/=255)),void 0===r)throw new Error("Unable to convert color "+value);this._components[0]=r,this._components[1]=g,this._components[2]=b,this._components[3]=a,this._refreshInt()}_refreshInt(){this._clamp(this._components);var[r,g,b]=this._components;this._int=(255*r<<16)+(255*g<<8)+(255*b|0)}_clamp(value,min=0,max=1){return"number"==typeof value?Math.min(Math.max(value,min),max):(value.forEach((v,i)=>{value[i]=Math.min(Math.max(v,min),max)}),value)}static isColorLike(value){return"number"==typeof value||"string"==typeof value||value instanceof Number||value instanceof _Color||Array.isArray(value)||value instanceof Uint8Array||value instanceof Uint8ClampedArray||value instanceof Float32Array||void 0!==value.r&&void 0!==value.g&&void 0!==value.b||void 0!==value.r&&void 0!==value.g&&void 0!==value.b&&void 0!==value.a||void 0!==value.h&&void 0!==value.s&&void 0!==value.l||void 0!==value.h&&void 0!==value.s&&void 0!==value.l&&void 0!==value.a||void 0!==value.h&&void 0!==value.s&&void 0!==value.v||void 0!==value.h&&void 0!==value.s&&void 0!==value.v&&void 0!==value.a}};_Color.shared=new _Color,_Color._temp=new _Color,_Color.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;let Color=_Color;eventemitter3$1={cullArea:null,cullable:!1,cullableChildren:!0};const PI_2=2*Math.PI,RAD_TO_DEG=180/Math.PI,DEG_TO_RAD=Math.PI/180;class Point{constructor(x=0,y=0){this.x=0,this.y=0,this.x=x,this.y=y}clone(){return new Point(this.x,this.y)}copyFrom(p){return this.set(p.x,p.y),this}copyTo(p){return p.set(this.x,this.y),p}equals(p){return p.x===this.x&&p.y===this.y}set(x=0,y=x){return this.x=x,this.y=y,this}toString(){return`[pixi.js/math:Point x=${this.x} y=${this.y}]`}static get shared(){return tempPoint.x=0,tempPoint.y=0,tempPoint}}const tempPoint=new Point;class Matrix{constructor(a=1,b=0,c=0,d=1,tx=0,ty=0){this.array=null,this.a=a,this.b=b,this.c=c,this.d=d,this.tx=tx,this.ty=ty}fromArray(array){this.a=array[0],this.b=array[1],this.c=array[3],this.d=array[4],this.tx=array[2],this.ty=array[5]}set(a,b,c,d,tx,ty){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=tx,this.ty=ty,this}toArray(transpose,out){return this.array||(this.array=new Float32Array(9)),out=out||this.array,transpose?(out[0]=this.a,out[1]=this.b,out[2]=0,out[3]=this.c,out[4]=this.d,out[5]=0,out[6]=this.tx,out[7]=this.ty):(out[0]=this.a,out[1]=this.c,out[2]=this.tx,out[3]=this.b,out[4]=this.d,out[5]=this.ty,out[6]=0,out[7]=0),out[8]=1,out}apply(pos,newPos){newPos=newPos||new Point;var x=pos.x,pos=pos.y;return newPos.x=this.a*x+this.c*pos+this.tx,newPos.y=this.b*x+this.d*pos+this.ty,newPos}applyInverse(pos,newPos){newPos=newPos||new Point;var a=this.a,b=this.b,c=this.c,d=this.d,tx=this.tx,ty=this.ty,id=1/(a*d+c*-b),x=pos.x,pos=pos.y;return newPos.x=d*id*x+-c*id*pos+(ty*c-tx*d)*id,newPos.y=a*id*pos+-b*id*x+(-ty*a+tx*b)*id,newPos}translate(x,y){return this.tx+=x,this.ty+=y,this}scale(x,y){return this.a*=x,this.d*=y,this.c*=x,this.b*=y,this.tx*=x,this.ty*=y,this}rotate(angle){var cos=Math.cos(angle),angle=Math.sin(angle),a1=this.a,c1=this.c,tx1=this.tx;return this.a=a1*cos-this.b*angle,this.b=a1*angle+this.b*cos,this.c=c1*cos-this.d*angle,this.d=c1*angle+this.d*cos,this.tx=tx1*cos-this.ty*angle,this.ty=tx1*angle+this.ty*cos,this}append(matrix){var a1=this.a,b1=this.b,c1=this.c,d1=this.d;return this.a=matrix.a*a1+matrix.b*c1,this.b=matrix.a*b1+matrix.b*d1,this.c=matrix.c*a1+matrix.d*c1,this.d=matrix.c*b1+matrix.d*d1,this.tx=matrix.tx*a1+matrix.ty*c1+this.tx,this.ty=matrix.tx*b1+matrix.ty*d1+this.ty,this}appendFrom(a,b){var a1=a.a,b1=a.b,c1=a.c,d1=a.d,tx=a.tx,a=a.ty,a2=b.a,b2=b.b,c2=b.c,d2=b.d;return this.a=a1*a2+b1*c2,this.b=a1*b2+b1*d2,this.c=c1*a2+d1*c2,this.d=c1*b2+d1*d2,this.tx=tx*a2+a*c2+b.tx,this.ty=tx*b2+a*d2+b.ty,this}setTransform(x,y,pivotX,pivotY,scaleX,scaleY,rotation,skewX,skewY){return this.a=Math.cos(rotation+skewY)*scaleX,this.b=Math.sin(rotation+skewY)*scaleX,this.c=-Math.sin(rotation-skewX)*scaleY,this.d=Math.cos(rotation-skewX)*scaleY,this.tx=x-(pivotX*this.a+pivotY*this.c),this.ty=y-(pivotX*this.b+pivotY*this.d),this}prepend(matrix){var a1,c1,tx1=this.tx;return 1===matrix.a&&0===matrix.b&&0===matrix.c&&1===matrix.d||(a1=this.a,c1=this.c,this.a=a1*matrix.a+this.b*matrix.c,this.b=a1*matrix.b+this.b*matrix.d,this.c=c1*matrix.a+this.d*matrix.c,this.d=c1*matrix.b+this.d*matrix.d),this.tx=tx1*matrix.a+this.ty*matrix.c+matrix.tx,this.ty=tx1*matrix.b+this.ty*matrix.d+matrix.ty,this}decompose(transform){var a=this.a,b=this.b,c=this.c,d=this.d,pivot=transform.pivot,skewX=-Math.atan2(-c,d),skewY=Math.atan2(b,a),delta=Math.abs(skewX+skewY);return delta<1e-5||Math.abs(PI_2-delta)<1e-5?(transform.rotation=skewY,transform.skew.x=transform.skew.y=0):(transform.rotation=0,transform.skew.x=skewX,transform.skew.y=skewY),transform.scale.x=Math.sqrt(a*a+b*b),transform.scale.y=Math.sqrt(c*c+d*d),transform.position.x=this.tx+(pivot.x*a+pivot.y*c),transform.position.y=this.ty+(pivot.x*b+pivot.y*d),transform}invert(){var a1=this.a,b1=this.b,c1=this.c,d1=this.d,tx1=this.tx,n=a1*d1-b1*c1;return this.a=d1/n,this.b=-b1/n,this.c=-c1/n,this.d=a1/n,this.tx=(c1*this.ty-d1*tx1)/n,this.ty=-(a1*this.ty-b1*tx1)/n,this}isIdentity(){return 1===this.a&&0===this.b&&0===this.c&&1===this.d&&0===this.tx&&0===this.ty}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){var matrix=new Matrix;return matrix.a=this.a,matrix.b=this.b,matrix.c=this.c,matrix.d=this.d,matrix.tx=this.tx,matrix.ty=this.ty,matrix}copyTo(matrix){return matrix.a=this.a,matrix.b=this.b,matrix.c=this.c,matrix.d=this.d,matrix.tx=this.tx,matrix.ty=this.ty,matrix}copyFrom(matrix){return this.a=matrix.a,this.b=matrix.b,this.c=matrix.c,this.d=matrix.d,this.tx=matrix.tx,this.ty=matrix.ty,this}equals(matrix){return matrix.a===this.a&&matrix.b===this.b&&matrix.c===this.c&&matrix.d===this.d&&matrix.tx===this.tx&&matrix.ty===this.ty}toString(){return`[pixi.js:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`}static get IDENTITY(){return identityMatrix$1.identity()}static get shared(){return tempMatrix$6.identity()}}const tempMatrix$6=new Matrix,identityMatrix$1=new Matrix;class ObservablePoint{constructor(observer,x,y){this._x=x||0,this._y=y||0,this._observer=observer}clone(observer){return new ObservablePoint(null!=observer?observer:this._observer,this._x,this._y)}set(x=0,y=x){return this._x===x&&this._y===y||(this._x=x,this._y=y,this._observer._onUpdate(this)),this}copyFrom(p){return this._x===p.x&&this._y===p.y||(this._x=p.x,this._y=p.y,this._observer._onUpdate(this)),this}copyTo(p){return p.set(this._x,this._y),p}equals(p){return p.x===this._x&&p.y===this._y}toString(){return`[pixi.js/math:ObservablePoint x=0 y=0 scope=${this._observer}]`}get x(){return this._x}set x(value){this._x!==value&&(this._x=value,this._observer._onUpdate(this))}get y(){return this._y}set y(value){this._y!==value&&(this._y=value,this._observer._onUpdate(this))}}const uidCache={default:-1};function uid$1(name="default"){return void 0===uidCache[name]&&(uidCache[name]=-1),++uidCache[name]}const warnings={},v8_0_0="8.0.0";function deprecation(version,message,ignoreDepth=3){if(!warnings[message]){let stack=(new Error).stack;void 0===stack?console.warn("PixiJS Deprecation Warning: ",message+`
Deprecated since v`+version):(stack=stack.split("\n").splice(ignoreDepth).join("\n"),console.groupCollapsed?(console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s","color:#614108;background:#fffbe6","font-weight:normal;color:#614108;background:#fffbe6",message+`
Deprecated since v`+version),console.warn(stack),console.groupEnd()):(console.warn("PixiJS Deprecation Warning: ",message+`
Deprecated since v`+version),console.warn(stack))),warnings[message]=!0}}class Pool{constructor(ClassType,initialSize){this._pool=[],this._count=0,this._index=0,this._classType=ClassType,initialSize&&this.prepopulate(initialSize)}prepopulate(total){for(let i=0;i<total;i++)this._pool[this._index++]=new this._classType;this._count+=total}get(data){var _a,item;return null!=(_a=(item=0<this._index?this._pool[--this._index]:new this._classType).init)&&_a.call(item,data),item}return(item){var _a;null!=(_a=item.reset)&&_a.call(item),this._pool[this._index++]=item}get totalSize(){return this._count}get totalFree(){return this._index}get totalUsed(){return this._count-this._index}clear(){this._pool.length=0,this._index=0}}class PoolGroupClass{constructor(){this._poolsByClass=new Map}prepopulate(Class,total){this.getPool(Class).prepopulate(total)}get(Class,data){return this.getPool(Class).get(data)}return(item){this.getPool(item.constructor).return(item)}getPool(ClassType){return this._poolsByClass.has(ClassType)||this._poolsByClass.set(ClassType,new Pool(ClassType)),this._poolsByClass.get(ClassType)}stats(){const stats={};return this._poolsByClass.forEach(pool=>{var name=stats[pool._classType.name]?pool._classType.name+pool._classType.ID:pool._classType.name;stats[name]={free:pool.totalFree,used:pool.totalUsed,size:pool.totalSize}}),stats}}const BigPool=new PoolGroupClass;var cacheAsTextureMixin={get isCachedAsTexture(){var _a;return!(null==(_a=this.renderGroup)||!_a.isCachedAsTexture)},cacheAsTexture(val){"boolean"==typeof val&&!1===val?this.disableRenderGroup():(this.enableRenderGroup(),this.renderGroup.enableCacheAsTexture(!0===val?{}:val))},updateCacheTexture(){var _a;null!=(_a=this.renderGroup)&&_a.updateCacheTexture()},get cacheAsBitmap(){return this.isCachedAsTexture},set cacheAsBitmap(val){deprecation("v8.6.0","cacheAsBitmap is deprecated, use cacheAsTexture instead."),this.cacheAsTexture(val)}};function removeItems(arr,startIdx,removeCount){var length=arr.length;let i;if(!(length<=startIdx||0===removeCount)){var len=length-(removeCount=length<startIdx+removeCount?length-startIdx:removeCount);for(i=startIdx;i<len;++i)arr[i]=arr[i+removeCount];arr.length=len}}var childrenHelperMixin={allowChildren:!0,removeChildren(beginIndex=0,endIndex){var range=(endIndex=null!=endIndex?endIndex:this.children.length)-beginIndex,removed=[];if(0<range&&range<=endIndex){for(let i=endIndex-1;i>=beginIndex;i--){var child=this.children[i];child&&(removed.push(child),child.parent=null)}removeItems(this.children,beginIndex,endIndex),(endIndex=this.renderGroup||this.parentRenderGroup)&&endIndex.removeChildren(removed);for(let i=0;i<removed.length;++i)this.emit("childRemoved",removed[i],this,i),removed[i].emit("removed",this);return 0<removed.length&&this._didViewChangeTick++,removed}if(0==range&&0===this.children.length)return removed;throw new RangeError("removeChildren: numeric values are outside the acceptable range.")},removeChildAt(index){return index=this.getChildAt(index),this.removeChild(index)},getChildAt(index){if(index<0||index>=this.children.length)throw new Error(`getChildAt: Index (${index}) does not exist.`);return this.children[index]},setChildIndex(child,index){if(index<0||index>=this.children.length)throw new Error(`The index ${index} supplied is out of bounds `+this.children.length);this.getChildIndex(child),this.addChildAt(child,index)},getChildIndex(child){if(-1===(child=this.children.indexOf(child)))throw new Error("The supplied Container must be a child of the caller");return child},addChildAt(child,index){this.allowChildren||deprecation(v8_0_0,"addChildAt: Only Containers will be allowed to add children in v8.0.0");var children=this.children;if(index<0||index>children.length)throw new Error(child+`addChildAt: The index ${index} supplied is out of bounds `+children.length);if(child.parent){var currentIndex=child.parent.children.indexOf(child);if(child.parent===this&&currentIndex===index)return child;-1!==currentIndex&&child.parent.children.splice(currentIndex,1)}return index===children.length?children.push(child):children.splice(index,0,child),child.parent=this,child.didChange=!0,child._updateFlags=15,(currentIndex=this.renderGroup||this.parentRenderGroup)&&currentIndex.addChild(child),this.sortableChildren&&(this.sortDirty=!0),this.emit("childAdded",child,this,index),child.emit("added",this),child},swapChildren(child,child2){var index2,index1;child!==child2&&(index1=this.getChildIndex(child),index2=this.getChildIndex(child2),this.children[index1]=child2,this.children[index2]=child,(index1=this.renderGroup||this.parentRenderGroup)&&(index1.structureDidChange=!0),this._didContainerChangeTick++)},removeFromParent(){var _a;null!=(_a=this.parent)&&_a.removeChild(this)},reparentChild(...child){return 1===child.length?this.reparentChildAt(child[0],this.children.length):(child.forEach(c=>this.reparentChildAt(c,this.children.length)),child[0])},reparentChildAt(child,index){var childMat;return child.parent===this?this.setChildIndex(child,index):(childMat=child.worldTransform.clone(),child.removeFromParent(),this.addChildAt(child,index),(index=this.worldTransform.clone()).invert(),childMat.prepend(index),child.setFromMatrix(childMat)),child}},collectRenderablesMixin={collectRenderables(instructionSet,renderer,currentLayer){this.parentRenderLayer&&this.parentRenderLayer!==currentLayer||this.globalDisplayStatus<7||!this.includeInBuild||(this.sortableChildren&&this.sortChildren(),this.isSimple?this.collectRenderablesSimple(instructionSet,renderer,currentLayer):this.renderGroup?renderer.renderPipes.renderGroup.addRenderGroup(this.renderGroup,instructionSet):this.collectRenderablesWithEffects(instructionSet,renderer,currentLayer))},collectRenderablesSimple(instructionSet,renderer,currentLayer){var children=this.children,length=children.length;for(let i=0;i<length;i++)children[i].collectRenderables(instructionSet,renderer,currentLayer)},collectRenderablesWithEffects(instructionSet,renderer,currentLayer){var renderPipes=renderer.renderPipes;for(let i=0;i<this.effects.length;i++){var effect=this.effects[i];renderPipes[effect.pipe].push(effect,this,instructionSet)}this.collectRenderablesSimple(instructionSet,renderer,currentLayer);for(let i=this.effects.length-1;0<=i;i--){const effect=this.effects[i],pipe=renderPipes[effect.pipe];pipe.pop(effect,this,instructionSet)}}};class FilterEffect{constructor(){this.pipe="filter",this.priority=1}destroy(){for(let i=0;i<this.filters.length;i++)this.filters[i].destroy();this.filters=null,this.filterArea=null}}class MaskEffectManagerClass{constructor(){this._effectClasses=[],this._tests=[],this._initialized=!1}init(){this._initialized||(this._initialized=!0,this._effectClasses.forEach(test=>{this.add({test:test.test,maskClass:test})}))}add(test){this._tests.push(test)}getMaskEffect(item){this._initialized||this.init();for(let i=0;i<this._tests.length;i++){var test=this._tests[i];if(test.test(item))return BigPool.get(test.maskClass,item)}return item}returnMaskEffect(effect){BigPool.return(effect)}}const MaskEffectManager=new MaskEffectManagerClass;extensions.handleByList(ExtensionType2.MaskEffect,MaskEffectManager._effectClasses);var __defProp$1b=Object.defineProperty,__getOwnPropSymbols$1b=Object.getOwnPropertySymbols,__hasOwnProp$1b=Object.prototype.hasOwnProperty,__propIsEnum$1b=Object.prototype.propertyIsEnumerable,__defNormalProp$1b=(obj,key,value)=>key in obj?__defProp$1b(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$1b=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$1b.call(b,prop)&&__defNormalProp$1b(a,prop,b[prop]);if(__getOwnPropSymbols$1b)for(var prop of __getOwnPropSymbols$1b(b))__propIsEnum$1b.call(b,prop)&&__defNormalProp$1b(a,prop,b[prop]);return a},effectsMixin={_maskEffect:null,_maskOptions:{inverse:!1},_filterEffect:null,effects:[],_markStructureAsChanged(){var renderGroup=this.renderGroup||this.parentRenderGroup;renderGroup&&(renderGroup.structureDidChange=!0)},addEffect(effect){-1===this.effects.indexOf(effect)&&(this.effects.push(effect),this.effects.sort((a,b)=>a.priority-b.priority),this._markStructureAsChanged(),this._updateIsSimple())},removeEffect(effect){-1!==(effect=this.effects.indexOf(effect))&&(this.effects.splice(effect,1),this._markStructureAsChanged(),this._updateIsSimple())},set mask(value){var effect=this._maskEffect;(null==effect?void 0:effect.mask)!==value&&(effect&&(this.removeEffect(effect),MaskEffectManager.returnMaskEffect(effect),this._maskEffect=null),null!=value)&&(this._maskEffect=MaskEffectManager.getMaskEffect(value),this.addEffect(this._maskEffect))},setMask(options){this._maskOptions=__spreadValues$1b(__spreadValues$1b({},this._maskOptions),options),options.mask&&(this.mask=options.mask),this._markStructureAsChanged()},get mask(){var _a;return null==(_a=this._maskEffect)?void 0:_a.mask},set filters(value){Array.isArray(value)||(value=value&&[value]);var effect=this._filterEffect||(this._filterEffect=new FilterEffect),hasFilters=0<(null==value?void 0:value.length),_a=hasFilters!=0<(null==(_a=effect.filters)?void 0:_a.length);value=Array.isArray(value)?value.slice(0):value,effect.filters=Object.freeze(value),_a&&(hasFilters?this.addEffect(effect):(this.removeEffect(effect),effect.filters=null!=value?value:null))},get filters(){var _a;return null==(_a=this._filterEffect)?void 0:_a.filters},set filterArea(value){this._filterEffect||(this._filterEffect=new FilterEffect),this._filterEffect.filterArea=value},get filterArea(){var _a;return null==(_a=this._filterEffect)?void 0:_a.filterArea}},findMixin={label:null,get name(){return deprecation(v8_0_0,"Container.name property has been removed, use Container.label instead"),this.label},set name(value){deprecation(v8_0_0,"Container.name property has been removed, use Container.label instead"),this.label=value},getChildByName(name,deep=!1){return this.getChildByLabel(name,deep)},getChildByLabel(label,deep=!1){var children=this.children;for(let i=0;i<children.length;i++){var child=children[i];if(child.label===label||label instanceof RegExp&&label.test(child.label))return child}if(deep)for(let i=0;i<children.length;i++){const child=children[i];var found=child.getChildByLabel(label,!0);if(found)return found}return null},getChildrenByLabel(label,deep=!1,out=[]){var children=this.children;for(let i=0;i<children.length;i++){var child=children[i];(child.label===label||label instanceof RegExp&&label.test(child.label))&&out.push(child)}if(deep)for(let i=0;i<children.length;i++)children[i].getChildrenByLabel(label,!0,out);return out}};const tempPoints=[new Point,new Point,new Point,new Point];class Rectangle{constructor(x=0,y=0,width=0,height=0){this.type="rectangle",this.x=Number(x),this.y=Number(y),this.width=Number(width),this.height=Number(height)}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}isEmpty(){return this.left===this.right||this.top===this.bottom}static get EMPTY(){return new Rectangle(0,0,0,0)}clone(){return new Rectangle(this.x,this.y,this.width,this.height)}copyFromBounds(bounds){return this.x=bounds.minX,this.y=bounds.minY,this.width=bounds.maxX-bounds.minX,this.height=bounds.maxY-bounds.minY,this}copyFrom(rectangle){return this.x=rectangle.x,this.y=rectangle.y,this.width=rectangle.width,this.height=rectangle.height,this}copyTo(rectangle){return rectangle.copyFrom(this),rectangle}contains(x,y){return!(this.width<=0||this.height<=0)&&x>=this.x&&x<this.x+this.width&&y>=this.y&&y<this.y+this.height}strokeContains(x,y,strokeWidth,alignment=.5){var _x,_y,{width,height}=this;return!(width<=0||height<=0)&&(_x=this.x,_y=this.y,alignment=strokeWidth-(strokeWidth*=1-alignment),_x-strokeWidth<=x)&&x<=_x+width+strokeWidth&&_y-strokeWidth<=y&&y<=_y+height+strokeWidth&&!(_x+alignment<x&&x<_x+width-alignment&&_y+alignment<y&&y<_y+height-alignment)}intersects(other,transform){var x0,x1,y0,y1,lt,rt,rb,s,n00,n10,n01,n11,lb;return transform?(x0=this.left,x1=this.right,y0=this.top,y1=this.bottom,!(x1<=x0||y1<=y0||(lt=tempPoints[0].set(other.left,other.top),lb=tempPoints[1].set(other.left,other.bottom),rt=tempPoints[2].set(other.right,other.top),rb=tempPoints[3].set(other.right,other.bottom),rt.x<=lt.x)||lb.y<=lt.y||0===(s=Math.sign(transform.a*transform.d-transform.b*transform.c))||(transform.apply(lt,lt),transform.apply(lb,lb),transform.apply(rt,rt),transform.apply(rb,rb),Math.max(lt.x,lb.x,rt.x,rb.x)<=x0)||Math.min(lt.x,lb.x,rt.x,rb.x)>=x1||Math.max(lt.y,lb.y,rt.y,rb.y)<=y0||Math.min(lt.y,lb.y,rt.y,rb.y)>=y1||(n00=(transform=s*(lb.y-lt.y))*x0+(lb=s*(lt.x-lb.x))*y0,n10=transform*x1+lb*y0,n01=transform*x0+lb*y1,n11=transform*x1+lb*y1,Math.max(n00,n10,n01,n11)<=transform*lt.x+lb*lt.y)||Math.min(n00,n10,n01,n11)>=transform*rb.x+lb*rb.y||(n01=(n00=s*(lt.y-rt.y))*x0+(n10=s*(rt.x-lt.x))*y0,n11=n00*x1+n10*y0,transform=n00*x0+n10*y1,lb=n00*x1+n10*y1,Math.max(n01,n11,transform,lb)<=n00*lt.x+n10*lt.y)||Math.min(n01,n11,transform,lb)>=n00*rb.x+n10*rb.y)):(s=(this.x<other.x?other:this).x,!((this.right>other.right?other:this).right<=s)&&(this.y<other.y?other:this).y<(this.bottom>other.bottom?other:this).bottom)}pad(paddingX=0,paddingY=paddingX){return this.x-=paddingX,this.y-=paddingY,this.width+=2*paddingX,this.height+=2*paddingY,this}fit(rectangle){var x1=Math.max(this.x,rectangle.x),x2=Math.min(this.x+this.width,rectangle.x+rectangle.width),y1=Math.max(this.y,rectangle.y),rectangle=Math.min(this.y+this.height,rectangle.y+rectangle.height);return this.x=x1,this.width=Math.max(x2-x1,0),this.y=y1,this.height=Math.max(rectangle-y1,0),this}ceil(resolution=1,eps=.001){var x2=Math.ceil((this.x+this.width-eps)*resolution)/resolution,y2=Math.ceil((this.y+this.height-eps)*resolution)/resolution;return this.x=Math.floor((this.x+eps)*resolution)/resolution,this.y=Math.floor((this.y+eps)*resolution)/resolution,this.width=x2-this.x,this.height=y2-this.y,this}enlarge(rectangle){var x1=Math.min(this.x,rectangle.x),x2=Math.max(this.x+this.width,rectangle.x+rectangle.width),y1=Math.min(this.y,rectangle.y),rectangle=Math.max(this.y+this.height,rectangle.y+rectangle.height);return this.x=x1,this.width=x2-x1,this.y=y1,this.height=rectangle-y1,this}getBounds(out){return(out=out||new Rectangle).copyFrom(this),out}containsRect(other){var x1,y1,x2;return!(this.width<=0||this.height<=0)&&(x1=other.x,y1=other.y,x2=other.x+other.width,other=other.y+other.height,x1>=this.x)&&x1<this.x+this.width&&y1>=this.y&&y1<this.y+this.height&&x2>=this.x&&x2<this.x+this.width&&other>=this.y&&other<this.y+this.height}toString(){return`[pixi.js/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`}}const defaultMatrix=new Matrix;class Bounds{constructor(minX=1/0,minY=1/0,maxX=-1/0,maxY=-1/0){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=defaultMatrix,this.minX=minX,this.minY=minY,this.maxX=maxX,this.maxY=maxY}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}get rectangle(){this._rectangle||(this._rectangle=new Rectangle);var rectangle=this._rectangle;return this.minX>this.maxX||this.minY>this.maxY?(rectangle.x=0,rectangle.y=0,rectangle.width=0,rectangle.height=0):rectangle.copyFromBounds(this),rectangle}clear(){return this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=defaultMatrix,this}set(x0,y0,x1,y1){this.minX=x0,this.minY=y0,this.maxX=x1,this.maxY=y1}addFrame(x0,y0,x1,y1,matrix){var a=(matrix=matrix||this.matrix).a,b=matrix.b,c=matrix.c,d=matrix.d,tx=matrix.tx,matrix=matrix.ty;let minX=this.minX,minY=this.minY,maxX=this.maxX,maxY=this.maxY;var x=a*x0+c*y0+tx,y=b*x0+d*y0+matrix;x<minX&&(minX=x),y<minY&&(minY=y),x>maxX&&(maxX=x),y>maxY&&(maxY=y),y=b*x1+d*y0+matrix,(x=a*x1+c*y0+tx)<minX&&(minX=x),y<minY&&(minY=y),x>maxX&&(maxX=x),y>maxY&&(maxY=y),y=b*x0+d*y1+matrix,(x=a*x0+c*y1+tx)<minX&&(minX=x),y<minY&&(minY=y),x>maxX&&(maxX=x),y>maxY&&(maxY=y),y=b*x1+d*y1+matrix,(x=a*x1+c*y1+tx)<minX&&(minX=x),y<minY&&(minY=y),x>maxX&&(maxX=x),y>maxY&&(maxY=y),this.minX=minX,this.minY=minY,this.maxX=maxX,this.maxY=maxY}addRect(rect,matrix){this.addFrame(rect.x,rect.y,rect.x+rect.width,rect.y+rect.height,matrix)}addBounds(bounds,matrix){this.addFrame(bounds.minX,bounds.minY,bounds.maxX,bounds.maxY,matrix)}addBoundsMask(mask){this.minX=(this.minX>mask.minX?this:mask).minX,this.minY=(this.minY>mask.minY?this:mask).minY,this.maxX=(this.maxX<mask.maxX?this:mask).maxX,this.maxY=(this.maxY<mask.maxY?this:mask).maxY}applyMatrix(matrix){var minX=this.minX,minY=this.minY,maxX=this.maxX,maxY=this.maxY,{a:matrix,b,c,d,tx,ty}=matrix,x=matrix*minX+c*minY+tx,y=b*minX+d*minY+ty;this.minX=x,this.minY=y,this.maxX=x,this.maxY=y,y=b*maxX+d*minY+ty,this.minX=(x=matrix*maxX+c*minY+tx)<this.minX?x:this.minX,this.minY=y<this.minY?y:this.minY,this.maxX=x>this.maxX?x:this.maxX,this.maxY=y>this.maxY?y:this.maxY,y=b*minX+d*maxY+ty,this.minX=(x=matrix*minX+c*maxY+tx)<this.minX?x:this.minX,this.minY=y<this.minY?y:this.minY,this.maxX=x>this.maxX?x:this.maxX,this.maxY=y>this.maxY?y:this.maxY,y=b*maxX+d*maxY+ty,this.minX=(x=matrix*maxX+c*maxY+tx)<this.minX?x:this.minX,this.minY=y<this.minY?y:this.minY,this.maxX=x>this.maxX?x:this.maxX,this.maxY=y>this.maxY?y:this.maxY}fit(rect){return this.minX<rect.left&&(this.minX=rect.left),this.maxX>rect.right&&(this.maxX=rect.right),this.minY<rect.top&&(this.minY=rect.top),this.maxY>rect.bottom&&(this.maxY=rect.bottom),this}fitBounds(left,right,top,bottom){return this.minX<left&&(this.minX=left),this.maxX>right&&(this.maxX=right),this.minY<top&&(this.minY=top),this.maxY>bottom&&(this.maxY=bottom),this}pad(paddingX,paddingY=paddingX){return this.minX-=paddingX,this.maxX+=paddingX,this.minY-=paddingY,this.maxY+=paddingY,this}ceil(){return this.minX=Math.floor(this.minX),this.minY=Math.floor(this.minY),this.maxX=Math.ceil(this.maxX),this.maxY=Math.ceil(this.maxY),this}clone(){return new Bounds(this.minX,this.minY,this.maxX,this.maxY)}scale(x,y=x){return this.minX*=x,this.minY*=y,this.maxX*=x,this.maxY*=y,this}get x(){return this.minX}set x(value){var width=this.maxX-this.minX;this.minX=value,this.maxX=value+width}get y(){return this.minY}set y(value){var height=this.maxY-this.minY;this.minY=value,this.maxY=value+height}get width(){return this.maxX-this.minX}set width(value){this.maxX=this.minX+value}get height(){return this.maxY-this.minY}set height(value){this.maxY=this.minY+value}get left(){return this.minX}get right(){return this.maxX}get top(){return this.minY}get bottom(){return this.maxY}get isPositive(){return 0<this.maxX-this.minX&&0<this.maxY-this.minY}get isValid(){return this.minX+this.minY!==1/0}addVertexData(vertexData,beginOffset,endOffset,matrix){let minX=this.minX,minY=this.minY,maxX=this.maxX,maxY=this.maxY;var a=(matrix=matrix||this.matrix).a,b=matrix.b,c=matrix.c,d=matrix.d,tx=matrix.tx,ty=matrix.ty;for(let i=beginOffset;i<endOffset;i+=2){var localX=vertexData[i],localY=vertexData[i+1],x=a*localX+c*localY+tx,localX=b*localX+d*localY+ty;minX=x<minX?x:minX,minY=localX<minY?localX:minY,maxX=x>maxX?x:maxX,maxY=localX>maxY?localX:maxY}this.minX=minX,this.minY=minY,this.maxX=maxX,this.maxY=maxY}containsPoint(x,y){return this.minX<=x&&this.minY<=y&&this.maxX>=x&&this.maxY>=y}toString(){return`[pixi.js:Bounds minX=${this.minX} minY=${this.minY} maxX=${this.maxX} maxY=${this.maxY} width=${this.width} height=${this.height}]`}copyFrom(bounds){return this.minX=bounds.minX,this.minY=bounds.minY,this.maxX=bounds.maxX,this.maxY=bounds.maxY,this}}const matrixPool=new Pool(Matrix),boundsPool=new Pool(Bounds),tempMatrix$5=new Matrix;var getFastGlobalBoundsMixin={getFastGlobalBounds(factorRenderLayers,bounds){return(bounds=bounds||new Bounds).clear(),this._getGlobalBoundsRecursive(!!factorRenderLayers,bounds,this.parentRenderLayer),bounds.isValid||bounds.set(0,0,0,0),factorRenderLayers=this.renderGroup||this.parentRenderGroup,bounds.applyMatrix(factorRenderLayers.worldTransform),bounds},_getGlobalBoundsRecursive(factorRenderLayers,bounds,currentLayer){let localBounds=bounds;if((!factorRenderLayers||!this.parentRenderLayer||this.parentRenderLayer===currentLayer)&&7===this.localDisplayStatus&&this.measurable){var manageEffects=!!this.effects.length;if((this.renderGroup||manageEffects)&&(localBounds=boundsPool.get().clear()),this.boundsArea)bounds.addRect(this.boundsArea,this.worldTransform);else{this.renderPipeId&&(viewBounds=this.bounds,localBounds.addFrame(viewBounds.minX,viewBounds.minY,viewBounds.maxX,viewBounds.maxY,this.groupTransform));var viewBounds,children=this.children;for(let i=0;i<children.length;i++)children[i]._getGlobalBoundsRecursive(factorRenderLayers,localBounds,currentLayer)}if(manageEffects){let advanced=!1;var renderGroup=this.renderGroup||this.parentRenderGroup;for(let i=0;i<this.effects.length;i++)this.effects[i].addBounds&&(advanced||(advanced=!0,localBounds.applyMatrix(renderGroup.worldTransform)),this.effects[i].addBounds(localBounds,!0));advanced&&(localBounds.applyMatrix(renderGroup.worldTransform.copyTo(tempMatrix$5).invert()),bounds.addBounds(localBounds,this.relativeGroupTransform)),bounds.addBounds(localBounds),boundsPool.return(localBounds)}else this.renderGroup&&(bounds.addBounds(localBounds,this.relativeGroupTransform),boundsPool.return(localBounds))}}};function getGlobalBounds(target,skipUpdateTransform,bounds){bounds.clear();let pooledMatrix;return _getGlobalBounds(target,bounds,target.parent?skipUpdateTransform?target.parent.worldTransform:updateTransformBackwards(target,pooledMatrix=matrixPool.get().identity()):Matrix.IDENTITY,skipUpdateTransform),pooledMatrix&&matrixPool.return(pooledMatrix),bounds.isValid||bounds.set(0,0,0,0),bounds}function _getGlobalBounds(target,bounds,parentTransform,skipUpdateTransform){var _a,_b;if(target.visible&&target.measurable){let worldTransform;skipUpdateTransform?worldTransform=target.worldTransform:(target.updateLocalTransform(),(worldTransform=matrixPool.get()).appendFrom(target.localTransform,parentTransform));var parentTransform=bounds,preserveBounds=!!target.effects.length;if(preserveBounds&&(bounds=boundsPool.get().clear()),target.boundsArea)bounds.addRect(target.boundsArea,worldTransform);else{target.bounds&&(bounds.matrix=worldTransform,bounds.addBounds(target.bounds));for(let i=0;i<target.children.length;i++)_getGlobalBounds(target.children[i],bounds,worldTransform,skipUpdateTransform)}if(preserveBounds){for(let i=0;i<target.effects.length;i++)null!=(_b=(_a=target.effects[i]).addBounds)&&_b.call(_a,bounds);parentTransform.addBounds(bounds,Matrix.IDENTITY),boundsPool.return(bounds)}skipUpdateTransform||matrixPool.return(worldTransform)}}function updateTransformBackwards(target,parentTransform){return(target=target.parent)&&(updateTransformBackwards(target,parentTransform),target.updateLocalTransform(),parentTransform.append(target.localTransform)),parentTransform}function multiplyHexColors(color1,color2){return 16777215!==color1&&color2?16777215!==color2&&color1?(((color1>>16&255)*(color2>>16&255)/255|0)<<16)+(((color1>>8&255)*(color2>>8&255)/255|0)<<8)+((255&color1)*(255&color2)/255|0):color1:color2}const WHITE_BGR=16777215;function multiplyColors(localBGRColor,parentBGRColor){return localBGRColor===WHITE_BGR?parentBGRColor:parentBGRColor===WHITE_BGR?localBGRColor:multiplyHexColors(localBGRColor,parentBGRColor)}function bgr2rgb(color){return((255&color)<<16)+(65280&color)+(color>>16&255)}var getGlobalMixin={getGlobalAlpha(skipUpdate){if(skipUpdate)return this.renderGroup?this.renderGroup.worldAlpha:this.parentRenderGroup?this.parentRenderGroup.worldAlpha*this.alpha:this.alpha;let alpha=this.alpha,current=this.parent;for(;current;)alpha*=current.alpha,current=current.parent;return alpha},getGlobalTransform(matrix,skipUpdate){return skipUpdate?matrix.copyFrom(this.worldTransform):(this.updateLocalTransform(),skipUpdate=updateTransformBackwards(this,matrixPool.get().identity()),matrix.appendFrom(this.localTransform,skipUpdate),matrixPool.return(skipUpdate),matrix)},getGlobalTint(skipUpdate){if(skipUpdate)return this.renderGroup?bgr2rgb(this.renderGroup.worldColor):this.parentRenderGroup?bgr2rgb(multiplyColors(this.localColor,this.parentRenderGroup.worldColor)):this.tint;let color=this.localColor,parent=this.parent;for(;parent;)color=multiplyColors(color,parent.localColor),parent=parent.parent;return bgr2rgb(color)}};let warnCount=0;const maxWarnings=500;function warn(...args){warnCount!==maxWarnings&&(++warnCount===maxWarnings?console.warn("PixiJS Warning: too many warnings, no more warnings will be reported to the console by PixiJS."):console.warn("PixiJS Warning: ",...args))}function getLocalBounds(target,bounds,relativeMatrix){return bounds.clear(),function _getLocalBounds(target,bounds,parentTransform,rootContainer,isRoot){var _a,_b;let relativeTransform;if(isRoot)relativeTransform=matrixPool.get(),relativeTransform=parentTransform.copyTo(relativeTransform);else{if(!target.visible||!target.measurable)return;target.updateLocalTransform(),isRoot=target.localTransform,(relativeTransform=matrixPool.get()).appendFrom(isRoot,parentTransform)}if(isRoot=bounds,(parentTransform=!!target.effects.length)&&(bounds=boundsPool.get().clear()),target.boundsArea)bounds.addRect(target.boundsArea,relativeTransform);else{target.renderPipeId&&(bounds.matrix=relativeTransform,bounds.addBounds(target.bounds));var children=target.children;for(let i=0;i<children.length;i++)_getLocalBounds(children[i],bounds,relativeTransform,rootContainer,!1)}if(parentTransform){for(let i=0;i<target.effects.length;i++)null!=(_b=(_a=target.effects[i]).addLocalBounds)&&_b.call(_a,bounds,rootContainer);isRoot.addBounds(bounds,Matrix.IDENTITY),boundsPool.return(bounds)}matrixPool.return(relativeTransform)}(target,bounds,relativeMatrix=relativeMatrix||Matrix.IDENTITY,target,!0),bounds.isValid||bounds.set(0,0,0,0),bounds}function checkChildrenDidChange(container,previousData){var children=container.children;for(let i=0;i<children.length;i++){var child=children[i],uid=child.uid,didChange=(65535&child._didViewChangeTick)<<16|65535&child._didContainerChangeTick,index=previousData.index;previousData.data[index]===uid&&previousData.data[index+1]===didChange||(previousData.data[previousData.index]=uid,previousData.data[previousData.index+1]=didChange,previousData.didChange=!0),previousData.index=index+2,child.children.length&&checkChildrenDidChange(child,previousData)}return previousData.didChange}const tempMatrix$4=new Matrix;var measureMixin={_localBoundsCacheId:-1,_localBoundsCacheData:null,_setWidth(value,localWidth){var sign=Math.sign(this.scale.x)||1;this.scale.x=0!==localWidth?value/localWidth*sign:sign},_setHeight(value,localHeight){var sign=Math.sign(this.scale.y)||1;this.scale.y=0!==localHeight?value/localHeight*sign:sign},getLocalBounds(){this._localBoundsCacheData||(this._localBoundsCacheData={data:[],index:1,didChange:!1,localBounds:new Bounds});var localBoundsCacheData=this._localBoundsCacheData;return localBoundsCacheData.index=1,localBoundsCacheData.didChange=!1,localBoundsCacheData.data[0]!==this._didViewChangeTick&&(localBoundsCacheData.didChange=!0,localBoundsCacheData.data[0]=this._didViewChangeTick),checkChildrenDidChange(this,localBoundsCacheData),localBoundsCacheData.didChange&&getLocalBounds(this,localBoundsCacheData.localBounds,tempMatrix$4),localBoundsCacheData.localBounds},getBounds(skipUpdate,bounds){return getGlobalBounds(this,skipUpdate,bounds||new Bounds)}},onRenderMixin={_onRender:null,set onRender(func){var renderGroup=this.renderGroup||this.parentRenderGroup;func?(this._onRender||null!=renderGroup&&renderGroup.addOnRender(this),this._onRender=func):(this._onRender&&null!=renderGroup&&renderGroup.removeOnRender(this),this._onRender=null)},get onRender(){return this._onRender}},sortMixin={_zIndex:0,sortDirty:!1,sortableChildren:!1,get zIndex(){return this._zIndex},set zIndex(value){this._zIndex!==value&&(this._zIndex=value,this.depthOfChildModified())},depthOfChildModified(){this.parent&&(this.parent.sortableChildren=!0,this.parent.sortDirty=!0),this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0)},sortChildren(){this.sortDirty&&(this.sortDirty=!1,this.children.sort(sortChildren))}};function sortChildren(a,b){return a._zIndex-b._zIndex}var toLocalGlobalMixin={getGlobalPosition(point=new Point,skipUpdate=!1){return this.parent?this.parent.toGlobal(this._position,point,skipUpdate):(point.x=this._position.x,point.y=this._position.y),point},toGlobal(position,point,skipUpdate=!1){return point=(skipUpdate=this.getGlobalTransform(matrixPool.get(),skipUpdate)).apply(position,point),matrixPool.return(skipUpdate),point},toLocal(position,from,point,skipUpdate){return from&&(position=from.toGlobal(position,point,skipUpdate)),point=(from=this.getGlobalTransform(matrixPool.get(),skipUpdate)).applyInverse(position,point),matrixPool.return(from),point}};class InstructionSet{constructor(){this.uid=uid$1("instructionSet"),this.instructions=[],this.instructionSize=0,this.renderables=[],this.gcTick=0}reset(){this.instructionSize=0}add(instruction){this.instructions[this.instructionSize++]=instruction}log(){this.instructions.length=this.instructionSize,console.table(this.instructions,["type","action"])}}function nextPow2(v){return v+=0===v?1:0,--v,1+((v=(v=(v=(v|=v>>>1)|v>>>2)|v>>>4)|v>>>8)|v>>>16)}function isPow2(v){return!(v&v-1||!v)}function definedProps(obj){var result={};for(const key in obj)void 0!==obj[key]&&(result[key]=obj[key]);return result}var __defProp$1a=Object.defineProperty,__getOwnPropSymbols$1a=Object.getOwnPropertySymbols,__hasOwnProp$1a=Object.prototype.hasOwnProperty,__propIsEnum$1a=Object.prototype.propertyIsEnumerable,__defNormalProp$1a=(obj,key,value)=>key in obj?__defProp$1a(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$1a=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$1a.call(b,prop)&&__defNormalProp$1a(a,prop,b[prop]);if(__getOwnPropSymbols$1a)for(var prop of __getOwnPropSymbols$1a(b))__propIsEnum$1a.call(b,prop)&&__defNormalProp$1a(a,prop,b[prop]);return a};const idHash$1=Object.create(null),_TextureStyle=class _TextureStyle extends EventEmitter{constructor(options={}){var _a;super(),this._resourceType="textureSampler",this._touched=0,this._maxAnisotropy=1,this.destroyed=!1,options=__spreadValues$1a(__spreadValues$1a({},_TextureStyle.defaultOptions),options),this.addressMode=options.addressMode,this.addressModeU=null!=(_a=options.addressModeU)?_a:this.addressModeU,this.addressModeV=null!=(_a=options.addressModeV)?_a:this.addressModeV,this.addressModeW=null!=(_a=options.addressModeW)?_a:this.addressModeW,this.scaleMode=options.scaleMode,this.magFilter=null!=(_a=options.magFilter)?_a:this.magFilter,this.minFilter=null!=(_a=options.minFilter)?_a:this.minFilter,this.mipmapFilter=null!=(_a=options.mipmapFilter)?_a:this.mipmapFilter,this.lodMinClamp=options.lodMinClamp,this.lodMaxClamp=options.lodMaxClamp,this.compare=options.compare,this.maxAnisotropy=null!=(_a=options.maxAnisotropy)?_a:1}set addressMode(value){this.addressModeU=value,this.addressModeV=value,this.addressModeW=value}get addressMode(){return this.addressModeU}set wrapMode(value){deprecation(v8_0_0,"TextureStyle.wrapMode is now TextureStyle.addressMode"),this.addressMode=value}get wrapMode(){return this.addressMode}set scaleMode(value){this.magFilter=value,this.minFilter=value,this.mipmapFilter=value}get scaleMode(){return this.magFilter}set maxAnisotropy(value){this._maxAnisotropy=Math.min(value,16),1<this._maxAnisotropy&&(this.scaleMode="linear")}get maxAnisotropy(){return this._maxAnisotropy}get _resourceId(){return this._sharedResourceId||this._generateResourceId()}update(){this.emit("change",this),this._sharedResourceId=null}_generateResourceId(){var id,bigKey=`${this.addressModeU}-${this.addressModeV}-${this.addressModeW}-${this.magFilter}-${this.minFilter}-${this.mipmapFilter}-${this.lodMinClamp}-${this.lodMaxClamp}-${this.compare}-`+this._maxAnisotropy;return this._sharedResourceId=(void 0===(id=idHash$1[bigKey])&&(idHash$1[bigKey]=uid$1("resource")),id),this._resourceId}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this.removeAllListeners()}};_TextureStyle.defaultOptions={addressMode:"clamp-to-edge",scaleMode:"linear"};let TextureStyle=_TextureStyle;var __defProp$19=Object.defineProperty,__getOwnPropSymbols$19=Object.getOwnPropertySymbols,__hasOwnProp$19=Object.prototype.hasOwnProperty,__propIsEnum$19=Object.prototype.propertyIsEnumerable,__defNormalProp$19=(obj,key,value)=>key in obj?__defProp$19(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$19=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$19.call(b,prop)&&__defNormalProp$19(a,prop,b[prop]);if(__getOwnPropSymbols$19)for(var prop of __getOwnPropSymbols$19(b))__propIsEnum$19.call(b,prop)&&__defNormalProp$19(a,prop,b[prop]);return a};const _TextureSource=class _TextureSource extends EventEmitter{constructor(options={}){var _a;super(),this.options=options,this.uid=uid$1("textureSource"),this._resourceType="textureSource",this._resourceId=uid$1("resource"),this.uploadMethodId="unknown",this._resolution=1,this.pixelWidth=1,this.pixelHeight=1,this.width=1,this.height=1,this.sampleCount=1,this.mipLevelCount=1,this.autoGenerateMipmaps=!1,this.format="rgba8unorm",this.dimension="2d",this.antialias=!1,this._touched=0,this._batchTick=-1,this._textureBindLocation=-1,options=__spreadValues$19(__spreadValues$19({},_TextureSource.defaultOptions),options),this.label=null!=(_a=options.label)?_a:"",this.resource=options.resource,this.autoGarbageCollect=options.autoGarbageCollect,this._resolution=options.resolution,options.width?this.pixelWidth=options.width*this._resolution:this.pixelWidth=this.resource&&null!=(_a=this.resourceWidth)?_a:1,options.height?this.pixelHeight=options.height*this._resolution:this.pixelHeight=this.resource&&null!=(_a=this.resourceHeight)?_a:1,this.width=this.pixelWidth/this._resolution,this.height=this.pixelHeight/this._resolution,this.format=options.format,this.dimension=options.dimensions,this.mipLevelCount=options.mipLevelCount,this.autoGenerateMipmaps=options.autoGenerateMipmaps,this.sampleCount=options.sampleCount,this.antialias=options.antialias,this.alphaMode=options.alphaMode,this.style=new TextureStyle(definedProps(options)),this.destroyed=!1,this._refreshPOT()}get source(){return this}get style(){return this._style}set style(value){var _a;this.style!==value&&(null!=(_a=this._style)&&_a.off("change",this._onStyleChange,this),this._style=value,null!=(_a=this._style)&&_a.on("change",this._onStyleChange,this),this._onStyleChange())}get addressMode(){return this._style.addressMode}set addressMode(value){this._style.addressMode=value}get repeatMode(){return this._style.addressMode}set repeatMode(value){this._style.addressMode=value}get magFilter(){return this._style.magFilter}set magFilter(value){this._style.magFilter=value}get minFilter(){return this._style.minFilter}set minFilter(value){this._style.minFilter=value}get mipmapFilter(){return this._style.mipmapFilter}set mipmapFilter(value){this._style.mipmapFilter=value}get lodMinClamp(){return this._style.lodMinClamp}set lodMinClamp(value){this._style.lodMinClamp=value}get lodMaxClamp(){return this._style.lodMaxClamp}set lodMaxClamp(value){this._style.lodMaxClamp=value}_onStyleChange(){this.emit("styleChange",this)}update(){if(this.resource){var resolution=this._resolution;if(this.resize(this.resourceWidth/resolution,this.resourceHeight/resolution))return}this.emit("update",this)}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this._style&&(this._style.destroy(),this._style=null),this.uploadMethodId=null,this.resource=null,this.removeAllListeners()}unload(){this._resourceId=uid$1("resource"),this.emit("change",this),this.emit("unload",this)}get resourceWidth(){var resource=this.resource;return resource.naturalWidth||resource.videoWidth||resource.displayWidth||resource.width}get resourceHeight(){var resource=this.resource;return resource.naturalHeight||resource.videoHeight||resource.displayHeight||resource.height}get resolution(){return this._resolution}set resolution(resolution){this._resolution!==resolution&&(this._resolution=resolution,this.width=this.pixelWidth/resolution,this.height=this.pixelHeight/resolution)}resize(width,height,resolution){return resolution=resolution||this._resolution,width=width||this.width,height=height||this.height,width=Math.round(width*resolution),height=Math.round(height*resolution),this.width=width/resolution,this.height=height/resolution,this._resolution=resolution,(this.pixelWidth!==width||this.pixelHeight!==height)&&(this._refreshPOT(),this.pixelWidth=width,this.pixelHeight=height,this.emit("resize",this),this._resourceId=uid$1("resource"),this.emit("change",this),!0)}updateMipmaps(){this.autoGenerateMipmaps&&1<this.mipLevelCount&&this.emit("updateMipmaps",this)}set wrapMode(value){this._style.wrapMode=value}get wrapMode(){return this._style.wrapMode}set scaleMode(value){this._style.scaleMode=value}get scaleMode(){return this._style.scaleMode}_refreshPOT(){this.isPowerOfTwo=isPow2(this.pixelWidth)&&isPow2(this.pixelHeight)}static test(_resource){throw new Error("Unimplemented")}};_TextureSource.defaultOptions={resolution:1,format:"bgra8unorm",alphaMode:"premultiply-alpha-on-upload",dimensions:"2d",mipLevelCount:1,autoGenerateMipmaps:!1,sampleCount:1,antialias:!1,autoGarbageCollect:!1};let TextureSource=_TextureSource;const ux=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],uy=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],vx=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],vy=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],rotationCayley=[],rotationMatrices=[],signum=Math.sign;for(let i=0;i<16;i++){var row=[];rotationCayley.push(row);for(let j=0;j<16;j++){var _ux=signum(ux[i]*ux[j]+vx[i]*uy[j]),_uy=signum(uy[i]*ux[j]+vy[i]*uy[j]),_vx=signum(ux[i]*vx[j]+vx[i]*vy[j]),_vy=signum(uy[i]*vx[j]+vy[i]*vy[j]);for(let k=0;k<16;k++)if(ux[k]===_ux&&uy[k]===_uy&&vx[k]===_vx&&vy[k]===_vy){row.push(k);break}}}for(let i=0;i<16;i++){var mat=new Matrix;mat.set(ux[i],uy[i],vx[i],vy[i],0,0),rotationMatrices.push(mat)}const groupD8={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:ind=>ux[ind],uY:ind=>uy[ind],vX:ind=>vx[ind],vY:ind=>vy[ind],inv:rotation=>8&rotation?15&rotation:7&-rotation,add:(rotationSecond,rotationFirst)=>rotationCayley[rotationSecond][rotationFirst],sub:(rotationSecond,rotationFirst)=>rotationCayley[rotationSecond][groupD8.inv(rotationFirst)],rotate180:rotation=>4^rotation,isVertical:rotation=>2==(3&rotation),byDirection:(dx,dy)=>2*Math.abs(dx)<=Math.abs(dy)?0<=dy?groupD8.S:groupD8.N:2*Math.abs(dy)<=Math.abs(dx)?0<dx?groupD8.E:groupD8.W:0<dy?0<dx?groupD8.SE:groupD8.SW:0<dx?groupD8.NE:groupD8.NW,matrixAppendRotationInv:(matrix,rotation,tx=0,ty=0)=>{(rotation=rotationMatrices[groupD8.inv(rotation)]).tx=tx,rotation.ty=ty,matrix.append(rotation)}};var NOOP=()=>{},__defProp$18=Object.defineProperty,__defProps$q=Object.defineProperties,__getOwnPropDescs$q=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$18=Object.getOwnPropertySymbols,__hasOwnProp$18=Object.prototype.hasOwnProperty,__propIsEnum$18=Object.prototype.propertyIsEnumerable,__defNormalProp$18=(obj,key,value)=>key in obj?__defProp$18(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class BufferImageSource extends TextureSource{constructor(options){var buffer=options.resource||new Float32Array(options.width*options.height*4),format=options.format||(buffer instanceof Float32Array?"rgba32float":buffer instanceof Int32Array||buffer instanceof Uint32Array?"rgba32uint":buffer instanceof Int16Array||buffer instanceof Uint16Array?"rgba16uint":(0 instanceof Int8Array,"bgra8unorm"));super((options=((a,b)=>{for(var prop in b=options||{})__hasOwnProp$18.call(b,prop)&&__defNormalProp$18(a,prop,b[prop]);if(__getOwnPropSymbols$18)for(var prop of __getOwnPropSymbols$18(b))__propIsEnum$18.call(b,prop)&&__defNormalProp$18(a,prop,b[prop]);return a})({}),__defProps$q(options,__getOwnPropDescs$q({resource:buffer,format:format})))),this.uploadMethodId="buffer"}static test(resource){return resource instanceof Int8Array||resource instanceof Uint8Array||resource instanceof Uint8ClampedArray||resource instanceof Int16Array||resource instanceof Uint16Array||resource instanceof Int32Array||resource instanceof Uint32Array||resource instanceof Float32Array}}BufferImageSource.extension=ExtensionType2.TextureSource;const tempMat=new Matrix;class TextureMatrix{constructor(texture,clampMargin){this.mapCoord=new Matrix,this.uClampFrame=new Float32Array(4),this.uClampOffset=new Float32Array(2),this._textureID=-1,this._updateID=0,this.clampOffset=0,this.clampMargin=void 0===clampMargin?texture.width<10?0:.5:clampMargin,this.isSimple=!1,this.texture=texture}get texture(){return this._texture}set texture(value){var _a;this.texture!==value&&(null!=(_a=this._texture)&&_a.removeListener("update",this.update,this),this._texture=value,this._texture.addListener("update",this.update,this),this.update())}multiplyUvs(uvs,out){void 0===out&&(out=uvs);var mat=this.mapCoord;for(let i=0;i<uvs.length;i+=2){var x=uvs[i],y=uvs[i+1];out[i]=x*mat.a+y*mat.c+mat.tx,out[i+1]=x*mat.b+y*mat.d+mat.ty}return out}update(){var tex=this._texture,uvs=(this._updateID++,tex.uvs),uvs=(this.mapCoord.set(uvs.x1-uvs.x0,uvs.y1-uvs.y0,uvs.x3-uvs.x0,uvs.y3-uvs.y0,uvs.x0,uvs.y0),tex.orig),uvs=((trim=tex.trim)&&(tempMat.set(uvs.width/trim.width,0,0,uvs.height/trim.height,-trim.x/trim.width,-trim.y/trim.height),this.mapCoord.append(tempMat)),tex.source),trim=this.uClampFrame,margin=this.clampMargin/uvs._resolution,offset=this.clampOffset/uvs._resolution;return trim[0]=(tex.frame.x+margin+offset)/uvs.width,trim[1]=(tex.frame.y+margin+offset)/uvs.height,trim[2]=(tex.frame.x+tex.frame.width-margin+offset)/uvs.width,trim[3]=(tex.frame.y+tex.frame.height-margin+offset)/uvs.height,this.uClampOffset[0]=this.clampOffset/uvs.pixelWidth,this.uClampOffset[1]=this.clampOffset/uvs.pixelHeight,this.isSimple=tex.frame.width===uvs.width&&tex.frame.height===uvs.height&&0===tex.rotate,!0}}class Texture extends EventEmitter{constructor({source,label,frame,orig,trim,defaultAnchor,defaultBorders,rotate,dynamic}={}){super(),this.uid=uid$1("texture"),this.uvs={x0:0,y0:0,x1:0,y1:0,x2:0,y2:0,x3:0,y3:0},this.frame=new Rectangle,this.noFrame=!1,this.dynamic=!1,this.isTexture=!0,this.label=label,this.source=null!=(label=null==source?void 0:source.source)?label:new TextureSource,this.noFrame=!frame,frame?this.frame.copyFrom(frame):({width:source,height:label}=this._source,this.frame.width=source,this.frame.height=label),this.orig=orig||this.frame,this.trim=trim,this.rotate=null!=rotate?rotate:0,this.defaultAnchor=defaultAnchor,this.defaultBorders=defaultBorders,this.destroyed=!1,this.dynamic=dynamic||!1,this.updateUvs()}set source(value){this._source&&this._source.off("resize",this.update,this),(this._source=value).on("resize",this.update,this),this.emit("update",this)}get source(){return this._source}get textureMatrix(){return this._textureMatrix||(this._textureMatrix=new TextureMatrix(this)),this._textureMatrix}get width(){return this.orig.width}get height(){return this.orig.height}updateUvs(){var w2,h2,cX,cY,{uvs,frame}=this,{width,height}=this._source,nX=frame.x/width,nY=frame.y/height,width=frame.width/width,frame=frame.height/height;(height=this.rotate)?(cX=nX+(w2=width/2),cY=nY+(h2=frame/2),height=groupD8.add(height,groupD8.NW),uvs.x0=cX+w2*groupD8.uX(height),uvs.y0=cY+h2*groupD8.uY(height),height=groupD8.add(height,2),uvs.x1=cX+w2*groupD8.uX(height),uvs.y1=cY+h2*groupD8.uY(height),height=groupD8.add(height,2),uvs.x2=cX+w2*groupD8.uX(height),uvs.y2=cY+h2*groupD8.uY(height),height=groupD8.add(height,2),uvs.x3=cX+w2*groupD8.uX(height),uvs.y3=cY+h2*groupD8.uY(height)):(uvs.x0=nX,uvs.y0=nY,uvs.x1=nX+width,uvs.y1=nY,uvs.x2=nX+width,uvs.y2=nY+frame,uvs.x3=nX,uvs.y3=nY+frame)}destroy(destroySource=!1){this._source&&destroySource&&(this._source.destroy(),this._source=null),this._textureMatrix=null,this.destroyed=!0,this.emit("destroy",this),this.removeAllListeners()}update(){this.noFrame&&(this.frame.width=this._source.width,this.frame.height=this._source.height),this.updateUvs(),this.emit("update",this)}get baseTexture(){return deprecation(v8_0_0,"Texture.baseTexture is now Texture.source"),this._source}}Texture.EMPTY=new Texture({label:"EMPTY",source:new TextureSource({label:"EMPTY"})}),Texture.EMPTY.destroy=NOOP,Texture.WHITE=new Texture({source:new BufferImageSource({resource:new Uint8Array([255,255,255,255]),width:1,height:1,alphaMode:"premultiply-alpha-on-upload",label:"WHITE"}),label:"WHITE"}),Texture.WHITE.destroy=NOOP;var __defProp$17=Object.defineProperty,__defProps$p=Object.defineProperties,__getOwnPropDescs$p=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$17=Object.getOwnPropertySymbols,__hasOwnProp$17=Object.prototype.hasOwnProperty,__propIsEnum$17=Object.prototype.propertyIsEnumerable,__defNormalProp$17=(obj,key,value)=>key in obj?__defProp$17(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;let count=0;class TexturePoolClass{constructor(textureOptions){this._poolKeyHash=Object.create(null),this._texturePool={},this.textureOptions=textureOptions||{},this.enableFullScreen=!1}createTexture(pixelWidth,pixelHeight,antialias){var a=new TextureSource((a=((a,b)=>{for(var prop in b=b||{})__hasOwnProp$17.call(b,prop)&&__defNormalProp$17(a,prop,b[prop]);if(__getOwnPropSymbols$17)for(var prop of __getOwnPropSymbols$17(b))__propIsEnum$17.call(b,prop)&&__defNormalProp$17(a,prop,b[prop]);return a})({},this.textureOptions),__defProps$p(a,__getOwnPropDescs$p({width:pixelWidth,height:pixelHeight,resolution:1,antialias:antialias,autoGarbageCollect:!1}))));return new Texture({source:a,label:"texturePool_"+count++})}getOptimalTexture(frameWidth,frameHeight,resolution=1,antialias){var po2Width=Math.ceil(frameWidth*resolution-1e-6),po2Height=Math.ceil(frameHeight*resolution-1e-6),key=((po2Width=nextPow2(po2Width))<<17)+((po2Height=nextPow2(po2Height))<<1)+(antialias?1:0);this._texturePool[key]||(this._texturePool[key]=[]);let texture=this._texturePool[key].pop();return(texture=texture||this.createTexture(po2Width,po2Height,antialias)).source._resolution=resolution,texture.source.width=po2Width/resolution,texture.source.height=po2Height/resolution,texture.source.pixelWidth=po2Width,texture.source.pixelHeight=po2Height,texture.frame.x=0,texture.frame.y=0,texture.frame.width=frameWidth,texture.frame.height=frameHeight,texture.updateUvs(),this._poolKeyHash[texture.uid]=key,texture}getSameSizeTexture(texture,antialias=!1){var source=texture.source;return this.getOptimalTexture(texture.width,texture.height,source._resolution,antialias)}returnTexture(renderTexture){var key=this._poolKeyHash[renderTexture.uid];this._texturePool[key].push(renderTexture)}clear(destroyTextures){if(destroyTextures=!1!==destroyTextures)for(const i in this._texturePool){var textures=this._texturePool[i];if(textures)for(let j=0;j<textures.length;j++)textures[j].destroy(!0)}this._texturePool={}}}const TexturePool=new TexturePoolClass;class RenderGroup{constructor(){this.renderPipeId="renderGroup",this.root=null,this.canBundle=!1,this.renderGroupParent=null,this.renderGroupChildren=[],this.worldTransform=new Matrix,this.worldColorAlpha=4294967295,this.worldColor=16777215,this.worldAlpha=1,this.childrenToUpdate=Object.create(null),this.updateTick=0,this.gcTick=0,this.childrenRenderablesToUpdate={list:[],index:0},this.structureDidChange=!0,this.instructionSet=new InstructionSet,this._onRenderContainers=[],this.textureNeedsUpdate=!0,this.isCachedAsTexture=!1,this._matrixDirty=7}init(root){(this.root=root)._onRender&&this.addOnRender(root),root.didChange=!0;var children=root.children;for(let i=0;i<children.length;i++){var child=children[i];child._updateFlags=15,this.addChild(child)}}enableCacheAsTexture(options={}){this.textureOptions=options,this.isCachedAsTexture=!0,this.textureNeedsUpdate=!0}disableCacheAsTexture(){this.isCachedAsTexture=!1,this.texture&&(TexturePool.returnTexture(this.texture),this.texture=null)}updateCacheTexture(){this.textureNeedsUpdate=!0}reset(){this.renderGroupChildren.length=0;for(const i in this.childrenToUpdate){var childrenAtDepth=this.childrenToUpdate[i];childrenAtDepth.list.fill(null),childrenAtDepth.index=0}this.childrenRenderablesToUpdate.index=0,this.childrenRenderablesToUpdate.list.fill(null),this.root=null,this.updateTick=0,this.structureDidChange=!0,this._onRenderContainers.length=0,this.renderGroupParent=null,this.disableCacheAsTexture()}get localTransform(){return this.root.localTransform}addRenderGroupChild(renderGroupChild){renderGroupChild.renderGroupParent&&renderGroupChild.renderGroupParent._removeRenderGroupChild(renderGroupChild),(renderGroupChild.renderGroupParent=this).renderGroupChildren.push(renderGroupChild)}_removeRenderGroupChild(renderGroupChild){var index=this.renderGroupChildren.indexOf(renderGroupChild);-1<index&&this.renderGroupChildren.splice(index,1),renderGroupChild.renderGroupParent=null}addChild(child){if(this.structureDidChange=!0,child.parentRenderGroup=this,child.updateTick=-1,child.parent===this.root?child.relativeRenderGroupDepth=1:child.relativeRenderGroupDepth=child.parent.relativeRenderGroupDepth+1,child.didChange=!0,this.onChildUpdate(child),child.renderGroup)this.addRenderGroupChild(child.renderGroup);else{child._onRender&&this.addOnRender(child);var children=child.children;for(let i=0;i<children.length;i++)this.addChild(children[i])}}removeChild(child){if(this.structureDidChange=!0,child._onRender&&!child.renderGroup&&this.removeOnRender(child),child.parentRenderGroup=null,child.renderGroup)this._removeRenderGroupChild(child.renderGroup);else{var children=child.children;for(let i=0;i<children.length;i++)this.removeChild(children[i])}}removeChildren(children){for(let i=0;i<children.length;i++)this.removeChild(children[i])}onChildUpdate(child){let childrenToUpdate=this.childrenToUpdate[child.relativeRenderGroupDepth];(childrenToUpdate=childrenToUpdate||(this.childrenToUpdate[child.relativeRenderGroupDepth]={index:0,list:[]})).list[childrenToUpdate.index++]=child}updateRenderable(renderable){renderable.globalDisplayStatus<7||(this.instructionSet.renderPipes[renderable.renderPipeId].updateRenderable(renderable),renderable.didViewUpdate=!1)}onChildViewUpdate(child){this.childrenRenderablesToUpdate.list[this.childrenRenderablesToUpdate.index++]=child}get isRenderable(){return 7===this.root.localDisplayStatus&&0<this.worldAlpha}addOnRender(container){this._onRenderContainers.push(container)}removeOnRender(container){this._onRenderContainers.splice(this._onRenderContainers.indexOf(container),1)}runOnRender(renderer){for(let i=0;i<this._onRenderContainers.length;i++)this._onRenderContainers[i]._onRender(renderer)}destroy(){this.disableCacheAsTexture(),this.renderGroupParent=null,this.root=null,this.childrenRenderablesToUpdate=null,this.childrenToUpdate=null,this.renderGroupChildren=null,this._onRenderContainers=null,this.instructionSet=null}getChildren(out=[]){var children=this.root.children;for(let i=0;i<children.length;i++)this._getChildren(children[i],out);return out}_getChildren(container,out=[]){if(out.push(container),!container.renderGroup){var children=container.children;for(let i=0;i<children.length;i++)this._getChildren(children[i],out)}return out}invalidateMatrices(){this._matrixDirty=7}get inverseWorldTransform(){return 0==(1&this._matrixDirty)?this._inverseWorldTransform:(this._matrixDirty&=-2,this._inverseWorldTransform||(this._inverseWorldTransform=new Matrix),this._inverseWorldTransform.copyFrom(this.worldTransform).invert())}get textureOffsetInverseTransform(){return 0==(2&this._matrixDirty)?this._textureOffsetInverseTransform:(this._matrixDirty&=-3,this._textureOffsetInverseTransform||(this._textureOffsetInverseTransform=new Matrix),this._textureOffsetInverseTransform.copyFrom(this.inverseWorldTransform).translate(-this._textureBounds.x,-this._textureBounds.y))}get inverseParentTextureTransform(){if(0==(4&this._matrixDirty))return this._inverseParentTextureTransform;this._matrixDirty&=-5;var parentCacheAsTexture=this._parentCacheAsTextureRenderGroup;return parentCacheAsTexture?(this._inverseParentTextureTransform||(this._inverseParentTextureTransform=new Matrix),this._inverseParentTextureTransform.copyFrom(this.worldTransform).prepend(parentCacheAsTexture.inverseWorldTransform).translate(-parentCacheAsTexture._textureBounds.x,-parentCacheAsTexture._textureBounds.y)):this.worldTransform}get cacheToLocalTransform(){return this._parentCacheAsTextureRenderGroup?this._parentCacheAsTextureRenderGroup.textureOffsetInverseTransform:null}}function assignWithIgnore(target,options,ignore={}){for(const key in options)ignore[key]||void 0===options[key]||(target[key]=options[key])}const defaultSkew=new ObservablePoint(null),defaultPivot=new ObservablePoint(null),defaultScale=new ObservablePoint(null,1,1),UPDATE_COLOR=1,UPDATE_BLEND=2,UPDATE_VISIBLE=4;class Container extends EventEmitter{constructor(options={}){var _a;super(),this.uid=uid$1("renderable"),this._updateFlags=15,this.renderGroup=null,this.parentRenderGroup=null,this.parentRenderGroupIndex=0,this.didChange=!1,this.didViewUpdate=!1,this.relativeRenderGroupDepth=0,this.children=[],this.parent=null,this.includeInBuild=!0,this.measurable=!0,this.isSimple=!0,this.updateTick=-1,this.localTransform=new Matrix,this.relativeGroupTransform=new Matrix,this.groupTransform=this.relativeGroupTransform,this.destroyed=!1,this._position=new ObservablePoint(this,0,0),this._scale=defaultScale,this._pivot=defaultPivot,this._skew=defaultSkew,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._rotation=0,this.localColor=16777215,this.localAlpha=1,this.groupAlpha=1,this.groupColor=16777215,this.groupColorAlpha=4294967295,this.localBlendMode="inherit",this.groupBlendMode="normal",this.localDisplayStatus=7,this.globalDisplayStatus=7,this._didContainerChangeTick=0,this._didViewChangeTick=0,this._didLocalTransformChangeId=-1,this.effects=[],assignWithIgnore(this,options,{children:!0,parent:!0,effects:!0}),null!=(_a=options.children)&&_a.forEach(child=>this.addChild(child)),null!=(_a=options.parent)&&_a.addChild(this)}static mixin(source){deprecation("8.8.0","Container.mixin is deprecated, please use extensions.mixin instead."),extensions.mixin(Container,source)}set _didChangeId(value){this._didViewChangeTick=value>>12&4095,this._didContainerChangeTick=4095&value}get _didChangeId(){return 4095&this._didContainerChangeTick|(4095&this._didViewChangeTick)<<12}addChild(...children){if(this.allowChildren||deprecation(v8_0_0,"addChild: Only Containers will be allowed to add children in v8.0.0"),1<children.length){for(let i=0;i<children.length;i++)this.addChild(children[i]);return children[0]}var child=children[0],renderGroup=this.renderGroup||this.parentRenderGroup;return child.parent===this?(this.children.splice(this.children.indexOf(child),1),this.children.push(child),renderGroup&&(renderGroup.structureDidChange=!0)):(child.parent&&child.parent.removeChild(child),this.children.push(child),this.sortableChildren&&(this.sortDirty=!0),child.parent=this,child.didChange=!0,child._updateFlags=15,renderGroup&&renderGroup.addChild(child),this.emit("childAdded",child,this,this.children.length-1),child.emit("added",this),this._didViewChangeTick++,0!==child._zIndex&&child.depthOfChildModified()),child}removeChild(...children){if(1<children.length){for(let i=0;i<children.length;i++)this.removeChild(children[i]);return children[0]}var child=children[0],index=this.children.indexOf(child);return-1<index&&(this._didViewChangeTick++,this.children.splice(index,1),this.renderGroup?this.renderGroup.removeChild(child):this.parentRenderGroup&&this.parentRenderGroup.removeChild(child),child.parentRenderLayer&&child.parentRenderLayer.detach(child),child.parent=null,this.emit("childRemoved",child,this,index),child.emit("removed",this)),child}_onUpdate(point){point&&point===this._skew&&this._updateSkew(),this._didContainerChangeTick++,this.didChange||(this.didChange=!0,this.parentRenderGroup&&this.parentRenderGroup.onChildUpdate(this))}set isRenderGroup(value){!!this.renderGroup!==value&&(value?this.enableRenderGroup():this.disableRenderGroup())}get isRenderGroup(){return!!this.renderGroup}enableRenderGroup(){var parentRenderGroup;this.renderGroup||(null!=(parentRenderGroup=this.parentRenderGroup)&&parentRenderGroup.removeChild(this),this.renderGroup=BigPool.get(RenderGroup,this),this.groupTransform=Matrix.IDENTITY,null!=parentRenderGroup&&parentRenderGroup.addChild(this),this._updateIsSimple())}disableRenderGroup(){var parentRenderGroup;this.renderGroup&&(null!=(parentRenderGroup=this.parentRenderGroup)&&parentRenderGroup.removeChild(this),BigPool.return(this.renderGroup),this.renderGroup=null,this.groupTransform=this.relativeGroupTransform,null!=parentRenderGroup&&parentRenderGroup.addChild(this),this._updateIsSimple())}_updateIsSimple(){this.isSimple=!this.renderGroup&&0===this.effects.length}get worldTransform(){return this._worldTransform||(this._worldTransform=new Matrix),this.renderGroup?this._worldTransform.copyFrom(this.renderGroup.worldTransform):this.parentRenderGroup&&this._worldTransform.appendFrom(this.relativeGroupTransform,this.parentRenderGroup.worldTransform),this._worldTransform}get x(){return this._position.x}set x(value){this._position.x=value}get y(){return this._position.y}set y(value){this._position.y=value}get position(){return this._position}set position(value){this._position.copyFrom(value)}get rotation(){return this._rotation}set rotation(value){this._rotation!==value&&(this._rotation=value,this._onUpdate(this._skew))}get angle(){return this.rotation*RAD_TO_DEG}set angle(value){this.rotation=value*DEG_TO_RAD}get pivot(){return this._pivot===defaultPivot&&(this._pivot=new ObservablePoint(this,0,0)),this._pivot}set pivot(value){this._pivot===defaultPivot&&(this._pivot=new ObservablePoint(this,0,0)),"number"==typeof value?this._pivot.set(value):this._pivot.copyFrom(value)}get skew(){return this._skew===defaultSkew&&(this._skew=new ObservablePoint(this,0,0)),this._skew}set skew(value){this._skew===defaultSkew&&(this._skew=new ObservablePoint(this,0,0)),this._skew.copyFrom(value)}get scale(){return this._scale===defaultScale&&(this._scale=new ObservablePoint(this,1,1)),this._scale}set scale(value){this._scale===defaultScale&&(this._scale=new ObservablePoint(this,0,0)),"number"==typeof value?this._scale.set(value):this._scale.copyFrom(value)}get width(){return Math.abs(this.scale.x*this.getLocalBounds().width)}set width(value){var localWidth=this.getLocalBounds().width;this._setWidth(value,localWidth)}get height(){return Math.abs(this.scale.y*this.getLocalBounds().height)}set height(value){var localHeight=this.getLocalBounds().height;this._setHeight(value,localHeight)}getSize(out){out=out||{};var bounds=this.getLocalBounds();return out.width=Math.abs(this.scale.x*bounds.width),out.height=Math.abs(this.scale.y*bounds.height),out}setSize(value,height){var _a,size=this.getLocalBounds();"object"==typeof value?(height=null!=(_a=value.height)?_a:value.width,value=value.width):null==height&&(height=value),void 0!==value&&this._setWidth(value,size.width),void 0!==height&&this._setHeight(height,size.height)}_updateSkew(){var rotation=this._rotation,skew=this._skew;this._cx=Math.cos(rotation+skew._y),this._sx=Math.sin(rotation+skew._y),this._cy=-Math.sin(rotation-skew._x),this._sy=Math.cos(rotation-skew._x)}updateTransform(opts){return this.position.set(("number"==typeof opts.x?opts:this.position).x,("number"==typeof opts.y?opts:this.position).y),this.scale.set("number"==typeof opts.scaleX?opts.scaleX||1:this.scale.x,"number"==typeof opts.scaleY?opts.scaleY||1:this.scale.y),this.rotation=("number"==typeof opts.rotation?opts:this).rotation,this.skew.set("number"==typeof opts.skewX?opts.skewX:this.skew.x,"number"==typeof opts.skewY?opts.skewY:this.skew.y),this.pivot.set("number"==typeof opts.pivotX?opts.pivotX:this.pivot.x,"number"==typeof opts.pivotY?opts.pivotY:this.pivot.y),this}setFromMatrix(matrix){matrix.decompose(this)}updateLocalTransform(){var position,sx,scale,px,pivot,localTransformChangeId=this._didContainerChangeTick;this._didLocalTransformChangeId!==localTransformChangeId&&(this._didLocalTransformChangeId=localTransformChangeId,localTransformChangeId=this.localTransform,scale=this._scale,pivot=this._pivot,position=this._position,sx=scale._x,scale=scale._y,px=pivot._x,pivot=pivot._y,localTransformChangeId.a=this._cx*sx,localTransformChangeId.b=this._sx*sx,localTransformChangeId.c=this._cy*scale,localTransformChangeId.d=this._sy*scale,localTransformChangeId.tx=position._x-(px*localTransformChangeId.a+pivot*localTransformChangeId.c),localTransformChangeId.ty=position._y-(px*localTransformChangeId.b+pivot*localTransformChangeId.d))}set alpha(value){value!==this.localAlpha&&(this.localAlpha=value,this._updateFlags|=UPDATE_COLOR,this._onUpdate())}get alpha(){return this.localAlpha}set tint(value){(value=Color.shared.setValue(null!=value?value:16777215).toBgrNumber())!==this.localColor&&(this.localColor=value,this._updateFlags|=UPDATE_COLOR,this._onUpdate())}get tint(){return bgr2rgb(this.localColor)}set blendMode(value){this.localBlendMode!==value&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=UPDATE_BLEND,this.localBlendMode=value,this._onUpdate())}get blendMode(){return this.localBlendMode}get visible(){return!!(2&this.localDisplayStatus)}set visible(value){(2&this.localDisplayStatus)!=(value?2:0)&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=UPDATE_VISIBLE,this.localDisplayStatus^=2,this._onUpdate())}get culled(){return!(4&this.localDisplayStatus)}set culled(value){(4&this.localDisplayStatus)!=(value?0:4)&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=UPDATE_VISIBLE,this.localDisplayStatus^=4,this._onUpdate())}get renderable(){return!!(1&this.localDisplayStatus)}set renderable(value){(1&this.localDisplayStatus)!=(value?1:0)&&(this._updateFlags|=UPDATE_VISIBLE,this.localDisplayStatus^=1,this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._onUpdate())}get isRenderable(){return 7===this.localDisplayStatus&&0<this.groupAlpha}destroy(options=!1){var _a;if(!this.destroyed){this.destroyed=!0;let oldChildren;if(this.children.length&&(oldChildren=this.removeChildren(0,this.children.length)),this.removeFromParent(),this.parent=null,this._maskEffect=null,this._filterEffect=null,this.effects=null,this._position=null,this._scale=null,this._pivot=null,this._skew=null,this.emit("destroyed",this),this.removeAllListeners(),("boolean"==typeof options?options:null!=options&&options.children)&&oldChildren)for(let i=0;i<oldChildren.length;++i)oldChildren[i].destroy(options);null!=(_a=this.renderGroup)&&_a.destroy(),this.renderGroup=null}}}extensions.mixin(Container,childrenHelperMixin,getFastGlobalBoundsMixin,toLocalGlobalMixin,onRenderMixin,measureMixin,effectsMixin,findMixin,sortMixin,eventemitter3$1,cacheAsTextureMixin,getGlobalMixin,collectRenderablesMixin);class FederatedEvent{constructor(manager){this.bubbles=!0,this.cancelBubble=!0,this.cancelable=!1,this.composed=!1,this.defaultPrevented=!1,this.eventPhase=FederatedEvent.prototype.NONE,this.propagationStopped=!1,this.propagationImmediatelyStopped=!1,this.layer=new Point,this.page=new Point,this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,this.manager=manager}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}get data(){return this}composedPath(){return!this.manager||this.path&&this.path[this.path.length-1]===this.target||(this.path=this.target?this.manager.propagationPath(this.target):[]),this.path}initEvent(_type,_bubbles,_cancelable){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(_typeArg,_bubblesArg,_cancelableArg,_viewArg,_detailArg){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}function isAppleTabletOnIos13(navigator){return void 0!==navigator&&"MacIntel"===navigator.platform&&"number"==typeof navigator.maxTouchPoints&&1<navigator.maxTouchPoints&&"undefined"==typeof MSStream}var appleIphone=/iPhone/i,appleIpod=/iPod/i,appleTablet=/iPad/i,appleUniversal=/\biOS-universal(?:.+)Mac\b/i,androidPhone=/\bAndroid(?:.+)Mobile\b/i,androidTablet=/Android/i,amazonPhone=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,amazonTablet=/Silk/i,windowsPhone=/Windows Phone/i,windowsTablet=/\bWindows(?:.+)ARM\b/i,otherBlackBerry=/BlackBerry/i,otherBlackBerry10=/BB10/i,otherOpera=/Opera Mini/i,otherChrome=/\b(CriOS|Chrome)(?:.+)Mobile/i,otherFirefox=/Mobile(?:.+)Firefox\b/i;function isMobile$1(param){var nav={userAgent:"",platform:"",maxTouchPoints:0},tmp=(param||"undefined"==typeof navigator?"string"==typeof param?nav.userAgent=param:param&&param.userAgent&&(nav={userAgent:param.userAgent,platform:param.platform,maxTouchPoints:param.maxTouchPoints||0}):nav={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0},(param=nav.userAgent).split("[FBAN")),userAgent=param=void 0!==(tmp=(param=void 0!==tmp[1]?tmp[0]:param).split("Twitter"))[1]?tmp[0]:param;return(param={apple:{phone:(tmp=function(regex){return regex.test(userAgent)})(appleIphone)&&!tmp(windowsPhone),ipod:tmp(appleIpod),tablet:!tmp(appleIphone)&&(tmp(appleTablet)||isAppleTabletOnIos13(nav))&&!tmp(windowsPhone),universal:tmp(appleUniversal),device:(tmp(appleIphone)||tmp(appleIpod)||tmp(appleTablet)||tmp(appleUniversal)||isAppleTabletOnIos13(nav))&&!tmp(windowsPhone)},amazon:{phone:tmp(amazonPhone),tablet:!tmp(amazonPhone)&&tmp(amazonTablet),device:tmp(amazonPhone)||tmp(amazonTablet)},android:{phone:!tmp(windowsPhone)&&tmp(amazonPhone)||!tmp(windowsPhone)&&tmp(androidPhone),tablet:!tmp(windowsPhone)&&!tmp(amazonPhone)&&!tmp(androidPhone)&&(tmp(amazonTablet)||tmp(androidTablet)),device:!tmp(windowsPhone)&&(tmp(amazonPhone)||tmp(amazonTablet)||tmp(androidPhone)||tmp(androidTablet))||tmp(/\bokhttp\b/i)},windows:{phone:tmp(windowsPhone),tablet:tmp(windowsTablet),device:tmp(windowsPhone)||tmp(windowsTablet)},other:{blackberry:tmp(otherBlackBerry),blackberry10:tmp(otherBlackBerry10),opera:tmp(otherOpera),firefox:tmp(otherFirefox),chrome:tmp(otherChrome),device:tmp(otherBlackBerry)||tmp(otherBlackBerry10)||tmp(otherOpera)||tmp(otherFirefox)||tmp(otherChrome)},any:!1,phone:!1,tablet:!1}).any=param.apple.device||param.android.device||param.windows.device||param.other.device,param.phone=param.apple.phone||param.android.phone||param.windows.phone,param.tablet=param.apple.tablet||param.android.tablet||param.windows.tablet,param}const isMobile=(null!=(_a=isMobile$1.default)?_a:isMobile$1)(globalThis.navigator);var __defProp$16=Object.defineProperty,__getOwnPropSymbols$16=Object.getOwnPropertySymbols,__hasOwnProp$16=Object.prototype.hasOwnProperty,__propIsEnum$16=Object.prototype.propertyIsEnumerable,__defNormalProp$16=(obj,key,value)=>key in obj?__defProp$16(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$16=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$16.call(b,prop)&&__defNormalProp$16(a,prop,b[prop]);if(__getOwnPropSymbols$16)for(var prop of __getOwnPropSymbols$16(b))__propIsEnum$16.call(b,prop)&&__defNormalProp$16(a,prop,b[prop]);return a};const _AccessibilitySystem=class _AccessibilitySystem{constructor(renderer,_mobileInfo=isMobile){this._mobileInfo=_mobileInfo,this.debug=!1,this._activateOnTab=!0,this._deactivateOnMouseMove=!0,this._isActive=!1,this._isMobileAccessibility=!1,this._div=null,this._pool=[],this._renderId=0,this._children=[],this._androidUpdateCount=0,this._androidUpdateFrequency=500,this._hookDiv=null,(_mobileInfo.tablet||_mobileInfo.phone)&&this._createTouchHook(),this._renderer=renderer}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}get hookDiv(){return this._hookDiv}_createTouchHook(){var hookDiv=document.createElement("button");hookDiv.style.width="1px",hookDiv.style.height="1px",hookDiv.style.position="absolute",hookDiv.style.top="-1000px",hookDiv.style.left="-1000px",hookDiv.style.zIndex=2..toString(),hookDiv.style.backgroundColor="#FF0000",hookDiv.title="select to enable accessibility for this content",hookDiv.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this._activate(),this._destroyTouchHook()}),document.body.appendChild(hookDiv),this._hookDiv=hookDiv}_destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}_activate(){if(!this._isActive){this._isActive=!0,this._div||(this._div=document.createElement("div"),this._div.style.width="100px",this._div.style.height="100px",this._div.style.position="absolute",this._div.style.top="0px",this._div.style.left="0px",this._div.style.zIndex=2..toString(),this._div.style.pointerEvents="none"),this._activateOnTab&&(this._onKeyDown=this._onKeyDown.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)),this._deactivateOnMouseMove&&(this._onMouseMove=this._onMouseMove.bind(this),globalThis.document.addEventListener("mousemove",this._onMouseMove,!0));const canvas=this._renderer.view.canvas;if(canvas.parentNode)canvas.parentNode.appendChild(this._div),this._initAccessibilitySetup();else{const observer=new MutationObserver(()=>{canvas.parentNode&&(canvas.parentNode.appendChild(this._div),observer.disconnect(),this._initAccessibilitySetup())});observer.observe(document.body,{childList:!0,subtree:!0})}}}_initAccessibilitySetup(){this._renderer.runners.postrender.add(this),this._renderer.lastObjectRendered&&this._updateAccessibleObjects(this._renderer.lastObjectRendered)}_deactivate(){if(this._isActive&&!this._isMobileAccessibility){this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),this._activateOnTab&&globalThis.addEventListener("keydown",this._onKeyDown,!1),this._renderer.runners.postrender.remove(this);for(const child of this._children)child._accessibleDiv&&child._accessibleDiv.parentNode&&(child._accessibleDiv.parentNode.removeChild(child._accessibleDiv),child._accessibleDiv=null),child._accessibleActive=!1;this._pool.forEach(div=>{div.parentNode&&div.parentNode.removeChild(div)}),this._div&&this._div.parentNode&&this._div.parentNode.removeChild(this._div),this._pool=[],this._children=[]}}_updateAccessibleObjects(container){if(container.visible&&container.accessibleChildren){container.accessible&&(container._accessibleActive||this._addChild(container),container._renderId=this._renderId);var children=container.children;if(children)for(let i=0;i<children.length;i++)this._updateAccessibleObjects(children[i])}}init(options){var defaultOpts=_AccessibilitySystem.defaultOptions,defaultOpts={accessibilityOptions:__spreadValues$16(__spreadValues$16({},defaultOpts),(null==options?void 0:options.accessibilityOptions)||{})};this.debug=defaultOpts.accessibilityOptions.debug,this._activateOnTab=defaultOpts.accessibilityOptions.activateOnTab,this._deactivateOnMouseMove=defaultOpts.accessibilityOptions.deactivateOnMouseMove,defaultOpts.accessibilityOptions.enabledByDefault?this._activate():this._activateOnTab&&(this._onKeyDown=this._onKeyDown.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)),this._renderer.runners.postrender.remove(this)}postrender(){var now=performance.now();if(!(this._mobileInfo.android.device&&now<this._androidUpdateCount)&&(this._androidUpdateCount=now+this._androidUpdateFrequency,this._renderer.renderingToScreen)&&this._renderer.view.canvas){var y,viewWidth,viewHeight,div,activeIds=new Set;if(this._renderer.lastObjectRendered){this._updateAccessibleObjects(this._renderer.lastObjectRendered);for(const child of this._children)child._renderId===this._renderId&&activeIds.add(this._children.indexOf(child))}for(let i=this._children.length-1;0<=i;i--){var child=this._children[i];activeIds.has(i)||(child._accessibleDiv&&child._accessibleDiv.parentNode&&(child._accessibleDiv.parentNode.removeChild(child._accessibleDiv),this._pool.push(child._accessibleDiv),child._accessibleDiv=null),child._accessibleActive=!1,removeItems(this._children,i,1))}this._renderer.renderingToScreen&&({x:now,y,width:viewWidth,height:viewHeight}=this._renderer.screen,(div=this._div).style.left=now+"px",div.style.top=y+"px",div.style.width=viewWidth+"px",div.style.height=viewHeight+"px");for(let i=0;i<this._children.length;i++){const child=this._children[i];if(child._accessibleActive&&child._accessibleDiv){const div=child._accessibleDiv;var hitArea=child.hitArea||child.getBounds().rectangle;if(child.hitArea){var wt=child.worldTransform,sx=this._renderer.resolution,sy=this._renderer.resolution;div.style.left=(wt.tx+hitArea.x*wt.a)*sx+"px",div.style.top=(wt.ty+hitArea.y*wt.d)*sy+"px",div.style.width=hitArea.width*wt.a*sx+"px",div.style.height=hitArea.height*wt.d*sy+"px"}else{this._capHitArea(hitArea);const sx=this._renderer.resolution,sy=this._renderer.resolution;div.style.left=hitArea.x*sx+"px",div.style.top=hitArea.y*sy+"px",div.style.width=hitArea.width*sx+"px",div.style.height=hitArea.height*sy+"px"}}}this._renderId++}}_updateDebugHTML(div){div.innerHTML=`type: ${div.type}</br> title : ${div.title}</br> tabIndex: `+div.tabIndex}_capHitArea(hitArea){hitArea.x<0&&(hitArea.width+=hitArea.x,hitArea.x=0),hitArea.y<0&&(hitArea.height+=hitArea.y,hitArea.y=0);var{width:viewWidth,height:viewHeight}=this._renderer;hitArea.x+hitArea.width>viewWidth&&(hitArea.width=viewWidth-hitArea.x),hitArea.y+hitArea.height>viewHeight&&(hitArea.height=viewHeight-hitArea.y)}_addChild(container){let div=this._pool.pop();div||("button"===container.accessibleType?div=document.createElement("button"):((div=document.createElement(container.accessibleType)).style.cssText=`
color: transparent;
pointer-events: none;
padding: 0;
margin: 0;
border: 0;
outline: 0;
background: transparent;
box-sizing: border-box;
user-select: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
`,container.accessibleText&&(div.innerText=container.accessibleText)),div.style.width="100px",div.style.height="100px",div.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",div.style.position="absolute",div.style.zIndex=2..toString(),div.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?div.setAttribute("aria-live","off"):div.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?div.setAttribute("aria-relevant","additions"):div.setAttribute("aria-relevant","text"),div.addEventListener("click",this._onClick.bind(this)),div.addEventListener("focus",this._onFocus.bind(this)),div.addEventListener("focusout",this._onFocusOut.bind(this))),div.style.pointerEvents=container.accessiblePointerEvents,div.type=container.accessibleType,container.accessibleTitle&&null!==container.accessibleTitle?div.title=container.accessibleTitle:container.accessibleHint&&null!==container.accessibleHint||(div.title="container "+container.tabIndex),container.accessibleHint&&null!==container.accessibleHint&&div.setAttribute("aria-label",container.accessibleHint),this.debug&&this._updateDebugHTML(div),container._accessibleActive=!0,(container._accessibleDiv=div).container=container,this._children.push(container),this._div.appendChild(container._accessibleDiv),container.interactive&&(container._accessibleDiv.tabIndex=container.tabIndex)}_dispatchEvent(e,type){e=e.target.container;const boundary=this._renderer.events.rootBoundary,event=Object.assign(new FederatedEvent(boundary),{target:e});boundary.rootTarget=this._renderer.lastObjectRendered,type.forEach(type2=>boundary.dispatchEvent(event,type2))}_onClick(e){this._dispatchEvent(e,["click","pointertap","tap"])}_onFocus(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","assertive"),this._dispatchEvent(e,["mouseover"])}_onFocusOut(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","polite"),this._dispatchEvent(e,["mouseout"])}_onKeyDown(e){9===e.keyCode&&this._activateOnTab&&this._activate()}_onMouseMove(e){0===e.movementX&&0===e.movementY||this._deactivate()}destroy(){this._deactivate(),this._destroyTouchHook(),this._div=null,this._pool=null,this._children=null,this._renderer=null,this._activateOnTab&&globalThis.removeEventListener("keydown",this._onKeyDown)}setAccessibilityEnabled(enabled){enabled?this._activate():this._deactivate()}};_AccessibilitySystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem],name:"accessibility"},_AccessibilitySystem.defaultOptions={enabledByDefault:!1,debug:!1,activateOnTab:!0,deactivateOnMouseMove:!0};var _a=_AccessibilitySystem,accessibilityTarget={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,_accessibleActive:!1,_accessibleDiv:null,accessibleType:"button",accessibleText:null,accessiblePointerEvents:"auto",accessibleChildren:!0,_renderId:-1};extensions.add(_a),extensions.mixin(Container,accessibilityTarget);class ResizePlugin{static init(options){Object.defineProperty(this,"resizeTo",{set(dom){globalThis.removeEventListener("resize",this.queueResize),(this._resizeTo=dom)&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this._cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this._cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(this._resizeTo){this._cancelResize();let width,height;var clientWidth,clientHeight;height=this._resizeTo===globalThis.window?(width=globalThis.innerWidth,globalThis.innerHeight):({clientWidth,clientHeight}=this._resizeTo,width=clientWidth,clientHeight),this.renderer.resize(width,height),this.render()}},this._resizeId=null,this._resizeTo=null,this.resizeTo=options.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this._cancelResize(),this._cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}ResizePlugin.extension=ExtensionType2.Application;var UPDATE_PRIORITY={INTERACTION:50,50:"INTERACTION",HIGH:25,25:"HIGH",NORMAL:0,0:"NORMAL",LOW:-25,"-25":"LOW",UTILITY:-50,"-50":"UTILITY"};class TickerListener{constructor(fn,context=null,priority=0,once=!1){this.next=null,this.previous=null,this._destroyed=!1,this._fn=fn,this._context=context,this.priority=priority,this._once=once}match(fn,context=null){return this._fn===fn&&this._context===context}emit(ticker){return this._fn&&(this._context?this._fn.call(this._context,ticker):this._fn(ticker)),ticker=this.next,this._once&&this.destroy(!0),this._destroyed&&(this.next=null),ticker}connect(previous){(this.previous=previous).next&&(previous.next.previous=this),this.next=previous.next,previous.next=this}destroy(hard=!1){this._destroyed=!0,this._fn=null,this._context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);var redirect=this.next;return this.next=hard?null:redirect,this.previous=null,redirect}}const _Ticker=class _Ticker{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new TickerListener(null,null,1/0),this.deltaMS=1/_Ticker.targetFPMS,this.elapsedMS=1/_Ticker.targetFPMS,this._tick=time=>{this._requestId=null,this.started&&(this.update(time),this.started)&&null===this._requestId&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick))}}_requestIfNeeded(){null===this._requestId&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){null!==this._requestId&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(fn,context,priority=UPDATE_PRIORITY.NORMAL){return this._addListener(new TickerListener(fn,context,priority))}addOnce(fn,context,priority=UPDATE_PRIORITY.NORMAL){return this._addListener(new TickerListener(fn,context,priority,!0))}_addListener(listener){let current=this._head.next,previous=this._head;if(current){for(;current;){if(listener.priority>current.priority){listener.connect(previous);break}current=(previous=current).next}listener.previous||listener.connect(previous)}else listener.connect(previous);return this._startIfPossible(),this}remove(fn,context){let listener=this._head.next;for(;listener;)listener=listener.match(fn,context)?listener.destroy():listener.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let count=0,current=this._head;for(;current=current.next;)count++;return count}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let listener=this._head.next;for(;listener;)listener=listener.destroy(!0);this._head.destroy(),this._head=null}}update(currentTime=performance.now()){let elapsedMS;if(currentTime>this.lastTime){if((elapsedMS=this.elapsedMS=currentTime-this.lastTime)>this._maxElapsedMS&&(elapsedMS=this._maxElapsedMS),elapsedMS*=this.speed,this._minElapsedMS){var delta=currentTime-this._lastFrame|0;if(delta<this._minElapsedMS)return;this._lastFrame=currentTime-delta%this._minElapsedMS}this.deltaMS=elapsedMS,this.deltaTime=this.deltaMS*_Ticker.targetFPMS;let listener=(delta=this._head).next;for(;listener;)listener=listener.emit(this);delta.next||this._cancelIfNeeded()}else this.deltaTime=this.deltaMS=this.elapsedMS=0;this.lastTime=currentTime}get FPS(){return 1e3/this.elapsedMS}get minFPS(){return 1e3/this._maxElapsedMS}set minFPS(fps){fps=Math.min(this.maxFPS,fps),fps=Math.min(Math.max(0,fps)/1e3,_Ticker.targetFPMS),this._maxElapsedMS=1/fps}get maxFPS(){return this._minElapsedMS?Math.round(1e3/this._minElapsedMS):0}set maxFPS(fps){0===fps?this._minElapsedMS=0:(fps=Math.max(this.minFPS,fps),this._minElapsedMS=1/(fps/1e3))}static get shared(){var shared;return _Ticker._shared||((shared=_Ticker._shared=new _Ticker).autoStart=!0,shared._protected=!0),_Ticker._shared}static get system(){var system;return _Ticker._system||((system=_Ticker._system=new _Ticker).autoStart=!0,system._protected=!0),_Ticker._system}};_Ticker.targetFPMS=.06;let Ticker=_Ticker;class TickerPlugin{static init(options){options=Object.assign({autoStart:!0,sharedTicker:!1},options),Object.defineProperty(this,"ticker",{set(ticker){this._ticker&&this._ticker.remove(this.render,this),(this._ticker=ticker)&&ticker.add(this.render,this,UPDATE_PRIORITY.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=options.sharedTicker?Ticker.shared:new Ticker,options.autoStart&&this.start()}static destroy(){var oldTicker;this._ticker&&(oldTicker=this._ticker,this.ticker=null,oldTicker.destroy())}}TickerPlugin.extension=ExtensionType2.Application,extensions.add(ResizePlugin),extensions.add(TickerPlugin);const EventsTicker=new class{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}init(events){this.removeTickerListener(),this.events=events,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(paused){this._pauseUpdate=paused}addTickerListener(){!this._tickerAdded&&this.domElement&&(Ticker.system.add(this._tickerUpdate,this,UPDATE_PRIORITY.INTERACTION),this._tickerAdded=!0)}removeTickerListener(){this._tickerAdded&&(Ticker.system.remove(this._tickerUpdate,this),this._tickerAdded=!1)}pointerMoved(){this._didMove=!0}_update(){var rootPointerEvent;this.domElement&&!this._pauseUpdate&&(this._didMove?this._didMove=!1:(rootPointerEvent=this.events._rootPointerEvent,this.events.supportsTouchEvents&&"touch"===rootPointerEvent.pointerType||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:rootPointerEvent.clientX,clientY:rootPointerEvent.clientY,pointerType:rootPointerEvent.pointerType,pointerId:rootPointerEvent.pointerId}))))}_tickerUpdate(ticker){this._deltaTime+=ticker.deltaTime,this._deltaTime<this.interactionFrequency||(this._deltaTime=0,this._update())}};class FederatedMouseEvent extends FederatedEvent{constructor(){super(...arguments),this.client=new Point,this.movement=new Point,this.offset=new Point,this.global=new Point,this.screen=new Point}get clientX(){return this.client.x}get clientY(){return this.client.y}get x(){return this.clientX}get y(){return this.clientY}get movementX(){return this.movement.x}get movementY(){return this.movement.y}get offsetX(){return this.offset.x}get offsetY(){return this.offset.y}get globalX(){return this.global.x}get globalY(){return this.global.y}get screenX(){return this.screen.x}get screenY(){return this.screen.y}getLocalPosition(container,point,globalPos){return container.worldTransform.applyInverse(globalPos||this.global,point)}getModifierState(key){return"getModifierState"in this.nativeEvent&&this.nativeEvent.getModifierState(key)}initMouseEvent(_typeArg,_canBubbleArg,_cancelableArg,_viewArg,_detailArg,_screenXArg,_screenYArg,_clientXArg,_clientYArg,_ctrlKeyArg,_altKeyArg,_shiftKeyArg,_metaKeyArg,_buttonArg,_relatedTargetArg){throw new Error("Method not implemented.")}}class FederatedPointerEvent extends FederatedMouseEvent{constructor(){super(...arguments),this.width=0,this.height=0,this.isPrimary=!1}getCoalescedEvents(){return"pointermove"===this.type||"mousemove"===this.type||"touchmove"===this.type?[this]:[]}getPredictedEvents(){throw new Error("getPredictedEvents is not supported!")}}class FederatedWheelEvent extends FederatedMouseEvent{constructor(){super(...arguments),this.DOM_DELTA_PIXEL=0,this.DOM_DELTA_LINE=1,this.DOM_DELTA_PAGE=2}}FederatedWheelEvent.DOM_DELTA_PIXEL=0,FederatedWheelEvent.DOM_DELTA_LINE=1,FederatedWheelEvent.DOM_DELTA_PAGE=2;const tempHitLocation=new Point,tempLocalMapping=new Point;class EventBoundary{constructor(rootTarget){this.dispatch=new EventEmitter,this.moveOnAll=!1,this.enableGlobalMoveEvents=!0,this.mappingState={trackingData:{}},this.eventPool=new Map,this._allInteractiveElements=[],this._hitElements=[],this._isPointerMoveEvent=!1,this.rootTarget=rootTarget,this.hitPruneFn=this.hitPruneFn.bind(this),this.hitTestFn=this.hitTestFn.bind(this),this.mapPointerDown=this.mapPointerDown.bind(this),this.mapPointerMove=this.mapPointerMove.bind(this),this.mapPointerOut=this.mapPointerOut.bind(this),this.mapPointerOver=this.mapPointerOver.bind(this),this.mapPointerUp=this.mapPointerUp.bind(this),this.mapPointerUpOutside=this.mapPointerUpOutside.bind(this),this.mapWheel=this.mapWheel.bind(this),this.mappingTable={},this.addEventMapping("pointerdown",this.mapPointerDown),this.addEventMapping("pointermove",this.mapPointerMove),this.addEventMapping("pointerout",this.mapPointerOut),this.addEventMapping("pointerleave",this.mapPointerOut),this.addEventMapping("pointerover",this.mapPointerOver),this.addEventMapping("pointerup",this.mapPointerUp),this.addEventMapping("pointerupoutside",this.mapPointerUpOutside),this.addEventMapping("wheel",this.mapWheel)}addEventMapping(type,fn){this.mappingTable[type]||(this.mappingTable[type]=[]),this.mappingTable[type].push({fn:fn,priority:0}),this.mappingTable[type].sort((a,b)=>a.priority-b.priority)}dispatchEvent(e,type){e.propagationStopped=!1,e.propagationImmediatelyStopped=!1,this.propagate(e,type),this.dispatch.emit(type||e.type,e)}mapEvent(e){if(this.rootTarget){var mappers=this.mappingTable[e.type];if(mappers)for(let i=0,j=mappers.length;i<j;i++)mappers[i].fn(e);else warn("[EventBoundary]: Event mapping not defined for "+e.type)}}hitTest(x,y){return EventsTicker.pauseUpdate=!0,(x=this[this._isPointerMoveEvent&&this.enableGlobalMoveEvents?"hitTestMoveRecursive":"hitTestRecursive"](this.rootTarget,this.rootTarget.eventMode,tempHitLocation.set(x,y),this.hitTestFn,this.hitPruneFn))&&x[0]}propagate(e,type){if(e.target){var composedPath=e.composedPath();e.eventPhase=e.CAPTURING_PHASE;for(let i=0,j=composedPath.length-1;i<j;i++)if(e.currentTarget=composedPath[i],this.notifyTarget(e,type),e.propagationStopped||e.propagationImmediatelyStopped)return;if(e.eventPhase=e.AT_TARGET,e.currentTarget=e.target,this.notifyTarget(e,type),!e.propagationStopped&&!e.propagationImmediatelyStopped){e.eventPhase=e.BUBBLING_PHASE;for(let i=composedPath.length-2;0<=i;i--)if(e.currentTarget=composedPath[i],this.notifyTarget(e,type),e.propagationStopped||e.propagationImmediatelyStopped)return}}}all(e,type,targets=this._allInteractiveElements){if(0!==targets.length){e.eventPhase=e.BUBBLING_PHASE;var events=Array.isArray(type)?type:[type];for(let i=targets.length-1;0<=i;i--)events.forEach(event=>{e.currentTarget=targets[i],this.notifyTarget(e,event)})}}propagationPath(target){var propagationPath=[target];for(let i=0;i<2048&&target!==this.rootTarget&&target.parent;i++){if(!target.parent)throw new Error("Cannot find propagation path to disconnected target");propagationPath.push(target.parent),target=target.parent}return propagationPath.reverse(),propagationPath}hitTestMoveRecursive(currentTarget,eventMode,location,testFn,pruneFn,ignore=!1){let shouldReturn=!1;if(this._interactivePrune(currentTarget))return null;if("dynamic"!==currentTarget.eventMode&&"dynamic"!==eventMode||(EventsTicker.pauseUpdate=!1),currentTarget.interactiveChildren&&currentTarget.children){var children=currentTarget.children;for(let i=children.length-1;0<=i;i--){var isInteractive,child=children[i];!(child=this.hitTestMoveRecursive(child,this._isInteractive(eventMode)?eventMode:child.eventMode,location,testFn,pruneFn,ignore||pruneFn(currentTarget,location)))||0<child.length&&!child[child.length-1].parent||(isInteractive=currentTarget.isInteractive(),(0<child.length||isInteractive)&&(isInteractive&&this._allInteractiveElements.push(currentTarget),child.push(currentTarget)),0===this._hitElements.length&&(this._hitElements=child),shouldReturn=!0)}}var isInteractiveMode=this._isInteractive(eventMode),isInteractiveTarget=currentTarget.isInteractive();return isInteractiveTarget&&this._allInteractiveElements.push(currentTarget),ignore||0<this._hitElements.length?null:shouldReturn?this._hitElements:isInteractiveMode&&!pruneFn(currentTarget,location)&&testFn(currentTarget,location)?isInteractiveTarget?[currentTarget]:[]:null}hitTestRecursive(currentTarget,eventMode,location,testFn,pruneFn){if(this._interactivePrune(currentTarget)||pruneFn(currentTarget,location))return null;if("dynamic"!==currentTarget.eventMode&&"dynamic"!==eventMode||(EventsTicker.pauseUpdate=!1),currentTarget.interactiveChildren&&currentTarget.children){var children=currentTarget.children,relativeLocation=location;for(let i=children.length-1;0<=i;i--){var isInteractive,child=children[i];if((child=this.hitTestRecursive(child,this._isInteractive(eventMode)?eventMode:child.eventMode,relativeLocation,testFn,pruneFn))&&(!(0<child.length)||child[child.length-1].parent))return isInteractive=currentTarget.isInteractive(),(0<child.length||isInteractive)&&child.push(currentTarget),child}}var isInteractiveMode=this._isInteractive(eventMode),isInteractiveTarget=currentTarget.isInteractive();return isInteractiveMode&&testFn(currentTarget,location)?isInteractiveTarget?[currentTarget]:[]:null}_isInteractive(int){return"static"===int||"dynamic"===int}_interactivePrune(container){return!(container&&container.visible&&container.renderable&&container.measurable)||"none"===container.eventMode||"passive"===container.eventMode&&!container.interactiveChildren}hitPruneFn(container,location){if(container.hitArea&&(container.worldTransform.applyInverse(location,tempLocalMapping),!container.hitArea.contains(tempLocalMapping.x,tempLocalMapping.y)))return!0;if(container.effects&&container.effects.length)for(let i=0;i<container.effects.length;i++){var effect=container.effects[i];if(effect.containsPoint&&!effect.containsPoint(location,this.hitTestFn))return!0}return!1}hitTestFn(container,location){return!!container.hitArea||!(null==container||!container.containsPoint)&&(container.worldTransform.applyInverse(location,tempLocalMapping),container.containsPoint(tempLocalMapping))}notifyTarget(e,type){var _a,_b;e.currentTarget.isInteractive()&&(null==type&&(type=e.type),null!=(_b=(_a=e.currentTarget)["on"+type])&&_b.call(_a,e),_b=e.eventPhase===e.CAPTURING_PHASE||e.eventPhase===e.AT_TARGET?type+"capture":type,this._notifyListeners(e,_b),e.eventPhase===e.AT_TARGET)&&this._notifyListeners(e,type)}mapPointerDown(from){var e,isRightButton;from instanceof FederatedPointerEvent?(e=this.createPointerEvent(from),this.dispatchEvent(e,"pointerdown"),"touch"===e.pointerType?this.dispatchEvent(e,"touchstart"):"mouse"!==e.pointerType&&"pen"!==e.pointerType||(isRightButton=2===e.button,this.dispatchEvent(e,isRightButton?"rightdown":"mousedown")),this.trackingData(from.pointerId).pressTargetsByButton[from.button]=e.composedPath(),this.freeEvent(e)):warn("EventBoundary cannot map a non-pointer event as a pointer event")}mapPointerMove(from){if(from instanceof FederatedPointerEvent){this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;var e=this.createPointerEvent(from),isMouse=(this._isPointerMoveEvent=!1,"mouse"===e.pointerType||"pen"===e.pointerType),trackingData=this.trackingData(from.pointerId),outTarget=this.findMountedTarget(trackingData.overTargets);if(0<(null==(_a=trackingData.overTargets)?void 0:_a.length)&&outTarget!==e.target){var _a="mousemove"===from.type?"mouseout":"pointerout",_a=this.createPointerEvent(from,_a,outTarget);if(this.dispatchEvent(_a,"pointerout"),isMouse&&this.dispatchEvent(_a,"mouseout"),!e.composedPath().includes(outTarget)){var leaveEvent=this.createPointerEvent(from,"pointerleave",outTarget);for(leaveEvent.eventPhase=leaveEvent.AT_TARGET;leaveEvent.target&&!e.composedPath().includes(leaveEvent.target);)leaveEvent.currentTarget=leaveEvent.target,this.notifyTarget(leaveEvent),isMouse&&this.notifyTarget(leaveEvent,"mouseleave"),leaveEvent.target=leaveEvent.target.parent;this.freeEvent(leaveEvent)}this.freeEvent(_a)}if(outTarget!==e.target){_a="mousemove"===from.type?"mouseover":"pointerover",from=this.clonePointerEvent(e,_a),this.dispatchEvent(from,"pointerover"),isMouse&&this.dispatchEvent(from,"mouseover");let overTargetAncestor=null==outTarget?void 0:outTarget.parent;for(;overTargetAncestor&&overTargetAncestor!==this.rootTarget.parent&&overTargetAncestor!==e.target;)overTargetAncestor=overTargetAncestor.parent;if(!overTargetAncestor||overTargetAncestor===this.rootTarget.parent){var enterEvent=this.clonePointerEvent(e,"pointerenter");for(enterEvent.eventPhase=enterEvent.AT_TARGET;enterEvent.target&&enterEvent.target!==outTarget&&enterEvent.target!==this.rootTarget.parent;)enterEvent.currentTarget=enterEvent.target,this.notifyTarget(enterEvent),isMouse&&this.notifyTarget(enterEvent,"mouseenter"),enterEvent.target=enterEvent.target.parent;this.freeEvent(enterEvent)}this.freeEvent(from)}_a=[],from=null==(from=this.enableGlobalMoveEvents)||from,this.moveOnAll?_a.push("pointermove"):this.dispatchEvent(e,"pointermove"),from&&_a.push("globalpointermove"),"touch"===e.pointerType&&(this.moveOnAll?_a.splice(1,0,"touchmove"):this.dispatchEvent(e,"touchmove"),from)&&_a.push("globaltouchmove"),isMouse&&(this.moveOnAll?_a.splice(1,0,"mousemove"):this.dispatchEvent(e,"mousemove"),from&&_a.push("globalmousemove"),this.cursor=null==(from=e.target)?void 0:from.cursor),0<_a.length&&this.all(e,_a),this._allInteractiveElements.length=0,this._hitElements.length=0,trackingData.overTargets=e.composedPath(),this.freeEvent(e)}else warn("EventBoundary cannot map a non-pointer event as a pointer event")}mapPointerOver(from){var _a;if(from instanceof FederatedPointerEvent){var trackingData=this.trackingData(from.pointerId),isMouse="mouse"===(from=this.createPointerEvent(from)).pointerType||"pen"===from.pointerType,enterEvent=(this.dispatchEvent(from,"pointerover"),isMouse&&this.dispatchEvent(from,"mouseover"),"mouse"===from.pointerType&&(this.cursor=null==(_a=from.target)?void 0:_a.cursor),this.clonePointerEvent(from,"pointerenter"));for(enterEvent.eventPhase=enterEvent.AT_TARGET;enterEvent.target&&enterEvent.target!==this.rootTarget.parent;)enterEvent.currentTarget=enterEvent.target,this.notifyTarget(enterEvent),isMouse&&this.notifyTarget(enterEvent,"mouseenter"),enterEvent.target=enterEvent.target.parent;trackingData.overTargets=from.composedPath(),this.freeEvent(from),this.freeEvent(enterEvent)}else warn("EventBoundary cannot map a non-pointer event as a pointer event")}mapPointerOut(from){if(from instanceof FederatedPointerEvent){var trackingData=this.trackingData(from.pointerId);if(trackingData.overTargets){var isMouse="mouse"===from.pointerType||"pen"===from.pointerType,outTarget=this.findMountedTarget(trackingData.overTargets),outEvent=this.createPointerEvent(from,"pointerout",outTarget),leaveEvent=(this.dispatchEvent(outEvent),isMouse&&this.dispatchEvent(outEvent,"mouseout"),this.createPointerEvent(from,"pointerleave",outTarget));for(leaveEvent.eventPhase=leaveEvent.AT_TARGET;leaveEvent.target&&leaveEvent.target!==this.rootTarget.parent;)leaveEvent.currentTarget=leaveEvent.target,this.notifyTarget(leaveEvent),isMouse&&this.notifyTarget(leaveEvent,"mouseleave"),leaveEvent.target=leaveEvent.target.parent;trackingData.overTargets=null,this.freeEvent(outEvent),this.freeEvent(leaveEvent)}this.cursor=null}else warn("EventBoundary cannot map a non-pointer event as a pointer event")}mapPointerUp(from){if(from instanceof FederatedPointerEvent){var now=performance.now(),e=this.createPointerEvent(from),isRightButton=(this.dispatchEvent(e,"pointerup"),"touch"===e.pointerType?this.dispatchEvent(e,"touchend"):"mouse"!==e.pointerType&&"pen"!==e.pointerType||(isRightButton=2===e.button,this.dispatchEvent(e,isRightButton?"rightup":"mouseup")),this.trackingData(from.pointerId)),pressTarget=this.findMountedTarget(isRightButton.pressTargetsByButton[from.button]);let clickTarget=pressTarget;if(pressTarget&&!e.composedPath().includes(pressTarget)){let currentTarget=pressTarget;for(;currentTarget&&!e.composedPath().includes(currentTarget);){if(e.currentTarget=currentTarget,this.notifyTarget(e,"pointerupoutside"),"touch"===e.pointerType)this.notifyTarget(e,"touchendoutside");else if("mouse"===e.pointerType||"pen"===e.pointerType){const isRightButton=2===e.button;this.notifyTarget(e,isRightButton?"rightupoutside":"mouseupoutside")}currentTarget=currentTarget.parent}delete isRightButton.pressTargetsByButton[from.button],clickTarget=currentTarget}if(clickTarget){if((pressTarget=this.clonePointerEvent(e,"click")).target=clickTarget,pressTarget.path=null,isRightButton.clicksByButton[from.button]||(isRightButton.clicksByButton[from.button]={clickCount:0,target:pressTarget.target,timeStamp:now}),(isRightButton=isRightButton.clicksByButton[from.button]).target===pressTarget.target&&now-isRightButton.timeStamp<200?++isRightButton.clickCount:isRightButton.clickCount=1,isRightButton.target=pressTarget.target,isRightButton.timeStamp=now,pressTarget.detail=isRightButton.clickCount,"mouse"===pressTarget.pointerType){const isRightButton=2===pressTarget.button;this.dispatchEvent(pressTarget,isRightButton?"rightclick":"click")}else"touch"===pressTarget.pointerType&&this.dispatchEvent(pressTarget,"tap");this.dispatchEvent(pressTarget,"pointertap"),this.freeEvent(pressTarget)}this.freeEvent(e)}else warn("EventBoundary cannot map a non-pointer event as a pointer event")}mapPointerUpOutside(from){if(from instanceof FederatedPointerEvent){var trackingData=this.trackingData(from.pointerId),pressTarget=this.findMountedTarget(trackingData.pressTargetsByButton[from.button]),e=this.createPointerEvent(from);if(pressTarget){let currentTarget=pressTarget;for(;currentTarget;)e.currentTarget=currentTarget,this.notifyTarget(e,"pointerupoutside"),"touch"===e.pointerType?this.notifyTarget(e,"touchendoutside"):"mouse"!==e.pointerType&&"pen"!==e.pointerType||this.notifyTarget(e,2===e.button?"rightupoutside":"mouseupoutside"),currentTarget=currentTarget.parent;delete trackingData.pressTargetsByButton[from.button]}this.freeEvent(e)}else warn("EventBoundary cannot map a non-pointer event as a pointer event")}mapWheel(from){from instanceof FederatedWheelEvent?(from=this.createWheelEvent(from),this.dispatchEvent(from),this.freeEvent(from)):warn("EventBoundary cannot map a non-wheel event as a wheel event")}findMountedTarget(propagationPath){if(!propagationPath)return null;let currentTarget=propagationPath[0];for(let i=1;i<propagationPath.length&&propagationPath[i].parent===currentTarget;i++)currentTarget=propagationPath[i];return currentTarget}createPointerEvent(from,type,target){var event=this.allocateEvent(FederatedPointerEvent);return this.copyPointerData(from,event),this.copyMouseData(from,event),this.copyData(from,event),event.nativeEvent=from.nativeEvent,event.originalEvent=from,event.target=null!=(from=null!=target?target:this.hitTest(event.global.x,event.global.y))?from:this._hitElements[0],"string"==typeof type&&(event.type=type),event}createWheelEvent(from){var event=this.allocateEvent(FederatedWheelEvent);return this.copyWheelData(from,event),this.copyMouseData(from,event),this.copyData(from,event),event.nativeEvent=from.nativeEvent,event.originalEvent=from,event.target=this.hitTest(event.global.x,event.global.y),event}clonePointerEvent(from,type){var event=this.allocateEvent(FederatedPointerEvent);return event.nativeEvent=from.nativeEvent,event.originalEvent=from.originalEvent,this.copyPointerData(from,event),this.copyMouseData(from,event),this.copyData(from,event),event.target=from.target,event.path=from.composedPath().slice(),event.type=null!=type?type:event.type,event}copyWheelData(from,to){to.deltaMode=from.deltaMode,to.deltaX=from.deltaX,to.deltaY=from.deltaY,to.deltaZ=from.deltaZ}copyPointerData(from,to){from instanceof FederatedPointerEvent&&to instanceof FederatedPointerEvent&&(to.pointerId=from.pointerId,to.width=from.width,to.height=from.height,to.isPrimary=from.isPrimary,to.pointerType=from.pointerType,to.pressure=from.pressure,to.tangentialPressure=from.tangentialPressure,to.tiltX=from.tiltX,to.tiltY=from.tiltY,to.twist=from.twist)}copyMouseData(from,to){from instanceof FederatedMouseEvent&&to instanceof FederatedMouseEvent&&(to.altKey=from.altKey,to.button=from.button,to.buttons=from.buttons,to.client.copyFrom(from.client),to.ctrlKey=from.ctrlKey,to.metaKey=from.metaKey,to.movement.copyFrom(from.movement),to.screen.copyFrom(from.screen),to.shiftKey=from.shiftKey,to.global.copyFrom(from.global))}copyData(from,to){to.isTrusted=from.isTrusted,to.srcElement=from.srcElement,to.timeStamp=performance.now(),to.type=from.type,to.detail=from.detail,to.view=from.view,to.which=from.which,to.layer.copyFrom(from.layer),to.page.copyFrom(from.page)}trackingData(id){return this.mappingState.trackingData[id]||(this.mappingState.trackingData[id]={pressTargetsByButton:{},clicksByButton:{},overTarget:null}),this.mappingState.trackingData[id]}allocateEvent(constructor){return this.eventPool.has(constructor)||this.eventPool.set(constructor,[]),(constructor=this.eventPool.get(constructor).pop()||new constructor(this)).eventPhase=constructor.NONE,constructor.currentTarget=null,constructor.defaultPrevented=!1,constructor.path=null,constructor.target=null,constructor}freeEvent(event){if(event.manager!==this)throw new Error("It is illegal to free an event not managed by this EventBoundary!");var constructor=event.constructor;this.eventPool.has(constructor)||this.eventPool.set(constructor,[]),this.eventPool.get(constructor).push(event)}_notifyListeners(e,type){var listeners=e.currentTarget._events[type];if(listeners)if("fn"in listeners)listeners.once&&e.currentTarget.removeListener(type,listeners.fn,void 0,!0),listeners.fn.call(listeners.context,e);else for(let i=0,j=listeners.length;i<j&&!e.propagationImmediatelyStopped;i++)listeners[i].once&&e.currentTarget.removeListener(type,listeners[i].fn,void 0,!0),listeners[i].fn.call(listeners[i].context,e)}}var __defProp$15=Object.defineProperty,__getOwnPropSymbols$15=Object.getOwnPropertySymbols,__hasOwnProp$15=Object.prototype.hasOwnProperty,__propIsEnum$15=Object.prototype.propertyIsEnumerable,__defNormalProp$15=(obj,key,value)=>key in obj?__defProp$15(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;const TOUCH_TO_POINTER={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"},_EventSystem=class _EventSystem{constructor(renderer){this.supportsTouchEvents="ontouchstart"in globalThis,this.supportsPointerEvents=!!globalThis.PointerEvent,this.domElement=null,this.resolution=1,this.renderer=renderer,this.rootBoundary=new EventBoundary(null),EventsTicker.init(this),this.autoPreventDefault=!0,this._eventsAdded=!1,this._rootPointerEvent=new FederatedPointerEvent(null),this._rootWheelEvent=new FederatedWheelEvent(null),this.cursorStyles={default:"inherit",pointer:"pointer"},this.features=new Proxy(((a,b)=>{for(var prop in b=_EventSystem.defaultEventFeatures||{})__hasOwnProp$15.call(b,prop)&&__defNormalProp$15(a,prop,b[prop]);if(__getOwnPropSymbols$15)for(var prop of __getOwnPropSymbols$15(b))__propIsEnum$15.call(b,prop)&&__defNormalProp$15(a,prop,b[prop]);return a})({}),{set:(target,key,value)=>("globalMove"===key&&(this.rootBoundary.enableGlobalMoveEvents=value),target[key]=value,!0)}),this._onPointerDown=this._onPointerDown.bind(this),this._onPointerMove=this._onPointerMove.bind(this),this._onPointerUp=this._onPointerUp.bind(this),this._onPointerOverOut=this._onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(options){var{canvas,resolution}=this.renderer;this.setTargetElement(canvas),this.resolution=resolution,_EventSystem._defaultEventMode=null!=(canvas=options.eventMode)?canvas:"passive",Object.assign(this.features,null!=(resolution=options.eventFeatures)?resolution:{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(resolution){this.resolution=resolution}destroy(){this.setTargetElement(null),this.renderer=null,this._currentCursor=null}setCursor(mode){mode=mode||"default";let applyStyles=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(applyStyles=!1),this._currentCursor!==mode){this._currentCursor=mode;var style=this.cursorStyles[mode];if(style)switch(typeof style){case"string":applyStyles&&(this.domElement.style.cursor=style);break;case"function":style(mode);break;case"object":applyStyles&&Object.assign(this.domElement.style,style)}else applyStyles&&"string"==typeof mode&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,mode)&&(this.domElement.style.cursor=mode)}}get pointer(){return this._rootPointerEvent}_onPointerDown(nativeEvent){if(this.features.click){this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;var events=this._normalizeToPointerData(nativeEvent);!this.autoPreventDefault||!events[0].isNormalized||!nativeEvent.cancelable&&"cancelable"in nativeEvent||nativeEvent.preventDefault();for(let i=0,j=events.length;i<j;i++){var nativeEvent2=events[i],nativeEvent2=this._bootstrapEvent(this._rootPointerEvent,nativeEvent2);this.rootBoundary.mapEvent(nativeEvent2)}this.setCursor(this.rootBoundary.cursor)}}_onPointerMove(nativeEvent){if(this.features.move){this.rootBoundary.rootTarget=this.renderer.lastObjectRendered,EventsTicker.pointerMoved();var normalizedEvents=this._normalizeToPointerData(nativeEvent);for(let i=0,j=normalizedEvents.length;i<j;i++){var event=this._bootstrapEvent(this._rootPointerEvent,normalizedEvents[i]);this.rootBoundary.mapEvent(event)}this.setCursor(this.rootBoundary.cursor)}}_onPointerUp(nativeEvent){if(this.features.click){this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;var target=nativeEvent.target,outside=(nativeEvent.composedPath&&0<nativeEvent.composedPath().length?nativeEvent.composedPath()[0]:target)!==this.domElement?"outside":"",normalizedEvents=this._normalizeToPointerData(nativeEvent);for(let i=0,j=normalizedEvents.length;i<j;i++){var event=this._bootstrapEvent(this._rootPointerEvent,normalizedEvents[i]);event.type+=outside,this.rootBoundary.mapEvent(event)}this.setCursor(this.rootBoundary.cursor)}}_onPointerOverOut(nativeEvent){if(this.features.click){this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;var normalizedEvents=this._normalizeToPointerData(nativeEvent);for(let i=0,j=normalizedEvents.length;i<j;i++){var event=this._bootstrapEvent(this._rootPointerEvent,normalizedEvents[i]);this.rootBoundary.mapEvent(event)}this.setCursor(this.rootBoundary.cursor)}}onWheel(nativeEvent){this.features.wheel&&(nativeEvent=this.normalizeWheelEvent(nativeEvent),this.rootBoundary.rootTarget=this.renderer.lastObjectRendered,this.rootBoundary.mapEvent(nativeEvent))}setTargetElement(element){this._removeEvents(),this.domElement=element,EventsTicker.domElement=element,this._addEvents()}_addEvents(){var style;!this._eventsAdded&&this.domElement&&(EventsTicker.addTickerListener(),(style=this.domElement.style)&&(globalThis.navigator.msPointerEnabled?(style.msContentZooming="none",style.msTouchAction="none"):this.supportsPointerEvents&&(style.touchAction="none")),this.supportsPointerEvents?(globalThis.document.addEventListener("pointermove",this._onPointerMove,!0),this.domElement.addEventListener("pointerdown",this._onPointerDown,!0),this.domElement.addEventListener("pointerleave",this._onPointerOverOut,!0),this.domElement.addEventListener("pointerover",this._onPointerOverOut,!0),globalThis.addEventListener("pointerup",this._onPointerUp,!0)):(globalThis.document.addEventListener("mousemove",this._onPointerMove,!0),this.domElement.addEventListener("mousedown",this._onPointerDown,!0),this.domElement.addEventListener("mouseout",this._onPointerOverOut,!0),this.domElement.addEventListener("mouseover",this._onPointerOverOut,!0),globalThis.addEventListener("mouseup",this._onPointerUp,!0),this.supportsTouchEvents&&(this.domElement.addEventListener("touchstart",this._onPointerDown,!0),this.domElement.addEventListener("touchend",this._onPointerUp,!0),this.domElement.addEventListener("touchmove",this._onPointerMove,!0))),this.domElement.addEventListener("wheel",this.onWheel,{passive:!0,capture:!0}),this._eventsAdded=!0)}_removeEvents(){var style;this._eventsAdded&&this.domElement&&(EventsTicker.removeTickerListener(),(style=this.domElement.style)&&(globalThis.navigator.msPointerEnabled?(style.msContentZooming="",style.msTouchAction=""):this.supportsPointerEvents&&(style.touchAction="")),this.supportsPointerEvents?(globalThis.document.removeEventListener("pointermove",this._onPointerMove,!0),this.domElement.removeEventListener("pointerdown",this._onPointerDown,!0),this.domElement.removeEventListener("pointerleave",this._onPointerOverOut,!0),this.domElement.removeEventListener("pointerover",this._onPointerOverOut,!0),globalThis.removeEventListener("pointerup",this._onPointerUp,!0)):(globalThis.document.removeEventListener("mousemove",this._onPointerMove,!0),this.domElement.removeEventListener("mousedown",this._onPointerDown,!0),this.domElement.removeEventListener("mouseout",this._onPointerOverOut,!0),this.domElement.removeEventListener("mouseover",this._onPointerOverOut,!0),globalThis.removeEventListener("mouseup",this._onPointerUp,!0),this.supportsTouchEvents&&(this.domElement.removeEventListener("touchstart",this._onPointerDown,!0),this.domElement.removeEventListener("touchend",this._onPointerUp,!0),this.domElement.removeEventListener("touchmove",this._onPointerMove,!0))),this.domElement.removeEventListener("wheel",this.onWheel,!0),this.domElement=null,this._eventsAdded=!1)}mapPositionToPoint(point,x,y){var rect=this.domElement.isConnected?this.domElement.getBoundingClientRect():{x:0,y:0,width:this.domElement.width,height:this.domElement.height,left:0,top:0},resolutionMultiplier=1/this.resolution;point.x=(x-rect.left)*(this.domElement.width/rect.width)*resolutionMultiplier,point.y=(y-rect.top)*(this.domElement.height/rect.height)*resolutionMultiplier}_normalizeToPointerData(event){var tempEvent,normalizedEvents=[];if(this.supportsTouchEvents&&event instanceof TouchEvent)for(let i=0,li=event.changedTouches.length;i<li;i++){var touch=event.changedTouches[i];void 0===touch.button&&(touch.button=0),void 0===touch.buttons&&(touch.buttons=1),void 0===touch.isPrimary&&(touch.isPrimary=1===event.touches.length&&"touchstart"===event.type),void 0===touch.width&&(touch.width=touch.radiusX||1),void 0===touch.height&&(touch.height=touch.radiusY||1),void 0===touch.tiltX&&(touch.tiltX=0),void 0===touch.tiltY&&(touch.tiltY=0),void 0===touch.pointerType&&(touch.pointerType="touch"),void 0===touch.pointerId&&(touch.pointerId=touch.identifier||0),void 0===touch.pressure&&(touch.pressure=touch.force||.5),void 0===touch.twist&&(touch.twist=0),void 0===touch.tangentialPressure&&(touch.tangentialPressure=0),void 0===touch.layerX&&(touch.layerX=touch.offsetX=touch.clientX),void 0===touch.layerY&&(touch.layerY=touch.offsetY=touch.clientY),touch.isNormalized=!0,touch.type=event.type,normalizedEvents.push(touch)}else!globalThis.MouseEvent||event instanceof MouseEvent&&!(this.supportsPointerEvents&&event instanceof globalThis.PointerEvent)?(void 0===(tempEvent=event).isPrimary&&(tempEvent.isPrimary=!0),void 0===tempEvent.width&&(tempEvent.width=1),void 0===tempEvent.height&&(tempEvent.height=1),void 0===tempEvent.tiltX&&(tempEvent.tiltX=0),void 0===tempEvent.tiltY&&(tempEvent.tiltY=0),void 0===tempEvent.pointerType&&(tempEvent.pointerType="mouse"),void 0===tempEvent.pointerId&&(tempEvent.pointerId=1),void 0===tempEvent.pressure&&(tempEvent.pressure=.5),void 0===tempEvent.twist&&(tempEvent.twist=0),void 0===tempEvent.tangentialPressure&&(tempEvent.tangentialPressure=0),tempEvent.isNormalized=!0,normalizedEvents.push(tempEvent)):normalizedEvents.push(event);return normalizedEvents}normalizeWheelEvent(nativeEvent){var event=this._rootWheelEvent;return this._transferMouseData(event,nativeEvent),event.deltaX=nativeEvent.deltaX,event.deltaY=nativeEvent.deltaY,event.deltaZ=nativeEvent.deltaZ,event.deltaMode=nativeEvent.deltaMode,this.mapPositionToPoint(event.screen,nativeEvent.clientX,nativeEvent.clientY),event.global.copyFrom(event.screen),event.offset.copyFrom(event.screen),event.nativeEvent=nativeEvent,event.type=nativeEvent.type,event}_bootstrapEvent(event,nativeEvent){return event.originalEvent=null,event.nativeEvent=nativeEvent,event.pointerId=nativeEvent.pointerId,event.width=nativeEvent.width,event.height=nativeEvent.height,event.isPrimary=nativeEvent.isPrimary,event.pointerType=nativeEvent.pointerType,event.pressure=nativeEvent.pressure,event.tangentialPressure=nativeEvent.tangentialPressure,event.tiltX=nativeEvent.tiltX,event.tiltY=nativeEvent.tiltY,event.twist=nativeEvent.twist,this._transferMouseData(event,nativeEvent),this.mapPositionToPoint(event.screen,nativeEvent.clientX,nativeEvent.clientY),event.global.copyFrom(event.screen),event.offset.copyFrom(event.screen),event.isTrusted=nativeEvent.isTrusted,"pointerleave"===event.type&&(event.type="pointerout"),event.type.startsWith("mouse")&&(event.type=event.type.replace("mouse","pointer")),event.type.startsWith("touch")&&(event.type=TOUCH_TO_POINTER[event.type]||event.type),event}_transferMouseData(event,nativeEvent){event.isTrusted=nativeEvent.isTrusted,event.srcElement=nativeEvent.srcElement,event.timeStamp=performance.now(),event.type=nativeEvent.type,event.altKey=nativeEvent.altKey,event.button=nativeEvent.button,event.buttons=nativeEvent.buttons,event.client.x=nativeEvent.clientX,event.client.y=nativeEvent.clientY,event.ctrlKey=nativeEvent.ctrlKey,event.metaKey=nativeEvent.metaKey,event.movement.x=nativeEvent.movementX,event.movement.y=nativeEvent.movementY,event.page.x=nativeEvent.pageX,event.page.y=nativeEvent.pageY,event.relatedTarget=null,event.shiftKey=nativeEvent.shiftKey}};_EventSystem.extension={name:"events",type:[ExtensionType2.WebGLSystem,ExtensionType2.CanvasSystem,ExtensionType2.WebGPUSystem],priority:-1},_EventSystem.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};let EventSystem=_EventSystem;var UPDATE_PRIORITY2={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,get interactive(){return"dynamic"===this.eventMode||"static"===this.eventMode},set interactive(value){this.eventMode=value?"static":"passive"},_internalEventMode:void 0,get eventMode(){var _a;return null!=(_a=this._internalEventMode)?_a:EventSystem.defaultEventMode},set eventMode(value){this._internalEventMode=value},isInteractive(){return"static"===this.eventMode||"dynamic"===this.eventMode},interactiveChildren:!0,hitArea:null,addEventListener(type,listener,options){var capture="boolean"==typeof options&&options||"object"==typeof options&&options.capture,signal="object"==typeof options?options.signal:void 0,options="object"==typeof options&&!0===options.once;const context="function"==typeof listener?void 0:listener,listenerFn=(type=capture?type+"capture":type,"function"==typeof listener?listener:listener.handleEvent),emitter=this;signal&&signal.addEventListener("abort",()=>{emitter.off(type,listenerFn,context)}),options?emitter.once(type,listenerFn,context):emitter.on(type,listenerFn,context)},removeEventListener(type,listener,options){var options="boolean"==typeof options&&options||"object"==typeof options&&options.capture,context="function"==typeof listener?void 0:listener;listener="function"==typeof listener?listener:listener.handleEvent,this.off(type=options?type+"capture":type,listener,context)},dispatchEvent(e){if(e instanceof FederatedEvent)return e.defaultPrevented=!1,e.path=null,e.target=this,e.manager.dispatchEvent(e),!e.defaultPrevented;throw new Error("Container cannot propagate events outside of the Federated Events API")}};extensions.add(EventSystem),extensions.mixin(Container,UPDATE_PRIORITY2);class DOMPipe{constructor(renderer){this._destroyRenderableBound=this.destroyRenderable.bind(this),this._attachedDomElements=[],this._renderer=renderer,this._renderer.runners.postrender.add(this),this._domElement=document.createElement("div"),this._domElement.style.position="absolute",this._domElement.style.top="0",this._domElement.style.left="0",this._domElement.style.pointerEvents="none",this._domElement.style.zIndex="1000"}addRenderable(domContainer,_instructionSet){this._attachedDomElements.includes(domContainer)||(this._attachedDomElements.push(domContainer),domContainer.on("destroyed",this._destroyRenderableBound))}updateRenderable(_domContainer){}validateRenderable(_domContainer){return!0}destroyRenderable(domContainer){var index=this._attachedDomElements.indexOf(domContainer);-1!==index&&this._attachedDomElements.splice(index,1),domContainer.off("destroyed",this._destroyRenderableBound)}postrender(){var _a,attachedDomElements=this._attachedDomElements;if(0===attachedDomElements.length)this._domElement.remove();else{var canvas=this._renderer.view.canvas;this._domElement.parentNode!==canvas.parentNode&&null!=(_a=canvas.parentNode)&&_a.appendChild(this._domElement),this._domElement.style.transform=`translate(${canvas.offsetLeft}px, ${canvas.offsetTop}px)`;for(let i=0;i<attachedDomElements.length;i++){var wt,ax,anchor,domContainer=attachedDomElements[i],element=domContainer.element;!domContainer.parent||domContainer.globalDisplayStatus<7?(element.remove(),attachedDomElements.splice(i,1),i--):(this._domElement.contains(element)||(element.style.position="absolute",element.style.pointerEvents="auto",this._domElement.appendChild(element)),wt=domContainer.worldTransform,anchor=domContainer._anchor,ax=domContainer.width*anchor.x,anchor=domContainer.height*anchor.y,element.style.transformOrigin=ax+`px ${anchor}px`,element.style.transform=`matrix(${wt.a}, ${wt.b}, ${wt.c}, ${wt.d}, ${wt.tx-ax}, ${wt.ty-anchor})`,element.style.opacity=domContainer.groupAlpha.toString())}}}destroy(){this._renderer.runners.postrender.remove(this);for(let i=0;i<this._attachedDomElements.length;i++){var domContainer=this._attachedDomElements[i];domContainer.off("destroyed",this._destroyRenderableBound),domContainer.element.remove()}this._attachedDomElements.length=0,this._domElement.remove(),this._renderer=null}}DOMPipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"dom"};class ViewContainer extends Container{constructor(options){super(options),this.canBundle=!0,this.allowChildren=!1,this._roundPixels=0,this._lastUsed=-1,this._bounds=new Bounds(0,1,0,0),this._boundsDirty=!0}get bounds(){return this._boundsDirty&&(this.updateBounds(),this._boundsDirty=!1),this._bounds}get roundPixels(){return!!this._roundPixels}set roundPixels(value){this._roundPixels=value?1:0}containsPoint(point){var bounds=this.bounds,{x:point,y}=point;return point>=bounds.minX&&point<=bounds.maxX&&y>=bounds.minY&&y<=bounds.maxY}onViewUpdate(){var renderGroup;this._didViewChangeTick++,this._boundsDirty=!0,!this.didViewUpdate&&(this.didViewUpdate=!0,renderGroup=this.renderGroup||this.parentRenderGroup)&&renderGroup.onChildViewUpdate(this)}destroy(options){super.destroy(options),this._bounds=null}collectRenderablesSimple(instructionSet,renderer,currentLayer){var{renderPipes,renderableGC}=renderer,children=(renderPipes.blendMode.setBlendMode(this,this.groupBlendMode,instructionSet),renderPipes[this.renderPipeId].addRenderable(this,instructionSet),renderableGC.addRenderable(this),this.didViewUpdate=!1,this.children),length=children.length;for(let i=0;i<length;i++)children[i].collectRenderables(instructionSet,renderer,currentLayer)}}var __defProp$14=Object.defineProperty,__getOwnPropSymbols$14=Object.getOwnPropertySymbols,__hasOwnProp$14=Object.prototype.hasOwnProperty,__propIsEnum$14=Object.prototype.propertyIsEnumerable,__defNormalProp$14=(obj,key,value)=>key in obj?__defProp$14(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class DOMContainer extends ViewContainer{constructor(options={}){var anchor=options.anchor;super(((a,b)=>{for(var prop in b=b||{})__hasOwnProp$14.call(b,prop)&&__defNormalProp$14(a,prop,b[prop]);if(__getOwnPropSymbols$14)for(var prop of __getOwnPropSymbols$14(b))__propIsEnum$14.call(b,prop)&&__defNormalProp$14(a,prop,b[prop]);return a})({label:"DOMContainer"},((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$14.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$14)for(var prop of __getOwnPropSymbols$14(source))exclude.indexOf(prop)<0&&__propIsEnum$14.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["element","anchor"]))),this.renderPipeId="dom",this.batched=!1,this._anchor=new Point(0,0),anchor&&(this.anchor=anchor),this.element=options.element||document.createElement("div")}get anchor(){return this._anchor}set anchor(value){"number"==typeof value?this._anchor.set(value):this._anchor.copyFrom(value)}set element(value){this._element!==value&&(this._element=value,this.onViewUpdate())}get element(){return this._element}updateBounds(){var offsetHeight,bounds=this._bounds,element=this._element;element?({offsetWidth:element,offsetHeight}=element,bounds.minX=0,bounds.maxX=element,bounds.minY=0,bounds.maxY=offsetHeight):(bounds.minX=0,bounds.minY=0,bounds.maxX=0,bounds.maxY=0)}destroy(options=!1){super.destroy(options),null!=(options=null==(options=this._element)?void 0:options.parentNode)&&options.removeChild(this._element),this._element=null,this._anchor=null}}extensions.add(DOMPipe);var LoaderParserPriority2={Low:0,0:"Low",Normal:1,1:"Normal",High:2,2:"High"},BrowserAdapter={createCanvas:(width,height)=>{var canvas=document.createElement("canvas");return canvas.width=width,canvas.height=height,canvas},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>{var _a;return null!=(_a=document.baseURI)?_a:window.location.href},getFontFaceSet:()=>document.fonts,fetch:(url,options)=>fetch(url,options),parseXML:xml=>(new DOMParser).parseFromString(xml,"text/xml")};let currentAdapter=BrowserAdapter;const DOMAdapter={get(){return currentAdapter},set(adapter){currentAdapter=adapter}};function assertPath(path2){if("string"!=typeof path2)throw new TypeError("Path must be a string. Received "+JSON.stringify(path2))}function removeUrlParams(url){return url.split("?")[0].split("#")[0]}const path={toPosix(path2){return path2.replace(new RegExp("\\".replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),"/")},isUrl(path2){return/^https?:/.test(this.toPosix(path2))},isDataUrl(path2){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(path2)},isBlobUrl(path2){return path2.startsWith("blob:")},hasProtocol(path2){return/^[^/:]+:/.test(this.toPosix(path2))},getProtocol(path2){return assertPath(path2),path2=this.toPosix(path2),(path2=/^file:\/\/\//.exec(path2)||/^[^/:]+:\/{0,2}/.exec(path2))?path2[0]:""},toAbsolute(url,customBaseUrl,customRootUrl){return assertPath(url),this.isDataUrl(url)||this.isBlobUrl(url)?url:(customBaseUrl=removeUrlParams(this.toPosix(null!=customBaseUrl?customBaseUrl:DOMAdapter.get().getBaseUrl())),customRootUrl=removeUrlParams(this.toPosix(null!=customRootUrl?customRootUrl:this.rootname(customBaseUrl))),(url=this.toPosix(url)).startsWith("/")?path.join(customRootUrl,url.slice(1)):this.isAbsolute(url)?url:this.join(customBaseUrl,url))},normalize(path2){if(assertPath(path2),0===path2.length)return".";if(this.isDataUrl(path2)||this.isBlobUrl(path2))return path2;let protocol="";var isAbsolute=(path2=this.toPosix(path2)).startsWith("/"),trailingSeparator=(this.hasProtocol(path2)&&(protocol=this.rootname(path2),path2=path2.slice(protocol.length)),path2.endsWith("/"));return 0<(path2=function(path2){let res="",lastSegmentLength=0,lastSlash=-1,dots=0,code=-1;for(let i=0;i<=path2.length;++i){if(i<path2.length)code=path2.charCodeAt(i);else{if(47===code)break;code=47}if(47===code){if(lastSlash!==i-1&&1!==dots)if(lastSlash!==i-1&&2===dots){if(res.length<2||2!==lastSegmentLength||46!==res.charCodeAt(res.length-1)||46!==res.charCodeAt(res.length-2))if(2<res.length){var lastSlashIndex=res.lastIndexOf("/");if(lastSlashIndex!==res.length-1){lastSegmentLength=-1===lastSlashIndex?(res="",0):(res=res.slice(0,lastSlashIndex)).length-1-res.lastIndexOf("/"),lastSlash=i,dots=0;continue}}else if(2===res.length||1===res.length){res="",lastSegmentLength=0,lastSlash=i,dots=0;continue}}else 0<res.length?res+="/"+path2.slice(lastSlash+1,i):res=path2.slice(lastSlash+1,i),lastSegmentLength=i-lastSlash-1;lastSlash=i,dots=0}else 46===code&&-1!==dots?++dots:dots=-1}return res}(path2)).length&&trailingSeparator&&(path2+="/"),isAbsolute?"/"+path2:protocol+path2},isAbsolute(path2){return assertPath(path2),path2=this.toPosix(path2),!!this.hasProtocol(path2)||path2.startsWith("/")},join(...segments){if(0===segments.length)return".";let joined;for(let i=0;i<segments.length;++i){var _a,arg=segments[i];assertPath(arg),0<arg.length&&(void 0===joined?joined=arg:(_a=null!=(_a=segments[i-1])?_a:"",this.joinExtensions.includes(this.extname(_a).toLowerCase())?joined+="/../"+arg:joined+="/"+arg))}return void 0===joined?".":this.normalize(joined)},dirname(path2){if(assertPath(path2),0===path2.length)return".";var hasRoot=47===(path2=this.toPosix(path2)).charCodeAt(0);let end=-1,matchedSlash=!0;var proto=this.getProtocol(path2),origpath=path2;for(let i=(path2=path2.slice(proto.length)).length-1;1<=i;--i)if(47===path2.charCodeAt(i)){if(!matchedSlash){end=i;break}}else matchedSlash=!1;return-1===end?hasRoot?"/":this.isUrl(origpath)?proto+path2:proto:hasRoot&&1===end?"//":proto+path2.slice(0,end)},rootname(path2){assertPath(path2),path2=this.toPosix(path2);let root="";var index;return root=path2.startsWith("/")?"/":this.getProtocol(path2),this.isUrl(path2)&&(index=path2.indexOf("/",root.length),(root=-1!==index?path2.slice(0,index):path2).endsWith("/")||(root+="/")),root},basename(path2,ext){assertPath(path2),ext&&assertPath(ext),path2=removeUrlParams(this.toPosix(path2));let start=0,end=-1,matchedSlash=!0,i;if(void 0!==ext&&0<ext.length&&ext.length<=path2.length){if(ext.length===path2.length&&ext===path2)return"";let extIdx=ext.length-1,firstNonSlashEnd=-1;for(i=path2.length-1;0<=i;--i){var code=path2.charCodeAt(i);if(47===code){if(!matchedSlash){start=i+1;break}}else-1===firstNonSlashEnd&&(matchedSlash=!1,firstNonSlashEnd=i+1),0<=extIdx&&(code===ext.charCodeAt(extIdx)?-1==--extIdx&&(end=i):(extIdx=-1,end=firstNonSlashEnd))}return start===end?end=firstNonSlashEnd:-1===end&&(end=path2.length),path2.slice(start,end)}for(i=path2.length-1;0<=i;--i)if(47===path2.charCodeAt(i)){if(!matchedSlash){start=i+1;break}}else-1===end&&(matchedSlash=!1,end=i+1);return-1===end?"":path2.slice(start,end)},extname(path2){assertPath(path2);let startDot=-1,startPart=0,end=-1,matchedSlash=!0,preDotState=0;for(let i=(path2=removeUrlParams(this.toPosix(path2))).length-1;0<=i;--i){var code=path2.charCodeAt(i);if(47===code){if(matchedSlash)continue;startPart=i+1;break}-1===end&&(matchedSlash=!1,end=i+1),46===code?-1===startDot?startDot=i:1!==preDotState&&(preDotState=1):-1!==startDot&&(preDotState=-1)}return-1===startDot||-1===end||0===preDotState||1===preDotState&&startDot===end-1&&startDot===startPart+1?"":path2.slice(startDot,end)},parse(path2){assertPath(path2);var ret={root:"",dir:"",base:"",ext:"",name:""};if(0!==path2.length){(path2=removeUrlParams(this.toPosix(path2))).charCodeAt(0);var code,start,isAbsolute=this.isAbsolute(path2);ret.root=this.rootname(path2),start=isAbsolute||this.hasProtocol(path2)?1:0;let startDot=-1,startPart=0,end=-1,matchedSlash=!0,i=path2.length-1,preDotState=0;for(;i>=start;--i){if(47===(code=path2.charCodeAt(i))){if(matchedSlash)continue;startPart=i+1;break}-1===end&&(matchedSlash=!1,end=i+1),46===code?-1===startDot?startDot=i:1!==preDotState&&(preDotState=1):-1!==startDot&&(preDotState=-1)}-1===startDot||-1===end||0===preDotState||1===preDotState&&startDot===end-1&&startDot===startPart+1?-1!==end&&(0===startPart&&isAbsolute?ret.base=ret.name=path2.slice(1,end):ret.base=ret.name=path2.slice(startPart,end)):(0===startPart&&isAbsolute?(ret.name=path2.slice(1,startDot),ret.base=path2.slice(1,end)):(ret.name=path2.slice(startPart,startDot),ret.base=path2.slice(startPart,end)),ret.ext=path2.slice(startDot,end)),ret.dir=this.dirname(path2)}return ret},sep:"/",delimiter:":",joinExtensions:[".html"]},convertToList=(input,transform,forceTransform=!1)=>(Array.isArray(input)||(input=[input]),transform?input.map(item=>"string"==typeof item||forceTransform?transform(item):item):input);function createStringVariations(string){var result=string.match(/\{(.*?)\}/g),tags=[];if(result){const ids=[];result.forEach(vars=>{vars=vars.substring(1,vars.length-1).split(","),ids.push(vars)}),function processX(base,ids,depth,result,tags){var id=ids[depth];for(let i=0;i<id.length;i++){var value=id[i];depth<ids.length-1?processX(base.replace(result[depth],value),ids,depth+1,result,tags):tags.push(base.replace(result[depth],value))}}(string,ids,0,result,tags)}else tags.push(string);return tags}const isSingleItem=item=>!Array.isArray(item);var __defProp$13=Object.defineProperty,__getOwnPropSymbols$13=Object.getOwnPropertySymbols,__hasOwnProp$13=Object.prototype.hasOwnProperty,__propIsEnum$13=Object.prototype.propertyIsEnumerable,__defNormalProp$13=(obj,key,value)=>key in obj?__defProp$13(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$13=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$13.call(b,prop)&&__defNormalProp$13(a,prop,b[prop]);if(__getOwnPropSymbols$13)for(var prop of __getOwnPropSymbols$13(b))__propIsEnum$13.call(b,prop)&&__defNormalProp$13(a,prop,b[prop]);return a};class Resolver{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(bundleId,assetId)=>""+bundleId+this._bundleIdConnector+assetId,extractAssetIdFromBundle:(bundleId,assetBundleId)=>assetBundleId.replace(""+bundleId+this._bundleIdConnector,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(bundleIdentifier){var _a;if(this._bundleIdConnector=null!=(_a=bundleIdentifier.connector)?_a:this._bundleIdConnector,this._createBundleAssetId=null!=(_a=bundleIdentifier.createBundleAssetId)?_a:this._createBundleAssetId,this._extractAssetIdFromBundle=null!=(_a=bundleIdentifier.extractAssetIdFromBundle)?_a:this._extractAssetIdFromBundle,"bar"!==this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar")))throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...preferOrders){preferOrders.forEach(prefer=>{this._preferredOrder.push(prefer),prefer.priority||(prefer.priority=Object.keys(prefer.params))}),this._resolverHash={}}set basePath(basePath){this._basePath=basePath}get basePath(){return this._basePath}set rootPath(rootPath){this._rootPath=rootPath}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(searchParams){if("string"==typeof searchParams)this._defaultSearchParams=searchParams;else{const queryValues=searchParams;this._defaultSearchParams=Object.keys(queryValues).map(key=>encodeURIComponent(key)+"="+encodeURIComponent(queryValues[key])).join("&")}}getAlias(asset){var{alias:asset,src}=asset;return convertToList(asset||src,value=>"string"==typeof value?value:Array.isArray(value)?value.map(v=>{var _a;return null!=(_a=null==v?void 0:v.src)?_a:v}):null!=value&&value.src?value.src:value,!0)}addManifest(manifest){this._manifest&&warn("[Resolver] Manifest already exists, this will be overwritten"),(this._manifest=manifest).bundles.forEach(bundle=>{this.addBundle(bundle.name,bundle.assets)})}addBundle(bundleId,assets){const assetNames=[];let convertedAssets=assets;(convertedAssets=Array.isArray(assets)?convertedAssets:Object.entries(assets).map(([alias,src])=>"string"==typeof src||Array.isArray(src)?{alias:alias,src:src}:__spreadValues$13({alias:alias},src))).forEach(asset=>{var bundleAssetId,srcs=asset.src,aliases="string"==typeof(aliases=asset.alias)?(bundleAssetId=this._createBundleAssetId(bundleId,aliases),assetNames.push(bundleAssetId),[aliases,bundleAssetId]):(bundleAssetId=aliases.map(name=>this._createBundleAssetId(bundleId,name)),assetNames.push(...bundleAssetId),[...aliases,...bundleAssetId]);this.add(__spreadValues$13(__spreadValues$13({},asset),{alias:aliases,src:srcs}))}),this._bundles[bundleId]=assetNames}add(aliases){var assets=[];Array.isArray(aliases)?assets.push(...aliases):assets.push(aliases);let keyCheck;keyCheck=key=>{this.hasKey(key)&&warn(`[Resolver] already has key: ${key} overwriting`)},convertToList(assets).forEach(asset=>{var src=asset.src;let{data,format,loadParser}=asset;src=convertToList(src).map(src2=>"string"==typeof src2?createStringVariations(src2):Array.isArray(src2)?src2:[src2]);const aliasesToUse=this.getAlias(asset),resolvedAssets=(Array.isArray(aliasesToUse)?aliasesToUse.forEach(keyCheck):keyCheck(aliasesToUse),[]);src.forEach(srcs=>{srcs.forEach(src2=>{var _a;let formattedAsset={};if("object"!=typeof src2){formattedAsset.src=src2;for(let i=0;i<this._parsers.length;i++){var parser=this._parsers[i];if(parser.test(src2)){formattedAsset=parser.parse(src2);break}}}else data=null!=(_a=src2.data)?_a:data,format=null!=(_a=src2.format)?_a:format,loadParser=null!=(_a=src2.loadParser)?_a:loadParser,formattedAsset=__spreadValues$13(__spreadValues$13({},formattedAsset),src2);if(!aliasesToUse)throw new Error("[Resolver] alias is undefined for this asset: "+formattedAsset.src);formattedAsset=this._buildResolvedAsset(formattedAsset,{aliases:aliasesToUse,data:data,format:format,loadParser:loadParser}),resolvedAssets.push(formattedAsset)})}),aliasesToUse.forEach(alias=>{this._assetMap[alias]=resolvedAssets})})}resolveBundle(bundleIds){var singleAsset=isSingleItem(bundleIds);bundleIds=convertToList(bundleIds);const out={};return bundleIds.forEach(bundleId=>{var assetNames=this._bundles[bundleId];if(assetNames){var results=this.resolve(assetNames),assets={};for(const key in results){var asset=results[key];assets[this._extractAssetIdFromBundle(bundleId,key)]=asset}out[bundleId]=assets}}),singleAsset?out[bundleIds[0]]:out}resolveUrl(key){var result=this.resolve(key);if("string"==typeof key)return result.src;var out={};for(const i in result)out[i]=result[i].src;return out}resolve(keys){var singleAsset=isSingleItem(keys);keys=convertToList(keys);const result={};return keys.forEach(key=>{if(!this._resolverHash[key])if(this._assetMap[key]){let assets=this._assetMap[key];const preferredOrder=this._getPreferredOrder(assets);null!=preferredOrder&&preferredOrder.priority.forEach(priorityKey=>{preferredOrder.params[priorityKey].forEach(value=>{var filteredAssets=assets.filter(asset=>!!asset[priorityKey]&&asset[priorityKey]===value);filteredAssets.length&&(assets=filteredAssets)})}),this._resolverHash[key]=assets[0]}else this._resolverHash[key]=this._buildResolvedAsset({alias:[key],src:key},{});result[key]=this._resolverHash[key]}),singleAsset?result[keys[0]]:result}hasKey(key){return!!this._assetMap[key]}hasBundle(key){return!!this._bundles[key]}_getPreferredOrder(assets){for(let i=0;i<assets.length;i++){const asset=assets[i];var preferred=this._preferredOrder.find(preference=>preference.params.format.includes(asset.format));if(preferred)return preferred}return this._preferredOrder[0]}_appendDefaultSearchParams(url){return this._defaultSearchParams?url+(/\?/.test(url)?"&":"?")+this._defaultSearchParams:url}_buildResolvedAsset(formattedAsset,data){var{aliases:data,data:assetData,loadParser,format}=data;return(this._basePath||this._rootPath)&&(formattedAsset.src=path.toAbsolute(formattedAsset.src,this._basePath,this._rootPath)),formattedAsset.alias=null!=(data=null!=data?data:formattedAsset.alias)?data:[formattedAsset.src],formattedAsset.src=this._appendDefaultSearchParams(formattedAsset.src),formattedAsset.data=__spreadValues$13(__spreadValues$13({},assetData||{}),formattedAsset.data),formattedAsset.loadParser=null!=loadParser?loadParser:formattedAsset.loadParser,formattedAsset.format=null!=(data=null!=format?format:formattedAsset.format)?data:getUrlExtension(formattedAsset.src),formattedAsset}}function getUrlExtension(url){return url.split(".").pop().split("?").shift().split("#").shift()}Resolver.RETINA_PREFIX=/@([0-9\.]+)x/;const copySearchParams=(targetUrl,sourceUrl)=>((sourceUrl=sourceUrl.split("?")[1])&&(targetUrl+="?"+sourceUrl),targetUrl),_Spritesheet=class _Spritesheet{constructor(texture,data){this.linkedSheets=[],this._texture=texture instanceof Texture?texture:null,this.textureSource=texture.source,this.textures={},this.animations={},this.data=data,(data=parseFloat(data.meta.scale))?(this.resolution=data,texture.source.resolution=this.resolution):this.resolution=texture.source._resolution,this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}parse(){return new Promise(resolve=>{this._callback=resolve,this._batchIndex=0,this._frameKeys.length<=_Spritesheet.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(initialFrameIndex){let frameIndex=initialFrameIndex;for(var maxFrames=_Spritesheet.BATCH_SIZE;frameIndex-initialFrameIndex<maxFrames&&frameIndex<this._frameKeys.length;){var i=this._frameKeys[frameIndex],data=this._frames[i],rect=data.frame;if(rect){let frame,trim=null;var sourceSize=!1!==data.trimmed&&data.sourceSize?data.sourceSize:data.frame,sourceSize=new Rectangle(0,0,Math.floor(sourceSize.w)/this.resolution,Math.floor(sourceSize.h)/this.resolution);frame=data.rotated?new Rectangle(Math.floor(rect.x)/this.resolution,Math.floor(rect.y)/this.resolution,Math.floor(rect.h)/this.resolution,Math.floor(rect.w)/this.resolution):new Rectangle(Math.floor(rect.x)/this.resolution,Math.floor(rect.y)/this.resolution,Math.floor(rect.w)/this.resolution,Math.floor(rect.h)/this.resolution),!1!==data.trimmed&&data.spriteSourceSize&&(trim=new Rectangle(Math.floor(data.spriteSourceSize.x)/this.resolution,Math.floor(data.spriteSourceSize.y)/this.resolution,Math.floor(rect.w)/this.resolution,Math.floor(rect.h)/this.resolution)),this.textures[i]=new Texture({source:this.textureSource,frame:frame,orig:sourceSize,trim:trim,rotate:data.rotated?2:0,defaultAnchor:data.anchor,defaultBorders:data.borders,label:i.toString()})}frameIndex++}}_processAnimations(){var animations=this.data.animations||{};for(const animName in animations){this.animations[animName]=[];for(let i=0;i<animations[animName].length;i++){var frameName=animations[animName][i];this.animations[animName].push(this.textures[frameName])}}}_parseComplete(){var callback=this._callback;this._callback=null,this._batchIndex=0,callback.call(this,this.textures)}_nextBatch(){this._processFrames(this._batchIndex*_Spritesheet.BATCH_SIZE),this._batchIndex++,setTimeout(()=>{this._batchIndex*_Spritesheet.BATCH_SIZE<this._frameKeys.length?this._nextBatch():(this._processAnimations(),this._parseComplete())},0)}destroy(destroyBase=!1){for(const i in this.textures)this.textures[i].destroy();this._frames=null,this._frameKeys=null,this.data=null,this.textures=null,destroyBase&&(null!=(destroyBase=this._texture)&&destroyBase.destroy(),this.textureSource.destroy()),this._texture=null,this.textureSource=null,this.linkedSheets=[]}};_Spritesheet.BATCH_SIZE=1e3;let Spritesheet=_Spritesheet;const validImages=["jpg","png","jpeg","avif","webp","basis","etc2","bc7","bc6h","bc5","bc4","bc3","bc2","bc1","eac","astc"];var spritesheetAsset={extension:ExtensionType2.Asset,cache:{test:asset=>asset instanceof Spritesheet,getCacheableAssets:(keys,asset)=>function getCacheableAssets(keys,asset,ignoreMultiPack){const out={};if(keys.forEach(key=>{out[key]=asset}),Object.keys(asset.textures).forEach(key=>{out[key]=asset.textures[key]}),!ignoreMultiPack){const basePath=path.dirname(keys[0]);asset.linkedSheets.forEach((item,i)=>{i=getCacheableAssets([basePath+"/"+asset.data.meta.related_multi_packs[i]],item,!0),Object.assign(out,i)})}return out}(keys,asset,!1)},resolver:{extension:{type:ExtensionType2.ResolveParser,name:"resolveSpritesheet"},test:value=>{var extension=(value=value.split("?")[0].split(".")).pop(),value=value.pop();return"json"===extension&&validImages.includes(value)},parse:value=>{var _a,split=value.split(".");return{resolution:parseFloat(null!=(_a=null==(_a=Resolver.RETINA_PREFIX.exec(value))?void 0:_a[1])?_a:"1"),format:split[split.length-2],src:value}}},loader:{name:"spritesheetLoader",extension:{type:ExtensionType2.LoadParser,priority:LoaderParserPriority2.Normal,name:"spritesheetLoader"},async testParse(asset,options){return".json"===path.extname(options.src).toLowerCase()&&!!asset.frames},async parse(asset,options,loader){var _c,texture,{texture:_a,imageFilename,textureOptions}=null!=(_a=null==options?void 0:options.data)?_a:{};let basePath=path.dirname(options.src);basePath&&basePath.lastIndexOf("/")!==basePath.length-1&&(basePath+="/"),texture=_a instanceof Texture?_a:(_a=copySearchParams(basePath+(null!=imageFilename?imageFilename:asset.meta.image),options.src),(await loader.load([{src:_a,data:textureOptions}]))[_a]);const spritesheet=new Spritesheet(texture.source,asset);if(await spritesheet.parse(),_a=null==(imageFilename=null==asset?void 0:asset.meta)?void 0:imageFilename.related_multi_packs,Array.isArray(_a)){var itemUrl,promises=[];for(const item of _a)"string"!=typeof item||(itemUrl=basePath+item,null!=(_c=options.data)&&_c.ignoreMultiPack)||(itemUrl=copySearchParams(itemUrl,options.src),promises.push(loader.load({src:itemUrl,data:{textureOptions:textureOptions,ignoreMultiPack:!0}})));asset=await Promise.all(promises),(spritesheet.linkedSheets=asset).forEach(item=>{item.linkedSheets=[spritesheet].concat(spritesheet.linkedSheets.filter(sp=>sp!==item))})}return spritesheet},async unload(spritesheet,_resolvedAsset,loader){await loader.unload(spritesheet.textureSource._sourceOrigin),spritesheet.destroy(!1)}}};function updateQuadBounds(bounds,anchor,texture){var sourceWidth,sourceHeight,{width,height}=texture.orig;(texture=texture.trim)?(sourceWidth=texture.width,sourceHeight=texture.height,bounds.minX=texture.x-anchor._x*width,bounds.maxX=bounds.minX+sourceWidth,bounds.minY=texture.y-anchor._y*height,bounds.maxY=bounds.minY+sourceHeight):(bounds.minX=-anchor._x*width,bounds.maxX=bounds.minX+width,bounds.minY=-anchor._y*height,bounds.maxY=bounds.minY+height)}extensions.add(spritesheetAsset);var __defProp$12=Object.defineProperty,__getOwnPropSymbols$12=Object.getOwnPropertySymbols,__hasOwnProp$12=Object.prototype.hasOwnProperty,__propIsEnum$12=Object.prototype.propertyIsEnumerable,__defNormalProp$12=(obj,key,value)=>key in obj?__defProp$12(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class Sprite extends ViewContainer{constructor(options=Texture.EMPTY){var options=options instanceof Texture?{texture:options}:options,{texture=Texture.EMPTY,anchor,roundPixels,width,height}=options;super(((a,b)=>{for(var prop in b=b||{})__hasOwnProp$12.call(b,prop)&&__defNormalProp$12(a,prop,b[prop]);if(__getOwnPropSymbols$12)for(var prop of __getOwnPropSymbols$12(b))__propIsEnum$12.call(b,prop)&&__defNormalProp$12(a,prop,b[prop]);return a})({label:"Sprite"},((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$12.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$12)for(var prop of __getOwnPropSymbols$12(source))exclude.indexOf(prop)<0&&__propIsEnum$12.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["texture","anchor","roundPixels","width","height"]))),this.renderPipeId="sprite",this.batched=!0,this._visualBounds={minX:0,maxX:1,minY:0,maxY:0},this._anchor=new ObservablePoint({_onUpdate:()=>{this.onViewUpdate()}}),anchor?this.anchor=anchor:texture.defaultAnchor&&(this.anchor=texture.defaultAnchor),this.texture=texture,this.allowChildren=!1,this.roundPixels=null!=roundPixels&&roundPixels,void 0!==width&&(this.width=width),void 0!==height&&(this.height=height)}static from(source,skipCache=!1){return source instanceof Texture?new Sprite(source):new Sprite(Texture.from(source,skipCache))}set texture(value){value=value||Texture.EMPTY;var currentTexture=this._texture;currentTexture!==value&&(currentTexture&&currentTexture.dynamic&&currentTexture.off("update",this.onViewUpdate,this),value.dynamic&&value.on("update",this.onViewUpdate,this),this._texture=value,this._width&&this._setWidth(this._width,this._texture.orig.width),this._height&&this._setHeight(this._height,this._texture.orig.height),this.onViewUpdate())}get texture(){return this._texture}get visualBounds(){return updateQuadBounds(this._visualBounds,this._anchor,this._texture),this._visualBounds}get sourceBounds(){return deprecation("8.6.1","Sprite.sourceBounds is deprecated, use visualBounds instead."),this.visualBounds}updateBounds(){var anchor=this._anchor,texture=this._texture,bounds=this._bounds,{width:texture,height}=texture.orig;bounds.minX=-anchor._x*texture,bounds.maxX=bounds.minX+texture,bounds.minY=-anchor._y*height,bounds.maxY=bounds.minY+height}destroy(options=!1){super.destroy(options),("boolean"==typeof options?options:null!=options&&options.texture)&&(options="boolean"==typeof options?options:null==options?void 0:options.textureSource,this._texture.destroy(options)),this._texture=null,this._visualBounds=null,this._bounds=null,this._anchor=null}get anchor(){return this._anchor}set anchor(value){"number"==typeof value?this._anchor.set(value):this._anchor.copyFrom(value)}get width(){return Math.abs(this.scale.x)*this._texture.orig.width}set width(value){this._setWidth(value,this._texture.orig.width),this._width=value}get height(){return Math.abs(this.scale.y)*this._texture.orig.height}set height(value){this._setHeight(value,this._texture.orig.height),this._height=value}getSize(out){return(out=out||{}).width=Math.abs(this.scale.x)*this._texture.orig.width,out.height=Math.abs(this.scale.y)*this._texture.orig.height,out}setSize(value,height){var _a;"object"==typeof value?(height=null!=(_a=value.height)?_a:value.width,value=value.width):null==height&&(height=value),void 0!==value&&this._setWidth(value,this._texture.orig.width),void 0!==height&&this._setHeight(height,this._texture.orig.height)}}const tempBounds$4=new Bounds;function addMaskBounds(mask,bounds,skipUpdateTransform){var boundsToMask=tempBounds$4;mask.measurable=!0,getGlobalBounds(mask,skipUpdateTransform,boundsToMask),bounds.addBoundsMask(boundsToMask),mask.measurable=!1}function addMaskLocalBounds(mask,bounds,localRoot){var boundsToMask=boundsPool.get(),tempMatrix=(mask.measurable=!0,matrixPool.get().identity());getLocalBounds(mask,boundsToMask,getMatrixRelativeToParent(mask,localRoot,tempMatrix)),mask.measurable=!1,bounds.addBoundsMask(boundsToMask),matrixPool.return(tempMatrix),boundsPool.return(boundsToMask)}function getMatrixRelativeToParent(target,root,matrix){return target?target!==root&&(getMatrixRelativeToParent(target.parent,root,matrix),target.updateLocalTransform(),matrix.append(target.localTransform)):warn("Mask bounds, renderable is not inside the root container"),matrix}class AlphaMask{constructor(options){this.priority=0,this.inverse=!1,this.pipe="alphaMask",null!=options&&options.mask&&this.init(options.mask)}init(mask){this.mask=mask,this.renderMaskToTexture=!(mask instanceof Sprite),this.mask.renderable=this.renderMaskToTexture,this.mask.includeInBuild=!this.renderMaskToTexture,this.mask.measurable=!1}reset(){this.mask.measurable=!0,this.mask=null}addBounds(bounds,skipUpdateTransform){this.inverse||addMaskBounds(this.mask,bounds,skipUpdateTransform)}addLocalBounds(bounds,localRoot){addMaskLocalBounds(this.mask,bounds,localRoot)}containsPoint(point,hitTestFn){return hitTestFn(this.mask,point)}destroy(){this.reset()}static test(mask){return mask instanceof Sprite}}AlphaMask.extension=ExtensionType2.MaskEffect;class ColorMask{constructor(options){this.priority=0,this.pipe="colorMask",null!=options&&options.mask&&this.init(options.mask)}init(mask){this.mask=mask}destroy(){}static test(mask){return"number"==typeof mask}}ColorMask.extension=ExtensionType2.MaskEffect;class StencilMask{constructor(options){this.priority=0,this.pipe="stencilMask",null!=options&&options.mask&&this.init(options.mask)}init(mask){this.mask=mask,this.mask.includeInBuild=!1,this.mask.measurable=!1}reset(){this.mask.measurable=!0,this.mask.includeInBuild=!0,this.mask=null}addBounds(bounds,skipUpdateTransform){addMaskBounds(this.mask,bounds,skipUpdateTransform)}addLocalBounds(bounds,localRoot){addMaskLocalBounds(this.mask,bounds,localRoot)}containsPoint(point,hitTestFn){return hitTestFn(this.mask,point)}destroy(){this.reset()}static test(mask){return mask instanceof Container}}StencilMask.extension=ExtensionType2.MaskEffect;class CanvasSource extends TextureSource{constructor(options){options.resource||(options.resource=DOMAdapter.get().createCanvas()),options.width||(options.width=options.resource.width,options.autoDensity)||(options.width/=options.resolution),options.height||(options.height=options.resource.height,options.autoDensity)||(options.height/=options.resolution),super(options),this.uploadMethodId="image",this.autoDensity=options.autoDensity,this.resizeCanvas(),this.transparent=!!options.transparent}resizeCanvas(){this.autoDensity&&"style"in this.resource&&(this.resource.style.width=this.width+"px",this.resource.style.height=this.height+"px"),this.resource.width===this.pixelWidth&&this.resource.height===this.pixelHeight||(this.resource.width=this.pixelWidth,this.resource.height=this.pixelHeight)}resize(width=this.width,height=this.height,resolution=this._resolution){return(width=super.resize(width,height,resolution))&&this.resizeCanvas(),width}static test(resource){return globalThis.HTMLCanvasElement&&resource instanceof HTMLCanvasElement||globalThis.OffscreenCanvas&&resource instanceof OffscreenCanvas}get context2D(){return this._context2D||(this._context2D=this.resource.getContext("2d"))}}CanvasSource.extension=ExtensionType2.TextureSource;class ImageSource extends TextureSource{constructor(options){var canvas;options.resource&&globalThis.HTMLImageElement&&options.resource instanceof HTMLImageElement&&((canvas=DOMAdapter.get().createCanvas(options.resource.width,options.resource.height)).getContext("2d").drawImage(options.resource,0,0,options.resource.width,options.resource.height),options.resource=canvas,warn("ImageSource: Image element passed, converting to canvas. Use CanvasSource instead.")),super(options),this.uploadMethodId="image",this.autoGarbageCollect=!0}static test(resource){return globalThis.HTMLImageElement&&resource instanceof HTMLImageElement||"undefined"!=typeof ImageBitmap&&resource instanceof ImageBitmap||globalThis.VideoFrame&&resource instanceof VideoFrame}}ImageSource.extension=ExtensionType2.TextureSource;let promise;async function detectVideoAlphaMode(){return null!=promise?promise:promise=(async()=>{var texture,framebuffer,video,gl=document.createElement("canvas").getContext("webgl");return gl&&(video=await new Promise(resolve=>{const video2=document.createElement("video");video2.onloadeddata=()=>resolve(video2),video2.onerror=()=>resolve(null),video2.autoplay=!1,video2.crossOrigin="anonymous",video2.preload="auto",video2.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",video2.load()}))&&(texture=gl.createTexture(),gl.bindTexture(gl.TEXTURE_2D,texture),framebuffer=gl.createFramebuffer(),gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0),gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL,gl.NONE),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,video),video=new Uint8Array(4),gl.readPixels(0,0,1,1,gl.RGBA,gl.UNSIGNED_BYTE,video),gl.deleteFramebuffer(framebuffer),gl.deleteTexture(texture),null!=(framebuffer=gl.getExtension("WEBGL_lose_context"))&&framebuffer.loseContext(),video[0]<=video[3])?"premultiplied-alpha":"premultiply-alpha-on-upload"})(),promise}var __defProp$11=Object.defineProperty,__defProps$o=Object.defineProperties,__getOwnPropDescs$o=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$11=Object.getOwnPropertySymbols,__hasOwnProp$11=Object.prototype.hasOwnProperty,__propIsEnum$11=Object.prototype.propertyIsEnumerable,__defNormalProp$11=(obj,key,value)=>key in obj?__defProp$11(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$11=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$11.call(b,prop)&&__defNormalProp$11(a,prop,b[prop]);if(__getOwnPropSymbols$11)for(var prop of __getOwnPropSymbols$11(b))__propIsEnum$11.call(b,prop)&&__defNormalProp$11(a,prop,b[prop]);return a};const _VideoSource=class _VideoSource extends TextureSource{constructor(options){var _a;super(options),this.isReady=!1,this.uploadMethodId="video",options=__spreadValues$11(__spreadValues$11({},_VideoSource.defaultOptions),options),this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=options.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=!1!==options.autoPlay,this.alphaMode=null!=(_a=options.alphaMode)?_a:"premultiply-alpha-on-upload",this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onCanPlayThrough=this._onCanPlayThrough.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),!1!==options.autoLoad&&this.load()}updateFrame(){var elapsedMS;this.destroyed||(this._updateFPS&&(elapsedMS=Ticker.shared.elapsedMS*this.resource.playbackRate,this._msToNextUpdate=Math.floor(this._msToNextUpdate-elapsedMS)),(!this._updateFPS||this._msToNextUpdate<=0)&&(this._msToNextUpdate=this._updateFPS?Math.floor(1e3/this._updateFPS):0),this.isValid&&this.update())}_videoFrameRequestCallback(){this.updateFrame(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback)}get isValid(){return!!this.resource.videoWidth&&!!this.resource.videoHeight}async load(){if(!this._load){const source=this.resource,options=this.options;(source.readyState===source.HAVE_ENOUGH_DATA||source.readyState===source.HAVE_FUTURE_DATA)&&source.width&&source.height&&(source.complete=!0),source.addEventListener("play",this._onPlayStart),source.addEventListener("pause",this._onPlayStop),source.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._mediaReady():(options.preload||source.addEventListener("canplay",this._onCanPlay),source.addEventListener("canplaythrough",this._onCanPlayThrough),source.addEventListener("error",this._onError,!0)),this.alphaMode=await detectVideoAlphaMode(),this._load=new Promise((resolve,reject)=>{this.isValid?resolve(this):(this._resolve=resolve,this._reject=reject,void 0!==options.preloadTimeoutMs&&(this._preloadTimeout=setTimeout(()=>{this._onError(new ErrorEvent(`Preload exceeded timeout of ${options.preloadTimeoutMs}ms`))})),source.load())})}return this._load}_onError(event){this.resource.removeEventListener("error",this._onError,!0),this.emit("error",event),this._reject&&(this._reject(event),this._reject=null,this._resolve=null)}_isSourcePlaying(){var source=this.resource;return!source.paused&&!source.ended}_isSourceReady(){return 2<this.resource.readyState}_onPlayStart(){this.isValid||this._mediaReady(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0)}_onCanPlay(){this.resource.removeEventListener("canplay",this._onCanPlay),this._mediaReady()}_onCanPlayThrough(){this.resource.removeEventListener("canplaythrough",this._onCanPlay),this._preloadTimeout&&(clearTimeout(this._preloadTimeout),this._preloadTimeout=void 0),this._mediaReady()}_mediaReady(){var source=this.resource;this.isValid&&(this.isReady=!0,this.resize(source.videoWidth,source.videoHeight)),this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0,this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&this.resource.play()}destroy(){this._configureAutoUpdate();var source=this.resource;source&&(source.removeEventListener("play",this._onPlayStart),source.removeEventListener("pause",this._onPlayStop),source.removeEventListener("seeked",this._onSeeked),source.removeEventListener("canplay",this._onCanPlay),source.removeEventListener("canplaythrough",this._onCanPlayThrough),source.removeEventListener("error",this._onError,!0),source.pause(),source.src="",source.load()),super.destroy()}get autoUpdate(){return this._autoUpdate}set autoUpdate(value){value!==this._autoUpdate&&(this._autoUpdate=value,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(value){value!==this._updateFPS&&(this._updateFPS=value,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.resource.requestVideoFrameCallback?(this._isConnectedToTicker&&(Ticker.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),null===this._videoFrameRequestCallbackHandle&&(this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback))):(null!==this._videoFrameRequestCallbackHandle&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(Ticker.shared.add(this.updateFrame,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(null!==this._videoFrameRequestCallbackHandle&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(Ticker.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(resource){return globalThis.HTMLVideoElement&&resource instanceof HTMLVideoElement}};_VideoSource.extension=ExtensionType2.TextureSource,_VideoSource.defaultOptions=(a=>__defProps$o(a,__getOwnPropDescs$o({autoLoad:!0,autoPlay:!0,updateFPS:0,crossorigin:!0,loop:!1,muted:!0,playsinline:!0,preload:!1})))(__spreadValues$11({},TextureSource.defaultOptions)),_VideoSource.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let VideoSource=_VideoSource;const Cache=new class{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(key){return this._cache.has(key)}get(key){var result=this._cache.get(key);return result||warn(`[Assets] Asset id ${key} was not found in the Cache`),result}set(key,value){var keys=convertToList(key);let cacheableAssets;for(let i=0;i<this.parsers.length;i++){var parser=this.parsers[i];if(parser.test(value)){cacheableAssets=parser.getCacheableAssets(keys,value);break}}const cacheableMap=new Map(Object.entries(cacheableAssets||{})),cachedAssets=(cacheableAssets||keys.forEach(key2=>{cacheableMap.set(key2,value)}),{cacheKeys:key=[...cacheableMap.keys()],keys:keys});keys.forEach(key2=>{this._cacheMap.set(key2,cachedAssets)}),key.forEach(key2=>{var val=cacheableAssets?cacheableAssets[key2]:value;this._cache.has(key2)&&this._cache.get(key2)!==val&&warn("[Cache] already has key:",key2),this._cache.set(key2,cacheableMap.get(key2))})}remove(key){var cacheMap;this._cacheMap.has(key)?((cacheMap=this._cacheMap.get(key)).cacheKeys.forEach(key2=>{this._cache.delete(key2)}),cacheMap.keys.forEach(key2=>{this._cacheMap.delete(key2)})):warn(`[Assets] Asset id ${key} was not found in the Cache`)}get parsers(){return this._parsers}},sources=[];function textureSourceFrom(options={}){var hasResource=options&&options.resource,res=hasResource?options.resource:options,opts=hasResource?options:{resource:options};for(let i=0;i<sources.length;i++){var Source=sources[i];if(Source.test(res))return new Source(opts)}throw new Error("Could not find a source type for resource: "+opts.resource)}function resourceToTexture(options={},skipCache=!1){var hasResource=options&&options.resource;const resource=hasResource?options.resource:options;return hasResource=hasResource?options:{resource:options},!skipCache&&Cache.has(resource)?Cache.get(resource):((options=new Texture({source:textureSourceFrom(hasResource)})).on("destroy",()=>{Cache.has(resource)&&Cache.remove(resource)}),skipCache||Cache.set(resource,options),options)}function textureFrom(id,skipCache=!1){return"string"==typeof id?Cache.get(id):id instanceof TextureSource?new Texture({source:id}):resourceToTexture(id,skipCache)}extensions.handleByList(ExtensionType2.TextureSource,sources),Texture.from=textureFrom,TextureSource.from=textureSourceFrom,extensions.add(AlphaMask,ColorMask,StencilMask,VideoSource,ImageSource,CanvasSource,BufferImageSource);class BindGroup{constructor(resources){this.resources=Object.create(null),this._dirty=!0;let index=0;for(const i in resources){var resource=resources[i];this.setResource(resource,index++)}this._updateKey()}_updateKey(){if(this._dirty){this._dirty=!1;var keyParts=[];let index=0;for(const i in this.resources)keyParts[index++]=this.resources[i]._resourceId;this._key=keyParts.join("|")}}setResource(resource,index){var currentResource=this.resources[index];resource!==currentResource&&(currentResource&&null!=(currentResource=resource.off)&&currentResource.call(resource,"change",this.onResourceChange,this),null!=(currentResource=resource.on)&&currentResource.call(resource,"change",this.onResourceChange,this),this.resources[index]=resource,this._dirty=!0)}getResource(index){return this.resources[index]}_touch(tick){var resources=this.resources;for(const i in resources)resources[i]._touched=tick}destroy(){var _a,resources=this.resources;for(const i in resources){var resource=resources[i];null!=(_a=resource.off)&&_a.call(resource,"change",this.onResourceChange,this)}this.resources=null}onResourceChange(resource){if(this._dirty=!0,resource.destroyed){var resources=this.resources;for(const i in resources)resources[i]===resource&&(resources[i]=null)}else this._updateKey()}}let context;function getTestContext(){var canvas;return(!context||null!=context&&context.isContextLost())&&(canvas=DOMAdapter.get().createCanvas(),context=canvas.getContext("webgl",{})),context}const fragTemplate$1=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join("\n");function checkMaxIfStatementsInShader(maxIfs,gl){if(0===maxIfs)throw new Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`");var shader=gl.createShader(gl.FRAGMENT_SHADER);try{for(;;){var fragmentSrc=fragTemplate$1.replace(/%forloop%/gi,function(maxIfs){let src="";for(let i=0;i<maxIfs;++i)0<i&&(src+="\nelse "),i<maxIfs-1&&(src+=`if(test == ${i}.0){}`);return src}(maxIfs));if(gl.shaderSource(shader,fragmentSrc),gl.compileShader(shader),gl.getShaderParameter(shader,gl.COMPILE_STATUS))break;maxIfs=maxIfs/2|0}}finally{gl.deleteShader(shader)}return maxIfs}let maxTexturesPerBatchCache=null;function getMaxTexturesPerBatch(){var gl;return maxTexturesPerBatchCache||(gl=getTestContext(),maxTexturesPerBatchCache=checkMaxIfStatementsInShader(maxTexturesPerBatchCache=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS),gl),null!=(gl=gl.getExtension("WEBGL_lose_context"))&&gl.loseContext()),maxTexturesPerBatchCache}const cachedGroups={};function getTextureBatchBindGroup(textures,size){let uid=2166136261;for(let i=0;i<size;i++)uid^=textures[i].uid,uid=Math.imul(uid,16777619),uid>>>=0;return cachedGroups[uid]||function(textures,size,key){var bindGroupResources={};let bindIndex=0;maxTextures=maxTextures||getMaxTexturesPerBatch();for(let i=0;i<maxTextures;i++){var texture=i<size?textures[i]:Texture.EMPTY.source;bindGroupResources[bindIndex++]=texture.source,bindGroupResources[bindIndex++]=texture.style}var bindGroup=new BindGroup(bindGroupResources);return cachedGroups[key]=bindGroup}(textures,size,uid)}let maxTextures=0;class ViewableBuffer{constructor(sizeOrBuffer){"number"==typeof sizeOrBuffer?this.rawBinaryData=new ArrayBuffer(sizeOrBuffer):sizeOrBuffer instanceof Uint8Array?this.rawBinaryData=sizeOrBuffer.buffer:this.rawBinaryData=sizeOrBuffer,this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData),this.size=this.rawBinaryData.byteLength}get int8View(){return this._int8View||(this._int8View=new Int8Array(this.rawBinaryData)),this._int8View}get uint8View(){return this._uint8View||(this._uint8View=new Uint8Array(this.rawBinaryData)),this._uint8View}get int16View(){return this._int16View||(this._int16View=new Int16Array(this.rawBinaryData)),this._int16View}get int32View(){return this._int32View||(this._int32View=new Int32Array(this.rawBinaryData)),this._int32View}get float64View(){return this._float64Array||(this._float64Array=new Float64Array(this.rawBinaryData)),this._float64Array}get bigUint64View(){return this._bigUint64Array||(this._bigUint64Array=new BigUint64Array(this.rawBinaryData)),this._bigUint64Array}view(type){return this[type+"View"]}destroy(){this.rawBinaryData=null,this._int8View=null,this._uint8View=null,this._int16View=null,this.uint16View=null,this._int32View=null,this.uint32View=null,this.float32View=null}static sizeOf(type){switch(type){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw new Error(type+" isn't a valid view type")}}}function fastCopy(sourceBuffer,destinationBuffer){var lengthDouble=sourceBuffer.byteLength/8|0,sourceFloat64View=new Float64Array(sourceBuffer,0,lengthDouble);new Float64Array(destinationBuffer,0,lengthDouble).set(sourceFloat64View),0<(sourceFloat64View=sourceBuffer.byteLength-8*lengthDouble)&&(sourceBuffer=new Uint8Array(sourceBuffer,8*lengthDouble,sourceFloat64View),new Uint8Array(destinationBuffer,8*lengthDouble,sourceFloat64View).set(sourceBuffer))}const BLEND_TO_NPM={normal:"normal-npm",add:"add-npm",screen:"screen-npm"};var STENCIL_MODES={DISABLED:0,0:"DISABLED",RENDERING_MASK_ADD:1,1:"RENDERING_MASK_ADD",MASK_ACTIVE:2,2:"MASK_ACTIVE",INVERSE_MASK_ACTIVE:3,3:"INVERSE_MASK_ACTIVE",RENDERING_MASK_REMOVE:4,4:"RENDERING_MASK_REMOVE",NONE:5,5:"NONE"};function getAdjustedBlendModeBlend(blendMode,textureSource){return"no-premultiply-alpha"===textureSource.alphaMode&&BLEND_TO_NPM[blendMode]||blendMode}class BatchTextureArray{constructor(){this.ids=Object.create(null),this.textures=[],this.count=0}clear(){for(let i=0;i<this.count;i++){var t=this.textures[i];this.textures[i]=null,this.ids[t.uid]=null}this.count=0}}var __defProp$10=Object.defineProperty,__getOwnPropSymbols$10=Object.getOwnPropertySymbols,__hasOwnProp$10=Object.prototype.hasOwnProperty,__propIsEnum$10=Object.prototype.propertyIsEnumerable,__defNormalProp$10=(obj,key,value)=>key in obj?__defProp$10(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$10=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$10.call(b,prop)&&__defNormalProp$10(a,prop,b[prop]);if(__getOwnPropSymbols$10)for(var prop of __getOwnPropSymbols$10(b))__propIsEnum$10.call(b,prop)&&__defNormalProp$10(a,prop,b[prop]);return a};class Batch{constructor(){this.renderPipeId="batch",this.action="startBatch",this.start=0,this.size=0,this.textures=new BatchTextureArray,this.blendMode="normal",this.topology="triangle-strip",this.canBundle=!0}destroy(){this.textures=null,this.gpuBindGroup=null,this.bindGroup=null,this.batcher=null}}const batchPool=[];let batchPoolIndex=0;function getBatchFromPool(){return 0<batchPoolIndex?batchPool[--batchPoolIndex]:new Batch}function returnBatchToPool(batch){batchPool[batchPoolIndex++]=batch}let BATCH_TICK=0;const _Batcher=class _Batcher{constructor(options={}){this.uid=uid$1("batcher"),this.dirty=!0,this.batchIndex=0,this.batches=[],this._elements=[],_Batcher.defaultOptions.maxTextures=null!=(_a=_Batcher.defaultOptions.maxTextures)?_a:getMaxTexturesPerBatch();var{maxTextures:_a,attributesInitialSize:options,indicesInitialSize}=options=__spreadValues$10(__spreadValues$10({},_Batcher.defaultOptions),options);this.attributeBuffer=new ViewableBuffer(4*options),this.indexBuffer=new Uint16Array(indicesInitialSize),this.maxTextures=_a}begin(){this.elementSize=0,this.elementStart=0,this.indexSize=0;for(let i=this.attributeSize=0;i<this.batchIndex;i++)returnBatchToPool(this.batches[i]);this.batchIndex=0,this._batchIndexStart=0,this._batchIndexSize=0,this.dirty=!0}add(batchableObject){(this._elements[this.elementSize++]=batchableObject)._indexStart=this.indexSize,batchableObject._attributeStart=this.attributeSize,(batchableObject._batcher=this).indexSize+=batchableObject.indexSize,this.attributeSize+=batchableObject.attributeSize*this.vertexSize}checkAndUpdateTexture(batchableObject,texture){var textureId=batchableObject._batch.textures.ids[texture._source.uid];return!(!textureId&&0!==textureId||(batchableObject._textureId=textureId,batchableObject.texture=texture,0))}updateElement(batchableObject){this.dirty=!0;var attributeBuffer=this.attributeBuffer;batchableObject.packAsQuad?this.packQuadAttributes(batchableObject,attributeBuffer.float32View,attributeBuffer.uint32View,batchableObject._attributeStart,batchableObject._textureId):this.packAttributes(batchableObject,attributeBuffer.float32View,attributeBuffer.uint32View,batchableObject._attributeStart,batchableObject._textureId)}break(instructionSet){var elements=this._elements;if(elements[this.elementStart]){let batch=getBatchFromPool(),textureBatch=batch.textures;textureBatch.clear();var firstElement=elements[this.elementStart];let blendMode=getAdjustedBlendModeBlend(firstElement.blendMode,firstElement.texture._source),topology=firstElement.topology;4*this.attributeSize>this.attributeBuffer.size&&this._resizeAttributeBuffer(4*this.attributeSize),this.indexSize>this.indexBuffer.length&&this._resizeIndexBuffer(this.indexSize);var f32=this.attributeBuffer.float32View,u32=this.attributeBuffer.uint32View,indexBuffer=this.indexBuffer;let size=this._batchIndexSize,start=this._batchIndexStart,action="startBatch";var maxTextures=this.maxTextures;for(let i=this.elementStart;i<this.elementSize;++i){var element=elements[i],texture=(elements[i]=null,(texture=element.texture)._source),adjustedBlendMode=getAdjustedBlendModeBlend(element.blendMode,texture),breakRequired=blendMode!==adjustedBlendMode||topology!==element.topology;texture._batchTick!==BATCH_TICK||breakRequired?(texture._batchTick=BATCH_TICK,(textureBatch.count>=maxTextures||breakRequired)&&(this._finishBatch(batch,start,size-start,textureBatch,blendMode,topology,instructionSet,action),action="renderBatch",start=size,blendMode=adjustedBlendMode,topology=element.topology,batch=getBatchFromPool(),(textureBatch=batch.textures).clear(),++BATCH_TICK),element._textureId=texture._textureBindLocation=textureBatch.count,textureBatch.ids[texture.uid]=textureBatch.count,textureBatch.textures[textureBatch.count++]=texture,element._batch=batch,size+=element.indexSize,element.packAsQuad?(this.packQuadAttributes(element,f32,u32,element._attributeStart,element._textureId),this.packQuadIndex(indexBuffer,element._indexStart,element._attributeStart/this.vertexSize)):(this.packAttributes(element,f32,u32,element._attributeStart,element._textureId),this.packIndex(element,indexBuffer,element._indexStart,element._attributeStart/this.vertexSize))):(element._textureId=texture._textureBindLocation,size+=element.indexSize,element.packAsQuad?(this.packQuadAttributes(element,f32,u32,element._attributeStart,element._textureId),this.packQuadIndex(indexBuffer,element._indexStart,element._attributeStart/this.vertexSize)):(this.packAttributes(element,f32,u32,element._attributeStart,element._textureId),this.packIndex(element,indexBuffer,element._indexStart,element._attributeStart/this.vertexSize)),element._batch=batch)}0<textureBatch.count&&(this._finishBatch(batch,start,size-start,textureBatch,blendMode,topology,instructionSet,action),start=size,++BATCH_TICK),this.elementStart=this.elementSize,this._batchIndexStart=start,this._batchIndexSize=size}}_finishBatch(batch,indexStart,indexSize,textureBatch,blendMode,topology,instructionSet,action){batch.gpuBindGroup=null,batch.bindGroup=null,batch.action=action,batch.batcher=this,batch.textures=textureBatch,batch.blendMode=blendMode,batch.topology=topology,batch.start=indexStart,batch.size=indexSize,++BATCH_TICK,this.batches[this.batchIndex++]=batch,instructionSet.add(batch)}finish(instructionSet){this.break(instructionSet)}ensureAttributeBuffer(size){4*size<=this.attributeBuffer.size||this._resizeAttributeBuffer(4*size)}ensureIndexBuffer(size){size<=this.indexBuffer.length||this._resizeIndexBuffer(size)}_resizeAttributeBuffer(size){size=Math.max(size,2*this.attributeBuffer.size),size=new ViewableBuffer(size),fastCopy(this.attributeBuffer.rawBinaryData,size.rawBinaryData),this.attributeBuffer=size}_resizeIndexBuffer(size){var indexBuffer=this.indexBuffer,size=Math.max(size,1.5*indexBuffer.length),newIndexBuffer=new(65535<(size+=size%2)?Uint32Array:Uint16Array)(size);if(newIndexBuffer.BYTES_PER_ELEMENT!==indexBuffer.BYTES_PER_ELEMENT)for(let i=0;i<indexBuffer.length;i++)newIndexBuffer[i]=indexBuffer[i];else fastCopy(indexBuffer.buffer,newIndexBuffer.buffer);this.indexBuffer=newIndexBuffer}packQuadIndex(indexBuffer,index,indicesOffset){indexBuffer[index]=indicesOffset+0,indexBuffer[index+1]=indicesOffset+1,indexBuffer[index+2]=indicesOffset+2,indexBuffer[index+3]=indicesOffset+0,indexBuffer[index+4]=indicesOffset+2,indexBuffer[index+5]=indicesOffset+3}packIndex(element,indexBuffer,index,indicesOffset){var indices=element.indices,size=element.indexSize,indexOffset=element.indexOffset,attributeOffset=element.attributeOffset;for(let i=0;i<size;i++)indexBuffer[index++]=indicesOffset+indices[i+indexOffset]-attributeOffset}destroy(){for(let i=0;i<this.batches.length;i++)returnBatchToPool(this.batches[i]);this.batches=null;for(let i=0;i<this._elements.length;i++)this._elements[i]._batch=null;this._elements=null,this.indexBuffer=null,this.attributeBuffer.destroy(),this.attributeBuffer=null}};_Batcher.defaultOptions={maxTextures:null,attributesInitialSize:4,indicesInitialSize:6};var STENCIL_MODES2=_Batcher,BufferUsage=((BufferUsage2={})[BufferUsage2.MAP_READ=1]="MAP_READ",BufferUsage2[BufferUsage2.MAP_WRITE=2]="MAP_WRITE",BufferUsage2[BufferUsage2.COPY_SRC=4]="COPY_SRC",BufferUsage2[BufferUsage2.COPY_DST=8]="COPY_DST",BufferUsage2[BufferUsage2.INDEX=16]="INDEX",BufferUsage2[BufferUsage2.VERTEX=32]="VERTEX",BufferUsage2[BufferUsage2.UNIFORM=64]="UNIFORM",BufferUsage2[BufferUsage2.STORAGE=128]="STORAGE",BufferUsage2[BufferUsage2.INDIRECT=256]="INDIRECT",BufferUsage2[BufferUsage2.QUERY_RESOLVE=512]="QUERY_RESOLVE",BufferUsage2[BufferUsage2.STATIC=1024]="STATIC",BufferUsage2);class Buffer extends EventEmitter{constructor(options){let{data,size}=options;var{usage:options,label,shrinkToFit}=options,mappedAtCreation=(super(),this.uid=uid$1("buffer"),this._resourceType="buffer",this._resourceId=uid$1("resource"),this._touched=0,this._updateID=1,this._dataInt32=null,this.shrinkToFit=!0,this.destroyed=!1,data instanceof Array&&(data=new Float32Array(data)),this._data=data,null!=size?size:size=null==data?void 0:data.byteLength,!!data);this.descriptor={size:size,usage:options,mappedAtCreation:mappedAtCreation,label:label},this.shrinkToFit=null==shrinkToFit||shrinkToFit}get data(){return this._data}set data(value){this.setDataWithSize(value,value.length,!0)}get dataInt32(){return this._dataInt32||(this._dataInt32=new Int32Array(this.data.buffer)),this._dataInt32}get static(){return!!(this.descriptor.usage&BufferUsage.STATIC)}set static(value){value?this.descriptor.usage|=BufferUsage.STATIC:this.descriptor.usage&=~BufferUsage.STATIC}setDataWithSize(value,size,syncGPU){this._updateID++,this._updateSize=size*value.BYTES_PER_ELEMENT,this._data===value||(size=this._data,this._data=value,this._dataInt32=null,size&&size.length===value.length)||!this.shrinkToFit&&size&&value.byteLength<size.byteLength?syncGPU&&this.emit("update",this):(this.descriptor.size=value.byteLength,this._resourceId=uid$1("resource"),this.emit("change",this))}update(sizeInBytes){this._updateSize=null!=sizeInBytes?sizeInBytes:this._updateSize,this._updateID++,this.emit("update",this)}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this._data=null,this.descriptor=null,this.removeAllListeners()}}function ensureIsBuffer(buffer,index){if(!(buffer instanceof Buffer)){let usage=index?BufferUsage.INDEX:BufferUsage.VERTEX;buffer instanceof Array&&(usage=index?(buffer=new Uint32Array(buffer),BufferUsage.INDEX|BufferUsage.COPY_DST):(buffer=new Float32Array(buffer),BufferUsage.VERTEX|BufferUsage.COPY_DST)),buffer=new Buffer({data:buffer,label:index?"index-mesh-buffer":"vertex-mesh-buffer",usage:usage})}return buffer}function getGeometryBounds(geometry,attributeId,bounds){if(geometry=geometry.getAttribute(attributeId)){var data=geometry.buffer.data;let minX=1/0,minY=1/0,maxX=-1/0,maxY=-1/0;var attributeId=data.BYTES_PER_ELEMENT,offset=(geometry.offset||0)/attributeId,stride=(geometry.stride||8)/attributeId;for(let i=offset;i<data.length;i+=stride){var x=data[i],y=data[i+1];x>maxX&&(maxX=x),y>maxY&&(maxY=y),x<minX&&(minX=x),y<minY&&(minY=y)}bounds.minX=minX,bounds.minY=minY,bounds.maxX=maxX,bounds.maxY=maxY}else bounds.minX=0,bounds.minY=0,bounds.maxX=0,bounds.maxY=0;return bounds}class Geometry extends EventEmitter{constructor(options={}){super(),this.uid=uid$1("geometry"),this._layoutKey=0,this.instanceCount=1,this._bounds=new Bounds,this._boundsDirty=!0;var{attributes,indexBuffer,topology}=options;if(this.buffers=[],this.attributes={},attributes)for(const i in attributes)this.addAttribute(i,attributes[i]);this.instanceCount=null!=(options=options.instanceCount)?options:1,indexBuffer&&this.addIndex(indexBuffer),this.topology=topology||"triangle-list"}onBufferUpdate(){this._boundsDirty=!0,this.emit("update",this)}getAttribute(id){return this.attributes[id]}getIndex(){return this.indexBuffer}getBuffer(id){return this.getAttribute(id).buffer}getSize(){for(const i in this.attributes){var attribute=this.attributes[i];return attribute.buffer.data.length/(attribute.stride/4||attribute.size)}return 0}addAttribute(name,attributeOption){var attribute;(attribute=(attribute=attributeOption)instanceof Buffer||Array.isArray(attribute)||attribute.BYTES_PER_ELEMENT?{buffer:attribute}:attribute).buffer=ensureIsBuffer(attribute.buffer,!1),attributeOption=attribute,-1===this.buffers.indexOf(attributeOption.buffer)&&(this.buffers.push(attributeOption.buffer),attributeOption.buffer.on("update",this.onBufferUpdate,this),attributeOption.buffer.on("change",this.onBufferUpdate,this)),this.attributes[name]=attributeOption}addIndex(indexBuffer){this.indexBuffer=ensureIsBuffer(indexBuffer,!0),this.buffers.push(this.indexBuffer)}get bounds(){return this._boundsDirty?(this._boundsDirty=!1,getGeometryBounds(this,"aPosition",this._bounds)):this._bounds}destroy(destroyBuffers=!1){this.emit("destroy",this),this.removeAllListeners(),destroyBuffers&&this.buffers.forEach(buffer=>buffer.destroy()),this.attributes=null,this.buffers=null,this.indexBuffer=null,this._bounds=null}}const placeHolderBufferData=new Float32Array(1),placeHolderIndexData=new Uint32Array(1);class BatchGeometry extends Geometry{constructor(){var attributeBuffer=new Buffer({data:placeHolderBufferData,label:"attribute-batch-buffer",usage:BufferUsage.VERTEX|BufferUsage.COPY_DST,shrinkToFit:!1});super({attributes:{aPosition:{buffer:attributeBuffer,format:"float32x2",stride:24,offset:0},aUV:{buffer:attributeBuffer,format:"float32x2",stride:24,offset:8},aColor:{buffer:attributeBuffer,format:"unorm8x4",stride:24,offset:16},aTextureIdAndRound:{buffer:attributeBuffer,format:"uint16x2",stride:24,offset:20}},indexBuffer:new Buffer({data:placeHolderIndexData,label:"index-batch-buffer",usage:BufferUsage.INDEX|BufferUsage.COPY_DST,shrinkToFit:!1})})}}const idCounts=Object.create(null),idHash=Object.create(null);function createIdFromString(value,groupId){let id=idHash[value];return void 0===id&&(void 0===idCounts[groupId]&&(idCounts[groupId]=1),idHash[value]=id=idCounts[groupId]++),id}let maxFragmentPrecision;function getMaxFragmentPrecision(){var gl;return maxFragmentPrecision||(maxFragmentPrecision="mediump",(gl=getTestContext())&&gl.getShaderPrecisionFormat&&(gl=gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER,gl.HIGH_FLOAT),maxFragmentPrecision=gl.precision?"highp":"mediump")),maxFragmentPrecision}function addProgramDefines(src,isES300,isFragment){return isES300?src:isFragment?`
#ifdef GL_ES // This checks if it is WebGL1
#define in varying
#define finalColor gl_FragColor
#define texture texture2D
#endif
${src=src.replace("out vec4 finalColor;","")}
`:`
#ifdef GL_ES // This checks if it is WebGL1
#define in attribute
#define out varying
#endif
${src}
`}function ensurePrecision(src,options,isFragment){var maxSupportedPrecision=isFragment?options.maxSupportedFragmentPrecision:options.maxSupportedVertexPrecision;return"precision"===src.substring(0,9)?"highp"!==maxSupportedPrecision&&"precision highp"===src.substring(0,15)?src.replace("precision highp","precision mediump"):src:`precision ${isFragment="highp"===(isFragment=isFragment?options.requestedFragmentPrecision:options.requestedVertexPrecision)&&"highp"!==maxSupportedPrecision?"mediump":isFragment} float;
`+src}function insertVersion(src,isES300){return isES300?`#version 300 es
`+src:src}const fragmentNameCache={},VertexNameCache={};function setProgramName(src,{name="pixi-program"},isFragment=!0){return name=name.replace(/\s+/g,"-"),name+=isFragment?"-fragment":"-vertex",(isFragment=isFragment?fragmentNameCache:VertexNameCache)[name]?(isFragment[name]++,name+="-"+isFragment[name]):isFragment[name]=1,-1!==src.indexOf("#define SHADER_NAME")?src:"#define SHADER_NAME "+name+`
`+src}function stripVersion(src,isES300){return isES300?src.replace("#version 300 es",""):src}var __defProp$$=Object.defineProperty,__getOwnPropSymbols$$=Object.getOwnPropertySymbols,__hasOwnProp$$=Object.prototype.hasOwnProperty,__propIsEnum$$=Object.prototype.propertyIsEnumerable,__defNormalProp$$=(obj,key,value)=>key in obj?__defProp$$(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$$=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$$.call(b,prop)&&__defNormalProp$$(a,prop,b[prop]);if(__getOwnPropSymbols$$)for(var prop of __getOwnPropSymbols$$(b))__propIsEnum$$.call(b,prop)&&__defNormalProp$$(a,prop,b[prop]);return a};const processes={stripVersion:stripVersion,ensurePrecision:ensurePrecision,addProgramDefines:addProgramDefines,setProgramName:setProgramName,insertVersion:insertVersion},programCache$1=Object.create(null),_GlProgram=class _GlProgram{constructor(options){var isES300=-1!==(options=__spreadValues$$(__spreadValues$$({},_GlProgram.defaultOptions),options)).fragment.indexOf("#version 300 es");const preprocessorOptions={stripVersion:isES300,ensurePrecision:{requestedFragmentPrecision:options.preferredFragmentPrecision,requestedVertexPrecision:options.preferredVertexPrecision,maxSupportedVertexPrecision:"highp",maxSupportedFragmentPrecision:getMaxFragmentPrecision()},setProgramName:{name:options.name},addProgramDefines:isES300,insertVersion:isES300};let fragment=options.fragment,vertex=options.vertex;Object.keys(processes).forEach(processKey=>{var processOptions=preprocessorOptions[processKey];fragment=processes[processKey](fragment,processOptions,!0),vertex=processes[processKey](vertex,processOptions,!1)}),this.fragment=fragment,this.vertex=vertex,this.transformFeedbackVaryings=options.transformFeedbackVaryings,this._key=createIdFromString(this.vertex+":"+this.fragment,"gl-program")}destroy(){this.fragment=null,this.vertex=null,this._attributeData=null,this._uniformData=null,this._uniformBlockData=null,this.transformFeedbackVaryings=null}static from(options){var key=options.vertex+":"+options.fragment;return programCache$1[key]||(programCache$1[key]=new _GlProgram(options)),programCache$1[key]}};_GlProgram.defaultOptions={preferredVertexPrecision:"highp",preferredFragmentPrecision:"mediump"};let GlProgram=_GlProgram;const attributeFormatData={uint8x2:{size:2,stride:2,normalised:!1},uint8x4:{size:4,stride:4,normalised:!1},sint8x2:{size:2,stride:2,normalised:!1},sint8x4:{size:4,stride:4,normalised:!1},unorm8x2:{size:2,stride:2,normalised:!0},unorm8x4:{size:4,stride:4,normalised:!0},snorm8x2:{size:2,stride:2,normalised:!0},snorm8x4:{size:4,stride:4,normalised:!0},uint16x2:{size:2,stride:4,normalised:!1},uint16x4:{size:4,stride:8,normalised:!1},sint16x2:{size:2,stride:4,normalised:!1},sint16x4:{size:4,stride:8,normalised:!1},unorm16x2:{size:2,stride:4,normalised:!0},unorm16x4:{size:4,stride:8,normalised:!0},snorm16x2:{size:2,stride:4,normalised:!0},snorm16x4:{size:4,stride:8,normalised:!0},float16x2:{size:2,stride:4,normalised:!1},float16x4:{size:4,stride:8,normalised:!1},float32:{size:1,stride:4,normalised:!1},float32x2:{size:2,stride:8,normalised:!1},float32x3:{size:3,stride:12,normalised:!1},float32x4:{size:4,stride:16,normalised:!1},uint32:{size:1,stride:4,normalised:!1},uint32x2:{size:2,stride:8,normalised:!1},uint32x3:{size:3,stride:12,normalised:!1},uint32x4:{size:4,stride:16,normalised:!1},sint32:{size:1,stride:4,normalised:!1},sint32x2:{size:2,stride:8,normalised:!1},sint32x3:{size:3,stride:12,normalised:!1},sint32x4:{size:4,stride:16,normalised:!1}};function getAttributeInfoFromFormat(format){return null!=(format=attributeFormatData[format])?format:attributeFormatData.float32}const WGSL_TO_VERTEX_TYPES={f32:"float32","vec2<f32>":"float32x2","vec3<f32>":"float32x3","vec4<f32>":"float32x4",vec2f:"float32x2",vec3f:"float32x3",vec4f:"float32x4",i32:"sint32","vec2<i32>":"sint32x2","vec3<i32>":"sint32x3","vec4<i32>":"sint32x4",u32:"uint32","vec2<u32>":"uint32x2","vec3<u32>":"uint32x3","vec4<u32>":"uint32x4",bool:"uint32","vec2<bool>":"uint32x2","vec3<bool>":"uint32x3","vec4<bool>":"uint32x4"};function extractAttributesFromGpuProgram({source,entryPoint}){var results={};if(-1!==(entryPoint=source.indexOf("fn "+entryPoint))){var arrowFunctionStart=source.indexOf("->",entryPoint);if(-1!==arrowFunctionStart)for(var match,functionArgsSubstring=source.substring(entryPoint,arrowFunctionStart),inputsRegex=/@location\((\d+)\)\s+([a-zA-Z0-9_]+)\s*:\s*([a-zA-Z0-9_<>]+)(?:,|\s|$)/g;null!==(match=inputsRegex.exec(functionArgsSubstring));){var _a=null!=(_a=WGSL_TO_VERTEX_TYPES[match[3]])?_a:"float32";results[match[2]]={location:parseInt(match[1],10),format:_a,stride:getAttributeInfoFromFormat(_a).stride,offset:0,instance:!1,start:0}}}return results}function extractStructAndGroups(wgsl){const groupPattern=/@group\((\d+)\)/,bindingPattern=/@binding\((\d+)\)/,namePattern=/var(<[^>]+>)? (\w+)/,typePattern=/:\s*(\w+)/;var _a;const structMemberPattern=/(\w+)\s*:\s*([\w\<\>]+)/g,structName=/struct\s+(\w+)/,groups=null==(_a=wgsl.match(/(^|[^/])@(group|binding)\(\d+\)[^;]+;/g))?void 0:_a.map(item=>({group:parseInt(item.match(groupPattern)[1],10),binding:parseInt(item.match(bindingPattern)[1],10),name:item.match(namePattern)[2],isUniform:"<uniform>"===item.match(namePattern)[1],type:item.match(typePattern)[1]}));return groups?(_a=null!=(wgsl=null==(_a=wgsl.match(/struct\s+(\w+)\s*{([^}]+)}/g))?void 0:_a.map(struct=>{var name=struct.match(structName)[1];return(struct=struct.match(structMemberPattern).reduce((acc,member)=>{var[member,type]=member.split(":");return acc[member.trim()]=type.trim(),acc},{}))?{name:name,members:struct}:null}).filter(({name})=>groups.some(group=>group.type===name)))?wgsl:[],{groups:groups,structs:_a}):{groups:[],structs:[]}}var ShaderStage=BufferUsage2={VERTEX:1,1:"VERTEX",FRAGMENT:2,2:"FRAGMENT",COMPUTE:4,4:"COMPUTE"};function generateGpuLayoutGroups({groups}){var layout=[];for(let i=0;i<groups.length;i++){var group=groups[i];layout[group.group]||(layout[group.group]=[]),group.isUniform?layout[group.group].push({binding:group.binding,visibility:ShaderStage.VERTEX|ShaderStage.FRAGMENT,buffer:{type:"uniform"}}):"sampler"===group.type?layout[group.group].push({binding:group.binding,visibility:ShaderStage.FRAGMENT,sampler:{type:"filtering"}}):"texture_2d"===group.type&&layout[group.group].push({binding:group.binding,visibility:ShaderStage.FRAGMENT,texture:{sampleType:"float",viewDimension:"2d",multisampled:!1}})}return layout}function generateLayoutHash({groups}){var layout=[];for(let i=0;i<groups.length;i++){var group=groups[i];layout[group.group]||(layout[group.group]={}),layout[group.group][group.name]=group.binding}return layout}function removeStructAndGroupDuplicates(vertexStructsAndGroups,fragmentStructsAndGroups){const structNameSet=new Set,dupeGroupKeySet=new Set;return{structs:[...vertexStructsAndGroups.structs,...fragmentStructsAndGroups.structs].filter(struct=>!structNameSet.has(struct.name)&&(structNameSet.add(struct.name),!0)),groups:[...vertexStructsAndGroups.groups,...fragmentStructsAndGroups.groups].filter(group=>(group=group.name+"-"+group.binding,!dupeGroupKeySet.has(group)&&(dupeGroupKeySet.add(group),!0)))}}const programCache=Object.create(null);class GpuProgram{constructor(options){this._layoutKey=0,this._attributeLocationsKey=0;var{fragment:options,vertex,layout,gpuLayout,name}=options;this.name=name,this.fragment=options,this.vertex=vertex,options.source===vertex.source?(name=extractStructAndGroups(options.source),this.structsAndGroups=name):(name=extractStructAndGroups(vertex.source),vertex=extractStructAndGroups(options.source),this.structsAndGroups=removeStructAndGroupDuplicates(name,vertex)),this.layout=null!=layout?layout:generateLayoutHash(this.structsAndGroups),this.gpuLayout=null!=gpuLayout?gpuLayout:generateGpuLayoutGroups(this.structsAndGroups),this.autoAssignGlobalUniforms=!(void 0===(null==(options=this.layout[0])?void 0:options.globalUniforms)),this.autoAssignLocalUniforms=!(void 0===(null==(name=this.layout[1])?void 0:name.localUniforms)),this._generateProgramKey()}_generateProgramKey(){var{vertex,fragment}=this,vertex=vertex.source+fragment.source+vertex.entryPoint+fragment.entryPoint;this._layoutKey=createIdFromString(vertex,"program")}get attributeData(){return null==this._attributeData&&(this._attributeData=extractAttributesFromGpuProgram(this.vertex)),this._attributeData}destroy(){this.gpuLayout=null,this.layout=null,this.structsAndGroups=null,this.fragment=null,this.vertex=null}static from(options){var key=`${options.vertex.source}:${options.fragment.source}:${options.fragment.entryPoint}:`+options.vertex.entryPoint;return programCache[key]||(programCache[key]=new GpuProgram(options)),programCache[key]}}function addBits(srcParts,parts,name){if(srcParts)for(const i in srcParts){var part=parts[i.toLocaleLowerCase()];if(part){let sanitisedPart=srcParts[i];"header"===i&&(sanitisedPart=sanitisedPart.replace(/@in\s+[^;]+;\s*/g,"").replace(/@out\s+[^;]+;\s*/g,"")),name&&part.push(`//----${name}----//`),part.push(sanitisedPart)}else warn(i+" placement hook does not exist in shader")}}const findHooksRx=/\{\{(.*?)\}\}/g;function compileHooks(programSrc){const parts={};return(null!=(programSrc=null==(programSrc=programSrc.match(findHooksRx))?void 0:programSrc.map(hook=>hook.replace(/[{()}]/g,"")))?programSrc:[]).forEach(hook=>{parts[hook]=[]}),parts}function extractInputs(fragmentSource,out){for(var match,regex=/@in\s+([^;]+);/g;null!==(match=regex.exec(fragmentSource));)out.push(match[1])}function compileInputs(fragments,template,sort=!1){const results=[];extractInputs(template,results),fragments.forEach(fragment=>{fragment.header&&extractInputs(fragment.header,results)}),fragments=results,sort&&fragments.sort(),sort=fragments.map((inValue,i)=>` @location(${i}) ${inValue},`).join("\n");let cleanedString=template.replace(/@in\s+[^;]+;\s*/g,"");return cleanedString=cleanedString.replace("{{in}}",`
${sort}
`)}function extractOutputs(fragmentSource,out){for(var match,regex=/@out\s+([^;]+);/g;null!==(match=regex.exec(fragmentSource));)out.push(match[1])}function compileOutputs(fragments,template){const results=[];extractOutputs(template,results),fragments.forEach(fragment=>{fragment.header&&extractOutputs(fragment.header,results)});let index=0;var fragments=results.sort().map(inValue=>-1<inValue.indexOf("builtin")?inValue:`@location(${index++}) `+inValue).join(",\n"),mainStart=results.sort().map(inValue=>` var ${inValue.replace(/@.*?\s+/g,"")};`).join("\n"),mainEnd=`return VSOutput(
${results.sort().map(inValue=>" "+((inValue=/\b(\w+)\s*:/g.exec(inValue))?inValue[1]:"")).join(",\n")});`;let compiledCode=template.replace(/@out\s+[^;]+;\s*/g,"");return compiledCode=(compiledCode=(compiledCode=compiledCode.replace("{{struct}}",`
${fragments}
`)).replace("{{start}}",`
${mainStart}
`)).replace("{{return}}",`
${mainEnd}
`)}function injectBits(templateSrc,fragmentParts){let out=templateSrc;for(const i in fragmentParts){var parts=fragmentParts[i],toInject=parts.join("\n");out=toInject.length?out.replace(`{{${i}}}`,`//-----${i} START-----//
${parts.join("\n")}
//----${i} FINISH----//`):out.replace(`{{${i}}}`,"")}return out}const cacheMap=Object.create(null),bitCacheMap=new Map;let CACHE_UID=0;function compileHighShader({template,bits}){var fragment,cacheId=generateCacheId(template,bits);return cacheMap[cacheId]||({vertex:template,fragment}=function(template,bits){var vertexFragments=bits.map(shaderBit=>shaderBit.vertex).filter(v=>!!v),bits=bits.map(shaderBit=>shaderBit.fragment).filter(v=>!!v);return{vertex:compileOutputs(vertexFragments,compileInputs(vertexFragments,template.vertex,!0)),fragment:compileInputs(bits,template.fragment,!0)}}(template,bits),cacheMap[cacheId]=compileBits(template,fragment,bits)),cacheMap[cacheId]}function compileHighShaderGl({template,bits}){var cacheId=generateCacheId(template,bits);return cacheMap[cacheId]||(cacheMap[cacheId]=compileBits(template.vertex,template.fragment,bits)),cacheMap[cacheId]}function generateCacheId(template,bits){return bits.map(highFragment=>(bitCacheMap.has(highFragment)||bitCacheMap.set(highFragment,CACHE_UID++),bitCacheMap.get(highFragment))).sort((a,b)=>a-b).join("-")+template.vertex+template.fragment}function compileBits(vertex,fragment,bits){const vertexParts=compileHooks(vertex),fragmentParts=compileHooks(fragment);return bits.forEach(shaderBit=>{addBits(shaderBit.vertex,vertexParts,shaderBit.name),addBits(shaderBit.fragment,fragmentParts,shaderBit.name)}),{vertex:injectBits(vertex,vertexParts),fragment:injectBits(fragment,fragmentParts)}}const vertexGPUTemplate=`
@in aPosition: vec2<f32>;
@in aUV: vec2<f32>;
@out @builtin(position) vPosition: vec4<f32>;
@out vUV : vec2<f32>;
@out vColor : vec4<f32>;
{{header}}
struct VSOutput {
{{struct}}
};
@vertex
fn main( {{in}} ) -> VSOutput {
var worldTransformMatrix = globalUniforms.uWorldTransformMatrix;
var modelMatrix = mat3x3<f32>(
1.0, 0.0, 0.0,
0.0, 1.0, 0.0,
0.0, 0.0, 1.0
);
var position = aPosition;
var uv = aUV;
{{start}}
vColor = vec4<f32>(1., 1., 1., 1.);
{{main}}
vUV = uv;
var modelViewProjectionMatrix = globalUniforms.uProjectionMatrix * worldTransformMatrix * modelMatrix;
vPosition = vec4<f32>((modelViewProjectionMatrix * vec3<f32>(position, 1.0)).xy, 0.0, 1.0);
vColor *= globalUniforms.uWorldColorAlpha;
{{end}}
{{return}}
};
`,fragmentGPUTemplate=`
@in vUV : vec2<f32>;
@in vColor : vec4<f32>;
{{header}}
@fragment
fn main(
{{in}}
) -> @location(0) vec4<f32> {
{{start}}
var outColor:vec4<f32>;
{{main}}
var finalColor:vec4<f32> = outColor * vColor;
{{end}}
return finalColor;
};
`,vertexGlTemplate=`
in vec2 aPosition;
in vec2 aUV;
out vec4 vColor;
out vec2 vUV;
{{header}}
void main(void){
mat3 worldTransformMatrix = uWorldTransformMatrix;
mat3 modelMatrix = mat3(
1.0, 0.0, 0.0,
0.0, 1.0, 0.0,
0.0, 0.0, 1.0
);
vec2 position = aPosition;
vec2 uv = aUV;
{{start}}
vColor = vec4(1.);
{{main}}
vUV = uv;
mat3 modelViewProjectionMatrix = uProjectionMatrix * worldTransformMatrix * modelMatrix;
gl_Position = vec4((modelViewProjectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);
vColor *= uWorldColorAlpha;
{{end}}
}
`,fragmentGlTemplate=`
in vec4 vColor;
in vec2 vUV;
out vec4 finalColor;
{{header}}
void main(void) {
{{start}}
vec4 outColor;
{{main}}
finalColor = outColor * vColor;
{{end}}
}
`,globalUniformsBit={name:"global-uniforms-bit",vertex:{header:`
struct GlobalUniforms {
uProjectionMatrix:mat3x3<f32>,
uWorldTransformMatrix:mat3x3<f32>,
uWorldColorAlpha: vec4<f32>,
uResolution: vec2<f32>,
}
@group(0) @binding(0) var<uniform> globalUniforms : GlobalUniforms;
`}};var BufferUsage2={name:"global-uniforms-ubo-bit",vertex:{header:`
uniform globalUniforms {
mat3 uProjectionMatrix;
mat3 uWorldTransformMatrix;
vec4 uWorldColorAlpha;
vec2 uResolution;
};
`}};const globalUniformsBitGl={name:"global-uniforms-bit",vertex:{header:`
uniform mat3 uProjectionMatrix;
uniform mat3 uWorldTransformMatrix;
uniform vec4 uWorldColorAlpha;
uniform vec2 uResolution;
`}};var __defProp$_=Object.defineProperty,__getOwnPropSymbols$_=Object.getOwnPropertySymbols,__hasOwnProp$_=Object.prototype.hasOwnProperty,__propIsEnum$_=Object.prototype.propertyIsEnumerable,__defNormalProp$_=(obj,key,value)=>key in obj?__defProp$_(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;function compileHighShaderGpuProgram({bits,name}){return bits=compileHighShader({template:{fragment:fragmentGPUTemplate,vertex:vertexGPUTemplate},bits:[globalUniformsBit,...bits]}),GpuProgram.from({name:name,vertex:{source:bits.vertex,entryPoint:"main"},fragment:{source:bits.fragment,entryPoint:"main"}})}function compileHighShaderGlProgram({bits,name}){return new GlProgram(((a,b)=>{for(var prop in b=compileHighShaderGl({template:{vertex:vertexGlTemplate,fragment:fragmentGlTemplate},bits:[globalUniformsBitGl,...bits]})||{})__hasOwnProp$_.call(b,prop)&&__defNormalProp$_(a,prop,b[prop]);if(__getOwnPropSymbols$_)for(var prop of __getOwnPropSymbols$_(b))__propIsEnum$_.call(b,prop)&&__defNormalProp$_(a,prop,b[prop]);return a})({name:name}))}const colorBit={name:"color-bit",vertex:{header:`
@in aColor: vec4<f32>;
`,main:`
vColor *= vec4<f32>(aColor.rgb * aColor.a, aColor.a);
`}},colorBitGl={name:"color-bit",vertex:{header:`
in vec4 aColor;
`,main:`
vColor *= vec4(aColor.rgb * aColor.a, aColor.a);
`}},textureBatchBitGpuCache={};function generateTextureBatchBit(maxTextures){return textureBatchBitGpuCache[maxTextures]||(textureBatchBitGpuCache[maxTextures]={name:"texture-batch-bit",vertex:{header:`
@in aTextureIdAndRound: vec2<u32>;
@out @interpolate(flat) vTextureId : u32;
`,main:`
vTextureId = aTextureIdAndRound.y;
`,end:`
if(aTextureIdAndRound.x == 1)
{
vPosition = vec4<f32>(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
}
`},fragment:{header:`
@in @interpolate(flat) vTextureId: u32;
${function(maxTextures){var src=[];if(1===maxTextures)src.push("@group(1) @binding(0) var textureSource1: texture_2d<f32>;"),src.push("@group(1) @binding(1) var textureSampler1: sampler;");else{let bindingIndex=0;for(let i=0;i<maxTextures;i++)src.push(`@group(1) @binding(${bindingIndex++}) var textureSource${i+1}: texture_2d<f32>;`),src.push(`@group(1) @binding(${bindingIndex++}) var textureSampler${i+1}: sampler;`)}return src.join("\n")}(maxTextures)}
`,main:`
var uvDx = dpdx(vUV);
var uvDy = dpdy(vUV);
${function(maxTextures){var src=[];if(1===maxTextures)src.push("outColor = textureSampleGrad(textureSource1, textureSampler1, vUV, uvDx, uvDy);");else{src.push("switch vTextureId {");for(let i=0;i<maxTextures;i++)i===maxTextures-1?src.push(" default:{"):src.push(` case ${i}:{`),src.push(` outColor = textureSampleGrad(textureSource${i+1}, textureSampler${i+1}, vUV, uvDx, uvDy);`),src.push(" break;}");src.push("}")}return src.join("\n")}(maxTextures)}
`}}),textureBatchBitGpuCache[maxTextures]}const textureBatchBitGlCache={};function generateTextureBatchBitGl(maxTextures){return textureBatchBitGlCache[maxTextures]||(textureBatchBitGlCache[maxTextures]={name:"texture-batch-bit",vertex:{header:`
in vec2 aTextureIdAndRound;
out float vTextureId;
`,main:`
vTextureId = aTextureIdAndRound.y;
`,end:`
if(aTextureIdAndRound.x == 1.)
{
gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
}
`},fragment:{header:`
in float vTextureId;
uniform sampler2D uTextures[${maxTextures}];
`,main:`
${function(maxTextures){var src=[];for(let i=0;i<maxTextures;i++)0<i&&src.push("else"),i<maxTextures-1&&src.push(`if(vTextureId < ${i}.5)`),src.push("{"),src.push(` outColor = texture(uTextures[${i}], vUV);`),src.push("}");return src.join("\n")}(maxTextures)}
`}}),textureBatchBitGlCache[maxTextures]}const roundPixelsBit={name:"round-pixels-bit",vertex:{header:`
fn roundPixels(position: vec2<f32>, targetSize: vec2<f32>) -> vec2<f32>
{
return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
}
`}},roundPixelsBitGl={name:"round-pixels-bit",vertex:{header:`
vec2 roundPixels(vec2 position, vec2 targetSize)
{
return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
}
`}},UNIFORM_TYPES_VALUES=["f32","i32","vec2<f32>","vec3<f32>","vec4<f32>","mat2x2<f32>","mat3x3<f32>","mat4x4<f32>","mat3x2<f32>","mat4x2<f32>","mat2x3<f32>","mat4x3<f32>","mat2x4<f32>","mat3x4<f32>","vec2<i32>","vec3<i32>","vec4<i32>"],UNIFORM_TYPES_MAP=UNIFORM_TYPES_VALUES.reduce((acc,type)=>(acc[type]=!0,acc),{});function getDefaultUniformValue(type,size){switch(type){case"f32":return 0;case"vec2<f32>":return new Float32Array(2*size);case"vec3<f32>":return new Float32Array(3*size);case"vec4<f32>":return new Float32Array(4*size);case"mat2x2<f32>":return new Float32Array([1,0,0,1]);case"mat3x3<f32>":return new Float32Array([1,0,0,0,1,0,0,0,1]);case"mat4x4<f32>":return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}return null}var __defProp$Z=Object.defineProperty,__getOwnPropSymbols$Z=Object.getOwnPropertySymbols,__hasOwnProp$Z=Object.prototype.hasOwnProperty,__propIsEnum$Z=Object.prototype.propertyIsEnumerable,__defNormalProp$Z=(obj,key,value)=>key in obj?__defProp$Z(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$Z=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$Z.call(b,prop)&&__defNormalProp$Z(a,prop,b[prop]);if(__getOwnPropSymbols$Z)for(var prop of __getOwnPropSymbols$Z(b))__propIsEnum$Z.call(b,prop)&&__defNormalProp$Z(a,prop,b[prop]);return a};const _UniformGroup=class _UniformGroup{constructor(uniformStructures,options){this._touched=0,this.uid=uid$1("uniform"),this._resourceType="uniformGroup",this._resourceId=uid$1("resource"),this.isUniformGroup=!0,this._dirtyId=0,this.destroyed=!1,options=__spreadValues$Z(__spreadValues$Z({},_UniformGroup.defaultOptions),options);var _a,uniforms={};for(const i in this.uniformStructures=uniformStructures){var uniformData=uniformStructures[i];if(uniformData.name=i,uniformData.size=null!=(_a=uniformData.size)?_a:1,!UNIFORM_TYPES_MAP[uniformData.type])throw new Error(`Uniform type ${uniformData.type} is not supported. Supported uniform types are: `+UNIFORM_TYPES_VALUES.join(", "));null==uniformData.value&&(uniformData.value=getDefaultUniformValue(uniformData.type,uniformData.size)),uniforms[i]=uniformData.value}this.uniforms=uniforms,this._dirtyId=1,this.ubo=options.ubo,this.isStatic=options.isStatic,this._signature=createIdFromString(Object.keys(uniforms).map(i=>i+"-"+uniformStructures[i].type).join("-"),"uniform-group")}update(){this._dirtyId++}};_UniformGroup.defaultOptions={ubo:!1,isStatic:!1};let UniformGroup=_UniformGroup;const batchSamplersUniformGroupHash={};function getBatchSamplersUniformGroup(maxTextures){var batchSamplersUniformGroup=batchSamplersUniformGroupHash[maxTextures];if(!batchSamplersUniformGroup){var sampleValues=new Int32Array(maxTextures);for(let i=0;i<maxTextures;i++)sampleValues[i]=i;batchSamplersUniformGroup=batchSamplersUniformGroupHash[maxTextures]=new UniformGroup({uTextures:{value:sampleValues,type:"i32",size:maxTextures}},{isStatic:!0})}return batchSamplersUniformGroup}var RendererType=RendererType2={WEBGL:1,1:"WEBGL",WEBGPU:2,2:"WEBGPU",BOTH:3,3:"BOTH"},__defProp$Y=Object.defineProperty,__getOwnPropSymbols$Y=Object.getOwnPropertySymbols,__hasOwnProp$Y=Object.prototype.hasOwnProperty,__propIsEnum$Y=Object.prototype.propertyIsEnumerable,__defNormalProp$Y=(obj,key,value)=>key in obj?__defProp$Y(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class Shader extends EventEmitter{constructor(options){super(),this.uid=uid$1("shader"),this._uniformBindMap=Object.create(null),this._ownedBindGroups=[];let{gpuProgram,glProgram,groups,resources,compatibleRenderers,groupMap}=options;this.gpuProgram=gpuProgram,this.glProgram=glProgram,void 0===compatibleRenderers&&(compatibleRenderers=0,gpuProgram&&(compatibleRenderers|=RendererType.WEBGPU),glProgram)&&(compatibleRenderers|=RendererType.WEBGL),this.compatibleRenderers=compatibleRenderers;const nameHash={};if((resources=resources||groups?resources:{})&&groups)throw new Error("[Shader] Cannot have both resources and groups");if(!gpuProgram&&groups&&!groupMap)throw new Error("[Shader] No group map or WebGPU shader provided - consider using resources instead.");if(!gpuProgram&&groups&&groupMap)for(const i in groupMap)for(const j in groupMap[i]){var uniformName=groupMap[i][j];nameHash[uniformName]={group:i,binding:j,name:uniformName}}else if(gpuProgram&&groups&&!groupMap)options=gpuProgram.structsAndGroups.groups,groupMap={},options.forEach(data=>{groupMap[data.group]=groupMap[data.group]||{},groupMap[data.group][data.binding]=data.name,nameHash[data.name]=data});else if(resources){groups={},groupMap={},gpuProgram&&gpuProgram.structsAndGroups.groups.forEach(data=>{groupMap[data.group]=groupMap[data.group]||{},groupMap[data.group][data.binding]=data.name,nameHash[data.name]=data});let bindTick=0;for(const i in resources)nameHash[i]||(groups[99]||(groups[99]=new BindGroup,this._ownedBindGroups.push(groups[99])),nameHash[i]={group:99,binding:bindTick,name:i},groupMap[99]=groupMap[99]||{},groupMap[99][bindTick]=i,bindTick++);for(const i in resources){var name=i;let value=resources[i];value.source||value._resourceType||(value=new UniformGroup(value)),(name=nameHash[name])&&(groups[name.group]||(groups[name.group]=new BindGroup,this._ownedBindGroups.push(groups[name.group])),groups[name.group].setResource(value,name.binding))}}this.groups=groups,this._uniformBindMap=groupMap,this.resources=this._buildResourceAccessor(groups,nameHash)}addResource(name,groupIndex,bindIndex){var _a;(_a=this._uniformBindMap)[groupIndex]||(_a[groupIndex]={}),(_a=this._uniformBindMap[groupIndex])[bindIndex]||(_a[bindIndex]=name),this.groups[groupIndex]||(this.groups[groupIndex]=new BindGroup,this._ownedBindGroups.push(this.groups[groupIndex]))}_buildResourceAccessor(groups,nameHash){var uniformsOut={};for(const i in nameHash){const data=nameHash[i];Object.defineProperty(uniformsOut,data.name,{get(){return groups[data.group].getResource(data.binding)},set(value){groups[data.group].setResource(value,data.binding)}})}return uniformsOut}destroy(destroyPrograms=!1){this.emit("destroy",this),destroyPrograms&&(null!=(destroyPrograms=this.gpuProgram)&&destroyPrograms.destroy(),null!=(destroyPrograms=this.glProgram))&&destroyPrograms.destroy(),this.gpuProgram=null,this.glProgram=null,this.removeAllListeners(),this._uniformBindMap=null,this._ownedBindGroups.forEach(bindGroup=>{bindGroup.destroy()}),this._ownedBindGroups=null,this.resources=null,this.groups=null}static from(options){var{gpu,gl}=options,options=((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$Y.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$Y)for(var prop of __getOwnPropSymbols$Y(source))exclude.indexOf(prop)<0&&__propIsEnum$Y.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["gpu","gl"]);let gpuProgram,glProgram;return gpu&&(gpuProgram=GpuProgram.from(gpu)),gl&&(glProgram=GlProgram.from(gl)),new Shader(((a,b)=>{for(var prop in b=options||{})__hasOwnProp$Y.call(b,prop)&&__defNormalProp$Y(a,prop,b[prop]);if(__getOwnPropSymbols$Y)for(var prop of __getOwnPropSymbols$Y(b))__propIsEnum$Y.call(b,prop)&&__defNormalProp$Y(a,prop,b[prop]);return a})({gpuProgram:gpuProgram,glProgram:glProgram}))}}class DefaultShader extends Shader{constructor(maxTextures){super({glProgram:compileHighShaderGlProgram({name:"batch",bits:[colorBitGl,generateTextureBatchBitGl(maxTextures),roundPixelsBitGl]}),gpuProgram:compileHighShaderGpuProgram({name:"batch",bits:[colorBit,generateTextureBatchBit(maxTextures),roundPixelsBit]}),resources:{batchSamplers:getBatchSamplersUniformGroup(maxTextures)}})}}let defaultShader=null;const _DefaultBatcher=class _DefaultBatcher extends STENCIL_MODES2{constructor(){super(...arguments),this.geometry=new BatchGeometry,this.shader=defaultShader=defaultShader||new DefaultShader(this.maxTextures),this.name=_DefaultBatcher.extension.name,this.vertexSize=6}packAttributes(element,float32View,uint32View,index,textureId){var textureIdAndRound=textureId<<16|65535&element.roundPixels,a=(textureId=element.transform).a,b=textureId.b,c=textureId.c,d=textureId.d,tx=textureId.tx,ty=textureId.ty,{positions,uvs}=element,argb=element.color,end=(textureId=element.attributeOffset)+element.attributeSize;for(let i=textureId;i<end;i++){var i2=2*i,x=positions[i2],y=positions[1+i2];float32View[index++]=a*x+c*y+tx,float32View[index++]=d*y+b*x+ty,float32View[index++]=uvs[i2],float32View[index++]=uvs[1+i2],uint32View[index++]=argb,uint32View[index++]=textureIdAndRound}}packQuadAttributes(element,float32View,uint32View,index,textureId){var texture=element.texture,a=(wt=element.transform).a,b=wt.b,c=wt.c,d=wt.d,tx=wt.tx,wt=wt.ty,w0=(bounds=element.bounds).maxX,w1=bounds.minX,h0=bounds.maxY,bounds=bounds.minY,texture=texture.uvs,argb=element.color,textureId=textureId<<16|65535&element.roundPixels;float32View[index+0]=a*w1+c*bounds+tx,float32View[index+1]=d*bounds+b*w1+wt,float32View[index+2]=texture.x0,float32View[index+3]=texture.y0,uint32View[index+4]=argb,uint32View[index+5]=textureId,float32View[index+6]=a*w0+c*bounds+tx,float32View[index+7]=d*bounds+b*w0+wt,float32View[index+8]=texture.x1,float32View[index+9]=texture.y1,uint32View[index+10]=argb,uint32View[index+11]=textureId,float32View[index+12]=a*w0+c*h0+tx,float32View[index+13]=d*h0+b*w0+wt,float32View[index+14]=texture.x2,float32View[index+15]=texture.y2,uint32View[index+16]=argb,uint32View[index+17]=textureId,float32View[index+18]=a*w1+c*h0+tx,float32View[index+19]=d*h0+b*w1+wt,float32View[index+20]=texture.x3,float32View[index+21]=texture.y3,uint32View[index+22]=argb,uint32View[index+23]=textureId}};_DefaultBatcher.extension={type:[ExtensionType2.Batcher],name:"default"};let DefaultBatcher=_DefaultBatcher;function buildUvs(vertices,verticesStride,verticesOffset,uvs,uvsOffset,uvsStride,size,matrix=null){let index=0;verticesOffset*=verticesStride,uvsOffset*=uvsStride;for(var a=matrix.a,b=matrix.b,c=matrix.c,d=matrix.d,tx=matrix.tx,ty=matrix.ty;index<size;){var x=vertices[verticesOffset],y=vertices[verticesOffset+1];uvs[uvsOffset]=a*x+c*y+tx,uvs[uvsOffset+1]=b*x+d*y+ty,uvsOffset+=uvsStride,verticesOffset+=verticesStride,index++}}function buildSimpleUvs(uvs,uvsOffset,uvsStride,size){let index=0;for(uvsOffset*=uvsStride;index<size;)uvs[uvsOffset]=0,uvs[uvsOffset+1]=0,uvsOffset+=uvsStride,index++}function transformVertices(vertices,m,offset,stride,size){var a=m.a,b=m.b,c=m.c,d=m.d,tx=m.tx,ty=m.ty;offset=offset||0,stride=stride||2,size=size||vertices.length/stride-offset;let index=offset*stride;for(let i=0;i<size;i++){var x=vertices[index],y=vertices[index+1];vertices[index]=a*x+c*y+tx,vertices[index+1]=b*x+d*y+ty,index+=stride}}const identityMatrix=new Matrix;class BatchableGraphics{constructor(){this.packAsQuad=!1,this.batcherName="default",this.topology="triangle-list",this.applyTransform=!0,this.roundPixels=0,this._batcher=null,this._batch=null}get uvs(){return this.geometryData.uvs}get positions(){return this.geometryData.vertices}get indices(){return this.geometryData.indices}get blendMode(){return this.applyTransform?this.renderable.groupBlendMode:"normal"}get color(){var rgb=(rgb=this.baseColor)>>16|65280&rgb|(255&rgb)<<16,renderable=this.renderable;return renderable?multiplyHexColors(rgb,renderable.groupColor)+(this.alpha*renderable.groupAlpha*255<<24):rgb+(255*this.alpha<<24)}get transform(){var _a;return(null==(_a=this.renderable)?void 0:_a.groupTransform)||identityMatrix}copyTo(gpuBuffer){gpuBuffer.indexOffset=this.indexOffset,gpuBuffer.indexSize=this.indexSize,gpuBuffer.attributeOffset=this.attributeOffset,gpuBuffer.attributeSize=this.attributeSize,gpuBuffer.baseColor=this.baseColor,gpuBuffer.alpha=this.alpha,gpuBuffer.texture=this.texture,gpuBuffer.geometryData=this.geometryData,gpuBuffer.topology=this.topology}reset(){this.applyTransform=!0,this.renderable=null,this.topology="triangle-list"}}var __defProp$X=Object.defineProperty,__defProps$n=Object.defineProperties,__getOwnPropDescs$n=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$X=Object.getOwnPropertySymbols,__hasOwnProp$X=Object.prototype.hasOwnProperty,__propIsEnum$X=Object.prototype.propertyIsEnumerable,__defNormalProp$X=(obj,key,value)=>key in obj?__defProp$X(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,RendererType2=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$X.call(b,prop)&&__defNormalProp$X(a,prop,b[prop]);if(__getOwnPropSymbols$X)for(var prop of __getOwnPropSymbols$X(b))__propIsEnum$X.call(b,prop)&&__defNormalProp$X(a,prop,b[prop]);return a},buildCircle={extension:{type:ExtensionType2.ShapeBuilder,name:"circle"},build(shape,points){let x,y,dx,dy,rx,ry;if("circle"===shape.type?(x=shape.x,y=shape.y,rx=ry=shape.radius,dx=dy=0):"ellipse"===shape.type?(x=shape.x,y=shape.y,rx=shape.halfWidth,ry=shape.halfHeight,dx=dy=0):(halfWidth=shape.width/2,halfHeight=shape.height/2,x=shape.x+halfWidth,y=shape.y+halfHeight,rx=ry=Math.max(0,Math.min(shape.radius,Math.min(halfWidth,halfHeight))),dx=halfWidth-rx,dy=halfHeight-ry),0<=rx&&0<=ry&&0<=dx&&0<=dy){var n=Math.ceil(2.3*Math.sqrt(rx+ry));if(0!=(shape=8*n+(dx?4:0)+(dy?4:0)))if(0===n)points[0]=points[6]=x+dx,points[1]=points[3]=y+dy,points[2]=points[4]=x-dx,points[5]=points[7]=y-dy;else{let j1=0,j2=4*n+(dx?2:0)+2,j3=j2,j4=shape;var halfWidth=dx+rx,halfHeight=dy,shape=x+halfWidth,x2=x-halfWidth,y1=y+halfHeight;points[j1++]=shape,points[j1++]=y1,points[--j2]=y1,points[--j2]=x2,dy&&(y22=y-halfHeight,points[j3++]=x2,points[j3++]=y22,points[--j4]=y22,points[--j4]=shape);for(let i=1;i<n;i++){var a=Math.PI/2*(i/n),x02=dx+Math.cos(a)*rx,a=dy+Math.sin(a)*ry,x12=x+x02,x02=x-x02,y12=y+a;const y22=y-a;points[j1++]=x12,points[j1++]=y12,points[--j2]=y12,points[--j2]=x02,points[j3++]=x02,points[j3++]=y22,points[--j4]=y22,points[--j4]=x12}var halfWidth=dx,halfHeight=dy+ry,shape=x+halfWidth,x2=x-halfWidth,y1=y+halfHeight,y22=y-halfHeight;points[j1++]=shape,points[j1++]=y1,points[--j4]=y22,points[--j4]=shape,dx&&(points[j1++]=x2,points[j1++]=y1,points[--j4]=y22,points[--j4]=x2)}}return points},triangulate(points,vertices,verticesStride,verticesOffset,indices,indicesOffset){if(0!==points.length){let centerX=0,centerY=0;for(let i=0;i<points.length;i+=2)centerX+=points[i],centerY+=points[i+1];centerX/=points.length/2,centerY/=points.length/2;let count=verticesOffset;vertices[count*verticesStride]=centerX,vertices[count*verticesStride+1]=centerY;var centerIndex=count++;for(let i=0;i<points.length;i+=2)vertices[count*verticesStride]=points[i],vertices[count*verticesStride+1]=points[i+1],0<i&&(indices[indicesOffset++]=count,indices[indicesOffset++]=centerIndex,indices[indicesOffset++]=count-1),count++;indices[indicesOffset++]=1+centerIndex,indices[indicesOffset++]=centerIndex,indices[indicesOffset++]=count-1}}},buildEllipse=(__spreadProps$n=(a,b)=>__defProps$n(a,__getOwnPropDescs$n(b)))(RendererType2({},buildCircle),{extension:__spreadProps$n(RendererType2({},buildCircle.extension),{name:"ellipse"})}),__spreadProps$n=__spreadProps$n(RendererType2({},buildCircle),{extension:__spreadProps$n(RendererType2({},buildCircle.extension),{name:"roundedRectangle"})});const closePointEps=1e-4,curveEps=1e-4;function getOrientationOfPoints(points){var m=points.length;if(m<6)return 1;let area=0;for(let i=0,x1=points[m-2],y1=points[m-1];i<m;i+=2){var x2=points[i],y2=points[i+1];area+=(x2-x1)*(y2+y1),x1=x2,y1=y2}return area<0?-1:1}function square(x,y,nx,ny,innerWeight,outerWeight,clockwise,verts){let exx,eyy;return eyy=clockwise?(exx=ny,-nx):(exx=-ny,nx),clockwise=x-nx*innerWeight+exx,innerWeight=y-ny*innerWeight+eyy,x=x+nx*outerWeight+exx,nx=y+ny*outerWeight+eyy,verts.push(clockwise,innerWeight),verts.push(x,nx),2}function round(cx,cy,sx,sy,ex,ey,verts,clockwise){var cx2p0x=sx-cx,cy2p0y=sy-cy;let angle0=Math.atan2(cx2p0x,cy2p0y),angle1=Math.atan2(ex-cx,ey-cy);clockwise&&angle0<angle1?angle0+=2*Math.PI:!clockwise&&angle0>angle1&&(angle1+=2*Math.PI);var startAngle=angle0,angleDiff=angle1-angle0,absAngleDiff=Math.abs(angleDiff),radius=Math.sqrt(cx2p0x*cx2p0x+cy2p0y*cy2p0y),segCount=1+(15*absAngleDiff*Math.sqrt(radius)/Math.PI>>0),angleInc=angleDiff/segCount;if(startAngle+=angleInc,clockwise){verts.push(cx,cy),verts.push(sx,sy);for(let i=1,angle=startAngle;i<segCount;i++,angle+=angleInc)verts.push(cx,cy),verts.push(cx+Math.sin(angle)*radius,cy+Math.cos(angle)*radius);verts.push(cx,cy),verts.push(ex,ey)}else{verts.push(sx,sy),verts.push(cx,cy);for(let i=1,angle=startAngle;i<segCount;i++,angle+=angleInc)verts.push(cx+Math.sin(angle)*radius,cy+Math.cos(angle)*radius),verts.push(cx,cy);verts.push(ex,ey),verts.push(cx,cy)}return 2*segCount}function buildLine(points,lineStyle,flipAlignment,closed,vertices,indices){var eps=closePointEps;if(0!==points.length){var style=lineStyle;let alignment=style.alignment;if(.5!==lineStyle.alignment){let orientation=getOrientationOfPoints(points);flipAlignment&&(orientation*=-1),alignment=(alignment-.5)*orientation+.5}var lineStyle=new Point(points[0],points[1]),flipAlignment=new Point(points[points.length-2],points[points.length-1]),eps=Math.abs(lineStyle.x-flipAlignment.x)<eps&&Math.abs(lineStyle.y-flipAlignment.y)<eps,verts=(closed&&(points=points.slice(),eps&&(points.pop(),points.pop(),flipAlignment.set(points[points.length-2],points[points.length-1])),eps=.5*(lineStyle.x+flipAlignment.x),flipAlignment=.5*(flipAlignment.y+lineStyle.y),points.unshift(eps,flipAlignment),points.push(eps,flipAlignment)),vertices),length=points.length/2;let indexCount=points.length;var indexStart=verts.length/2,width=style.width/2,widthSquared=width*width,miterLimitSquared=style.miterLimit*style.miterLimit;let x0=points[0],y0=points[1],x1=points[2],y1=points[3],x2=0,y2=0,perpX=-(y0-y1),perpY=x0-x1,dist=Math.sqrt(perpX*perpX+perpY*perpY);perpX/=dist,perpY/=dist,perpX*=width,perpY*=width;var innerWeight=2*(1-alignment),outerWeight=2*alignment;closed||("round"===style.cap?indexCount+=round(x0-perpX*(innerWeight-outerWeight)*.5,y0-perpY*(innerWeight-outerWeight)*.5,x0-perpX*innerWeight,y0-perpY*innerWeight,x0+perpX*outerWeight,y0+perpY*outerWeight,verts,!0)+2:"square"===style.cap&&(indexCount+=square(x0,y0,perpX,perpY,innerWeight,outerWeight,!0,verts))),verts.push(x0-perpX*innerWeight,y0-perpY*innerWeight),verts.push(x0+perpX*outerWeight,y0+perpY*outerWeight);for(let i=1;i<length-1;++i){x0=points[2*(i-1)],y0=points[2*(i-1)+1],x1=points[2*i],y1=points[2*i+1],x2=points[2*(i+1)],y2=points[2*(i+1)+1],perpX=-(y0-y1),perpY=x0-x1,dist=Math.sqrt(perpX*perpX+perpY*perpY),perpX/=dist,perpY/=dist,perpX*=width,perpY*=width;var imy,c2,py,insideWeight,perp1x=-(y1-y2),perp1y=x1-x2,perp1x=perp1x/(dist=Math.sqrt(perp1x*perp1x+perp1y*perp1y))*width,perp1y=perp1y/dist*width,dx0=x1-x0,dy0=y0-y1,dx1=x1-x2,dy1=y2-y1,dot=dx0*dx1+dy0*dy1,cross=dy0*dx1-dy1*dx0,clockwise=cross<0;Math.abs(cross)<.001*Math.abs(dot)?(verts.push(x1-perpX*innerWeight,y1-perpY*innerWeight),verts.push(x1+perpX*outerWeight,y1+perpY*outerWeight),0<=dot&&("round"===style.join?indexCount+=round(x1,y1,x1-perpX*innerWeight,y1-perpY*innerWeight,x1-perp1x*innerWeight,y1-perp1y*innerWeight,verts,!1)+4:indexCount+=2,verts.push(x1-perp1x*outerWeight,y1-perp1y*outerWeight),verts.push(x1+perp1x*innerWeight,y1+perp1y*innerWeight))):(py=(dy1*(dot=(-perpX+x0)*(-perpY+y1)-(-perpX+x1)*(-perpY+y0))-dy0*(c2=(-perp1x+x2)*(-perp1y+y1)-(-perp1x+x1)*(-perp1y+y2)))/cross,dot=((c2=(dx0*c2-dx1*dot)/cross)-x1)*(c2-x1)+(py-y1)*(py-y1),cross=x1+(c2-x1)*innerWeight,imy=y1+(py-y1)*innerWeight,c2=x1-(c2-x1)*outerWeight,py=y1-(py-y1)*outerWeight,insideWeight=clockwise?innerWeight:outerWeight,dot<=Math.min(dx0*dx0+dy0*dy0,dx1*dx1+dy1*dy1)+insideWeight*insideWeight*widthSquared?"bevel"===style.join||miterLimitSquared<dot/widthSquared?(clockwise?(verts.push(cross,imy),verts.push(x1+perpX*outerWeight,y1+perpY*outerWeight),verts.push(cross,imy),verts.push(x1+perp1x*outerWeight,y1+perp1y*outerWeight)):(verts.push(x1-perpX*innerWeight,y1-perpY*innerWeight),verts.push(c2,py),verts.push(x1-perp1x*innerWeight,y1-perp1y*innerWeight),verts.push(c2,py)),indexCount+=2):"round"===style.join?clockwise?(verts.push(cross,imy),verts.push(x1+perpX*outerWeight,y1+perpY*outerWeight),indexCount+=round(x1,y1,x1+perpX*outerWeight,y1+perpY*outerWeight,x1+perp1x*outerWeight,y1+perp1y*outerWeight,verts,!0)+4,verts.push(cross,imy),verts.push(x1+perp1x*outerWeight,y1+perp1y*outerWeight)):(verts.push(x1-perpX*innerWeight,y1-perpY*innerWeight),verts.push(c2,py),indexCount+=round(x1,y1,x1-perpX*innerWeight,y1-perpY*innerWeight,x1-perp1x*innerWeight,y1-perp1y*innerWeight,verts,!1)+4,verts.push(x1-perp1x*innerWeight,y1-perp1y*innerWeight),verts.push(c2,py)):(verts.push(cross,imy),verts.push(c2,py)):(verts.push(x1-perpX*innerWeight,y1-perpY*innerWeight),verts.push(x1+perpX*outerWeight,y1+perpY*outerWeight),"round"===style.join?indexCount+=clockwise?round(x1,y1,x1+perpX*outerWeight,y1+perpY*outerWeight,x1+perp1x*outerWeight,y1+perp1y*outerWeight,verts,!0)+2:round(x1,y1,x1-perpX*innerWeight,y1-perpY*innerWeight,x1-perp1x*innerWeight,y1-perp1y*innerWeight,verts,!1)+2:"miter"===style.join&&dot/widthSquared<=miterLimitSquared&&(clockwise?(verts.push(c2,py),verts.push(c2,py)):(verts.push(cross,imy),verts.push(cross,imy)),indexCount+=2),verts.push(x1-perp1x*innerWeight,y1-perp1y*innerWeight),verts.push(x1+perp1x*outerWeight,y1+perp1y*outerWeight),indexCount+=2))}x0=points[2*(length-2)],y0=points[2*(length-2)+1],x1=points[2*(length-1)],y1=points[2*(length-1)+1],perpX=-(y0-y1),perpY=x0-x1,dist=Math.sqrt(perpX*perpX+perpY*perpY),perpX/=dist,perpY/=dist,perpX*=width,perpY*=width,verts.push(x1-perpX*innerWeight,y1-perpY*innerWeight),verts.push(x1+perpX*outerWeight,y1+perpY*outerWeight),closed||("round"===style.cap?indexCount+=round(x1-perpX*(innerWeight-outerWeight)*.5,y1-perpY*(innerWeight-outerWeight)*.5,x1-perpX*innerWeight,y1-perpY*innerWeight,x1+perpX*outerWeight,y1+perpY*outerWeight,verts,!1)+2:"square"===style.cap&&(indexCount+=square(x1,y1,perpX,perpY,innerWeight,outerWeight,!1,verts)));var eps2=curveEps*curveEps;for(let i=indexStart;i<indexCount+indexStart-2;++i)x0=verts[2*i],y0=verts[2*i+1],x1=verts[2*(i+1)],y1=verts[2*(i+1)+1],x2=verts[2*(i+2)],y2=verts[2*(i+2)+1],Math.abs(x0*(y1-y2)+x1*(y2-y0)+x2*(y0-y1))<eps2||indices.push(i,i+1,i+2)}}function buildPixelLine(points,closed,vertices,indices){var eps=closePointEps;if(0!==points.length){var fx=points[0],fy=points[1],lx=points[points.length-2],ly=points[points.length-1],closed=closed||Math.abs(fx-lx)<eps&&Math.abs(fy-ly)<eps,verts=vertices,length=points.length/2,indexStart=verts.length/2;for(let i=0;i<length;i++)verts.push(points[2*i]),verts.push(points[2*i+1]);for(let i=0;i<length-1;i++)indices.push(indexStart+i,indexStart+i+1);closed&&indices.push(indexStart+length-1,indexStart)}}function earcut(data,holeIndices,dim){dim=dim||2;var maxX,maxY,x,y,invSize,hasHoles=holeIndices&&holeIndices.length,outerLen=hasHoles?holeIndices[0]*dim:data.length,outerNode=linkedList(data,0,outerLen,dim,!0),triangles=[];if(outerNode&&outerNode.next!==outerNode.prev){if(hasHoles&&(outerNode=function(data,holeIndices,outerNode,dim){for(var start,queue=[],i=0,len=holeIndices.length;i<len;i++)(start=linkedList(data,start=holeIndices[i]*dim,i<len-1?holeIndices[i+1]*dim:data.length,dim,!1))===start.next&&(start.steiner=!0),queue.push(function(start){for(var p=start,leftmost=start;(p.x<leftmost.x||p.x===leftmost.x&&p.y<leftmost.y)&&(leftmost=p),(p=p.next)!==start;);return leftmost}(start));for(queue.sort(compareX),i=0;i<queue.length;i++)outerNode=function(hole,outerNode){var bridge=function(hole,outerNode){var m,p=outerNode,hx=hole.x,hy=hole.y,qx=-1/0;do{if(hy<=p.y&&hy>=p.next.y&&p.next.y!==p.y){var x=p.x+(hy-p.y)*(p.next.x-p.x)/(p.next.y-p.y);if(x<=hx&&qx<x&&(m=p.x<p.next.x?p:p.next,(qx=x)===hx))return m}}while((p=p.next)!==outerNode);if(!m)return null;for(var tan,stop=m,mx=m.x,my=m.y,tanMin=1/0,p=m;hx>=p.x&&p.x>=mx&&hx!==p.x&&pointInTriangle$1(hy<my?hx:qx,hy,mx,my,hy<my?qx:hx,hy,p.x,p.y)&&(tan=Math.abs(hy-p.y)/(hx-p.x),locallyInside(p,hole))&&(tan<tanMin||tan===tanMin&&(p.x>m.x||p.x===m.x&&function(m,p){return area(m.prev,m,p.prev)<0&&area(p.next,m,m.next)<0}(m,p)))&&(m=p,tanMin=tan),(p=p.next)!==stop;);return m}(hole,outerNode);return bridge?(filterPoints(hole=splitPolygon(bridge,hole),hole.next),filterPoints(bridge,bridge.next)):outerNode}(queue[i],outerNode);return outerNode}(data,holeIndices,outerNode,dim)),data.length>80*dim){for(var minX=maxX=data[0],minY=maxY=data[1],i=dim;i<outerLen;i+=dim)(x=data[i])<minX&&(minX=x),(y=data[i+1])<minY&&(minY=y),maxX<x&&(maxX=x),maxY<y&&(maxY=y);invSize=0!==(invSize=Math.max(maxX-minX,maxY-minY))?32767/invSize:0}!function earcutLinked(ear,triangles,dim,minX,minY,invSize,pass){if(ear){!pass&&invSize&&!function(start,minX,minY,invSize){for(var p=start;0===p.z&&(p.z=zOrder(p.x,p.y,minX,minY,invSize)),p.prevZ=p.prev,p.nextZ=p.next,(p=p.next)!==start;);p.prevZ.nextZ=null,p.prevZ=null,function(list){var i,p,q,e,tail,numMerges,pSize,qSize,inSize=1;do{for(p=list,tail=list=null,numMerges=0;p;){for(numMerges++,q=p,i=pSize=0;i<inSize&&(pSize++,q=q.nextZ);i++);for(qSize=inSize;0<pSize||0<qSize&&q;)0!==pSize&&(0===qSize||!q||p.z<=q.z)?(p=(e=p).nextZ,pSize--):(q=(e=q).nextZ,qSize--),tail?tail.nextZ=e:list=e,e.prevZ=tail,tail=e;p=q}}while(tail.nextZ=null,inSize*=2,1<numMerges)}(p)}(ear,minX,minY,invSize);for(var prev,next,stop=ear;ear.prev!==ear.next;)if(prev=ear.prev,next=ear.next,invSize?function(ear,minX,minY,invSize){var a=ear.prev,c=ear.next;if(!(0<=area(a,ear,c))){for(var ax=a.x,bx=ear.x,cx=c.x,ay=a.y,by=ear.y,cy=c.y,x0=ax<bx?ax<cx?ax:cx:bx<cx?bx:cx,y0=ay<by?ay<cy?ay:cy:by<cy?by:cy,x1=bx<ax?cx<ax?ax:cx:cx<bx?bx:cx,y1=by<ay?cy<ay?ay:cy:cy<by?by:cy,minZ=zOrder(x0,y0,minX,minY,invSize),maxZ=zOrder(x1,y1,minX,minY,invSize),p=ear.prevZ,n=ear.nextZ;p&&p.z>=minZ&&n&&n.z<=maxZ;){if(p.x>=x0&&p.x<=x1&&p.y>=y0&&p.y<=y1&&p!==a&&p!==c&&pointInTriangle$1(ax,ay,bx,by,cx,cy,p.x,p.y)&&0<=area(p.prev,p,p.next))return;if(p=p.prevZ,n.x>=x0&&n.x<=x1&&n.y>=y0&&n.y<=y1&&n!==a&&n!==c&&pointInTriangle$1(ax,ay,bx,by,cx,cy,n.x,n.y)&&0<=area(n.prev,n,n.next))return;n=n.nextZ}for(;p&&p.z>=minZ;){if(p.x>=x0&&p.x<=x1&&p.y>=y0&&p.y<=y1&&p!==a&&p!==c&&pointInTriangle$1(ax,ay,bx,by,cx,cy,p.x,p.y)&&0<=area(p.prev,p,p.next))return;p=p.prevZ}for(;n&&n.z<=maxZ;){if(n.x>=x0&&n.x<=x1&&n.y>=y0&&n.y<=y1&&n!==a&&n!==c&&pointInTriangle$1(ax,ay,bx,by,cx,cy,n.x,n.y)&&0<=area(n.prev,n,n.next))return;n=n.nextZ}return 1}}(ear,minX,minY,invSize):function(ear){var a=ear.prev,b=ear;if(!(0<=area(a,b,ear=ear.next))){for(var ax=a.x,bx=b.x,cx=ear.x,ay=a.y,by=b.y,cy=ear.y,x0=ax<bx?ax<cx?ax:cx:bx<cx?bx:cx,y0=ay<by?ay<cy?ay:cy:by<cy?by:cy,x1=bx<ax?cx<ax?ax:cx:cx<bx?bx:cx,y1=by<ay?cy<ay?ay:cy:cy<by?by:cy,p=ear.next;p!==a;){if(p.x>=x0&&p.x<=x1&&p.y>=y0&&p.y<=y1&&pointInTriangle$1(ax,ay,bx,by,cx,cy,p.x,p.y)&&0<=area(p.prev,p,p.next))return;p=p.next}return 1}}(ear))triangles.push(prev.i/dim|0),triangles.push(ear.i/dim|0),triangles.push(next.i/dim|0),removeNode(ear),ear=next.next,stop=next.next;else if((ear=next)===stop){pass?1===pass?earcutLinked(ear=function(start,triangles,dim){var p=start;do{var a=p.prev,b=p.next.next}while(!equals(a,b)&&intersects(a,p,p.next,b)&&locallyInside(a,b)&&locallyInside(b,a)&&(triangles.push(a.i/dim|0),triangles.push(p.i/dim|0),triangles.push(b.i/dim|0),removeNode(p),removeNode(p.next),p=start=b),(p=p.next)!==start);return filterPoints(p)}(filterPoints(ear),triangles,dim),triangles,dim,minX,minY,invSize,2):2===pass&&function(start,triangles,dim,minX,minY,invSize){var a=start;do{for(var c,b=a.next.next;b!==a.prev;){if(a.i!==b.i&&function(a,b){return a.next.i!==b.i&&a.prev.i!==b.i&&!function(a,b){var p=a;do{if(p.i!==a.i&&p.next.i!==a.i&&p.i!==b.i&&p.next.i!==b.i&&intersects(p,p.next,a,b))return 1}while((p=p.next)!==a)}(a,b)&&(locallyInside(a,b)&&locallyInside(b,a)&&function(a,b){for(var p=a,inside=!1,px=(a.x+b.x)/2,py=(a.y+b.y)/2;p.y>py!=p.next.y>py&&p.next.y!==p.y&&px<(p.next.x-p.x)*(py-p.y)/(p.next.y-p.y)+p.x&&(inside=!inside),(p=p.next)!==a;);return inside}(a,b)&&(area(a.prev,a,b.prev)||area(a,b.prev,b))||equals(a,b)&&0<area(a.prev,a,a.next)&&0<area(b.prev,b,b.next))}(a,b))return c=splitPolygon(a,b),a=filterPoints(a,a.next),c=filterPoints(c,c.next),earcutLinked(a,triangles,dim,minX,minY,invSize,0),earcutLinked(c,triangles,dim,minX,minY,invSize,0);b=b.next}}while((a=a.next)!==start)}(ear,triangles,dim,minX,minY,invSize):earcutLinked(filterPoints(ear),triangles,dim,minX,minY,invSize,1);break}}}(outerNode,triangles,dim,minX,minY,invSize,0)}return triangles}function linkedList(data,start,end,dim,clockwise){var i,last;if(clockwise===0<signedArea(data,start,end,dim))for(i=start;i<end;i+=dim)last=insertNode(i,data[i],data[i+1],last);else for(i=end-dim;start<=i;i-=dim)last=insertNode(i,data[i],data[i+1],last);return last&&equals(last,last.next)&&(removeNode(last),last=last.next),last}function filterPoints(start,end){if(!start)return start;end=end||start;var again,p=start;do{if(again=!1,p.steiner||!equals(p,p.next)&&0!==area(p.prev,p,p.next))p=p.next;else{if(removeNode(p),(p=end=p.prev)===p.next)break;again=!0}}while(again||p!==end);return end}function compareX(a,b){return a.x-b.x}function zOrder(x,y,minX,minY,invSize){return(x=1431655765&((x=858993459&((x=252645135&((x=16711935&((x=(x-minX)*invSize|0)|x<<8))|x<<4))|x<<2))|x<<1))|(1431655765&((y=858993459&((y=252645135&((y=16711935&((y=(y-minY)*invSize|0)|y<<8))|y<<4))|y<<2))|y<<1))<<1}function pointInTriangle$1(ax,ay,bx,by,cx,cy,px,py){return(ax-px)*(cy-py)<=(cx-px)*(ay-py)&&(bx-px)*(ay-py)<=(ax-px)*(by-py)&&(cx-px)*(by-py)<=(bx-px)*(cy-py)}function area(p,q,r){return(q.y-p.y)*(r.x-q.x)-(q.x-p.x)*(r.y-q.y)}function equals(p1,p2){return p1.x===p2.x&&p1.y===p2.y}function intersects(p1,q1,p2,q2){var o1=sign(area(p1,q1,p2)),o2=sign(area(p1,q1,q2)),o3=sign(area(p2,q2,p1)),o4=sign(area(p2,q2,q1));return o1!==o2&&o3!==o4||0===o1&&onSegment(p1,p2,q1)||0===o2&&onSegment(p1,q2,q1)||0===o3&&onSegment(p2,p1,q2)||0===o4&&onSegment(p2,q1,q2)}function onSegment(p,q,r){return q.x<=Math.max(p.x,r.x)&&q.x>=Math.min(p.x,r.x)&&q.y<=Math.max(p.y,r.y)&&q.y>=Math.min(p.y,r.y)}function sign(num){return 0<num?1:num<0?-1:0}function locallyInside(a,b){return area(a.prev,a,a.next)<0?0<=area(a,b,a.next)&&0<=area(a,a.prev,b):area(a,b,a.prev)<0||area(a,a.next,b)<0}function splitPolygon(a,b){var a2=new Node(a.i,a.x,a.y),b2=new Node(b.i,b.x,b.y),an=a.next,bp=b.prev;return(a.next=b).prev=a,(a2.next=an).prev=a2,(b2.next=a2).prev=b2,(bp.next=b2).prev=bp,b2}function insertNode(i,x,y,last){return i=new Node(i,x,y),last?(i.next=last.next,(i.prev=last).next.prev=i,last.next=i):(i.prev=i).next=i,i}function removeNode(p){p.next.prev=p.prev,p.prev.next=p.next,p.prevZ&&(p.prevZ.nextZ=p.nextZ),p.nextZ&&(p.nextZ.prevZ=p.prevZ)}function Node(i,x,y){this.i=i,this.x=x,this.y=y,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function signedArea(data,start,end,dim){for(var sum=0,i=start,j=end-dim;i<end;i+=dim)sum+=(data[j]-data[i])*(data[i+1]+data[j+1]),j=i;return sum}(RendererType2={exports:{}}).exports=earcut,(RendererType2.exports.default=earcut).deviation=function(data,holeIndices,dim,triangles){var hasHoles=holeIndices&&holeIndices.length,outerLen=hasHoles?holeIndices[0]*dim:data.length,polygonArea=Math.abs(signedArea(data,0,outerLen,dim));if(hasHoles)for(var i=0,len=holeIndices.length;i<len;i++){var start=holeIndices[i]*dim,end=i<len-1?holeIndices[i+1]*dim:data.length;polygonArea-=Math.abs(signedArea(data,start,end,dim))}for(var trianglesArea=0,i=0;i<triangles.length;i+=3){var a=triangles[i]*dim,b=triangles[i+1]*dim,c=triangles[i+2]*dim;trianglesArea+=Math.abs((data[a]-data[c])*(data[1+b]-data[1+a])-(data[a]-data[b])*(data[1+c]-data[1+a]))}return 0===polygonArea&&0===trianglesArea?0:Math.abs((trianglesArea-polygonArea)/polygonArea)},earcut.flatten=function(data){for(var dim=data[0][0].length,result={vertices:[],holes:[],dimensions:dim},holeIndex=0,i=0;i<data.length;i++){for(var j=0;j<data[i].length;j++)for(var d=0;d<dim;d++)result.vertices.push(data[i][j][d]);0<i&&(holeIndex+=data[i-1].length,result.holes.push(holeIndex))}return result};var earcut$1=getDefaultExportFromCjs(RendererType2.exports);function triangulateWithHoles(points,holes,vertices,verticesStride,verticesOffset,indices,indicesOffset){var triangles=earcut$1(points,holes,2);if(triangles){for(let i=0;i<triangles.length;i+=3)indices[indicesOffset++]=triangles[i]+verticesOffset,indices[indicesOffset++]=triangles[i+1]+verticesOffset,indices[indicesOffset++]=triangles[i+2]+verticesOffset;let index=verticesOffset*verticesStride;for(let i=0;i<points.length;i+=2)vertices[index]=points[i],vertices[index+1]=points[i+1],index+=verticesStride}}const emptyArray=[];var RendererType2={extension:{type:ExtensionType2.ShapeBuilder,name:"polygon"},build(shape,points){for(let i=0;i<shape.points.length;i++)points[i]=shape.points[i];return points},triangulate(points,vertices,verticesStride,verticesOffset,indices,indicesOffset){triangulateWithHoles(points,emptyArray,vertices,verticesStride,verticesOffset,indices,indicesOffset)}},buildRectangle={extension:{type:ExtensionType2.ShapeBuilder,name:"rectangle"},build(shape,points){var x=shape.x,y=shape.y,width=shape.width,shape=shape.height;return 0<=width&&0<=shape&&(points[0]=x,points[1]=y,points[2]=x+width,points[3]=y,points[4]=x+width,points[5]=y+shape,points[6]=x,points[7]=y+shape),points},triangulate(points,vertices,verticesStride,verticesOffset,indices,indicesOffset){var count=0,vertices=(vertices[0+(verticesOffset*=verticesStride)]=points[0],vertices[verticesOffset+0+1]=points[1],vertices[verticesOffset+(count+=verticesStride)]=points[2],vertices[verticesOffset+count+1]=points[3],vertices[verticesOffset+(count+=verticesStride)]=points[6],vertices[verticesOffset+count+1]=points[7],vertices[verticesOffset+(count+=verticesStride)]=points[4],vertices[verticesOffset+count+1]=points[5],verticesOffset/verticesStride);indices[indicesOffset++]=vertices,indices[indicesOffset++]=1+vertices,indices[indicesOffset++]=2+vertices,indices[indicesOffset++]=1+vertices,indices[indicesOffset++]=3+vertices,indices[indicesOffset++]=2+vertices}},buildTriangle={extension:{type:ExtensionType2.ShapeBuilder,name:"triangle"},build(shape,points){return points[0]=shape.x,points[1]=shape.y,points[2]=shape.x2,points[3]=shape.y2,points[4]=shape.x3,points[5]=shape.y3,points},triangulate(points,vertices,verticesStride,verticesOffset,indices,indicesOffset){var count=0,vertices=(vertices[0+(verticesOffset*=verticesStride)]=points[0],vertices[verticesOffset+0+1]=points[1],vertices[verticesOffset+(count+=verticesStride)]=points[2],vertices[verticesOffset+count+1]=points[3],vertices[verticesOffset+(count+=verticesStride)]=points[4],vertices[verticesOffset+count+1]=points[5],verticesOffset/verticesStride);indices[indicesOffset++]=vertices,indices[indicesOffset++]=1+vertices,indices[indicesOffset++]=2+vertices}};const tempTextureMatrix$1=new Matrix,tempRect$3=new Rectangle;function generateTextureMatrix(out,style,shape,matrix){return out=style.matrix?out.copyFrom(style.matrix).invert():out.identity(),"local"===style.textureSpace?(shape=shape.getBounds(tempRect$3),out.translate(-shape.x,-shape.y),out.scale(1/shape.width,1/shape.height)):(out.translate(style.texture.frame.x,style.texture.frame.y),out.scale(1/style.texture.source.width,1/style.texture.source.height),"clamp-to-edge"===(shape=style.texture.source.style).addressMode&&(shape.addressMode="repeat",shape.update())),matrix&&out.append(tempTextureMatrix$1.copyFrom(matrix).invert()),out}const shapeBuilders={},tempRect$2=(extensions.handleByMap(ExtensionType2.ShapeBuilder,shapeBuilders),extensions.add(buildRectangle,RendererType2,buildTriangle,buildCircle,buildEllipse,__spreadProps$n),new Rectangle),tempTextureMatrix=new Matrix;function buildContextBatches(context,gpuContext){var{geometryData,batches}=gpuContext;batches.length=0,geometryData.indices.length=0,geometryData.vertices.length=0;for(let i=geometryData.uvs.length=0;i<context.instructions.length;i++){var isStroke,shapePath,style,instruction=context.instructions[i];"texture"===instruction.action?function(data,batches,geometryData){var{vertices,uvs,indices}=geometryData,indexOffset=indices.length,vertOffset=vertices.length/2,points=[],build=shapeBuilders.rectangle,rect=tempRect$2,texture=data.image,matrix=(rect.x=data.dx,rect.y=data.dy,rect.width=data.dw,rect.height=data.dh,data.transform);build.build(rect,points),matrix&&transformVertices(points,matrix),build.triangulate(points,vertices,2,vertOffset,indices,indexOffset),rect=texture.uvs,uvs.push(rect.x0,rect.y0,rect.x1,rect.y1,rect.x3,rect.y3,rect.x2,rect.y2),(matrix=BigPool.get(BatchableGraphics)).indexOffset=indexOffset,matrix.indexSize=indices.length-indexOffset,matrix.attributeOffset=vertOffset,matrix.attributeSize=vertices.length/2-vertOffset,matrix.baseColor=data.style,matrix.alpha=data.alpha,matrix.texture=texture,matrix.geometryData=geometryData,batches.push(matrix)}(instruction.data,batches,geometryData):"fill"!==instruction.action&&"stroke"!==instruction.action||(isStroke="stroke"===instruction.action,shapePath=instruction.data.path.shapePath,style=instruction.data.style,instruction=instruction.data.hole,isStroke&&instruction&&addShapePathToGeometryData(instruction.shapePath,style,!0,batches,geometryData),instruction&&(shapePath.shapePrimitives[shapePath.shapePrimitives.length-1].holes=instruction.shapePath.shapePrimitives),addShapePathToGeometryData(shapePath,style,isStroke,batches,geometryData))}}function addShapePathToGeometryData(shapePath,style,isStroke,batches,geometryData){const{vertices,uvs,indices}=geometryData;shapePath.shapePrimitives.forEach(({shape,transform:matrix,holes})=>{var indexOffset=indices.length,vertOffset=vertices.length/2,points=[],build=shapeBuilders[shape.type];let topology="triangle-list";if(build.build(shape,points),matrix&&transformVertices(points,matrix),isStroke){var _a=null==(_a=shape.closePath)||_a,lineStyle=style;lineStyle.pixelLine?(buildPixelLine(points,_a,vertices,indices),topology="line-list"):buildLine(points,lineStyle,!1,_a,vertices,indices)}else if(holes){const holeIndices=[],otherPoints=points.slice();(function(holePrimitives){var holeArrays=[];for(let k=0;k<holePrimitives.length;k++){var holePrimitive=holePrimitives[k].shape,holePoints=[];shapeBuilders[holePrimitive.type].build(holePrimitive,holePoints),holeArrays.push(holePoints)}return holeArrays})(holes).forEach(holePoints=>{holeIndices.push(otherPoints.length/2),otherPoints.push(...holePoints)}),triangulateWithHoles(otherPoints,holeIndices,vertices,2,vertOffset,indices,indexOffset)}else build.triangulate(points,vertices,2,vertOffset,indices,indexOffset);lineStyle=uvs.length/2,(_a=style.texture)!==Texture.WHITE?(holes=generateTextureMatrix(tempTextureMatrix,style,shape,matrix),buildUvs(vertices,2,vertOffset,uvs,lineStyle,2,vertices.length/2-vertOffset,holes)):buildSimpleUvs(uvs,lineStyle,2,vertices.length/2-vertOffset),(build=BigPool.get(BatchableGraphics)).indexOffset=indexOffset,build.indexSize=indices.length-indexOffset,build.attributeOffset=vertOffset,build.attributeSize=vertices.length/2-vertOffset,build.baseColor=style.color,build.alpha=style.alpha,build.texture=_a,build.geometryData=geometryData,build.topology=topology,batches.push(build)})}class GpuGraphicsContext{constructor(){this.batches=[],this.geometryData={vertices:[],uvs:[],indices:[]}}}class GraphicsContextRenderData{constructor(){this.batcher=new DefaultBatcher,this.instructions=new InstructionSet}init(){this.instructions.reset()}get geometry(){return deprecation("8.3.4","GraphicsContextRenderData#geometry is deprecated, please use batcher.geometry instead."),this.batcher.geometry}}const _GraphicsContextSystem=class _GraphicsContextSystem{constructor(renderer){this._gpuContextHash={},this._graphicsDataContextHash=Object.create(null),renderer.renderableGC.addManagedHash(this,"_gpuContextHash"),renderer.renderableGC.addManagedHash(this,"_graphicsDataContextHash")}init(options){_GraphicsContextSystem.defaultOptions.bezierSmoothness=null!=(options=null==options?void 0:options.bezierSmoothness)?options:_GraphicsContextSystem.defaultOptions.bezierSmoothness}getContextRenderData(context){return this._graphicsDataContextHash[context.uid]||this._initContextRenderData(context)}updateGpuContext(context){let gpuContext=this._gpuContextHash[context.uid]||this._initContext(context);var batchMode;return context.dirty&&(gpuContext?this._cleanGraphicsContextData(context):gpuContext=this._initContext(context),buildContextBatches(context,gpuContext),batchMode=context.batchMode,context.customShader||"no-batch"===batchMode?gpuContext.isBatchable=!1:"auto"===batchMode&&(gpuContext.isBatchable=gpuContext.geometryData.vertices.length<400),context.dirty=!1),gpuContext}getGpuContext(context){return this._gpuContextHash[context.uid]||this._initContext(context)}_initContextRenderData(context){var graphicsData=BigPool.get(GraphicsContextRenderData),{batches,geometryData}=this._gpuContextHash[context.uid],vertexSize=geometryData.vertices.length,geometryData=geometryData.indices.length;for(let i=0;i<batches.length;i++)batches[i].applyTransform=!1;var batcher=graphicsData.batcher;batcher.ensureAttributeBuffer(vertexSize),batcher.ensureIndexBuffer(geometryData),batcher.begin();for(let i=0;i<batches.length;i++){var batch=batches[i];batcher.add(batch)}batcher.finish(graphicsData.instructions),(vertexSize=batcher.geometry).indexBuffer.setDataWithSize(batcher.indexBuffer,batcher.indexSize,!0),vertexSize.buffers[0].setDataWithSize(batcher.attributeBuffer.float32View,batcher.attributeSize,!0);var drawBatches=batcher.batches;for(let i=0;i<drawBatches.length;i++){const batch=drawBatches[i];batch.bindGroup=getTextureBatchBindGroup(batch.textures.textures,batch.textures.count)}return this._graphicsDataContextHash[context.uid]=graphicsData}_initContext(context){var gpuContext=new GpuGraphicsContext;return gpuContext.context=context,this._gpuContextHash[context.uid]=gpuContext,context.on("destroy",this.onGraphicsContextDestroy,this),this._gpuContextHash[context.uid]}onGraphicsContextDestroy(context){this._cleanGraphicsContextData(context),context.off("destroy",this.onGraphicsContextDestroy,this),this._gpuContextHash[context.uid]=null}_cleanGraphicsContextData(context){var gpuContext=this._gpuContextHash[context.uid];gpuContext.isBatchable||this._graphicsDataContextHash[context.uid]&&(BigPool.return(this.getContextRenderData(context)),this._graphicsDataContextHash[context.uid]=null),gpuContext.batches&&gpuContext.batches.forEach(batch=>{BigPool.return(batch)})}destroy(){for(const i in this._gpuContextHash)this._gpuContextHash[i]&&this.onGraphicsContextDestroy(this._gpuContextHash[i].context)}};_GraphicsContextSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem,ExtensionType2.CanvasSystem],name:"graphicsContext"},_GraphicsContextSystem.defaultOptions={bezierSmoothness:.5};let GraphicsContextSystem=_GraphicsContextSystem;const blendModeIds={normal:0,add:1,multiply:2,screen:3,overlay:4,erase:5,"normal-npm":6,"add-npm":7,"screen-npm":8,min:9,max:10},_State=class _State{constructor(){this.data=0,this.blendMode="normal",this.polygonOffset=0,this.blend=!0,this.depthMask=!0}get blend(){return!!(1&this.data)}set blend(value){!!(1&this.data)!==value&&(this.data^=1)}get offsets(){return!!(2&this.data)}set offsets(value){!!(2&this.data)!==value&&(this.data^=2)}set cullMode(value){"none"===value?this.culling=!1:(this.culling=!0,this.clockwiseFrontFace="front"===value)}get cullMode(){return this.culling?this.clockwiseFrontFace?"front":"back":"none"}get culling(){return!!(4&this.data)}set culling(value){!!(4&this.data)!==value&&(this.data^=4)}get depthTest(){return!!(8&this.data)}set depthTest(value){!!(8&this.data)!==value&&(this.data^=8)}get depthMask(){return!!(32&this.data)}set depthMask(value){!!(32&this.data)!==value&&(this.data^=32)}get clockwiseFrontFace(){return!!(16&this.data)}set clockwiseFrontFace(value){!!(16&this.data)!==value&&(this.data^=16)}get blendMode(){return this._blendMode}set blendMode(value){this.blend="none"!==value,this._blendMode=value,this._blendModeId=blendModeIds[value]||0}get polygonOffset(){return this._polygonOffset}set polygonOffset(value){this.offsets=!!value,this._polygonOffset=value}toString(){return`[pixi.js/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`}static for2d(){var state=new _State;return state.depthTest=!1,state.blend=!0,state}};_State.default2d=_State.for2d();let State=_State;function color32BitToUniform(abgr,out,offset){var alpha=(abgr>>24&255)/255;out[offset++]=(255&abgr)/255*alpha,out[offset++]=(abgr>>8&255)/255*alpha,out[offset++]=(abgr>>16&255)/255*alpha,out[offset++]=alpha}class GraphicsPipe{constructor(renderer,adaptor){this.state=State.for2d(),this._graphicsBatchesHash=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this.renderer=renderer,this._adaptor=adaptor,this._adaptor.init(),this.renderer.renderableGC.addManagedHash(this,"_graphicsBatchesHash")}validateRenderable(graphics){var context=graphics.context,graphics=!!this._graphicsBatchesHash[graphics.uid];return!(!(context=this.renderer.graphicsContext.updateGpuContext(context)).isBatchable&&graphics===context.isBatchable)}addRenderable(graphics,instructionSet){var gpuContext=this.renderer.graphicsContext.updateGpuContext(graphics.context);graphics.didViewUpdate&&this._rebuild(graphics),gpuContext.isBatchable?this._addToBatcher(graphics,instructionSet):(this.renderer.renderPipes.batch.break(instructionSet),instructionSet.add(graphics))}updateRenderable(graphics){var batches=this._graphicsBatchesHash[graphics.uid];if(batches)for(let i=0;i<batches.length;i++){var batch=batches[i];batch._batcher.updateElement(batch)}}destroyRenderable(graphics){this._graphicsBatchesHash[graphics.uid]&&this._removeBatchForRenderable(graphics.uid),graphics.off("destroyed",this._destroyRenderableBound)}execute(graphics){var renderer,context;graphics.isRenderable&&(renderer=this.renderer,context=graphics.context,renderer.graphicsContext.getGpuContext(context).batches.length)&&(context=context.customShader||this._adaptor.shader,this.state.blendMode=graphics.groupBlendMode,(context=context.resources.localUniforms.uniforms).uTransformMatrix=graphics.groupTransform,context.uRound=renderer._roundPixels|graphics._roundPixels,color32BitToUniform(graphics.groupColorAlpha,context.uColor,0),this._adaptor.execute(this,graphics))}_rebuild(graphics){var wasBatched=!!this._graphicsBatchesHash[graphics.uid],gpuContext=this.renderer.graphicsContext.updateGpuContext(graphics.context);wasBatched&&this._removeBatchForRenderable(graphics.uid),gpuContext.isBatchable&&this._initBatchesForRenderable(graphics),graphics.batched=gpuContext.isBatchable}_addToBatcher(graphics,instructionSet){var batchPipe=this.renderer.renderPipes.batch,batches=this._getBatchesForRenderable(graphics);for(let i=0;i<batches.length;i++){var batch=batches[i];batchPipe.addToBatch(batch,instructionSet)}}_getBatchesForRenderable(graphics){return this._graphicsBatchesHash[graphics.uid]||this._initBatchesForRenderable(graphics)}_initBatchesForRenderable(graphics){var context=graphics.context,context=this.renderer.graphicsContext.getGpuContext(context);const roundPixels=this.renderer._roundPixels|graphics._roundPixels;return context=context.batches.map(batch=>{var batchClone=BigPool.get(BatchableGraphics);return batch.copyTo(batchClone),batchClone.renderable=graphics,batchClone.roundPixels=roundPixels,batchClone}),void 0===this._graphicsBatchesHash[graphics.uid]&&graphics.on("destroyed",this._destroyRenderableBound),this._graphicsBatchesHash[graphics.uid]=context}_removeBatchForRenderable(graphicsUid){this._graphicsBatchesHash[graphicsUid].forEach(batch=>{BigPool.return(batch)}),this._graphicsBatchesHash[graphicsUid]=null}destroy(){this.renderer=null,this._adaptor.destroy(),this._adaptor=null,this.state=null;for(const i in this._graphicsBatchesHash)this._removeBatchForRenderable(i);this._graphicsBatchesHash=null}}GraphicsPipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"graphics"},extensions.add(GraphicsPipe),extensions.add(GraphicsContextSystem);class BatchableMesh{constructor(){this.batcherName="default",this.packAsQuad=!1,this.indexOffset=0,this.attributeOffset=0,this.roundPixels=0,this._batcher=null,this._batch=null,this._textureMatrixUpdateId=-1,this._uvUpdateId=-1}get blendMode(){return this.renderable.groupBlendMode}get topology(){return this._topology||this.geometry.topology}set topology(value){this._topology=value}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.geometry=null,this._uvUpdateId=-1,this._textureMatrixUpdateId=-1}setTexture(value){this.texture!==value&&(this.texture=value,this._textureMatrixUpdateId=-1)}get uvs(){var uvBuffer=this.geometry.getBuffer("aUV"),uvs=uvBuffer.data;let transformedUvs=uvs;var textureMatrix=this.texture.textureMatrix;return textureMatrix.isSimple||(transformedUvs=this._transformedUvs,this._textureMatrixUpdateId===textureMatrix._updateID&&this._uvUpdateId===uvBuffer._updateID)||((!transformedUvs||transformedUvs.length<uvs.length)&&(transformedUvs=this._transformedUvs=new Float32Array(uvs.length)),this._textureMatrixUpdateId=textureMatrix._updateID,this._uvUpdateId=uvBuffer._updateID,textureMatrix.multiplyUvs(uvs,transformedUvs)),transformedUvs}get positions(){return this.geometry.positions}get indices(){return this.geometry.indices}get color(){return this.renderable.groupColorAlpha}get groupTransform(){return this.renderable.groupTransform}get attributeSize(){return this.geometry.positions.length/2}get indexSize(){return this.geometry.indices.length}}class MeshPipe{constructor(renderer,adaptor){this.localUniforms=new UniformGroup({uTransformMatrix:{value:new Matrix,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}}),this.localUniformsBindGroup=new BindGroup({0:this.localUniforms}),this._meshDataHash=Object.create(null),this._gpuBatchableMeshHash=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this.renderer=renderer,this._adaptor=adaptor,this._adaptor.init(),renderer.renderableGC.addManagedHash(this,"_gpuBatchableMeshHash"),renderer.renderableGC.addManagedHash(this,"_meshDataHash")}validateRenderable(mesh){var meshData=this._getMeshData(mesh),wasBatched=meshData.batched,isBatched=mesh.batched;return wasBatched!==(meshData.batched=isBatched)||!!isBatched&&((wasBatched=mesh._geometry).indices.length!==meshData.indexSize||wasBatched.positions.length!==meshData.vertexSize?(meshData.indexSize=wasBatched.indices.length,meshData.vertexSize=wasBatched.positions.length,!0):((isBatched=this._getBatchableMesh(mesh)).texture.uid!==mesh._texture.uid&&(isBatched._textureMatrixUpdateId=-1),!isBatched._batcher.checkAndUpdateTexture(isBatched,mesh._texture)))}addRenderable(mesh,instructionSet){var batcher=this.renderer.renderPipes.batch,batched=this._getMeshData(mesh).batched;batched?((batched=this._getBatchableMesh(mesh)).setTexture(mesh._texture),batched.geometry=mesh._geometry,batcher.addToBatch(batched,instructionSet)):(batcher.break(instructionSet),instructionSet.add(mesh))}updateRenderable(mesh){var gpuBatchableMesh;mesh.batched&&((gpuBatchableMesh=this._gpuBatchableMeshHash[mesh.uid]).setTexture(mesh._texture),gpuBatchableMesh.geometry=mesh._geometry,gpuBatchableMesh._batcher.updateElement(gpuBatchableMesh))}destroyRenderable(mesh){this._meshDataHash[mesh.uid]=null;var gpuMesh=this._gpuBatchableMeshHash[mesh.uid];gpuMesh&&(BigPool.return(gpuMesh),this._gpuBatchableMeshHash[mesh.uid]=null),mesh.off("destroyed",this._destroyRenderableBound)}execute(mesh){var localUniforms;mesh.isRenderable&&(mesh.state.blendMode=getAdjustedBlendModeBlend(mesh.groupBlendMode,mesh.texture._source),(localUniforms=this.localUniforms).uniforms.uTransformMatrix=mesh.groupTransform,localUniforms.uniforms.uRound=this.renderer._roundPixels|mesh._roundPixels,localUniforms.update(),color32BitToUniform(mesh.groupColorAlpha,localUniforms.uniforms.uColor,0),this._adaptor.execute(this,mesh))}_getMeshData(mesh){return this._meshDataHash[mesh.uid]||this._initMeshData(mesh)}_initMeshData(mesh){var _a;return this._meshDataHash[mesh.uid]={batched:mesh.batched,indexSize:null==(_a=mesh._geometry.indices)?void 0:_a.length,vertexSize:null==(_a=mesh._geometry.positions)?void 0:_a.length},mesh.on("destroyed",this._destroyRenderableBound),this._meshDataHash[mesh.uid]}_getBatchableMesh(mesh){return this._gpuBatchableMeshHash[mesh.uid]||this._initBatchableMesh(mesh)}_initBatchableMesh(mesh){var gpuMesh=BigPool.get(BatchableMesh);return gpuMesh.renderable=mesh,gpuMesh.setTexture(mesh._texture),gpuMesh.transform=mesh.groupTransform,gpuMesh.roundPixels=this.renderer._roundPixels|mesh._roundPixels,this._gpuBatchableMeshHash[mesh.uid]=gpuMesh}destroy(){for(const i in this._gpuBatchableMeshHash)this._gpuBatchableMeshHash[i]&&BigPool.return(this._gpuBatchableMeshHash[i]);this._gpuBatchableMeshHash=null,this._meshDataHash=null,this.localUniforms=null,this.localUniformsBindGroup=null,this._adaptor.destroy(),this._adaptor=null,this.renderer=null}}MeshPipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"mesh"},extensions.add(MeshPipe);class GlParticleContainerAdaptor{execute(particleContainerPipe,container){var state=particleContainerPipe.state,renderer=particleContainerPipe.renderer,shader=container.shader||particleContainerPipe.defaultShader,gl=(shader.resources.uTexture=container.texture._source,shader.resources.uniforms=particleContainerPipe.localUniforms,renderer.gl),particleContainerPipe=particleContainerPipe.getBuffers(container);renderer.shader.bind(shader),renderer.state.set(state),renderer.geometry.bind(particleContainerPipe.geometry,shader.glProgram),renderer=2===particleContainerPipe.geometry.indexBuffer.data.BYTES_PER_ELEMENT?gl.UNSIGNED_SHORT:gl.UNSIGNED_INT,gl.drawElements(gl.TRIANGLES,6*container.particleChildren.length,renderer,0)}}function createIndicesForQuads(size,outBuffer=null){var totalIndices=6*size;if((outBuffer=65535<totalIndices?outBuffer||new Uint32Array(totalIndices):outBuffer||new Uint16Array(totalIndices)).length!==totalIndices)throw new Error(`Out buffer length is incorrect, got ${outBuffer.length} and expected `+totalIndices);for(let i=0,j=0;i<totalIndices;i+=6,j+=4)outBuffer[i+0]=j+0,outBuffer[i+1]=j+1,outBuffer[i+2]=j+2,outBuffer[i+3]=j+0,outBuffer[i+4]=j+2,outBuffer[i+5]=j+3;return outBuffer}function generateParticleUpdateFunction(properties){return{dynamicUpdate:generateUpdateFunction(properties,!0),staticUpdate:generateUpdateFunction(properties,!1)}}function generateUpdateFunction(properties,dynamic){var funcFragments=[];funcFragments.push(`
var index = 0;
for (let i = 0; i < ps.length; ++i)
{
const p = ps[i];
`);let offset=0;for(const i in properties){var property=properties[i];dynamic===property.dynamic&&(funcFragments.push("offset = index + "+offset),funcFragments.push(property.code),property=getAttributeInfoFromFormat(property.format),offset+=property.stride/4)}funcFragments.push(`
index += stride * 4;
}
`),funcFragments.unshift(`
var stride = ${offset};
`);var functionSource=funcFragments.join("\n");return new Function("ps","f32v","u32v",functionSource)}class ParticleBuffer{constructor(options){this._size=0,this._generateParticleUpdateCache={};var _a=this._size=null!=(_a=options.size)?_a:1e3,properties=options.properties;let staticVertexSize=0,dynamicVertexSize=0;for(const i in properties){var property=properties[i],attributeInfo=getAttributeInfoFromFormat(property.format);property.dynamic?dynamicVertexSize+=attributeInfo.stride:staticVertexSize+=attributeInfo.stride}this._dynamicStride=dynamicVertexSize/4,this._staticStride=staticVertexSize/4,this.staticAttributeBuffer=new ViewableBuffer(4*_a*staticVertexSize),this.dynamicAttributeBuffer=new ViewableBuffer(4*_a*dynamicVertexSize),this.indexBuffer=createIndicesForQuads(_a);var geometry=new Geometry;let dynamicOffset=0,staticOffset=0;this._staticBuffer=new Buffer({data:new Float32Array(1),label:"static-particle-buffer",shrinkToFit:!1,usage:BufferUsage.VERTEX|BufferUsage.COPY_DST}),this._dynamicBuffer=new Buffer({data:new Float32Array(1),label:"dynamic-particle-buffer",shrinkToFit:!1,usage:BufferUsage.VERTEX|BufferUsage.COPY_DST});for(const i in properties){const property=properties[i],attributeInfo=getAttributeInfoFromFormat(property.format);property.dynamic?(geometry.addAttribute(property.attributeName,{buffer:this._dynamicBuffer,stride:4*this._dynamicStride,offset:4*dynamicOffset,format:property.format}),dynamicOffset+=attributeInfo.size):(geometry.addAttribute(property.attributeName,{buffer:this._staticBuffer,stride:4*this._staticStride,offset:4*staticOffset,format:property.format}),staticOffset+=attributeInfo.size)}geometry.addIndex(this.indexBuffer),options=this.getParticleUpdate(properties),this._dynamicUpload=options.dynamicUpdate,this._staticUpload=options.staticUpdate,this.geometry=geometry}getParticleUpdate(properties){var key=function(properties){var keyGen=[];for(const key in properties){var property=properties[key];keyGen.push(key,property.code,property.dynamic?"d":"s")}return keyGen.join("_")}(properties);return this._generateParticleUpdateCache[key]||(this._generateParticleUpdateCache[key]=this.generateParticleUpdate(properties)),this._generateParticleUpdateCache[key]}generateParticleUpdate(properties){return generateParticleUpdateFunction(properties)}update(particles,uploadStatic){particles.length>this._size&&(uploadStatic=!0,this._size=Math.max(particles.length,1.5*this._size|0),this.staticAttributeBuffer=new ViewableBuffer(this._size*this._staticStride*4*4),this.dynamicAttributeBuffer=new ViewableBuffer(this._size*this._dynamicStride*4*4),this.indexBuffer=createIndicesForQuads(this._size),this.geometry.indexBuffer.setDataWithSize(this.indexBuffer,this.indexBuffer.byteLength,!0));var dynamicAttributeBuffer=this.dynamicAttributeBuffer;this._dynamicUpload(particles,dynamicAttributeBuffer.float32View,dynamicAttributeBuffer.uint32View),this._dynamicBuffer.setDataWithSize(this.dynamicAttributeBuffer.float32View,particles.length*this._dynamicStride*4,!0),uploadStatic&&(dynamicAttributeBuffer=this.staticAttributeBuffer,this._staticUpload(particles,dynamicAttributeBuffer.float32View,dynamicAttributeBuffer.uint32View),this._staticBuffer.setDataWithSize(dynamicAttributeBuffer.float32View,particles.length*this._staticStride*4,!0))}destroy(){this._staticBuffer.destroy(),this._dynamicBuffer.destroy(),this.geometry.destroy()}}var fragment$5="varying vec2 vUV;\nvarying vec4 vColor;\n\nuniform sampler2D uTexture;\n\nvoid main(void){\n vec4 color = texture2D(uTexture, vUV) * vColor;\n gl_FragColor = color;\n}",vertex$3="attribute vec2 aVertex;\nattribute vec2 aUV;\nattribute vec4 aColor;\n\nattribute vec2 aPosition;\nattribute float aRotation;\n\nuniform mat3 uTranslationMatrix;\nuniform float uRound;\nuniform vec2 uResolution;\nuniform vec4 uColor;\n\nvarying vec2 vUV;\nvarying vec4 vColor;\n\nvec2 roundPixels(vec2 position, vec2 targetSize)\n{ \n return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;\n}\n\nvoid main(void){\n float cosRotation = cos(aRotation);\n float sinRotation = sin(aRotation);\n float x = aVertex.x * cosRotation - aVertex.y * sinRotation;\n float y = aVertex.x * sinRotation + aVertex.y * cosRotation;\n\n vec2 v = vec2(x, y);\n v = v + aPosition;\n\n gl_Position = vec4((uTranslationMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);\n\n if(uRound == 1.0)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n\n vUV = aUV;\n vColor = vec4(aColor.rgb * aColor.a, aColor.a) * uColor;\n}\n",wgsl="\nstruct ParticleUniforms {\n uProjectionMatrix:mat3x3<f32>,\n uColor:vec4<f32>,\n uResolution:vec2<f32>,\n uRoundPixels:f32,\n};\n\n@group(0) @binding(0) var<uniform> uniforms: ParticleUniforms;\n\n@group(1) @binding(0) var uTexture: texture_2d<f32>;\n@group(1) @binding(1) var uSampler : sampler;\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>,\n @location(1) color : vec4<f32>,\n };\n@vertex\nfn mainVertex(\n @location(0) aVertex: vec2<f32>,\n @location(1) aPosition: vec2<f32>,\n @location(2) aUV: vec2<f32>,\n @location(3) aColor: vec4<f32>,\n @location(4) aRotation: f32,\n) -> VSOutput {\n \n let v = vec2(\n aVertex.x * cos(aRotation) - aVertex.y * sin(aRotation),\n aVertex.x * sin(aRotation) + aVertex.y * cos(aRotation)\n ) + aPosition;\n\n let position = vec4((uniforms.uProjectionMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);\n\n let vColor = vec4(aColor.rgb * aColor.a, aColor.a) * uniforms.uColor;\n\n return VSOutput(\n position,\n aUV,\n vColor,\n );\n}\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @location(1) color: vec4<f32>,\n @builtin(position) position: vec4<f32>,\n) -> @location(0) vec4<f32> {\n\n var sample = textureSample(uTexture, uSampler, uv) * color;\n \n return sample;\n}";class ParticleShader extends Shader{constructor(){super({glProgram:GlProgram.from({vertex:vertex$3,fragment:fragment$5}),gpuProgram:GpuProgram.from({fragment:{source:wgsl,entryPoint:"mainFragment"},vertex:{source:wgsl,entryPoint:"mainVertex"}}),resources:{uTexture:Texture.WHITE.source,uSampler:new TextureStyle({}),uniforms:{uTranslationMatrix:{value:new Matrix,type:"mat3x3<f32>"},uColor:{value:new Color(16777215),type:"vec4<f32>"},uRound:{value:1,type:"f32"},uResolution:{value:[0,0],type:"vec2<f32>"}}}})}}class ParticleContainerPipe{constructor(renderer,adaptor){this.state=State.for2d(),this._gpuBufferHash=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this.localUniforms=new UniformGroup({uTranslationMatrix:{value:new Matrix,type:"mat3x3<f32>"},uColor:{value:new Float32Array(4),type:"vec4<f32>"},uRound:{value:1,type:"f32"},uResolution:{value:[0,0],type:"vec2<f32>"}}),this.renderer=renderer,this.adaptor=adaptor,this.defaultShader=new ParticleShader,this.state=State.for2d()}validateRenderable(_renderable){return!1}addRenderable(renderable,instructionSet){this.renderer.renderPipes.batch.break(instructionSet),instructionSet.add(renderable)}getBuffers(renderable){return this._gpuBufferHash[renderable.uid]||this._initBuffer(renderable)}_initBuffer(renderable){return this._gpuBufferHash[renderable.uid]=new ParticleBuffer({size:renderable.particleChildren.length,properties:renderable._properties}),renderable.on("destroyed",this._destroyRenderableBound),this._gpuBufferHash[renderable.uid]}updateRenderable(_renderable){}destroyRenderable(renderable){this._gpuBufferHash[renderable.uid].destroy(),this._gpuBufferHash[renderable.uid]=null,renderable.off("destroyed",this._destroyRenderableBound)}execute(container){var renderer,state,buffer,children=container.particleChildren;0!==children.length&&(renderer=this.renderer,buffer=this.getBuffers(container),container.texture||(container.texture=children[0].texture),state=this.state,buffer.update(children,container._childrenDirty),container._childrenDirty=!1,state.blendMode=getAdjustedBlendModeBlend(container.blendMode,container.texture._source),children=(buffer=this.localUniforms.uniforms).uTranslationMatrix,container.worldTransform.copyTo(children),children.prepend(renderer.globalUniforms.globalUniformData.projectionMatrix),buffer.uResolution=renderer.globalUniforms.globalUniformData.resolution,buffer.uRound=renderer._roundPixels|container._roundPixels,color32BitToUniform(container.groupColorAlpha,buffer.uColor,0),this.adaptor.execute(this,container))}destroy(){this.defaultShader&&(this.defaultShader.destroy(),this.defaultShader=null)}}class GlParticleContainerPipe extends ParticleContainerPipe{constructor(renderer){super(renderer,new GlParticleContainerAdaptor)}}GlParticleContainerPipe.extension={type:[ExtensionType2.WebGLPipes],name:"particle"};class GpuParticleContainerAdaptor{execute(particleContainerPipe,container){var renderer=particleContainerPipe.renderer,shader=((shader=container.shader||particleContainerPipe.defaultShader).groups[0]=renderer.renderPipes.uniformBatch.getUniformBindGroup(particleContainerPipe.localUniforms,!0),shader.groups[1]=renderer.texture.getTextureBindGroup(container.texture),particleContainerPipe.state),buffer=particleContainerPipe.getBuffers(container);renderer.encoder.draw({geometry:buffer.geometry,shader:container.shader||particleContainerPipe.defaultShader,state:shader,size:6*container.particleChildren.length})}}class GpuParticleContainerPipe extends ParticleContainerPipe{constructor(renderer){super(renderer,new GpuParticleContainerAdaptor)}}GpuParticleContainerPipe.extension={type:[ExtensionType2.WebGPUPipes],name:"particle"},extensions.add(GlParticleContainerPipe),extensions.add(GpuParticleContainerPipe);class BatchableSprite{constructor(){this.batcherName="default",this.topology="triangle-list",this.attributeSize=4,this.indexSize=6,this.packAsQuad=!0,this.roundPixels=0,this._attributeStart=0,this._batcher=null,this._batch=null}get blendMode(){return this.renderable.groupBlendMode}get color(){return this.renderable.groupColorAlpha}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.bounds=null}}function updateTextBounds(batchableSprite,text){var{texture:batchableSprite,bounds}=batchableSprite,batchableSprite=(updateQuadBounds(bounds,text._anchor,batchableSprite),text._style.padding);bounds.minX-=batchableSprite,bounds.minY-=batchableSprite,bounds.maxX-=batchableSprite,bounds.maxY-=batchableSprite}class CanvasTextPipe{constructor(renderer){this._gpuText=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this._renderer=renderer,this._renderer.runners.resolutionChange.add(this),this._renderer.renderableGC.addManagedHash(this,"_gpuText")}resolutionChange(){for(const i in this._gpuText){var gpuText=this._gpuText[i];gpuText&&(gpuText=gpuText.batchableSprite.renderable)._autoResolution&&(gpuText._resolution=this._renderer.resolution,gpuText.onViewUpdate())}}validateRenderable(text){var gpuText=this._getGpuText(text),text=text._getKey();return gpuText.currentKey!==text}addRenderable(text,instructionSet){var batchableSprite=this._getGpuText(text).batchableSprite;text._didTextUpdate&&this._updateText(text),this._renderer.renderPipes.batch.addToBatch(batchableSprite,instructionSet)}updateRenderable(text){var batchableSprite=this._getGpuText(text).batchableSprite;text._didTextUpdate&&this._updateText(text),batchableSprite._batcher.updateElement(batchableSprite)}destroyRenderable(text){text.off("destroyed",this._destroyRenderableBound),this._destroyRenderableById(text.uid)}_destroyRenderableById(textUid){var gpuText=this._gpuText[textUid];this._renderer.canvasText.decreaseReferenceCount(gpuText.currentKey),BigPool.return(gpuText.batchableSprite),this._gpuText[textUid]=null}_updateText(text){var newKey=text._getKey(),gpuText=this._getGpuText(text),batchableSprite=gpuText.batchableSprite;gpuText.currentKey!==newKey&&this._updateGpuText(text),text._didTextUpdate=!1,updateTextBounds(batchableSprite,text)}_updateGpuText(text){var gpuText=this._getGpuText(text),batchableSprite=gpuText.batchableSprite;gpuText.texture&&this._renderer.canvasText.decreaseReferenceCount(gpuText.currentKey),gpuText.texture=batchableSprite.texture=this._renderer.canvasText.getManagedTexture(text),gpuText.currentKey=text._getKey(),batchableSprite.texture=gpuText.texture}_getGpuText(text){return this._gpuText[text.uid]||this.initGpuText(text)}initGpuText(text){var gpuTextData={texture:null,currentKey:"--",batchableSprite:BigPool.get(BatchableSprite)};return gpuTextData.batchableSprite.renderable=text,gpuTextData.batchableSprite.transform=text.groupTransform,gpuTextData.batchableSprite.bounds={minX:0,maxX:1,minY:0,maxY:0},gpuTextData.batchableSprite.roundPixels=this._renderer._roundPixels|text._roundPixels,this._gpuText[text.uid]=gpuTextData,text._resolution=(text._autoResolution?this._renderer:text).resolution,this._updateText(text),text.on("destroyed",this._destroyRenderableBound),gpuTextData}destroy(){for(const i in this._gpuText)this._destroyRenderableById(i);this._gpuText=null,this._renderer=null}}CanvasTextPipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"text"};class CanvasPoolClass{constructor(canvasOptions){this._canvasPool=Object.create(null),this.canvasOptions=canvasOptions||{},this.enableFullScreen=!1}_createCanvasAndContext(pixelWidth,pixelHeight){var canvas=DOMAdapter.get().createCanvas(),pixelWidth=(canvas.width=pixelWidth,canvas.height=pixelHeight,canvas.getContext("2d"));return{canvas:canvas,context:pixelWidth}}getOptimalCanvasAndContext(minWidth,minHeight,resolution=1){return minWidth=Math.ceil(minWidth*resolution-1e-6),minHeight=Math.ceil(minHeight*resolution-1e-6),resolution=((minWidth=nextPow2(minWidth))<<17)+((minHeight=nextPow2(minHeight))<<1),this._canvasPool[resolution]||(this._canvasPool[resolution]=[]),(resolution=this._canvasPool[resolution].pop())||this._createCanvasAndContext(minWidth,minHeight)}returnCanvasAndContext(canvasAndContext){var{width,height}=canvasAndContext.canvas,key=(width<<17)+(height<<1);canvasAndContext.context.clearRect(0,0,width,height),this._canvasPool[key].push(canvasAndContext)}clear(){this._canvasPool={}}}const CanvasPool=new CanvasPoolClass;function checkRow(data,width,y){for(let x=0,index=4*y*width;x<width;++x,index+=4)if(0!==data[index+3])return;return 1}function checkColumn(data,width,x,top,bottom){var stride=4*width;for(let y=top,index=top*stride+4*x;y<=bottom;++y,index+=stride)if(0!==data[index+3])return;return 1}function getCanvasBoundingBox(canvas,resolution=1){var{width,height}=canvas;if(null===(canvas=canvas.getContext("2d",{willReadFrequently:!0})))throw new TypeError("Failed to get canvas 2D context");var data=canvas.getImageData(0,0,width,height).data;let left=0,top=0,right=width-1,bottom=height-1;for(;top<height&&checkRow(data,width,top);)++top;if(top===height)return Rectangle.EMPTY;for(;checkRow(data,width,bottom);)--bottom;for(;checkColumn(data,width,left,top,bottom);)++left;for(;checkColumn(data,width,right,top,bottom);)--right;return++right,++bottom,new Rectangle(left/resolution,top/resolution,(right-left)/resolution,(bottom-top)/resolution)}var __defProp$W=Object.defineProperty,__getOwnPropSymbols$W=Object.getOwnPropertySymbols,__hasOwnProp$W=Object.prototype.hasOwnProperty,__propIsEnum$W=Object.prototype.propertyIsEnumerable,__defNormalProp$W=(obj,key,value)=>key in obj?__defProp$W(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$W=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$W.call(b,prop)&&__defNormalProp$W(a,prop,b[prop]);if(__getOwnPropSymbols$W)for(var prop of __getOwnPropSymbols$W(b))__propIsEnum$W.call(b,prop)&&__defNormalProp$W(a,prop,b[prop]);return a};const emptyColorStops=[{offset:0,color:"white"},{offset:1,color:"black"}],_FillGradient=class _FillGradient{constructor(...args){this.uid=uid$1("fillGradient"),this.type="linear",this.colorStops=[];var defaults="radial"===(args=function(args){var _a;let options=null!=(_a=args[0])?_a:{};return"number"!=typeof options&&!args[1]||(deprecation("8.5.2","use options object instead"),options={type:"linear",start:{x:args[0],y:args[1]},end:{x:args[2],y:args[3]},textureSpace:args[4],textureSize:null!=(_a=args[5])?_a:FillGradient.defaultLinearOptions.textureSize}),options}(args)).type?_FillGradient.defaultRadialOptions:_FillGradient.defaultLinearOptions,args=__spreadValues$W(__spreadValues$W({},defaults),definedProps(args));this._textureSize=args.textureSize,"radial"===args.type?(this.center=args.center,this.outerCenter=null!=(defaults=args.outerCenter)?defaults:this.center,this.innerRadius=args.innerRadius,this.outerRadius=args.outerRadius,this.scale=args.scale,this.rotation=args.rotation):(this.start=args.start,this.end=args.end),this.textureSpace=args.textureSpace,this.type=args.type,args.colorStops.forEach(stop=>{this.addColorStop(stop.offset,stop.color)})}addColorStop(offset,color){return this.colorStops.push({offset:offset,color:Color.shared.setValue(color).toHexa()}),this}buildLinearGradient(){var defaultSize,colorStops,gradient,m,context,dist,canvas;this.texture||(colorStops=this.colorStops.length?this.colorStops:emptyColorStops,{canvas,context}=getCanvas(defaultSize=this._textureSize,1),{x:colorStops,y:gradient}=(addColorStops(gradient=context.createLinearGradient(0,0,this._textureSize,0),colorStops),context.fillStyle=gradient,context.fillRect(0,0,defaultSize,1),this.texture=new Texture({source:new ImageSource({resource:canvas})}),this.start),{x:context,y:canvas}=this.end,m=new Matrix,context-=colorStops,canvas-=gradient,dist=Math.sqrt(context*context+canvas*canvas),canvas=Math.atan2(canvas,context),m.scale(dist/defaultSize,1),m.rotate(canvas),m.translate(colorStops,gradient),"local"===this.textureSpace&&m.scale(defaultSize,defaultSize),this.transform=m)}buildGradient(){"linear"===this.type?this.buildLinearGradient():this.buildRadialGradient()}buildRadialGradient(){var colorStops,defaultSize,canvas,context,y1,r1,x0,y0,scale,cx,cy,r0,x1;this.texture||(colorStops=this.colorStops.length?this.colorStops:emptyColorStops,{canvas,context}=getCanvas(defaultSize=this._textureSize,defaultSize),{x:x0,y:y0}=this.center,{x:x1,y:y1}=this.outerCenter,r0=this.innerRadius,r1=this.outerRadius,addColorStops(r0=context.createRadialGradient(cx=(x0-(x0=x1-r1))*(scale=defaultSize/(2*r1)),cy=(y0-(y0=y1-r1))*scale,r0*scale,(x1-x0)*scale,(y1-y0)*scale,r1*scale),colorStops),context.fillStyle=colorStops[colorStops.length-1].color,context.fillRect(0,0,defaultSize,defaultSize),context.fillStyle=r0,context.translate(cx,cy),context.rotate(this.rotation),context.scale(1,this.scale),context.translate(-cx,-cy),context.fillRect(0,0,defaultSize,defaultSize),this.texture=new Texture({source:new ImageSource({resource:canvas,addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"})}),(x1=new Matrix).scale(1/scale,1/scale),x1.translate(x0,y0),"local"===this.textureSpace&&x1.scale(defaultSize,defaultSize),this.transform=x1)}get styleKey(){return this.uid}destroy(){var _a;null!=(_a=this.texture)&&_a.destroy(!0),this.texture=null}};_FillGradient.defaultLinearOptions={start:{x:0,y:0},end:{x:0,y:1},colorStops:[],textureSpace:"local",type:"linear",textureSize:256},_FillGradient.defaultRadialOptions={center:{x:.5,y:.5},innerRadius:0,outerRadius:.5,colorStops:[],scale:1,textureSpace:"local",type:"radial",textureSize:256};let FillGradient=_FillGradient;function addColorStops(gradient,colorStops){for(let i=0;i<colorStops.length;i++){var stop=colorStops[i];gradient.addColorStop(stop.offset,stop.color)}}function getCanvas(width,height){return height=(width=DOMAdapter.get().createCanvas(width,height)).getContext("2d"),{canvas:width,context:height}}const repetitionMap={repeat:{addressModeU:"repeat",addressModeV:"repeat"},"repeat-x":{addressModeU:"repeat",addressModeV:"clamp-to-edge"},"repeat-y":{addressModeU:"clamp-to-edge",addressModeV:"repeat"},"no-repeat":{addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}};class FillPattern{constructor(texture,repetition){this.uid=uid$1("fillPattern"),this.transform=new Matrix,this._styleKey=null,this.texture=texture,this.transform.scale(1/texture.frame.width,1/texture.frame.height),repetition&&(texture.source.style.addressModeU=repetitionMap[repetition].addressModeU,texture.source.style.addressModeV=repetitionMap[repetition].addressModeV)}setTransform(transform){var texture=this.texture;this.transform.copyFrom(transform),this.transform.invert(),this.transform.scale(1/texture.frame.width,1/texture.frame.height),this._styleKey=null}get styleKey(){return this._styleKey||(this._styleKey=`fill-pattern-${this.uid}-${this.texture.uid}-`+this.transform.toArray().join("-")),this._styleKey}}var length={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},segment=/([astvzqmhlc])([^astvzqmhlc]*)/gi,number=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi,parse$1=getDefaultExportFromCjs(function(path){var data=[];return path.replace(segment,function(_,command,args){var type=command.toLowerCase();for(args=function(args){return(args=args.match(number))?args.map(Number):[]}(args),"m"==type&&2<args.length&&(data.push([command].concat(args.splice(0,2))),type="l",command="m"==command?"l":"L");;){if(args.length==length[type])return args.unshift(command),data.push(args);if(args.length<length[type])throw new Error("malformed path data");data.push([command].concat(args.splice(0,length[type])))}}),data});function parseSVGPath(svgPath,path){var commands=parse$1(svgPath),subpaths=[];let currentSubPath=null,lastX=0,lastY=0;for(let i=0;i<commands.length;i++){var command=commands[i],type=command[0],data=command;switch(type){case"M":lastX=data[1],lastY=data[2],path.moveTo(lastX,lastY);break;case"m":lastX+=data[1],lastY+=data[2],path.moveTo(lastX,lastY);break;case"H":lastX=data[1],path.lineTo(lastX,lastY);break;case"h":lastX+=data[1],path.lineTo(lastX,lastY);break;case"V":lastY=data[1],path.lineTo(lastX,lastY);break;case"v":lastY+=data[1],path.lineTo(lastX,lastY);break;case"L":lastX=data[1],lastY=data[2],path.lineTo(lastX,lastY);break;case"l":lastX+=data[1],lastY+=data[2],path.lineTo(lastX,lastY);break;case"C":lastX=data[5],lastY=data[6],path.bezierCurveTo(data[1],data[2],data[3],data[4],lastX,lastY);break;case"c":path.bezierCurveTo(lastX+data[1],lastY+data[2],lastX+data[3],lastY+data[4],lastX+data[5],lastY+data[6]),lastX+=data[5],lastY+=data[6];break;case"S":lastX=data[3],lastY=data[4],path.bezierCurveToShort(data[1],data[2],lastX,lastY);break;case"s":path.bezierCurveToShort(lastX+data[1],lastY+data[2],lastX+data[3],lastY+data[4]),lastX+=data[3],lastY+=data[4];break;case"Q":lastX=data[3],lastY=data[4],path.quadraticCurveTo(data[1],data[2],lastX,lastY);break;case"q":path.quadraticCurveTo(lastX+data[1],lastY+data[2],lastX+data[3],lastY+data[4]),lastX+=data[3],lastY+=data[4];break;case"T":lastX=data[1],lastY=data[2],path.quadraticCurveToShort(lastX,lastY);break;case"t":lastX+=data[1],lastY+=data[2],path.quadraticCurveToShort(lastX,lastY);break;case"A":lastX=data[6],lastY=data[7],path.arcToSvg(data[1],data[2],data[3],data[4],data[5],lastX,lastY);break;case"a":lastX+=data[6],lastY+=data[7],path.arcToSvg(data[1],data[2],data[3],data[4],data[5],lastX,lastY);break;case"Z":case"z":path.closePath(),0<subpaths.length&&(currentSubPath=subpaths.pop(),lastY=currentSubPath?(lastX=currentSubPath.startX,currentSubPath.startY):lastX=0),currentSubPath=null;break;default:warn("Unknown SVG path command: "+type)}"Z"!==type&&"z"!==type&&null===currentSubPath&&(currentSubPath={startX:lastX,startY:lastY},subpaths.push(currentSubPath))}return path}class Circle{constructor(x=0,y=0,radius=0){this.type="circle",this.x=x,this.y=y,this.radius=radius}clone(){return new Circle(this.x,this.y,this.radius)}contains(x,y){var r2;return!(this.radius<=0)&&(r2=this.radius*this.radius,x=this.x-x,y=this.y-y,(x*=x)+(y*=y)<=r2)}strokeContains(x,y,width,alignment=.5){var radius;return 0!==this.radius&&(x=this.x-x,y=this.y-y,radius=this.radius,alignment=(1-alignment)*width,(x=Math.sqrt(x*x+y*y))<=radius+alignment)&&radius-(width-alignment)<x}getBounds(out){return(out=out||new Rectangle).x=this.x-this.radius,out.y=this.y-this.radius,out.width=2*this.radius,out.height=2*this.radius,out}copyFrom(circle){return this.x=circle.x,this.y=circle.y,this.radius=circle.radius,this}copyTo(circle){return circle.copyFrom(this),circle}toString(){return`[pixi.js/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`}}class Ellipse{constructor(x=0,y=0,halfWidth=0,halfHeight=0){this.type="ellipse",this.x=x,this.y=y,this.halfWidth=halfWidth,this.halfHeight=halfHeight}clone(){return new Ellipse(this.x,this.y,this.halfWidth,this.halfHeight)}contains(x,y){return!(this.halfWidth<=0||this.halfHeight<=0)&&(x=(x-this.x)/this.halfWidth,(x*=x)+(y=(y-this.y)/this.halfHeight)*y<=1)}strokeContains(x,y,strokeWidth,alignment=.5){var outerHorizontal,outerVertical,{halfWidth,halfHeight}=this;return!(halfWidth<=0||halfHeight<=0)&&(outerHorizontal=halfWidth+(alignment=strokeWidth*(1-alignment)),outerVertical=halfHeight+alignment,1<(x-=this.x)*x/((strokeWidth=halfWidth-(halfWidth=strokeWidth-alignment))*strokeWidth)+(alignment=y-this.y)*alignment/((strokeWidth=halfHeight-halfWidth)*strokeWidth))&&x*x/(outerHorizontal*outerHorizontal)+alignment*alignment/(outerVertical*outerVertical)<=1}getBounds(out){return(out=out||new Rectangle).x=this.x-this.halfWidth,out.y=this.y-this.halfHeight,out.width=2*this.halfWidth,out.height=2*this.halfHeight,out}copyFrom(ellipse){return this.x=ellipse.x,this.y=ellipse.y,this.halfWidth=ellipse.halfWidth,this.halfHeight=ellipse.halfHeight,this}copyTo(ellipse){return ellipse.copyFrom(this),ellipse}toString(){return`[pixi.js/math:Ellipse x=${this.x} y=${this.y} halfWidth=${this.halfWidth} halfHeight=${this.halfHeight}]`}}function squaredDistanceToLineSegment(x,y,x1,y1,x2,y2){var c=x2-x1,d=y2-y1,lenSq=c*c+d*d;let param,xx,yy;return yy=(param=0!=lenSq?((x-x1)*c+(y-y1)*d)/lenSq:-1)<0?(xx=x1,y1):1<param?(xx=x2,y2):(xx=x1+param*c,y1+param*d),(lenSq=x-xx)*lenSq+(x2=y-yy)*x2}class Polygon{constructor(...points){this.type="polygon";let flat=Array.isArray(points[0])?points[0]:points;if("number"!=typeof flat[0]){var p=[];for(let i=0,il=flat.length;i<il;i++)p.push(flat[i].x,flat[i].y);flat=p}this.points=flat,this.closePath=!0}isClockwise(){let area=0;var points=this.points,length=points.length;for(let i=0;i<length;i+=2){var x1=points[i],y1=points[i+1],x2=points[(i+2)%length],y2=points[(i+3)%length];area+=(x2-x1)*(y2+y1)}return area<0}containsPolygon(polygon){var thisBounds=this.getBounds(void 0),otherBounds=polygon.getBounds(void 0);if(!thisBounds.containsRect(otherBounds))return!1;var points=polygon.points;for(let i=0;i<points.length;i+=2){var x=points[i],y=points[i+1];if(!this.contains(x,y))return!1}return!0}clone(){var points=this.points.slice();return(points=new Polygon(points)).closePath=this.closePath,points}contains(x,y){let inside=!1;var length=this.points.length/2;for(let i=0,j=length-1;i<length;j=i++){var xi=this.points[2*i],yi=this.points[2*i+1],xj=this.points[2*j],yj=this.points[2*j+1];y<yi!=y<yj&&x<(y-yi)/(yj-yi)*(xj-xi)+xi&&(inside=!inside)}return inside}strokeContains(x,y,strokeWidth,alignment=.5){var rightWidthSquared=(strokeWidth*=strokeWidth)*(1-alignment),leftWidthSquared=strokeWidth-rightWidthSquared,points=this.points,iterationLength=points.length-(this.closePath?0:2);for(let i=0;i<iterationLength;i+=2){var x1=points[i],y1=points[i+1],x2=points[(i+2)%points.length],y2=points[(i+3)%points.length];if(squaredDistanceToLineSegment(x,y,x1,y1,x2,y2)<=(Math.sign((x2-x1)*(y-y1)-(y2-y1)*(x-x1))<0?leftWidthSquared:rightWidthSquared))return!0}return!1}getBounds(out){out=out||new Rectangle;var points=this.points;let minX=1/0,maxX=-1/0,minY=1/0,maxY=-1/0;for(let i=0,n=points.length;i<n;i+=2){var x=points[i],y=points[i+1];minX=x<minX?x:minX,maxX=x>maxX?x:maxX,minY=y<minY?y:minY,maxY=y>maxY?y:maxY}return out.x=minX,out.width=maxX-minX,out.y=minY,out.height=maxY-minY,out}copyFrom(polygon){return this.points=polygon.points.slice(),this.closePath=polygon.closePath,this}copyTo(polygon){return polygon.copyFrom(this),polygon}toString(){return`[pixi.js/math:PolygoncloseStroke=${this.closePath}points=${this.points.reduce((pointsDesc,currentPoint)=>pointsDesc+", "+currentPoint,"")}]`}get lastX(){return this.points[this.points.length-2]}get lastY(){return this.points[this.points.length-1]}get x(){return this.points[this.points.length-2]}get y(){return this.points[this.points.length-1]}}const isCornerWithinStroke=(pX,pY,cornerX,cornerY,radius,strokeWidthInner,strokeWidthOuter)=>(pX-=cornerX,cornerX=pY-cornerY,radius-strokeWidthInner<=(pY=Math.sqrt(pX*pX+cornerX*cornerX))&&pY<=radius+strokeWidthOuter);class RoundedRectangle{constructor(x=0,y=0,width=0,height=0,radius=20){this.type="roundedRectangle",this.x=x,this.y=y,this.width=width,this.height=height,this.radius=radius}getBounds(out){return(out=out||new Rectangle).x=this.x,out.y=this.y,out.width=this.width,out.height=this.height,out}clone(){return new RoundedRectangle(this.x,this.y,this.width,this.height,this.radius)}copyFrom(rectangle){return this.x=rectangle.x,this.y=rectangle.y,this.width=rectangle.width,this.height=rectangle.height,this}copyTo(rectangle){return rectangle.copyFrom(this),rectangle}contains(x,y){if(!(this.width<=0||this.height<=0)&&x>=this.x&&x<=this.x+this.width&&y>=this.y&&y<=this.y+this.height){var radius=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(y>=this.y+radius&&y<=this.y+this.height-radius||x>=this.x+radius&&x<=this.x+this.width-radius)return!0;var dx=x-(this.x+radius),dy=y-(this.y+radius),radius2=radius*radius;if(dx*dx+dy*dy<=radius2)return!0;if((dx=x-(this.x+this.width-radius))*dx+dy*dy<=radius2)return!0;if(dx*dx+(dy=y-(this.y+this.height-radius))*dy<=radius2)return!0;if((dx=x-(this.x+radius))*dx+dy*dy<=radius2)return!0}return!1}strokeContains(pX,pY,strokeWidth,alignment=.5){var{x,y,width,height,radius}=this,strokeWidth=strokeWidth-(alignment=strokeWidth*(1-alignment)),innerX=x+radius,innerY=y+radius,rightBound=x+width,bottomBound=y+height;return(x-alignment<=pX&&pX<=x+strokeWidth||rightBound-strokeWidth<=pX&&pX<=rightBound+alignment)&&innerY<=pY&&pY<=innerY+(height-2*radius)||(y-alignment<=pY&&pY<=y+strokeWidth||bottomBound-strokeWidth<=pY&&pY<=bottomBound+alignment)&&innerX<=pX&&pX<=innerX+(width-2*radius)||pX<innerX&&pY<innerY&&isCornerWithinStroke(pX,pY,innerX,innerY,radius,strokeWidth,alignment)||rightBound-radius<pX&&pY<innerY&&isCornerWithinStroke(pX,pY,rightBound-radius,innerY,radius,strokeWidth,alignment)||rightBound-radius<pX&&bottomBound-radius<pY&&isCornerWithinStroke(pX,pY,rightBound-radius,bottomBound-radius,radius,strokeWidth,alignment)||pX<innerX&&bottomBound-radius<pY&&isCornerWithinStroke(pX,pY,innerX,bottomBound-radius,radius,strokeWidth,alignment)}toString(){return`[pixi.js/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`}}const RECURSION_LIMIT$1=8,FLT_EPSILON$1=1.1920929e-7,PATH_DISTANCE_EPSILON$1=1,curveAngleToleranceEpsilon$1=.01,mAngleTolerance$1=0,mCuspLimit=0;function buildAdaptiveBezier(points,sX,sY,cp1x,cp1y,cp2x,cp2y,eX,eY,smoothness){return smoothness=Math.min(.99,Math.max(0,null!=smoothness?smoothness:GraphicsContextSystem.defaultOptions.bezierSmoothness)),smoothness=PATH_DISTANCE_EPSILON$1-smoothness,function(sX,sY,cp1x,cp1y,cp2x,cp2y,eX,eY,points){(function recursive$1(x1,y1,x2,y2,x3,y3,x4,y4,points,distanceTolerance,level){if(!(level>RECURSION_LIMIT$1)){var pi=Math.PI,x12=(x1+x2)/2,y12=(y1+y2)/2,x23=(x2+x3)/2,y23=(y2+y3)/2,x34=(x3+x4)/2,y34=(y3+y4)/2,x123=(x12+x23)/2,y123=(y12+y23)/2,x1234=(x123+(x23=(x23+x34)/2))/2,y1234=(y123+(y23=(y23+y34)/2))/2;if(0<level){var dx=x4-x1,dy=y4-y1,d2=Math.abs((x2-x4)*dy-(y2-y4)*dx),d3=Math.abs((x3-x4)*dy-(y3-y4)*dx);let da1,da2;if(d2>FLT_EPSILON$1&&d3>FLT_EPSILON$1){if((d2+d3)*(d2+d3)<=distanceTolerance*(dx*dx+dy*dy)){if(mAngleTolerance$1<curveAngleToleranceEpsilon$1)return points.push(x1234,y1234);var a23=Math.atan2(y3-y2,x3-x2);if(da1=Math.abs(a23-Math.atan2(y2-y1,x2-x1)),da2=Math.abs(Math.atan2(y4-y3,x4-x3)-a23),da1>=pi&&(da1=2*pi-da1),da2>=pi&&(da2=2*pi-da2),da1+da2<mAngleTolerance$1)return points.push(x1234,y1234);if(0!==mCuspLimit){if(da1>mCuspLimit)return points.push(x2,y2);if(da2>mCuspLimit)return points.push(x3,y3)}}}else if(d2>FLT_EPSILON$1){if(d2*d2<=distanceTolerance*(dx*dx+dy*dy)){if(mAngleTolerance$1<curveAngleToleranceEpsilon$1)return points.push(x1234,y1234);if((da1=(da1=Math.abs(Math.atan2(y3-y2,x3-x2)-Math.atan2(y2-y1,x2-x1)))>=pi?2*pi-da1:da1)<mAngleTolerance$1)return points.push(x2,y2),points.push(x3,y3);if(0!==mCuspLimit&&da1>mCuspLimit)return points.push(x2,y2)}}else if(d3>FLT_EPSILON$1){if(d3*d3<=distanceTolerance*(dx*dx+dy*dy)){if(mAngleTolerance$1<curveAngleToleranceEpsilon$1)return points.push(x1234,y1234);if((da1=(da1=Math.abs(Math.atan2(y4-y3,x4-x3)-Math.atan2(y3-y2,x3-x2)))>=pi?2*pi-da1:da1)<mAngleTolerance$1)return points.push(x2,y2),points.push(x3,y3);if(0!==mCuspLimit&&da1>mCuspLimit)return points.push(x3,y3)}}else if((dx=x1234-(x1+x4)/2)*dx+(dy=y1234-(y1+y4)/2)*dy<=distanceTolerance)return points.push(x1234,y1234)}recursive$1(x1,y1,x12,y12,x123,y123,x1234,y1234,points,distanceTolerance,level+1),recursive$1(x1234,y1234,x23,y23,x34,y34,x4,y4,points,distanceTolerance,level+1)}})(sX,sY,cp1x,cp1y,cp2x,cp2y,eX,eY,points,smoothness*=smoothness,0),points.push(eX,eY)}(sX,sY,cp1x,cp1y,cp2x,cp2y,eX,eY,points),points}function buildAdaptiveQuadratic(points,sX,sY,cp1x,cp1y,eX,eY,smoothness){return smoothness=1-Math.min(.99,Math.max(0,null!=smoothness?smoothness:GraphicsContextSystem.defaultOptions.bezierSmoothness)),function(sX,sY,cp1x,cp1y,eX,eY,points){(function recursive(points,x1,y1,x2,y2,x3,y3,distanceTolerance,level){if(!(8<level)){Math.PI;var x12=(x1+x2)/2,y12=(y1+y2)/2,x23=(x2+x3)/2,y23=(y2+y3)/2,x123=(x12+x23)/2,y123=(y12+y23)/2,dx=x3-x1,dy=y3-y1;if(1.1920929e-7<(x2=Math.abs((x2-x3)*dy-(y2-y3)*dx))){if(x2*x2<=distanceTolerance*(dx*dx+dy*dy))return points.push(x123,y123)}else if((dx=x123-(x1+x3)/2)*dx+(dy=y123-(y1+y3)/2)*dy<=distanceTolerance)return points.push(x123,y123);recursive(points,x1,y1,x12,y12,x123,y123,distanceTolerance,level+1),recursive(points,x123,y123,x23,y23,x3,y3,distanceTolerance,level+1)}})(points,sX,sY,cp1x,cp1y,eX,eY,smoothness*=smoothness,0),points.push(eX,eY)}(sX,sY,cp1x,cp1y,eX,eY,points),points}function buildArc(points,x,y,radius,start,end,clockwise,steps){let dist=Math.abs(start-end);(!clockwise&&end<start||clockwise&&start<end)&&(dist=2*Math.PI-dist),steps=steps||Math.max(6,Math.floor(6*Math.pow(radius,1/3)*(dist/Math.PI))),steps=Math.max(steps,3);var f=dist/steps;let t=start;f*=clockwise?-1:1;for(let i=0;i<steps+1;i++){var cs=Math.cos(t),sn=Math.sin(t);points.push(x+cs*radius,y+sn*radius),t+=f}}function buildArcTo(points,x1,y1,x2,y2,radius){var k1,dd,cc,tt,fromX=points[points.length-2],a1=points[points.length-1]-y1,fromX=fromX-x1,y2=y2-y1,x2=x2-x1,mm=Math.abs(a1*x2-fromX*y2);mm<1e-8||0===radius?points[points.length-2]===x1&&points[points.length-1]===y1||points.push(x1,y1):(dd=a1*a1+fromX*fromX,cc=y2*y2+x2*x2,tt=a1*y2+fromX*x2,dd=(k1=radius*Math.sqrt(dd)/mm)*tt/dd,cc=x2*(k1+(tt=(mm=radius*Math.sqrt(cc)/mm)*tt/cc)),tt=y2*(k1+tt),buildArc(points,(points=k1*x2+mm*fromX)+x1,(x1=k1*y2+mm*a1)+y1,radius,Math.atan2(a1*(mm+dd)-x1,fromX*(mm+dd)-points),Math.atan2(tt-x1,cc-points),x2*a1<fromX*y2))}const TAU=2*Math.PI,out={centerX:0,centerY:0,ang1:0,ang2:0},mapToEllipse=({x,y},rx,ry,cosPhi,sinPhi,centerX,centerY,out2)=>(rx=sinPhi*(x*=rx)+cosPhi*(y*=ry),out2.x=cosPhi*x-sinPhi*y+centerX,out2.y=rx+centerY,out2),vectorAngle=(ux,uy,vx,vy)=>{let dot=ux*vx+uy*vy;return(dot=1<dot?1:dot)<-1&&(dot=-1),(ux*vy-uy*vx<0?-1:1)*Math.acos(dot)};function buildArcToSvg(points,px,py,cx,cy,rx,ry,xAxisRotation=0,largeArcFlag=0,sweepFlag=0){if(0!==rx&&0!==ry){var sinPhi=Math.sin(xAxisRotation*TAU/360),cosPhi=Math.cos(xAxisRotation*TAU/360),pyp=-sinPhi*(px-cx)/2+cosPhi*(py-cy)/2;if(0!=(xAxisRotation=cosPhi*(px-cx)/2+sinPhi*(py-cy)/2)||0!=pyp){rx=Math.abs(rx),ry=Math.abs(ry);var lambda=Math.pow(xAxisRotation,2)/Math.pow(rx,2)+Math.pow(pyp,2)/Math.pow(ry,2);1<lambda&&(rx*=Math.sqrt(lambda),ry*=Math.sqrt(lambda)),((px,py,cx,cy,rx,ry,largeArcFlag,sweepFlag,sinPhi,cosPhi,pxp,pyp,out2)=>{var rxSq=Math.pow(rx,2),rySq=Math.pow(ry,2),pxpSq=Math.pow(pxp,2),pypSq=Math.pow(pyp,2);let radicant=rxSq*rySq-rxSq*pypSq-rySq*pxpSq,ang2=(radicant<0&&(radicant=0),radicant/=rxSq*pypSq+rySq*pxpSq,rySq=cosPhi*(rxSq=(radicant=Math.sqrt(radicant)*(largeArcFlag===sweepFlag?-1:1))*rx/ry*pyp)-sinPhi*(pypSq=radicant*-ry/rx*pxp)+(px+cx)/2,pxpSq=sinPhi*rxSq+cosPhi*pypSq+(py+cy)/2,largeArcFlag=(pxp-rxSq)/rx,px=(pyp-pypSq)/ry,cx=(-pxp-rxSq)/rx,sinPhi=(-pyp-pypSq)/ry,cosPhi=vectorAngle(1,0,largeArcFlag,px),vectorAngle(largeArcFlag,px,cx,sinPhi));0===sweepFlag&&0<ang2&&(ang2-=TAU),1===sweepFlag&&ang2<0&&(ang2+=TAU),out2.centerX=rySq,out2.centerY=pxpSq,out2.ang1=cosPhi,out2.ang2=ang2})(px,py,cx,cy,rx,ry,largeArcFlag,sweepFlag,sinPhi,cosPhi,xAxisRotation,pyp,out);let{ang1,ang2}=out;var{centerX,centerY}=out;let ratio=Math.abs(ang2)/(TAU/4);Math.abs(1-ratio)<1e-7&&(ratio=1);var segments=Math.max(Math.ceil(ratio),1);ang2/=segments;let lastX=points[points.length-2],lastY=points[points.length-1];var outCurvePoint={x:0,y:0};for(let i=0;i<segments;i++){var curve=function(ang1,ang2){var a1=-1.5707963267948966==ang2?-.551915024494:4/3*Math.tan(ang2/4),a1=1.5707963267948966==ang2?.551915024494:a1,x1=Math.cos(ang1),y1=Math.sin(ang1),x2=Math.cos(ang1+ang2);return[{x:x1-y1*a1,y:y1+x1*a1},{x:x2+(ang1=Math.sin(ang1+ang2))*a1,y:ang1-x2*a1},{x:x2,y:ang1}]}(ang1,ang2),{x:x1,y:y1}=mapToEllipse(curve[0],rx,ry,cosPhi,sinPhi,centerX,centerY,outCurvePoint),{x:x2,y:y2}=mapToEllipse(curve[1],rx,ry,cosPhi,sinPhi,centerX,centerY,outCurvePoint),{x:curve,y}=mapToEllipse(curve[2],rx,ry,cosPhi,sinPhi,centerX,centerY,outCurvePoint);buildAdaptiveBezier(points,lastX,lastY,x1,y1,x2,y2,curve,y),lastX=curve,lastY=y,ang1+=ang2}}}}function roundedShapeArc(g,points,radius){var vecFrom=(p,pp)=>{var x=pp.x-p.x,pp=pp.y-p.y;return{len:p=Math.sqrt(x*x+pp*pp),nx:x/p,ny:pp/p}},sharpCorner=(i,p)=>{0===i?g.moveTo(p.x,p.y):g.lineTo(p.x,p.y)};let p1=points[points.length-1];for(let i=0;i<points.length;i++){var p2=points[i%points.length],_a=null!=(_a=p2.radius)?_a:radius;if(_a<=0)sharpCorner(i,p2);else{var p3=points[(i+1)%points.length],v1=vecFrom(p2,p1),p3=vecFrom(p2,p3);if(v1.len<1e-4||p3.len<1e-4)sharpCorner(i,p2);else{let angle=Math.asin(v1.nx*p3.ny-v1.ny*p3.nx),radDirection=1,drawDirection=!1;v1.nx*p3.nx-v1.ny*-p3.ny<0?angle<0?angle=Math.PI+angle:(angle=Math.PI-angle,radDirection=-1,drawDirection=!0):0<angle&&(radDirection=-1,drawDirection=!0);var halfAngle=angle/2;let cRadius,lenOut=Math.abs(Math.cos(halfAngle)*_a/Math.sin(halfAngle));cRadius=lenOut>Math.min(v1.len/2,p3.len/2)?(lenOut=Math.min(v1.len/2,p3.len/2),Math.abs(lenOut*Math.sin(halfAngle)/Math.cos(halfAngle))):_a,halfAngle=p2.x+p3.nx*lenOut+-p3.ny*cRadius*radDirection,_a=p2.y+p3.ny*lenOut+p3.nx*cRadius*radDirection,v1=Math.atan2(v1.ny,v1.nx)+Math.PI/2*radDirection,p3=Math.atan2(p3.ny,p3.nx)-Math.PI/2*radDirection,0===i&&g.moveTo(halfAngle+Math.cos(v1)*cRadius,_a+Math.sin(v1)*cRadius),g.arc(halfAngle,_a,cRadius,v1,p3,drawDirection)}}p1=p2}}function roundedShapeQuadraticCurve(g,points,radius,smoothness){var distance=(p1,p2)=>Math.sqrt((p1.x-p2.x)**2+(p1.y-p2.y)**2),pointLerp=(p1,p2,t)=>({x:p1.x+(p2.x-p1.x)*t,y:p1.y+(p2.y-p1.y)*t}),numPoints=points.length;for(let i=0;i<numPoints;i++){var lastEdgeLength,lastPoint,nextPoint,thisPoint=points[(i+1)%numPoints],_a=null!=(_a=thisPoint.radius)?_a:radius;_a<=0?0===i?g.moveTo(thisPoint.x,thisPoint.y):g.lineTo(thisPoint.x,thisPoint.y):(lastPoint=points[i],nextPoint=points[(i+2)%numPoints],lastEdgeLength=(lastEdgeLength=distance(lastPoint,thisPoint))<1e-4?thisPoint:pointLerp(thisPoint,lastPoint,Math.min(lastEdgeLength/2,_a)/lastEdgeLength),nextPoint=(lastPoint=distance(nextPoint,thisPoint))<1e-4?thisPoint:pointLerp(thisPoint,nextPoint,Math.min(lastPoint/2,_a)/lastPoint),0===i?g.moveTo(lastEdgeLength.x,lastEdgeLength.y):g.lineTo(lastEdgeLength.x,lastEdgeLength.y),g.quadraticCurveTo(thisPoint.x,thisPoint.y,nextPoint.x,nextPoint.y,smoothness))}}const tempRectangle=new Rectangle;class ShapePath{constructor(graphicsPath2D){this.shapePrimitives=[],this._currentPoly=null,this._bounds=new Bounds,this._graphicsPath2D=graphicsPath2D,this.signed=graphicsPath2D.checkForHoles}moveTo(x,y){return this.startPoly(x,y),this}lineTo(x,y){this._ensurePoly();var points=this._currentPoly.points,fromX=points[points.length-2],fromY=points[points.length-1];return fromX===x&&fromY===y||points.push(x,y),this}arc(x,y,radius,startAngle,endAngle,counterclockwise){return this._ensurePoly(!1),buildArc(this._currentPoly.points,x,y,radius,startAngle,endAngle,counterclockwise),this}arcTo(x1,y1,x2,y2,radius){return this._ensurePoly(),buildArcTo(this._currentPoly.points,x1,y1,x2,y2,radius),this}arcToSvg(rx,ry,xAxisRotation,largeArcFlag,sweepFlag,x,y){return buildArcToSvg(this._currentPoly.points,this._currentPoly.lastX,this._currentPoly.lastY,x,y,rx,ry,xAxisRotation,largeArcFlag,sweepFlag),this}bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y,smoothness){this._ensurePoly();var currentPoly=this._currentPoly;return buildAdaptiveBezier(this._currentPoly.points,currentPoly.lastX,currentPoly.lastY,cp1x,cp1y,cp2x,cp2y,x,y,smoothness),this}quadraticCurveTo(cp1x,cp1y,x,y,smoothing){this._ensurePoly();var currentPoly=this._currentPoly;return buildAdaptiveQuadratic(this._currentPoly.points,currentPoly.lastX,currentPoly.lastY,cp1x,cp1y,x,y,smoothing),this}closePath(){return this.endPoly(!0),this}addPath(path,transform){this.endPoly(),transform&&!transform.isIdentity()&&(path=path.clone(!0)).transform(transform);var shapePrimitives=this.shapePrimitives,transform=shapePrimitives.length;for(let i=0;i<path.instructions.length;i++){var instruction=path.instructions[i];this[instruction.action](...instruction.data)}if(path.checkForHoles&&1<shapePrimitives.length-transform){let mainShape=null;for(let i=transform;i<shapePrimitives.length;i++){var polygon,mainPolygon,shapePrimitive=shapePrimitives[i];"polygon"===shapePrimitive.shape.type&&(polygon=shapePrimitive.shape,(mainPolygon=null==mainShape?void 0:mainShape.shape)&&mainPolygon.containsPolygon(polygon)?(mainShape.holes||(mainShape.holes=[]),mainShape.holes.push(shapePrimitive),shapePrimitives.copyWithin(i,i+1),shapePrimitives.length--,i--):mainShape=shapePrimitive)}}return this}finish(closePath=!1){this.endPoly(closePath)}rect(x,y,w,h,transform){return this.drawShape(new Rectangle(x,y,w,h),transform),this}circle(x,y,radius,transform){return this.drawShape(new Circle(x,y,radius),transform),this}poly(points,close,transform){return(points=new Polygon(points)).closePath=close,this.drawShape(points,transform),this}regularPoly(x,y,radius,sides,rotation=0,transform){sides=Math.max(0|sides,3);var startAngle=-1*Math.PI/2+rotation,delta=2*Math.PI/sides,polygon=[];for(let i=0;i<sides;i++){var angle=startAngle-i*delta;polygon.push(x+radius*Math.cos(angle),y+radius*Math.sin(angle))}return this.poly(polygon,!0,transform),this}roundPoly(x,y,radius,sides,corner,rotation=0,smoothness){if(sides=Math.max(0|sides,3),corner<=0)return this.regularPoly(x,y,radius,sides,rotation);var sideLength=radius*Math.sin(Math.PI/sides)-.001,startAngle=(corner=Math.min(corner,sideLength),-1*Math.PI/2+rotation),delta=2*Math.PI/sides,internalAngle=(sides-2)*Math.PI/sides/2;for(let i=0;i<sides;i++){var angle=i*delta+startAngle,x0=x+radius*Math.cos(angle),y0=y+radius*Math.sin(angle),a1=angle+Math.PI+internalAngle,angle=angle-Math.PI-internalAngle,x1=x0+corner*Math.cos(a1),a1=y0+corner*Math.sin(a1),x3=x0+corner*Math.cos(angle),angle=y0+corner*Math.sin(angle);0===i?this.moveTo(x1,a1):this.lineTo(x1,a1),this.quadraticCurveTo(x0,y0,x3,angle,smoothness)}return this.closePath()}roundShape(points,radius,useQuadratic=!1,smoothness){return points.length<3?this:(useQuadratic?roundedShapeQuadraticCurve(this,points,radius,smoothness):roundedShapeArc(this,points,radius),this.closePath())}filletRect(x,y,width,height,fillet){var right,maxFillet;return 0===fillet?this.rect(x,y,width,height):(maxFillet=Math.min(width,height)/2,right=x+width,height=y+height,fillet=(maxFillet=Math.min(maxFillet,Math.max(-maxFillet,fillet)))<0?-maxFillet:0,maxFillet=Math.abs(maxFillet),this.moveTo(x,y+maxFillet).arcTo(x+fillet,y+fillet,x+maxFillet,y,maxFillet).lineTo(right-maxFillet,y).arcTo(right-fillet,y+fillet,right,y+maxFillet,maxFillet).lineTo(right,height-maxFillet).arcTo(right-fillet,height-fillet,x+width-maxFillet,height,maxFillet).lineTo(x+maxFillet,height).arcTo(x+fillet,height-fillet,x,height-maxFillet,maxFillet).closePath())}chamferRect(x,y,width,height,chamfer,transform){if(chamfer<=0)return this.rect(x,y,width,height);var points=[x+(chamfer=Math.min(chamfer,Math.min(width,height)/2)),y,(width=x+width)-chamfer,y,width,y+chamfer,width,(height=y+height)-chamfer,width-chamfer,height,x+chamfer,height,x,height-chamfer,x,y+chamfer];for(let i=points.length-1;2<=i;i-=2)points[i]===points[i-2]&&points[i-1]===points[i-3]&&points.splice(i-1,2);return this.poly(points,!0,transform)}ellipse(x,y,radiusX,radiusY,transform){return this.drawShape(new Ellipse(x,y,radiusX,radiusY),transform),this}roundRect(x,y,w,h,radius,transform){return this.drawShape(new RoundedRectangle(x,y,w,h,radius),transform),this}drawShape(shape,matrix){return this.endPoly(),this.shapePrimitives.push({shape:shape,transform:matrix}),this}startPoly(x,y){var currentPoly=this._currentPoly;return currentPoly&&this.endPoly(),(currentPoly=new Polygon).points.push(x,y),this._currentPoly=currentPoly,this}endPoly(closePath=!1){var shape=this._currentPoly;return shape&&2<shape.points.length&&(shape.closePath=closePath,this.shapePrimitives.push({shape:shape})),this._currentPoly=null,this}_ensurePoly(start=!0){var tempX;if(!this._currentPoly&&(this._currentPoly=new Polygon,start))if(start=this.shapePrimitives[this.shapePrimitives.length-1]){let lx=start.shape.x,ly=start.shape.y;start.transform&&!start.transform.isIdentity()&&(start=start.transform,tempX=lx,lx=start.a*lx+start.c*ly+start.tx,ly=start.b*tempX+start.d*ly+start.ty),this._currentPoly.points.push(lx,ly)}else this._currentPoly.points.push(0,0)}buildPath(){var path=this._graphicsPath2D;this.shapePrimitives.length=0,this._currentPoly=null;for(let i=0;i<path.instructions.length;i++){var instruction=path.instructions[i];this[instruction.action](...instruction.data)}this.finish()}get bounds(){var bounds=this._bounds,shapePrimitives=(bounds.clear(),this.shapePrimitives);for(let i=0;i<shapePrimitives.length;i++){var shapePrimitive=shapePrimitives[i],boundsRect=shapePrimitive.shape.getBounds(tempRectangle);shapePrimitive.transform?bounds.addRect(boundsRect,shapePrimitive.transform):bounds.addRect(boundsRect)}return bounds}}class GraphicsPath{constructor(instructions,signed=!1){this.instructions=[],this.uid=uid$1("graphicsPath"),this._dirty=!0,this.checkForHoles=signed,"string"==typeof instructions?parseSVGPath(instructions,this):this.instructions=null!=(signed=null==instructions?void 0:instructions.slice())?signed:[]}get shapePath(){return this._shapePath||(this._shapePath=new ShapePath(this)),this._dirty&&(this._dirty=!1,this._shapePath.buildPath()),this._shapePath}addPath(path,transform){return path=path.clone(),this.instructions.push({action:"addPath",data:[path,transform]}),this._dirty=!0,this}arc(...args){return this.instructions.push({action:"arc",data:args}),this._dirty=!0,this}arcTo(...args){return this.instructions.push({action:"arcTo",data:args}),this._dirty=!0,this}arcToSvg(...args){return this.instructions.push({action:"arcToSvg",data:args}),this._dirty=!0,this}bezierCurveTo(...args){return this.instructions.push({action:"bezierCurveTo",data:args}),this._dirty=!0,this}bezierCurveToShort(cp2x,cp2y,x,y,smoothness){var currentY,last=this.instructions[this.instructions.length-1],lastPoint=this.getLastPoint(Point.shared);let cp1x=0,cp1y=0;return cp1y=last&&"bezierCurveTo"===last.action?(cp1x=last.data[2],cp1y=last.data[3],last=lastPoint.x,currentY=lastPoint.y,cp1x=last+(last-cp1x),currentY+(currentY-cp1y)):(cp1x=lastPoint.x,lastPoint.y),this.instructions.push({action:"bezierCurveTo",data:[cp1x,cp1y,cp2x,cp2y,x,y,smoothness]}),this._dirty=!0,this}closePath(){return this.instructions.push({action:"closePath",data:[]}),this._dirty=!0,this}ellipse(...args){return this.instructions.push({action:"ellipse",data:args}),this._dirty=!0,this}lineTo(...args){return this.instructions.push({action:"lineTo",data:args}),this._dirty=!0,this}moveTo(...args){return this.instructions.push({action:"moveTo",data:args}),this}quadraticCurveTo(...args){return this.instructions.push({action:"quadraticCurveTo",data:args}),this._dirty=!0,this}quadraticCurveToShort(x,y,smoothness){var currentY,last=this.instructions[this.instructions.length-1],lastPoint=this.getLastPoint(Point.shared);let cpx1=0,cpy1=0;return cpy1=last&&"quadraticCurveTo"===last.action?(cpx1=last.data[0],cpy1=last.data[1],last=lastPoint.x,currentY=lastPoint.y,cpx1=last+(last-cpx1),currentY+(currentY-cpy1)):(cpx1=lastPoint.x,lastPoint.y),this.instructions.push({action:"quadraticCurveTo",data:[cpx1,cpy1,x,y,smoothness]}),this._dirty=!0,this}rect(x,y,w,h,transform){return this.instructions.push({action:"rect",data:[x,y,w,h,transform]}),this._dirty=!0,this}circle(x,y,radius,transform){return this.instructions.push({action:"circle",data:[x,y,radius,transform]}),this._dirty=!0,this}roundRect(...args){return this.instructions.push({action:"roundRect",data:args}),this._dirty=!0,this}poly(...args){return this.instructions.push({action:"poly",data:args}),this._dirty=!0,this}regularPoly(...args){return this.instructions.push({action:"regularPoly",data:args}),this._dirty=!0,this}roundPoly(...args){return this.instructions.push({action:"roundPoly",data:args}),this._dirty=!0,this}roundShape(...args){return this.instructions.push({action:"roundShape",data:args}),this._dirty=!0,this}filletRect(...args){return this.instructions.push({action:"filletRect",data:args}),this._dirty=!0,this}chamferRect(...args){return this.instructions.push({action:"chamferRect",data:args}),this._dirty=!0,this}star(x,y,points,radius,innerRadius,rotation,transform){innerRadius=innerRadius||radius/2;var startAngle=-1*Math.PI/2+rotation,len=2*points,delta=2*Math.PI/len,polygon=[];for(let i=0;i<len;i++){var r=i%2?innerRadius:radius,angle=i*delta+startAngle;polygon.push(x+r*Math.cos(angle),y+r*Math.sin(angle))}return this.poly(polygon,!0,transform),this}clone(deep=!1){var newGraphicsPath2D=new GraphicsPath;if(newGraphicsPath2D.checkForHoles=this.checkForHoles,deep)for(let i=0;i<this.instructions.length;i++){var instruction=this.instructions[i];newGraphicsPath2D.instructions.push({action:instruction.action,data:instruction.data.slice()})}else newGraphicsPath2D.instructions=this.instructions.slice();return newGraphicsPath2D}clear(){return this.instructions.length=0,this._dirty=!0,this}transform(matrix){if(!matrix.isIdentity()){var cpx2,cpy2,a=matrix.a,b=matrix.b,c=matrix.c,d=matrix.d,tx=matrix.tx,ty=matrix.ty;let x=0,y=0,cpx1=0,cpy1=0;for(let i=0;i<this.instructions.length;i++){var instruction=this.instructions[i],data=instruction.data;switch(instruction.action){case"moveTo":case"lineTo":x=data[0],y=data[1],data[0]=a*x+c*y+tx,data[1]=b*x+d*y+ty;break;case"bezierCurveTo":cpx1=data[0],cpy1=data[1],cpx2=data[2],cpy2=data[3],x=data[4],y=data[5],data[0]=a*cpx1+c*cpy1+tx,data[1]=b*cpx1+d*cpy1+ty,data[2]=a*cpx2+c*cpy2+tx,data[3]=b*cpx2+d*cpy2+ty,data[4]=a*x+c*y+tx,data[5]=b*x+d*y+ty;break;case"quadraticCurveTo":cpx1=data[0],cpy1=data[1],x=data[2],y=data[3],data[0]=a*cpx1+c*cpy1+tx,data[1]=b*cpx1+d*cpy1+ty,data[2]=a*x+c*y+tx,data[3]=b*x+d*y+ty;break;case"arcToSvg":x=data[5],y=data[6],cpx2=data[0],cpy2=data[1],data[0]=a*cpx2+c*cpy2,data[1]=b*cpx2+d*cpy2,data[5]=a*x+c*y+tx,data[6]=b*x+d*y+ty;break;case"circle":data[4]=adjustTransform(data[3],matrix);break;case"rect":data[4]=adjustTransform(data[4],matrix);break;case"ellipse":data[8]=adjustTransform(data[8],matrix);break;case"roundRect":data[5]=adjustTransform(data[5],matrix);break;case"addPath":data[0].transform(matrix);break;case"poly":data[2]=adjustTransform(data[2],matrix);break;default:warn("unknown transform action",instruction.action)}}this._dirty=!0}return this}get bounds(){return this.shapePath.bounds}getLastPoint(out){let index=this.instructions.length-1,lastInstruction=this.instructions[index];if(lastInstruction){for(;"closePath"===lastInstruction.action;){if(--index<0)return out.x=0,out.y=0,out;lastInstruction=this.instructions[index]}switch(lastInstruction.action){case"moveTo":case"lineTo":out.x=lastInstruction.data[0],out.y=lastInstruction.data[1];break;case"quadraticCurveTo":out.x=lastInstruction.data[2],out.y=lastInstruction.data[3];break;case"bezierCurveTo":out.x=lastInstruction.data[4],out.y=lastInstruction.data[5];break;case"arc":case"arcToSvg":out.x=lastInstruction.data[5],out.y=lastInstruction.data[6];break;case"addPath":lastInstruction.data[0].getLastPoint(out)}}else out.x=0,out.y=0;return out}}function adjustTransform(currentMatrix,transform){return currentMatrix?currentMatrix.prepend(transform):transform.clone()}function parseSVGFloatAttribute(svg,id,defaultValue){return(svg=svg.getAttribute(id))?Number(svg):defaultValue}function parseSVGDefinitions(svg,session){var definitions=svg.querySelectorAll("defs");for(let i=0;i<definitions.length;i++){var definition=definitions[i];for(let j=0;j<definition.children.length;j++){var child=definition.children[j];switch(child.nodeName.toLowerCase()){case"lineargradient":session.defs[child.id]=function(child){var x0=parseSVGFloatAttribute(child,"x1",0),y0=parseSVGFloatAttribute(child,"y1",0),x1=parseSVGFloatAttribute(child,"x2",1),y1=parseSVGFloatAttribute(child,"y2",0),gradientUnit=child.getAttribute("gradientUnits")||"objectBoundingBox",gradient=new FillGradient(x0,y0,x1,y1,"objectBoundingBox"===gradientUnit?"local":"global");for(let k=0;k<child.children.length;k++){var offset=parseSVGFloatAttribute(stop=child.children[k],"offset",0),stop=Color.shared.setValue(stop.getAttribute("stop-color")).toNumber();gradient.addColorStop(offset,stop)}return gradient}(child);break;case"radialgradient":session.defs[child.id]=(warn("[SVG Parser] Radial gradients are not yet supported"),new FillGradient(0,0,1,0))}}}}function extractSvgUrlId(url){return(url=url.match(/url\s*\(\s*['"]?\s*#([^'"\s)]+)\s*['"]?\s*\)/i))?url[1]:""}const styleAttributes={fill:{type:"paint",default:0},"fill-opacity":{type:"number",default:1},stroke:{type:"paint",default:0},"stroke-width":{type:"number",default:1},"stroke-opacity":{type:"number",default:1},"stroke-linecap":{type:"string",default:"butt"},"stroke-linejoin":{type:"string",default:"miter"},"stroke-miterlimit":{type:"number",default:10},"stroke-dasharray":{type:"string",default:"none"},"stroke-dashoffset":{type:"number",default:0},opacity:{type:"number",default:1}};function parseSVGStyle(svg,session){var style=svg.getAttribute("style"),strokeStyle={},fillStyle={},result={strokeStyle:strokeStyle,fillStyle:fillStyle,useFill:!1,useStroke:!1};for(const key in styleAttributes){var attribute=svg.getAttribute(key);attribute&&parseAttribute(session,result,key,attribute.trim())}if(style){var styleParts=style.split(";");for(let i=0;i<styleParts.length;i++){var[key,value]=styleParts[i].trim().split(":");styleAttributes[key]&&parseAttribute(session,result,key,value.trim())}}return{strokeStyle:result.useStroke?strokeStyle:null,fillStyle:result.useFill?fillStyle:null,useFill:result.useFill,useStroke:result.useStroke}}function parseAttribute(session,result,id,value){switch(id){case"stroke":var id2;"none"!==value&&(value.startsWith("url(")?(id2=extractSvgUrlId(value),result.strokeStyle.fill=session.defs[id2]):result.strokeStyle.color=Color.shared.setValue(value).toNumber(),result.useStroke=!0);break;case"stroke-width":result.strokeStyle.width=Number(value);break;case"fill":if("none"!==value){if(value.startsWith("url(")){const id2=extractSvgUrlId(value);result.fillStyle.fill=session.defs[id2]}else result.fillStyle.color=Color.shared.setValue(value).toNumber();result.useFill=!0}break;case"fill-opacity":result.fillStyle.alpha=Number(value);break;case"stroke-opacity":result.strokeStyle.alpha=Number(value);break;case"opacity":result.fillStyle.alpha=Number(value),result.strokeStyle.alpha=Number(value)}}var __defProp$V=Object.defineProperty,__getOwnPropSymbols$V=Object.getOwnPropertySymbols,__hasOwnProp$V=Object.prototype.hasOwnProperty,__propIsEnum$V=Object.prototype.propertyIsEnumerable,__defNormalProp$V=(obj,key,value)=>key in obj?__defProp$V(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$V=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$V.call(b,prop)&&__defNormalProp$V(a,prop,b[prop]);if(__getOwnPropSymbols$V)for(var prop of __getOwnPropSymbols$V(b))__propIsEnum$V.call(b,prop)&&__defNormalProp$V(a,prop,b[prop]);return a};function SVGParser(svg,graphicsContext){"string"==typeof svg&&((div=document.createElement("div")).innerHTML=svg.trim(),svg=div.querySelector("svg"));var div,session={context:graphicsContext,defs:{},path:new GraphicsPath},children=(parseSVGDefinitions(svg,session),svg.children),{fillStyle,strokeStyle}=parseSVGStyle(svg,session);for(let i=0;i<children.length;i++){var child=children[i];"defs"!==child.nodeName.toLowerCase()&&!function renderChildren(svg,session,fillStyle,strokeStyle){var y,d,width,height,children=svg.children,{fillStyle:f1,strokeStyle:s1}=parseSVGStyle(svg,session);f1&&fillStyle?fillStyle=__spreadValues$V(__spreadValues$V({},fillStyle),f1):f1&&(fillStyle=f1),s1&&strokeStyle?strokeStyle=__spreadValues$V(__spreadValues$V({},strokeStyle),s1):s1&&(strokeStyle=s1),(f1=!fillStyle&&!strokeStyle)&&(fillStyle={color:0});let cx,cy,rx,ry,points,pointsString;switch(svg.nodeName.toLowerCase()){case"path":d=svg.getAttribute("d"),"evenodd"===svg.getAttribute("fill-rule")&&warn("SVG Evenodd fill rule not supported, your svg may render incorrectly"),d=new GraphicsPath(d,!0),session.context.path(d),fillStyle&&session.context.fill(fillStyle),strokeStyle&&session.context.stroke(strokeStyle);break;case"circle":cx=parseSVGFloatAttribute(svg,"cx",0),cy=parseSVGFloatAttribute(svg,"cy",0),d=parseSVGFloatAttribute(svg,"r",0),session.context.ellipse(cx,cy,d,d),fillStyle&&session.context.fill(fillStyle),strokeStyle&&session.context.stroke(strokeStyle);break;case"rect":d=parseSVGFloatAttribute(svg,"x",0),y=parseSVGFloatAttribute(svg,"y",0),width=parseSVGFloatAttribute(svg,"width",0),height=parseSVGFloatAttribute(svg,"height",0),rx=parseSVGFloatAttribute(svg,"rx",0),ry=parseSVGFloatAttribute(svg,"ry",0),rx||ry?session.context.roundRect(d,y,width,height,rx||ry):session.context.rect(d,y,width,height),fillStyle&&session.context.fill(fillStyle),strokeStyle&&session.context.stroke(strokeStyle);break;case"ellipse":cx=parseSVGFloatAttribute(svg,"cx",0),cy=parseSVGFloatAttribute(svg,"cy",0),rx=parseSVGFloatAttribute(svg,"rx",0),ry=parseSVGFloatAttribute(svg,"ry",0),session.context.beginPath(),session.context.ellipse(cx,cy,rx,ry),fillStyle&&session.context.fill(fillStyle),strokeStyle&&session.context.stroke(strokeStyle);break;case"line":d=parseSVGFloatAttribute(svg,"x1",0),y=parseSVGFloatAttribute(svg,"y1",0),width=parseSVGFloatAttribute(svg,"x2",0),height=parseSVGFloatAttribute(svg,"y2",0),session.context.beginPath(),session.context.moveTo(d,y),session.context.lineTo(width,height),strokeStyle&&session.context.stroke(strokeStyle);break;case"polygon":pointsString=svg.getAttribute("points"),points=pointsString.match(/\d+/g).map(n=>parseInt(n,10)),session.context.poly(points,!0),fillStyle&&session.context.fill(fillStyle),strokeStyle&&session.context.stroke(strokeStyle);break;case"polyline":pointsString=svg.getAttribute("points"),points=pointsString.match(/\d+/g).map(n=>parseInt(n,10)),session.context.poly(points,!1),strokeStyle&&session.context.stroke(strokeStyle);break;case"g":case"svg":break;default:warn(`[SVG parser] <${svg.nodeName}> elements unsupported`)}f1&&(fillStyle=null);for(let i=0;i<children.length;i++)renderChildren(children[i],session,fillStyle,strokeStyle)}(child,session,fillStyle,strokeStyle)}return graphicsContext}var __defProp$U=Object.defineProperty,__getOwnPropSymbols$U=Object.getOwnPropertySymbols,__hasOwnProp$U=Object.prototype.hasOwnProperty,__propIsEnum$U=Object.prototype.propertyIsEnumerable,__defNormalProp$U=(obj,key,value)=>key in obj?__defProp$U(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$U=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$U.call(b,prop)&&__defNormalProp$U(a,prop,b[prop]);if(__getOwnPropSymbols$U)for(var prop of __getOwnPropSymbols$U(b))__propIsEnum$U.call(b,prop)&&__defNormalProp$U(a,prop,b[prop]);return a};function isFillPattern(value){return value instanceof FillPattern}function isFillGradient(value){return value instanceof FillGradient}function handleFillPattern(fill,value,defaultStyle){return fill.fill=value,fill.color=16777215,fill.texture=value.texture,fill.matrix=value.transform,__spreadValues$U(__spreadValues$U({},defaultStyle),fill)}function handleFillGradient(fill,value,defaultStyle){return value.buildGradient(),fill.fill=value,fill.color=16777215,fill.texture=value.texture,fill.matrix=value.transform,fill.textureSpace=value.textureSpace,__spreadValues$U(__spreadValues$U({},defaultStyle),fill)}function toFillStyle(value,defaultStyle){var fill,objectStyle;return null==value?null:(fill={},function(value){return Color.isColorLike(value)}(objectStyle=value)?function(fill,value,defaultStyle){return value=Color.shared.setValue(null!=value?value:0),fill.color=value.toNumber(),fill.alpha=(1===value.alpha?defaultStyle:value).alpha,fill.texture=Texture.WHITE,__spreadValues$U(__spreadValues$U({},defaultStyle),fill)}(fill,value,defaultStyle):function(value){return value instanceof Texture}(value)?function(fill,value,defaultStyle){return fill.texture=value,__spreadValues$U(__spreadValues$U({},defaultStyle),fill)}(fill,value,defaultStyle):isFillPattern(value)?handleFillPattern(fill,value,defaultStyle):isFillGradient(value)?handleFillGradient(fill,value,defaultStyle):objectStyle.fill&&isFillPattern(objectStyle.fill)?handleFillPattern(objectStyle,objectStyle.fill,defaultStyle):objectStyle.fill&&isFillGradient(objectStyle.fill)?handleFillGradient(objectStyle,objectStyle.fill,defaultStyle):function(value,defaultStyle){return defaultStyle=__spreadValues$U(__spreadValues$U({},defaultStyle),value),value=Color.shared.setValue(defaultStyle.color),defaultStyle.alpha*=value.alpha,defaultStyle.color=value.toNumber(),defaultStyle}(objectStyle,defaultStyle))}function toStrokeStyle(value,defaultStyle){var{width,alignment,miterLimit,cap,join,pixelLine}=defaultStyle;return(value=toFillStyle(value,((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$U.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$U)for(var prop of __getOwnPropSymbols$U(source))exclude.indexOf(prop)<0&&__propIsEnum$U.call(source,prop)&&(target[prop]=source[prop]);return target})(defaultStyle,["width","alignment","miterLimit","cap","join","pixelLine"])))?__spreadValues$U({width:width,alignment:alignment,miterLimit:miterLimit,cap:cap,join:join,pixelLine:pixelLine},value):null}var __defProp$T=Object.defineProperty,__getOwnPropSymbols$T=Object.getOwnPropertySymbols,__hasOwnProp$T=Object.prototype.hasOwnProperty,__propIsEnum$T=Object.prototype.propertyIsEnumerable,__defNormalProp$T=(obj,key,value)=>key in obj?__defProp$T(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$T=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$T.call(b,prop)&&__defNormalProp$T(a,prop,b[prop]);if(__getOwnPropSymbols$T)for(var prop of __getOwnPropSymbols$T(b))__propIsEnum$T.call(b,prop)&&__defNormalProp$T(a,prop,b[prop]);return a};const tmpPoint=new Point,tempMatrix$3=new Matrix,_GraphicsContext=class _GraphicsContext extends EventEmitter{constructor(){super(...arguments),this.uid=uid$1("graphicsContext"),this.dirty=!0,this.batchMode="auto",this.instructions=[],this._activePath=new GraphicsPath,this._transform=new Matrix,this._fillStyle=__spreadValues$T({},_GraphicsContext.defaultFillStyle),this._strokeStyle=__spreadValues$T({},_GraphicsContext.defaultStrokeStyle),this._stateStack=[],this._tick=0,this._bounds=new Bounds,this._boundsDirty=!0}clone(){var clone=new _GraphicsContext;return clone.batchMode=this.batchMode,clone.instructions=this.instructions.slice(),clone._activePath=this._activePath.clone(),clone._transform=this._transform.clone(),clone._fillStyle=__spreadValues$T({},this._fillStyle),clone._strokeStyle=__spreadValues$T({},this._strokeStyle),clone._stateStack=this._stateStack.slice(),clone._bounds=this._bounds.clone(),clone._boundsDirty=!0,clone}get fillStyle(){return this._fillStyle}set fillStyle(value){this._fillStyle=toFillStyle(value,_GraphicsContext.defaultFillStyle)}get strokeStyle(){return this._strokeStyle}set strokeStyle(value){this._strokeStyle=toStrokeStyle(value,_GraphicsContext.defaultStrokeStyle)}setFillStyle(style){return this._fillStyle=toFillStyle(style,_GraphicsContext.defaultFillStyle),this}setStrokeStyle(style){return this._strokeStyle=toFillStyle(style,_GraphicsContext.defaultStrokeStyle),this}texture(texture,tint,dx,dy,dw,dh){return this.instructions.push({action:"texture",data:{image:texture,dx:dx||0,dy:dy||0,dw:dw||texture.frame.width,dh:dh||texture.frame.height,transform:this._transform.clone(),alpha:this._fillStyle.alpha,style:tint?Color.shared.setValue(tint).toNumber():16777215}}),this.onUpdate(),this}beginPath(){return this._activePath=new GraphicsPath,this}fill(style,alpha){var lastInstruction=this.instructions[this.instructions.length-1];return(lastInstruction=0===this._tick&&lastInstruction&&"stroke"===lastInstruction.action?lastInstruction.data.path:this._activePath.clone())&&(null!=style&&(void 0!==alpha&&"number"==typeof style&&(deprecation(v8_0_0,"GraphicsContext.fill(color, alpha) is deprecated, use GraphicsContext.fill({ color, alpha }) instead"),style={color:style,alpha:alpha}),this._fillStyle=toFillStyle(style,_GraphicsContext.defaultFillStyle)),this.instructions.push({action:"fill",data:{style:this.fillStyle,path:lastInstruction}}),this.onUpdate(),this._initNextPathLocation(),this._tick=0),this}_initNextPathLocation(){var{x,y}=this._activePath.getLastPoint(Point.shared);this._activePath.clear(),this._activePath.moveTo(x,y)}stroke(style){var lastInstruction=this.instructions[this.instructions.length-1];return(lastInstruction=0===this._tick&&lastInstruction&&"fill"===lastInstruction.action?lastInstruction.data.path:this._activePath.clone())&&(null!=style&&(this._strokeStyle=toStrokeStyle(style,_GraphicsContext.defaultStrokeStyle)),this.instructions.push({action:"stroke",data:{style:this.strokeStyle,path:lastInstruction}}),this.onUpdate(),this._initNextPathLocation(),this._tick=0),this}cut(){for(let i=0;i<2;i++){var lastInstruction=this.instructions[this.instructions.length-1-i],holePath=this._activePath.clone();if(lastInstruction&&("stroke"===lastInstruction.action||"fill"===lastInstruction.action)){if(!lastInstruction.data.hole){lastInstruction.data.hole=holePath;break}lastInstruction.data.hole.addPath(holePath)}}return this._initNextPathLocation(),this}arc(x,y,radius,startAngle,endAngle,counterclockwise){this._tick++;var t=this._transform;return this._activePath.arc(t.a*x+t.c*y+t.tx,t.b*x+t.d*y+t.ty,radius,startAngle,endAngle,counterclockwise),this}arcTo(x1,y1,x2,y2,radius){this._tick++;var t=this._transform;return this._activePath.arcTo(t.a*x1+t.c*y1+t.tx,t.b*x1+t.d*y1+t.ty,t.a*x2+t.c*y2+t.tx,t.b*x2+t.d*y2+t.ty,radius),this}arcToSvg(rx,ry,xAxisRotation,largeArcFlag,sweepFlag,x,y){this._tick++;var t=this._transform;return this._activePath.arcToSvg(rx,ry,xAxisRotation,largeArcFlag,sweepFlag,t.a*x+t.c*y+t.tx,t.b*x+t.d*y+t.ty),this}bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y,smoothness){this._tick++;var t=this._transform;return this._activePath.bezierCurveTo(t.a*cp1x+t.c*cp1y+t.tx,t.b*cp1x+t.d*cp1y+t.ty,t.a*cp2x+t.c*cp2y+t.tx,t.b*cp2x+t.d*cp2y+t.ty,t.a*x+t.c*y+t.tx,t.b*x+t.d*y+t.ty,smoothness),this}closePath(){var _a;return this._tick++,null!=(_a=this._activePath)&&_a.closePath(),this}ellipse(x,y,radiusX,radiusY){return this._tick++,this._activePath.ellipse(x,y,radiusX,radiusY,this._transform.clone()),this}circle(x,y,radius){return this._tick++,this._activePath.circle(x,y,radius,this._transform.clone()),this}path(path){return this._tick++,this._activePath.addPath(path,this._transform.clone()),this}lineTo(x,y){this._tick++;var t=this._transform;return this._activePath.lineTo(t.a*x+t.c*y+t.tx,t.b*x+t.d*y+t.ty),this}moveTo(x,y){this._tick++;var t=this._transform,instructions=this._activePath.instructions,transformedX=t.a*x+t.c*y+t.tx,x=t.b*x+t.d*y+t.ty;return 1===instructions.length&&"moveTo"===instructions[0].action?(instructions[0].data[0]=transformedX,instructions[0].data[1]=x):this._activePath.moveTo(transformedX,x),this}quadraticCurveTo(cpx,cpy,x,y,smoothness){this._tick++;var t=this._transform;return this._activePath.quadraticCurveTo(t.a*cpx+t.c*cpy+t.tx,t.b*cpx+t.d*cpy+t.ty,t.a*x+t.c*y+t.tx,t.b*x+t.d*y+t.ty,smoothness),this}rect(x,y,w,h){return this._tick++,this._activePath.rect(x,y,w,h,this._transform.clone()),this}roundRect(x,y,w,h,radius){return this._tick++,this._activePath.roundRect(x,y,w,h,radius,this._transform.clone()),this}poly(points,close){return this._tick++,this._activePath.poly(points,close,this._transform.clone()),this}regularPoly(x,y,radius,sides,rotation=0,transform){return this._tick++,this._activePath.regularPoly(x,y,radius,sides,rotation,transform),this}roundPoly(x,y,radius,sides,corner,rotation){return this._tick++,this._activePath.roundPoly(x,y,radius,sides,corner,rotation),this}roundShape(points,radius,useQuadratic,smoothness){return this._tick++,this._activePath.roundShape(points,radius,useQuadratic,smoothness),this}filletRect(x,y,width,height,fillet){return this._tick++,this._activePath.filletRect(x,y,width,height,fillet),this}chamferRect(x,y,width,height,chamfer,transform){return this._tick++,this._activePath.chamferRect(x,y,width,height,chamfer,transform),this}star(x,y,points,radius,innerRadius=0,rotation=0){return this._tick++,this._activePath.star(x,y,points,radius,innerRadius,rotation,this._transform.clone()),this}svg(svg){return this._tick++,SVGParser(svg,this),this}restore(){var state=this._stateStack.pop();return state&&(this._transform=state.transform,this._fillStyle=state.fillStyle,this._strokeStyle=state.strokeStyle),this}save(){return this._stateStack.push({transform:this._transform.clone(),fillStyle:__spreadValues$T({},this._fillStyle),strokeStyle:__spreadValues$T({},this._strokeStyle)}),this}getTransform(){return this._transform}resetTransform(){return this._transform.identity(),this}rotate(angle){return this._transform.rotate(angle),this}scale(x,y=x){return this._transform.scale(x,y),this}setTransform(a,b,c,d,dx,dy){return a instanceof Matrix?this._transform.set(a.a,a.b,a.c,a.d,a.tx,a.ty):this._transform.set(a,b,c,d,dx,dy),this}transform(a,b,c,d,dx,dy){return a instanceof Matrix?this._transform.append(a):(tempMatrix$3.set(a,b,c,d,dx,dy),this._transform.append(tempMatrix$3)),this}translate(x,y=x){return this._transform.translate(x,y),this}clear(){return this._activePath.clear(),this.instructions.length=0,this.resetTransform(),this.onUpdate(),this}onUpdate(){this.dirty||(this.emit("update",this,16),this.dirty=!0,this._boundsDirty=!0)}get bounds(){if(!this._boundsDirty)return this._bounds;var bounds=this._bounds;bounds.clear();for(let i=0;i<this.instructions.length;i++){var instruction=this.instructions[i],action=instruction.action;if("fill"===action){var data=instruction.data;bounds.addBounds(data.path.bounds)}else if("texture"===action){const data=instruction.data;bounds.addFrame(data.dx,data.dy,data.dx+data.dw,data.dy+data.dh,data.transform)}if("stroke"===action){const data=instruction.data;action=data.style.alignment,instruction=data.style.width*(1-action),action=data.path.bounds,bounds.addFrame(action.minX-instruction,action.minY-instruction,action.maxX+instruction,action.maxY+instruction)}}return bounds}containsPoint(point){if(!this.bounds.containsPoint(point.x,point.y))return!1;var instructions=this.instructions;let hasHit=!1;for(let k=0;k<instructions.length;k++){var instruction=instructions[k],data=instruction.data,path=data.path;if(instruction.action&&path){var style=data.style,shapes=path.shapePath.shapePrimitives;for(let i=0;i<shapes.length;i++){var shape=shapes[i].shape;if(style&&shape){var transform=shapes[i].transform,transformedPoint=transform?transform.applyInverse(point,tmpPoint):point;if(hasHit="fill"===instruction.action?shape.contains(transformedPoint.x,transformedPoint.y):shape.strokeContains(transformedPoint.x,transformedPoint.y,style.width,style.alignment),transform=data.hole){var holeShapes=null==(shape=transform.shapePath)?void 0:shape.shapePrimitives;if(holeShapes)for(let j=0;j<holeShapes.length;j++)holeShapes[j].shape.contains(transformedPoint.x,transformedPoint.y)&&(hasHit=!1)}if(hasHit)return!0}}}}return hasHit}destroy(options=!1){this._stateStack.length=0,this._transform=null,this.emit("destroy",this),this.removeAllListeners(),("boolean"==typeof options?options:null!=options&&options.texture)&&(options="boolean"==typeof options?options:null==options?void 0:options.textureSource,this._fillStyle.texture&&this._fillStyle.texture.destroy(options),this._strokeStyle.texture)&&this._strokeStyle.texture.destroy(options),this._fillStyle=null,this._strokeStyle=null,this.instructions=null,this._activePath=null,this._bounds=null,this._stateStack=null,this.customShader=null,this._transform=null}};_GraphicsContext.defaultFillStyle={color:16777215,alpha:1,texture:Texture.WHITE,matrix:null,fill:null,textureSpace:"local"},_GraphicsContext.defaultStrokeStyle={width:1,color:16777215,alpha:1,alignment:.5,miterLimit:10,cap:"butt",join:"miter",texture:Texture.WHITE,matrix:null,fill:null,textureSpace:"local",pixelLine:!1};let GraphicsContext=_GraphicsContext;const valuesToIterateForKeys=["align","breakWords","cssOverrides","fontVariant","fontWeight","leading","letterSpacing","lineHeight","padding","textBaseline","trim","whiteSpace","wordWrap","wordWrapWidth","fontFamily","fontStyle","fontSize"];function generateTextStyleKey(style){var key=[];let index=0;for(let i=0;i<valuesToIterateForKeys.length;i++){var prop="_"+valuesToIterateForKeys[i];key[index++]=style[prop]}return index=addFillStyleKey(style._fill,key,index),index=function(strokeStyle,key,index){return strokeStyle&&(index=addFillStyleKey(strokeStyle,key,index),key[index++]=strokeStyle.width,key[index++]=strokeStyle.alignment,key[index++]=strokeStyle.cap,key[index++]=strokeStyle.join,key[index++]=strokeStyle.miterLimit),index}(style._stroke,key,index),index=function(dropShadow,key,index){return dropShadow&&(key[index++]=dropShadow.alpha,key[index++]=dropShadow.angle,key[index++]=dropShadow.blur,key[index++]=dropShadow.distance,key[index++]=Color.shared.setValue(dropShadow.color).toNumber()),index}(style.dropShadow,key,index),key.join("-")}function addFillStyleKey(fillStyle,key,index){return fillStyle&&(key[index++]=fillStyle.color,key[index++]=fillStyle.alpha,key[index++]=null==(key=fillStyle.fill)?void 0:key.styleKey),index}var __defProp$S=Object.defineProperty,__defProps$m=Object.defineProperties,__getOwnPropDescs$m=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$S=Object.getOwnPropertySymbols,__hasOwnProp$S=Object.prototype.hasOwnProperty,__propIsEnum$S=Object.prototype.propertyIsEnumerable,__defNormalProp$S=(obj,key,value)=>key in obj?__defProp$S(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$S=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$S.call(b,prop)&&__defNormalProp$S(a,prop,b[prop]);if(__getOwnPropSymbols$S)for(var prop of __getOwnPropSymbols$S(b))__propIsEnum$S.call(b,prop)&&__defNormalProp$S(a,prop,b[prop]);return a};const _TextStyle=class _TextStyle extends EventEmitter{constructor(style={}){super(),function(style){var defaults,oldStyle=style;if("boolean"==typeof oldStyle.dropShadow&&oldStyle.dropShadow&&(defaults=TextStyle.defaultDropShadow,style.dropShadow={alpha:null!=(_a=oldStyle.dropShadowAlpha)?_a:defaults.alpha,angle:null!=(_a=oldStyle.dropShadowAngle)?_a:defaults.angle,blur:null!=(_a=oldStyle.dropShadowBlur)?_a:defaults.blur,color:null!=(_a=oldStyle.dropShadowColor)?_a:defaults.color,distance:null!=(_a=oldStyle.dropShadowDistance)?_a:defaults.distance}),void 0!==oldStyle.strokeThickness){deprecation(v8_0_0,"strokeThickness is now a part of stroke");var _a=oldStyle.stroke;let obj={};if(Color.isColorLike(_a))obj.color=_a;else if(_a instanceof FillGradient||_a instanceof FillPattern)obj.fill=_a;else{if(!Object.hasOwnProperty.call(_a,"color")&&!Object.hasOwnProperty.call(_a,"fill"))throw new Error("Invalid stroke value.");obj=_a}style.stroke=(defaults=__spreadValues$S({},obj),_a={width:oldStyle.strokeThickness},__defProps$m(defaults,__getOwnPropDescs$m(_a)))}if(Array.isArray(oldStyle.fillGradientStops)){deprecation(v8_0_0,"gradient fill is now a fill pattern: `new FillGradient(...)`");let fontSize;null==style.fontSize?style.fontSize=TextStyle.defaultTextStyle.fontSize:fontSize="string"==typeof style.fontSize?parseInt(style.fontSize,10):style.fontSize;const gradientFill=new FillGradient({start:{x:0,y:0},end:{x:0,y:1.7*(fontSize||0)}}),fills=oldStyle.fillGradientStops.map(color=>Color.shared.setValue(color).toNumber());fills.forEach((number,index)=>{index/=fills.length-1,gradientFill.addColorStop(index,number)}),style.fill={fill:gradientFill}}}(style);var fullStyle=__spreadValues$S(__spreadValues$S({},_TextStyle.defaultTextStyle),style);for(const key in fullStyle)this[key]=fullStyle[key];this.update()}get align(){return this._align}set align(value){this._align=value,this.update()}get breakWords(){return this._breakWords}set breakWords(value){this._breakWords=value,this.update()}get dropShadow(){return this._dropShadow}set dropShadow(value){this._dropShadow=null!==value&&"object"==typeof value?this._createProxy(__spreadValues$S(__spreadValues$S({},_TextStyle.defaultDropShadow),value)):value?this._createProxy(__spreadValues$S({},_TextStyle.defaultDropShadow)):null,this.update()}get fontFamily(){return this._fontFamily}set fontFamily(value){this._fontFamily=value,this.update()}get fontSize(){return this._fontSize}set fontSize(value){this._fontSize="string"==typeof value?parseInt(value,10):value,this.update()}get fontStyle(){return this._fontStyle}set fontStyle(value){this._fontStyle=value.toLowerCase(),this.update()}get fontVariant(){return this._fontVariant}set fontVariant(value){this._fontVariant=value,this.update()}get fontWeight(){return this._fontWeight}set fontWeight(value){this._fontWeight=value,this.update()}get leading(){return this._leading}set leading(value){this._leading=value,this.update()}get letterSpacing(){return this._letterSpacing}set letterSpacing(value){this._letterSpacing=value,this.update()}get lineHeight(){return this._lineHeight}set lineHeight(value){this._lineHeight=value,this.update()}get padding(){return this._padding}set padding(value){this._padding=value,this.update()}get trim(){return this._trim}set trim(value){this._trim=value,this.update()}get textBaseline(){return this._textBaseline}set textBaseline(value){this._textBaseline=value,this.update()}get whiteSpace(){return this._whiteSpace}set whiteSpace(value){this._whiteSpace=value,this.update()}get wordWrap(){return this._wordWrap}set wordWrap(value){this._wordWrap=value,this.update()}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(value){this._wordWrapWidth=value,this.update()}get fill(){return this._originalFill}set fill(value){value!==this._originalFill&&(this._originalFill=value,this._isFillStyle(value)&&(this._originalFill=this._createProxy(__spreadValues$S(__spreadValues$S({},GraphicsContext.defaultFillStyle),value),()=>{this._fill=toFillStyle(__spreadValues$S({},this._originalFill),GraphicsContext.defaultFillStyle)})),this._fill=toFillStyle(0===value?"black":value,GraphicsContext.defaultFillStyle),this.update())}get stroke(){return this._originalStroke}set stroke(value){value!==this._originalStroke&&(this._originalStroke=value,this._isFillStyle(value)&&(this._originalStroke=this._createProxy(__spreadValues$S(__spreadValues$S({},GraphicsContext.defaultStrokeStyle),value),()=>{this._stroke=toStrokeStyle(__spreadValues$S({},this._originalStroke),GraphicsContext.defaultStrokeStyle)})),this._stroke=toStrokeStyle(value,GraphicsContext.defaultStrokeStyle),this.update())}_generateKey(){return this._styleKey=generateTextStyleKey(this),this._styleKey}update(){this._styleKey=null,this.emit("update",this)}reset(){var defaultStyle=_TextStyle.defaultTextStyle;for(const key in defaultStyle)this[key]=defaultStyle[key]}get styleKey(){return this._styleKey||this._generateKey()}clone(){return new _TextStyle({align:this.align,breakWords:this.breakWords,dropShadow:this._dropShadow?__spreadValues$S({},this._dropShadow):null,fill:this._fill,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,leading:this.leading,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke,textBaseline:this.textBaseline,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth})}destroy(options=!1){this.removeAllListeners();var destroyTexture="boolean"==typeof options?options:null==options?void 0:options.texture;destroyTexture&&(destroyTexture="boolean"==typeof options?options:null==options?void 0:options.textureSource,null!=(options=this._fill)&&options.texture&&this._fill.texture.destroy(destroyTexture),null!=(options=this._originalFill)&&options.texture&&this._originalFill.texture.destroy(destroyTexture),null!=(options=this._stroke)&&options.texture&&this._stroke.texture.destroy(destroyTexture),null!=(options=this._originalStroke))&&options.texture&&this._originalStroke.texture.destroy(destroyTexture),this._fill=null,this._stroke=null,this.dropShadow=null,this._originalStroke=null,this._originalFill=null}_createProxy(value,cb){return new Proxy(value,{set:(target,property,newValue)=>(target[property]=newValue,null!=cb&&cb(property,newValue),this.update(),!0)})}_isFillStyle(value){return null!==(null!=value?value:null)&&!(Color.isColorLike(value)||value instanceof FillGradient||value instanceof FillPattern)}};_TextStyle.defaultDropShadow={alpha:1,angle:Math.PI/6,blur:0,color:"black",distance:5},_TextStyle.defaultTextStyle={align:"left",breakWords:!1,dropShadow:null,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,padding:0,stroke:null,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};let TextStyle=_TextStyle;const tempBounds$3=new Bounds;function getPo2TextureFromSource(image,width,height,resolution){var bounds=tempBounds$3;return bounds.minX=0,bounds.minY=0,bounds.maxX=image.width/resolution|0,bounds.maxY=image.height/resolution|0,(bounds=TexturePool.getOptimalTexture(bounds.width,bounds.height,resolution,!1)).source.uploadMethodId="image",bounds.source.resource=image,bounds.source.alphaMode="premultiply-alpha-on-upload",bounds.frame.width=width/resolution,bounds.frame.height=height/resolution,bounds.source.emit("update",bounds.source),bounds.updateUvs(),bounds}const genericFontFamilies=["serif","sans-serif","monospace","cursive","fantasy","system-ui"];function fontStringFromTextStyle(style){var fontSizeString="number"==typeof style.fontSize?style.fontSize+"px":style.fontSize,fontFamilies=style.fontFamily;for(let i=(fontFamilies=Array.isArray(style.fontFamily)?fontFamilies:style.fontFamily.split(",")).length-1;0<=i;i--){let fontFamily=fontFamilies[i].trim();/([\"\'])[^\'\"]+\1/.test(fontFamily)||genericFontFamilies.includes(fontFamily)||(fontFamily=`"${fontFamily}"`),fontFamilies[i]=fontFamily}return`${style.fontStyle} ${style.fontVariant} ${style.fontWeight} ${fontSizeString} `+fontFamilies.join(",")}const contextSettings={willReadFrequently:!0},_CanvasTextMetrics=class _CanvasTextMetrics{static get experimentalLetterSpacingSupported(){let result=_CanvasTextMetrics._experimentalLetterSpacingSupported;var proto;return void 0!==result&&(proto=DOMAdapter.get().getCanvasRenderingContext2D().prototype,result=_CanvasTextMetrics._experimentalLetterSpacingSupported="letterSpacing"in proto||"textLetterSpacing"in proto),result}constructor(text,style,width,height,lines,lineWidths,lineHeight,maxLineWidth,fontProperties){this.text=text,this.style=style,this.width=width,this.height=height,this.lines=lines,this.lineWidths=lineWidths,this.lineHeight=lineHeight,this.maxLineWidth=maxLineWidth,this.fontProperties=fontProperties}static measureText(text=" ",style,canvas=_CanvasTextMetrics._canvas,wordWrap=style.wordWrap){var textKey=text+":"+style.styleKey;if(_CanvasTextMetrics._measurementCache[textKey])return _CanvasTextMetrics._measurementCache[textKey];var textKey=fontStringFromTextStyle(style),fontProperties=_CanvasTextMetrics.measureFont(textKey),context=(0===fontProperties.fontSize&&(fontProperties.fontSize=style.fontSize,fontProperties.ascent=style.fontSize),_CanvasTextMetrics.__context),lines=(context.font=textKey,(wordWrap?_CanvasTextMetrics._wordWrap(text,style,canvas):text).split(/(?:\r\n|\r|\n)/)),lineWidths=new Array(lines.length);let maxLineWidth=0;for(let i=0;i<lines.length;i++){var lineWidth=_CanvasTextMetrics._measureText(lines[i],style.letterSpacing,context);lineWidths[i]=lineWidth,maxLineWidth=Math.max(maxLineWidth,lineWidth)}wordWrap=(null==(textKey=style._stroke)?void 0:textKey.width)||0;let width=maxLineWidth+wordWrap,height=(style.dropShadow&&(width+=style.dropShadow.distance),canvas=style.lineHeight||fontProperties.fontSize,Math.max(canvas,fontProperties.fontSize+wordWrap)+(lines.length-1)*(canvas+style.leading));return style.dropShadow&&(height+=style.dropShadow.distance),new _CanvasTextMetrics(text,style,width,height,lines,lineWidths,canvas+style.leading,maxLineWidth,fontProperties)}static _measureText(text,letterSpacing,context){let useExperimentalLetterSpacing=!1,metricWidth=(_CanvasTextMetrics.experimentalLetterSpacingSupported&&(_CanvasTextMetrics.experimentalLetterSpacing?(context.letterSpacing=letterSpacing+"px",context.textLetterSpacing=letterSpacing+"px",useExperimentalLetterSpacing=!0):(context.letterSpacing="0px",context.textLetterSpacing="0px")),(context=context.measureText(text)).width);var actualBoundingBoxLeft=-context.actualBoundingBoxLeft;let boundsWidth=context.actualBoundingBoxRight-actualBoundingBoxLeft;return 0<metricWidth&&(useExperimentalLetterSpacing?(metricWidth-=letterSpacing,boundsWidth-=letterSpacing):(context=(_CanvasTextMetrics.graphemeSegmenter(text).length-1)*letterSpacing,metricWidth+=context,boundsWidth+=context)),Math.max(metricWidth,boundsWidth)}static _wordWrap(text,style,canvas=_CanvasTextMetrics._canvas){var context=canvas.getContext("2d",contextSettings);let width=0,line="",lines="";var cache=Object.create(null),{letterSpacing,whiteSpace:canvas}=style,collapseSpaces=_CanvasTextMetrics._collapseSpaces(canvas),collapseNewlines=_CanvasTextMetrics._collapseNewlines(canvas);let canPrependSpaces=!collapseSpaces;var wordWrapWidth=style.wordWrapWidth+letterSpacing,tokens=_CanvasTextMetrics._tokenize(text);for(let i=0;i<tokens.length;i++){let token=tokens[i];if(_CanvasTextMetrics._isNewline(token)){if(!collapseNewlines){lines+=_CanvasTextMetrics._addLine(line),canPrependSpaces=!collapseSpaces,line="",width=0;continue}token=" "}if(collapseSpaces){var currIsBreakingSpace=_CanvasTextMetrics.isBreakingSpace(token),lastIsBreakingSpace=_CanvasTextMetrics.isBreakingSpace(line[line.length-1]);if(currIsBreakingSpace&&lastIsBreakingSpace)continue}if(wordWrapWidth<(currIsBreakingSpace=_CanvasTextMetrics._getFromCache(token,letterSpacing,cache,context)))if(""!==line&&(lines+=_CanvasTextMetrics._addLine(line),line="",width=0),_CanvasTextMetrics.canBreakWords(token,style.breakWords)){var characters=_CanvasTextMetrics.wordWrapSplit(token);for(let j=0;j<characters.length;j++){let char=characters[j],lastChar=char,k=1;for(;characters[j+k];){var nextChar=characters[j+k];if(_CanvasTextMetrics.canBreakChars(lastChar,nextChar,token,j,style.breakWords))break;char+=nextChar,lastChar=nextChar,k++}j+=k-1;var characterWidth=_CanvasTextMetrics._getFromCache(char,letterSpacing,cache,context);characterWidth+width>wordWrapWidth&&(lines+=_CanvasTextMetrics._addLine(line),canPrependSpaces=!1,line="",width=0),line+=char,width+=characterWidth}}else 0<line.length&&(lines+=_CanvasTextMetrics._addLine(line),line="",width=0),lastIsBreakingSpace=i===tokens.length-1,lines+=_CanvasTextMetrics._addLine(token,!lastIsBreakingSpace),canPrependSpaces=!1,line="",width=0;else currIsBreakingSpace+width>wordWrapWidth&&(canPrependSpaces=!1,lines+=_CanvasTextMetrics._addLine(line),line="",width=0),(0<line.length||!_CanvasTextMetrics.isBreakingSpace(token)||canPrependSpaces)&&(line+=token,width+=currIsBreakingSpace)}return lines+=_CanvasTextMetrics._addLine(line,!1)}static _addLine(line,newLine=!0){return line=_CanvasTextMetrics._trimRight(line),newLine?line+`
`:line}static _getFromCache(key,letterSpacing,cache,context){let width=cache[key];return"number"!=typeof width&&(width=_CanvasTextMetrics._measureText(key,letterSpacing,context)+letterSpacing,cache[key]=width),width}static _collapseSpaces(whiteSpace){return"normal"===whiteSpace||"pre-line"===whiteSpace}static _collapseNewlines(whiteSpace){return"normal"===whiteSpace}static _trimRight(text){if("string"!=typeof text)return"";for(let i=text.length-1;0<=i;i--){var char=text[i];if(!_CanvasTextMetrics.isBreakingSpace(char))break;text=text.slice(0,-1)}return text}static _isNewline(char){return"string"==typeof char&&_CanvasTextMetrics._newlines.includes(char.charCodeAt(0))}static isBreakingSpace(char,_nextChar){return"string"==typeof char&&_CanvasTextMetrics._breakingSpaces.includes(char.charCodeAt(0))}static _tokenize(text){var tokens=[];let token="";if("string"==typeof text){for(let i=0;i<text.length;i++){var char=text[i],nextChar=text[i+1];_CanvasTextMetrics.isBreakingSpace(char,nextChar)||_CanvasTextMetrics._isNewline(char)?(""!==token&&(tokens.push(token),token=""),tokens.push(char)):token+=char}""!==token&&tokens.push(token)}return tokens}static canBreakWords(_token,breakWords){return breakWords}static canBreakChars(_char,_nextChar,_token,_index,_breakWords){return!0}static wordWrapSplit(token){return _CanvasTextMetrics.graphemeSegmenter(token)}static measureFont(font){var context;return _CanvasTextMetrics._fonts[font]||((context=_CanvasTextMetrics._context).font=font,context={ascent:(context=context.measureText(_CanvasTextMetrics.METRICS_STRING+_CanvasTextMetrics.BASELINE_SYMBOL)).actualBoundingBoxAscent,descent:context.actualBoundingBoxDescent,fontSize:context.actualBoundingBoxAscent+context.actualBoundingBoxDescent},_CanvasTextMetrics._fonts[font]=context)}static clearMetrics(font=""){font?delete _CanvasTextMetrics._fonts[font]:_CanvasTextMetrics._fonts={}}static get _canvas(){if(!_CanvasTextMetrics.__canvas){let canvas;try{var c=new OffscreenCanvas(0,0),context=c.getContext("2d",contextSettings);if(null!=context&&context.measureText)return _CanvasTextMetrics.__canvas=c;canvas=DOMAdapter.get().createCanvas()}catch(_cx){canvas=DOMAdapter.get().createCanvas()}canvas.width=canvas.height=10,_CanvasTextMetrics.__canvas=canvas}return _CanvasTextMetrics.__canvas}static get _context(){return _CanvasTextMetrics.__context||(_CanvasTextMetrics.__context=_CanvasTextMetrics._canvas.getContext("2d",contextSettings)),_CanvasTextMetrics.__context}};_CanvasTextMetrics.METRICS_STRING="|ÉqÅ",_CanvasTextMetrics.BASELINE_SYMBOL="M",_CanvasTextMetrics.BASELINE_MULTIPLIER=1.4,_CanvasTextMetrics.HEIGHT_MULTIPLIER=2,_CanvasTextMetrics.graphemeSegmenter=(()=>{if("function"!=typeof(null==Intl?void 0:Intl.Segmenter))return s=>[...s];{const segmenter=new Intl.Segmenter;return s=>[...segmenter.segment(s)].map(x=>x.segment)}})(),_CanvasTextMetrics.experimentalLetterSpacing=!1,_CanvasTextMetrics._fonts={},_CanvasTextMetrics._newlines=[10,13],_CanvasTextMetrics._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288],_CanvasTextMetrics._measurementCache={};let CanvasTextMetrics=_CanvasTextMetrics;function getCanvasFillStyle(fillStyle,context,textMetrics,padding=0){if(fillStyle.texture===Texture.WHITE&&!fillStyle.fill)return Color.shared.setValue(fillStyle.color).setAlpha(null!=(_a=fillStyle.alpha)?_a:1).toHexa();if(!fillStyle.fill)return _a=context.createPattern(fillStyle.texture.source.resource,"repeat"),(tempMatrix=fillStyle.matrix.copyTo(Matrix.shared)).scale(fillStyle.texture.frame.width,fillStyle.texture.frame.height),_a.setTransform(tempMatrix),_a;if(fillStyle.fill instanceof FillPattern){var _a=fillStyle.fill;const pattern=context.createPattern(_a.texture.source.resource,"repeat"),tempMatrix=_a.transform.copyTo(Matrix.shared);return tempMatrix.scale(_a.texture.frame.width,_a.texture.frame.height),pattern.setTransform(tempMatrix),pattern}if(fillStyle.fill instanceof FillGradient){var end,outerCenter,outerRadius,fillGradient=fillStyle.fill,tempMatrix="linear"===fillGradient.type;let width=1,height=1;(_a="local"===fillGradient.textureSpace)&&textMetrics&&(width=textMetrics.width+padding,height=textMetrics.height+padding);let gradient,isNearlyVertical=!1;if(tempMatrix?({start:tempMatrix,end}=fillGradient,gradient=context.createLinearGradient(tempMatrix.x*width,tempMatrix.y*height,end.x*width,end.y*height),isNearlyVertical=Math.abs(end.x-tempMatrix.x)<Math.abs(.1*(end.y-tempMatrix.y))):({center:end,innerRadius:tempMatrix,outerCenter,outerRadius}=fillGradient,gradient=context.createRadialGradient(end.x*width,end.y*height,tempMatrix*width,outerCenter.x*width,outerCenter.y*height,outerRadius*width)),isNearlyVertical&&_a&&textMetrics){const ratio=textMetrics.lineHeight/height;for(let i=0;i<textMetrics.lines.length;i++){const start=(i*textMetrics.lineHeight+padding/2)/height;fillGradient.colorStops.forEach(stop=>{var globalStop=start+stop.offset*ratio;gradient.addColorStop(Math.floor(1e5*globalStop)/1e5,Color.shared.setValue(stop.color).toHex())})}}else fillGradient.colorStops.forEach(stop=>{gradient.addColorStop(stop.offset,Color.shared.setValue(stop.color).toHex())});return gradient}return warn("FillStyle not recognised",fillStyle),"red"}class CanvasTextSystem{constructor(_renderer){this._activeTextures={},this._renderer=_renderer}getTextureSize(text,resolution,style){var text=CanvasTextMetrics.measureText(text||" ",style),width=Math.ceil(Math.ceil(Math.max(1,text.width)+2*style.padding)*resolution),text=Math.ceil(Math.ceil(Math.max(1,text.height)+2*style.padding)*resolution),width=Math.ceil(width-1e-6),text=Math.ceil(text-1e-6);return{width:nextPow2(width),height:nextPow2(text)}}getTexture(options,resolution,style,_textKey){"string"==typeof options&&(deprecation("8.0.0","CanvasTextSystem.getTexture: Use object TextOptions instead of separate arguments"),options={text:options,style:style,resolution:resolution}),options.style instanceof TextStyle||(options.style=new TextStyle(options.style));var{texture:style,canvasAndContext:resolution}=this.createTextureAndCanvas(options);return this._renderer.texture.initSource(style._source),CanvasPool.returnCanvasAndContext(resolution),style}createTextureAndCanvas(options){var{text,style}=options,options=null!=(options=options.resolution)?options:this._renderer.resolution,measured=CanvasTextMetrics.measureText(text||" ",style),width=Math.ceil(Math.ceil(Math.max(1,measured.width)+2*style.padding)*options),measured=Math.ceil(Math.ceil(Math.max(1,measured.height)+2*style.padding)*options),canvasAndContext=CanvasPool.getOptimalCanvasAndContext(width,measured),canvas=canvasAndContext.canvas,text=(this.renderTextToCanvas(text,style,options,canvasAndContext),getPo2TextureFromSource(canvas,width,measured,options));return style.trim&&(width=getCanvasBoundingBox(canvas,options),text.frame.copyFrom(width),text.updateUvs()),{texture:text,canvasAndContext:canvasAndContext}}getManagedTexture(text){text._resolution=(text._autoResolution?this._renderer:text).resolution;var canvasAndContext,textKey=text._getKey();return this._activeTextures[textKey]?(this._increaseReferenceCount(textKey),this._activeTextures[textKey].texture):({texture:text,canvasAndContext}=this.createTextureAndCanvas(text),this._activeTextures[textKey]={canvasAndContext:canvasAndContext,texture:text,usageCount:1},text)}_increaseReferenceCount(textKey){this._activeTextures[textKey].usageCount++}returnTexture(texture){var source=texture.source;source.resource=null,source.uploadMethodId="unknown",source.alphaMode="no-premultiply-alpha",TexturePool.returnTexture(texture)}decreaseReferenceCount(textKey){var activeTexture=this._activeTextures[textKey];activeTexture.usageCount--,0===activeTexture.usageCount&&(CanvasPool.returnCanvasAndContext(activeTexture.canvasAndContext),this.returnTexture(activeTexture.texture),this._activeTextures[textKey]=null)}getReferenceCount(textKey){return this._activeTextures[textKey].usageCount}renderTextToCanvas(text,style,resolution,canvasAndContext){var _e,linePositionY,{canvas,context}=canvasAndContext,font=fontStringFromTextStyle(style),measured=CanvasTextMetrics.measureText(text||" ",style),lines=measured.lines,lineHeight=measured.lineHeight,lineWidths=measured.lineWidths,maxLineWidth=measured.maxLineWidth,fontProperties=measured.fontProperties,height=canvas.height;context.resetTransform(),context.scale(resolution,resolution),context.textBaseline=style.textBaseline,null!=(text=style._stroke)&&text.width&&(canvas=style._stroke,context.lineWidth=canvas.width,context.miterLimit=canvas.miterLimit,context.lineJoin=canvas.join,context.lineCap=canvas.cap),context.font=font;let linePositionX;var passesCount=style.dropShadow?2:1;for(let i=0;i<passesCount;++i){var dropShadowColor,dropShadowAlpha,isShadowPass=style.dropShadow&&0===i,dsOffsetText=isShadowPass?Math.ceil(Math.max(1,height)+2*style.padding):0,dsOffsetShadow=dsOffsetText*resolution;isShadowPass?(context.fillStyle="black",context.strokeStyle="black",dropShadowColor=(isShadowPass=style.dropShadow).color,dropShadowAlpha=isShadowPass.alpha,context.shadowColor=Color.shared.setValue(dropShadowColor).setAlpha(dropShadowAlpha).toRgbaString(),dropShadowColor=isShadowPass.blur*resolution,dropShadowAlpha=isShadowPass.distance*resolution,context.shadowBlur=dropShadowColor,context.shadowOffsetX=Math.cos(isShadowPass.angle)*dropShadowAlpha,context.shadowOffsetY=Math.sin(isShadowPass.angle)*dropShadowAlpha+dsOffsetShadow):(context.fillStyle=style._fill?getCanvasFillStyle(style._fill,context,measured):null,null!=(dropShadowColor=style._stroke)&&dropShadowColor.width&&(isShadowPass=style._stroke.width*style._stroke.alignment,context.strokeStyle=getCanvasFillStyle(style._stroke,context,measured,isShadowPass)),context.shadowColor="black");let linePositionYShift=(lineHeight-fontProperties.fontSize)/2;lineHeight-fontProperties.fontSize<0&&(linePositionYShift=0);var strokeWidth=null!=(dsOffsetShadow=null==(dropShadowAlpha=style._stroke)?void 0:dropShadowAlpha.width)?dsOffsetShadow:0;for(let i2=0;i2<lines.length;i2++)linePositionY=(linePositionX=strokeWidth/2)+i2*lineHeight+fontProperties.ascent+linePositionYShift,"right"===style.align?linePositionX+=maxLineWidth-lineWidths[i2]:"center"===style.align&&(linePositionX+=(maxLineWidth-lineWidths[i2])/2),null!=(_e=style._stroke)&&_e.width&&this._drawLetterSpacing(lines[i2],style,canvasAndContext,linePositionX+style.padding,linePositionY+style.padding-dsOffsetText,!0),void 0!==style._fill&&this._drawLetterSpacing(lines[i2],style,canvasAndContext,linePositionX+style.padding,linePositionY+style.padding-dsOffsetText)}}_drawLetterSpacing(text,style,canvasAndContext,x,y,isStroke=!1){var context=canvasAndContext.context,letterSpacing=style.letterSpacing;let useExperimentalLetterSpacing=!1;if(CanvasTextMetrics.experimentalLetterSpacingSupported&&(CanvasTextMetrics.experimentalLetterSpacing?(context.letterSpacing=letterSpacing+"px",context.textLetterSpacing=letterSpacing+"px",useExperimentalLetterSpacing=!0):(context.letterSpacing="0px",context.textLetterSpacing="0px")),0===letterSpacing||useExperimentalLetterSpacing)isStroke?context.strokeText(text,x,y):context.fillText(text,x,y);else{let currentPosition=x;var stringArray=CanvasTextMetrics.graphemeSegmenter(text);let previousWidth=context.measureText(text).width;for(let i=0;i<stringArray.length;++i){var currentChar=stringArray[i];isStroke?context.strokeText(currentChar,currentPosition,y):context.fillText(currentChar,currentPosition,y);let textStr="";for(let j=i+1;j<stringArray.length;++j)textStr+=stringArray[j];currentChar=context.measureText(textStr).width,currentPosition+=previousWidth-currentChar+letterSpacing,previousWidth=currentChar}}}destroy(){this._activeTextures=null}}CanvasTextSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem,ExtensionType2.CanvasSystem],name:"canvasText"},extensions.add(CanvasTextSystem),extensions.add(CanvasTextPipe);var __defProp$R=Object.defineProperty,__getOwnPropSymbols$R=Object.getOwnPropertySymbols,__hasOwnProp$R=Object.prototype.hasOwnProperty,__propIsEnum$R=Object.prototype.propertyIsEnumerable,__defNormalProp$R=(obj,key,value)=>key in obj?__defProp$R(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class Graphics extends ViewContainer{constructor(options){var{context,roundPixels}=options=(options instanceof GraphicsContext?{context:options}:options)||{};super(((a,b)=>{for(var prop in b=b||{})__hasOwnProp$R.call(b,prop)&&__defNormalProp$R(a,prop,b[prop]);if(__getOwnPropSymbols$R)for(var prop of __getOwnPropSymbols$R(b))__propIsEnum$R.call(b,prop)&&__defNormalProp$R(a,prop,b[prop]);return a})({label:"Graphics"},((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$R.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$R)for(var prop of __getOwnPropSymbols$R(source))exclude.indexOf(prop)<0&&__propIsEnum$R.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["context","roundPixels"]))),this.renderPipeId="graphics",this._context=context||(this._ownedContext=new GraphicsContext),this._context.on("update",this.onViewUpdate,this),this.allowChildren=!1,this.roundPixels=null!=roundPixels&&roundPixels}set context(context){context!==this._context&&(this._context.off("update",this.onViewUpdate,this),this._context=context,this._context.on("update",this.onViewUpdate,this),this.onViewUpdate())}get context(){return this._context}get bounds(){return this._context.bounds}updateBounds(){}containsPoint(point){return this._context.containsPoint(point)}destroy(options){this._ownedContext&&!options?this._ownedContext.destroy(options):!0!==options&&!0!==(null==options?void 0:options.context)||this._context.destroy(options),this._ownedContext=null,this._context=null,super.destroy(options)}_callContextMethod(method,args){return this.context[method](...args),this}setFillStyle(...args){return this._callContextMethod("setFillStyle",args)}setStrokeStyle(...args){return this._callContextMethod("setStrokeStyle",args)}fill(...args){return this._callContextMethod("fill",args)}stroke(...args){return this._callContextMethod("stroke",args)}texture(...args){return this._callContextMethod("texture",args)}beginPath(){return this._callContextMethod("beginPath",[])}cut(){return this._callContextMethod("cut",[])}arc(...args){return this._callContextMethod("arc",args)}arcTo(...args){return this._callContextMethod("arcTo",args)}arcToSvg(...args){return this._callContextMethod("arcToSvg",args)}bezierCurveTo(...args){return this._callContextMethod("bezierCurveTo",args)}closePath(){return this._callContextMethod("closePath",[])}ellipse(...args){return this._callContextMethod("ellipse",args)}circle(...args){return this._callContextMethod("circle",args)}path(...args){return this._callContextMethod("path",args)}lineTo(...args){return this._callContextMethod("lineTo",args)}moveTo(...args){return this._callContextMethod("moveTo",args)}quadraticCurveTo(...args){return this._callContextMethod("quadraticCurveTo",args)}rect(...args){return this._callContextMethod("rect",args)}roundRect(...args){return this._callContextMethod("roundRect",args)}poly(...args){return this._callContextMethod("poly",args)}regularPoly(...args){return this._callContextMethod("regularPoly",args)}roundPoly(...args){return this._callContextMethod("roundPoly",args)}roundShape(...args){return this._callContextMethod("roundShape",args)}filletRect(...args){return this._callContextMethod("filletRect",args)}chamferRect(...args){return this._callContextMethod("chamferRect",args)}star(...args){return this._callContextMethod("star",args)}svg(...args){return this._callContextMethod("svg",args)}restore(...args){return this._callContextMethod("restore",args)}save(){return this._callContextMethod("save",[])}getTransform(){return this.context.getTransform()}resetTransform(){return this._callContextMethod("resetTransform",[])}rotateTransform(...args){return this._callContextMethod("rotate",args)}scaleTransform(...args){return this._callContextMethod("scale",args)}setTransform(...args){return this._callContextMethod("setTransform",args)}transform(...args){return this._callContextMethod("transform",args)}translateTransform(...args){return this._callContextMethod("translate",args)}clear(){return this._callContextMethod("clear",[])}get fillStyle(){return this._context.fillStyle}set fillStyle(value){this._context.fillStyle=value}get strokeStyle(){return this._context.strokeStyle}set strokeStyle(value){this._context.strokeStyle=value}clone(deep=!1){return deep?new Graphics(this._context.clone()):(this._ownedContext=null,new Graphics(this._context))}lineStyle(width,color,alpha){deprecation(v8_0_0,"Graphics#lineStyle is no longer needed. Use Graphics#setStrokeStyle to set the stroke style.");var strokeStyle={};return width&&(strokeStyle.width=width),color&&(strokeStyle.color=color),alpha&&(strokeStyle.alpha=alpha),this.context.strokeStyle=strokeStyle,this}beginFill(color,alpha){deprecation(v8_0_0,"Graphics#beginFill is no longer needed. Use Graphics#fill to fill the shape with the desired style.");var fillStyle={};return void 0!==color&&(fillStyle.color=color),void 0!==alpha&&(fillStyle.alpha=alpha),this.context.fillStyle=fillStyle,this}endFill(){deprecation(v8_0_0,"Graphics#endFill is no longer needed. Use Graphics#fill to fill the shape with the desired style."),this.context.fill();var strokeStyle=this.context.strokeStyle;return strokeStyle.width===GraphicsContext.defaultStrokeStyle.width&&strokeStyle.color===GraphicsContext.defaultStrokeStyle.color&&strokeStyle.alpha===GraphicsContext.defaultStrokeStyle.alpha||this.context.stroke(),this}drawCircle(...args){return deprecation(v8_0_0,"Graphics#drawCircle has been renamed to Graphics#circle"),this._callContextMethod("circle",args)}drawEllipse(...args){return deprecation(v8_0_0,"Graphics#drawEllipse has been renamed to Graphics#ellipse"),this._callContextMethod("ellipse",args)}drawPolygon(...args){return deprecation(v8_0_0,"Graphics#drawPolygon has been renamed to Graphics#poly"),this._callContextMethod("poly",args)}drawRect(...args){return deprecation(v8_0_0,"Graphics#drawRect has been renamed to Graphics#rect"),this._callContextMethod("rect",args)}drawRoundedRect(...args){return deprecation(v8_0_0,"Graphics#drawRoundedRect has been renamed to Graphics#roundRect"),this._callContextMethod("roundRect",args)}drawStar(...args){return deprecation(v8_0_0,"Graphics#drawStar has been renamed to Graphics#star"),this._callContextMethod("star",args)}}const localUniformMSDFBit={name:"local-uniform-msdf-bit",vertex:{header:`
struct LocalUniforms {
uColor:vec4<f32>,
uTransformMatrix:mat3x3<f32>,
uDistance: f32,
uRound:f32,
}
@group(2) @binding(0) var<uniform> localUniforms : LocalUniforms;
`,main:`
vColor *= localUniforms.uColor;
modelMatrix *= localUniforms.uTransformMatrix;
`,end:`
if(localUniforms.uRound == 1)
{
vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
}
`},fragment:{header:`
struct LocalUniforms {
uColor:vec4<f32>,
uTransformMatrix:mat3x3<f32>,
uDistance: f32
}
@group(2) @binding(0) var<uniform> localUniforms : LocalUniforms;
`,main:`
outColor = vec4<f32>(calculateMSDFAlpha(outColor, localUniforms.uColor, localUniforms.uDistance));
`}},localUniformMSDFBitGl={name:"local-uniform-msdf-bit",vertex:{header:`
uniform mat3 uTransformMatrix;
uniform vec4 uColor;
uniform float uRound;
`,main:`
vColor *= uColor;
modelMatrix *= uTransformMatrix;
`,end:`
if(uRound == 1.)
{
gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
}
`},fragment:{header:`
uniform float uDistance;
`,main:`
outColor = vec4(calculateMSDFAlpha(outColor, vColor, uDistance));
`}},mSDFBit={name:"msdf-bit",fragment:{header:`
fn calculateMSDFAlpha(msdfColor:vec4<f32>, shapeColor:vec4<f32>, distance:f32) -> f32 {
// MSDF
var median = msdfColor.r + msdfColor.g + msdfColor.b -
min(msdfColor.r, min(msdfColor.g, msdfColor.b)) -
max(msdfColor.r, max(msdfColor.g, msdfColor.b));
// SDF
median = min(median, msdfColor.a);
var screenPxDistance = distance * (median - 0.5);
var alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);
if (median < 0.01) {
alpha = 0.0;
} else if (median > 0.99) {
alpha = 1.0;
}
// Gamma correction for coverage-like alpha
var luma: f32 = dot(shapeColor.rgb, vec3<f32>(0.299, 0.587, 0.114));
var gamma: f32 = mix(1.0, 1.0 / 2.2, luma);
var coverage: f32 = pow(shapeColor.a * alpha, gamma);
return coverage;
}
`}},mSDFBitGl={name:"msdf-bit",fragment:{header:`
float calculateMSDFAlpha(vec4 msdfColor, vec4 shapeColor, float distance) {
// MSDF
float median = msdfColor.r + msdfColor.g + msdfColor.b -
min(msdfColor.r, min(msdfColor.g, msdfColor.b)) -
max(msdfColor.r, max(msdfColor.g, msdfColor.b));
// SDF
median = min(median, msdfColor.a);
float screenPxDistance = distance * (median - 0.5);
float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);
if (median < 0.01) {
alpha = 0.0;
} else if (median > 0.99) {
alpha = 1.0;
}
// Gamma correction for coverage-like alpha
float luma = dot(shapeColor.rgb, vec3(0.299, 0.587, 0.114));
float gamma = mix(1.0, 1.0 / 2.2, luma);
float coverage = pow(shapeColor.a * alpha, gamma);
return coverage;
}
`}};let gpuProgram$1,glProgram$1;class SdfShader extends Shader{constructor(){var uniforms=new UniformGroup({uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uTransformMatrix:{value:new Matrix,type:"mat3x3<f32>"},uDistance:{value:4,type:"f32"},uRound:{value:0,type:"f32"}}),maxTextures=getMaxTexturesPerBatch();null!=gpuProgram$1?gpuProgram$1:gpuProgram$1=compileHighShaderGpuProgram({name:"sdf-shader",bits:[colorBit,generateTextureBatchBit(maxTextures),localUniformMSDFBit,mSDFBit,roundPixelsBit]}),null!=glProgram$1?glProgram$1:glProgram$1=compileHighShaderGlProgram({name:"sdf-shader",bits:[colorBitGl,generateTextureBatchBitGl(maxTextures),localUniformMSDFBitGl,mSDFBitGl,roundPixelsBitGl]}),super({glProgram:glProgram$1,gpuProgram:gpuProgram$1,resources:{localUniforms:uniforms,batchSamplers:getBatchSamplersUniformGroup(maxTextures)}})}}class AbstractBitmapFont extends EventEmitter{constructor(){super(...arguments),this.chars=Object.create(null),this.lineHeight=0,this.fontFamily="",this.fontMetrics={fontSize:0,ascent:0,descent:0},this.baseLineOffset=0,this.distanceField={type:"none",range:0},this.pages=[],this.applyFillAsTint=!0,this.baseMeasurementFontSize=100,this.baseRenderedFontSize=100}get font(){return deprecation(v8_0_0,"BitmapFont.font is deprecated, please use BitmapFont.fontFamily instead."),this.fontFamily}get pageTextures(){return deprecation(v8_0_0,"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead."),this.pages}get size(){return deprecation(v8_0_0,"BitmapFont.size is deprecated, please use BitmapFont.fontMetrics.fontSize instead."),this.fontMetrics.fontSize}get distanceFieldRange(){return deprecation(v8_0_0,"BitmapFont.distanceFieldRange is deprecated, please use BitmapFont.distanceField.range instead."),this.distanceField.range}get distanceFieldType(){return deprecation(v8_0_0,"BitmapFont.distanceFieldType is deprecated, please use BitmapFont.distanceField.type instead."),this.distanceField.type}destroy(destroyTextures=!1){var _a;this.emit("destroy",this),this.removeAllListeners();for(const i in this.chars)null!=(_a=this.chars[i].texture)&&_a.destroy();this.chars=null,destroyTextures&&(this.pages.forEach(page=>page.texture.destroy(!0)),this.pages=null)}}function resolveCharacters(chars){if(""===chars)return[];var result=[];for(let i=0,j=(chars="string"==typeof chars?[chars]:chars).length;i<j;i++){var item=chars[i];if(Array.isArray(item)){if(2!==item.length)throw new Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${item.length}.`);if(0===item[0].length||0===item[1].length)throw new Error("[BitmapFont]: Invalid character delimiter.");var startCode=item[0].charCodeAt(0),endCode=item[1].charCodeAt(0);if(endCode<startCode)throw new Error("[BitmapFont]: Invalid character range.");for(let i2=startCode,j2=endCode;i2<=j2;i2++)result.push(String.fromCharCode(i2))}else result.push(...Array.from(item))}if(0===result.length)throw new Error("[BitmapFont]: Empty set when resolving characters.");return result}var __defProp$Q=Object.defineProperty,__getOwnPropSymbols$Q=Object.getOwnPropertySymbols,__hasOwnProp$Q=Object.prototype.hasOwnProperty,__propIsEnum$Q=Object.prototype.propertyIsEnumerable,__defNormalProp$Q=(obj,key,value)=>key in obj?__defProp$Q(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$Q=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$Q.call(b,prop)&&__defNormalProp$Q(a,prop,b[prop]);if(__getOwnPropSymbols$Q)for(var prop of __getOwnPropSymbols$Q(b))__propIsEnum$Q.call(b,prop)&&__defNormalProp$Q(a,prop,b[prop]);return a};const _DynamicBitmapFont=class _DynamicBitmapFont extends AbstractBitmapFont{constructor(options){super(),this.resolution=1,this.pages=[],this._padding=0,this._measureCache=Object.create(null),this._currentChars=[],this._currentX=0,this._currentY=0,this._currentPageIndex=-1,this._skipKerning=!1;var options=__spreadValues$Q(__spreadValues$Q({},_DynamicBitmapFont.defaultOptions),options),style=(this._textureSize=options.textureSize,this._mipmap=options.mipmap,options.style.clone()),requestedFontSize=(options.overrideFill&&(style._fill.color=16777215,style._fill.alpha=1,style._fill.texture=Texture.WHITE,style._fill.fill=null),this.applyFillAsTint=options.overrideFill,style.fontSize),font=(style.fontSize=this.baseMeasurementFontSize,fontStringFromTextStyle(style));options.overrideSize?style._stroke&&(style._stroke.width*=this.baseRenderedFontSize/requestedFontSize):style.fontSize=this.baseRenderedFontSize=requestedFontSize,this._style=style,this._skipKerning=null!=(requestedFontSize=options.skipKerning)&&requestedFontSize,this.resolution=null!=(requestedFontSize=options.resolution)?requestedFontSize:1,this._padding=null!=(requestedFontSize=options.padding)?requestedFontSize:4,this.fontMetrics=CanvasTextMetrics.measureFont(font),this.lineHeight=style.lineHeight||this.fontMetrics.fontSize||style.fontSize}ensureCharacters(chars){var charList=resolveCharacters(chars).filter(char=>!this._currentChars.includes(char)).filter((char,index,self)=>self.indexOf(char)===index);if(charList.length){this._currentChars=[...this._currentChars,...charList];let pageData,{canvas,context}=(pageData=-1===this._currentPageIndex?this._nextPage():this.pages[this._currentPageIndex]).canvasAndContext,textureSource=pageData.texture.source;var style=this._style;let currentX=this._currentX,currentY=this._currentY;var fontScale=this.baseRenderedFontSize/this.baseMeasurementFontSize,padding=this._padding*fontScale;let maxCharHeight=0,skipTexture=!1;var maxTextureWidth=canvas.width/this.resolution,maxTextureHeight=canvas.height/this.resolution;for(let i=0;i<charList.length;i++){var pageData2,char=charList[i],metrics=CanvasTextMetrics.measureText(char,style,canvas,!1),width=(metrics.lineHeight=metrics.height,metrics.width*fontScale),paddedWidth=Math.ceil(("italic"===style.fontStyle?2:1)*width)+2*padding,paddedHeight=metrics.height*fontScale+2*padding,width=(skipTexture=!1,"\n"!==char&&"\r"!==char&&"\t"!==char&&" "!==char&&(skipTexture=!0,maxCharHeight=Math.ceil(Math.max(paddedHeight,maxCharHeight))),currentX+paddedWidth>maxTextureWidth&&(currentY+=maxCharHeight,maxCharHeight=paddedHeight,currentX=0,currentY+maxCharHeight>maxTextureHeight)&&(textureSource.update(),pageData2=this._nextPage(),canvas=pageData2.canvasAndContext.canvas,context=pageData2.canvasAndContext.context,textureSource=pageData2.texture.source,currentY=0),width/fontScale-(null!=(width=null==(pageData2=style.dropShadow)?void 0:pageData2.distance)?width:0)-(null!=(width=null==(width=style._stroke)?void 0:width.width)?width:0));this.chars[char]={id:char.codePointAt(0),xOffset:-this._padding,yOffset:-this._padding,xAdvance:width,kerning:{}},skipTexture&&(this._drawGlyph(context,metrics,currentX+padding,currentY+padding,fontScale,style),width=textureSource.width*fontScale,metrics=textureSource.height*fontScale,width=new Rectangle(currentX/width*textureSource.width,currentY/metrics*textureSource.height,paddedWidth/width*textureSource.width,paddedHeight/metrics*textureSource.height),this.chars[char].texture=new Texture({source:textureSource,frame:width}),currentX+=Math.ceil(paddedWidth))}textureSource.update(),this._currentX=currentX,this._currentY=currentY,this._skipKerning&&this._applyKerning(charList,context)}}get pageTextures(){return deprecation(v8_0_0,"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead."),this.pages}_applyKerning(newChars,context){var measureCache=this._measureCache;for(let i=0;i<newChars.length;i++){var first=newChars[i];for(let j=0;j<this._currentChars.length;j++){var second=this._currentChars[j],c1=measureCache[first]||(measureCache[first]=context.measureText(first).width),c2=measureCache[second]||(measureCache[second]=context.measureText(second).width),amount=context.measureText(first+second).width-(c1+c2);amount&&(this.chars[first].kerning[second]=amount),(amount=context.measureText(first+second).width-(c1+c2))&&(this.chars[second].kerning[first]=amount)}}}_nextPage(){this._currentPageIndex++;var textureResolution=this.resolution,canvasAndContext=CanvasPool.getOptimalCanvasAndContext(this._textureSize,this._textureSize,textureResolution),textureResolution=(this._setupContext(canvasAndContext.context,this._style,textureResolution),textureResolution*(this.baseRenderedFontSize/this.baseMeasurementFontSize)),canvasAndContext={canvasAndContext:canvasAndContext,texture:new Texture({source:new ImageSource({resource:canvasAndContext.canvas,resolution:textureResolution,alphaMode:"premultiply-alpha-on-upload",autoGenerateMipmaps:this._mipmap})})};return this.pages[this._currentPageIndex]=canvasAndContext}_setupContext(context,style,resolution){style.fontSize=this.baseRenderedFontSize,context.scale(resolution,resolution),context.font=fontStringFromTextStyle(style),style.fontSize=this.baseMeasurementFontSize,context.textBaseline=style.textBaseline;var stroke=style._stroke,_a=null!=(_a=null==stroke?void 0:stroke.width)?_a:0;stroke&&(context.lineWidth=_a,context.lineJoin=stroke.join,context.miterLimit=stroke.miterLimit,context.strokeStyle=getCanvasFillStyle(stroke,context)),style._fill&&(context.fillStyle=getCanvasFillStyle(style._fill,context)),style.dropShadow?(_a=style.dropShadow,stroke=Color.shared.setValue(_a.color).toArray(),style=_a.blur*resolution,resolution=_a.distance*resolution,context.shadowColor=`rgba(${255*stroke[0]},${255*stroke[1]},${255*stroke[2]},${_a.alpha})`,context.shadowBlur=style,context.shadowOffsetX=Math.cos(_a.angle)*resolution,context.shadowOffsetY=Math.sin(_a.angle)*resolution):(context.shadowColor="black",context.shadowBlur=0,context.shadowOffsetX=0,context.shadowOffsetY=0)}_drawGlyph(context,metrics,x,y,fontScale,style){var char=metrics.text,fontProperties=metrics.fontProperties,stroke=style._stroke,x=x+(stroke=(null!=(stroke=null==stroke?void 0:stroke.width)?stroke:0)*fontScale)/2,y=y-stroke/2,fontProperties=fontProperties.descent*fontScale,metrics=metrics.lineHeight*fontScale;style.stroke&&stroke&&context.strokeText(char,x,y+metrics-fontProperties),style._fill&&context.fillText(char,x,y+metrics-fontProperties)}destroy(){super.destroy();for(let i=0;i<this.pages.length;i++){var{canvasAndContext,texture}=this.pages[i];CanvasPool.returnCanvasAndContext(canvasAndContext),texture.destroy(!0)}this.pages=null}};_DynamicBitmapFont.defaultOptions={textureSize:512,style:new TextStyle,mipmap:!0};let DynamicBitmapFont=_DynamicBitmapFont;function getBitmapTextLayout(chars,style,font,trimEnd){const layoutData={width:0,height:0,offsetY:0,scale:style.fontSize/font.baseMeasurementFontSize,lines:[{width:0,charPositions:[],spaceWidth:0,spacesIndex:[],chars:[]}]};layoutData.offsetY=font.baseLineOffset;let currentLine=layoutData.lines[0],previousChar=null,firstWord=!0;var currentWord={spaceWord:!1,width:0,start:0,index:0,positions:[],chars:[]},nextLine=()=>{let index=currentLine.chars.length-1;if(trimEnd){let lastChar=currentLine.chars[index];for(;" "===lastChar;)currentLine.width-=font.chars[lastChar].xAdvance,lastChar=currentLine.chars[--index]}layoutData.width=Math.max(layoutData.width,currentLine.width),currentLine={width:0,charPositions:[],chars:[],spaceWidth:0,spacesIndex:[]},firstWord=!0,layoutData.lines.push(currentLine),layoutData.height+=font.lineHeight},scale=font.baseMeasurementFontSize/style.fontSize,adjustedLetterSpacing=style.letterSpacing*scale,adjustedWordWrapWidth=style.wordWrapWidth*scale;for(let i=0;i<chars.length+1;i++){let char;var isEnd=i===chars.length,charData=(isEnd||(char=chars[i]),font.chars[char]||font.chars[" "]);if(/(?:\s)/.test(char)||"\r"===char||"\n"===char||isEnd){!firstWord&&style.wordWrap&&currentLine.width+currentWord.width-adjustedLetterSpacing>adjustedWordWrapWidth?nextLine():currentWord.start=currentLine.width;var word=currentWord,start=currentLine.width;for(let j=0;j<currentWord.index;j++){var position=word.positions[j];currentLine.chars.push(word.chars[j]),currentLine.charPositions.push(position+start)}currentLine.width+=word.width,firstWord=!1,currentWord.width=0,currentWord.index=0,currentWord.chars.length=0,isEnd||currentLine.charPositions.push(0),"\r"===char||"\n"===char?0!==currentLine.width&&nextLine():isEnd||(isEnd=charData.xAdvance+(charData.kerning[previousChar]||0)+adjustedLetterSpacing,currentLine.width+=isEnd,currentLine.spaceWidth=isEnd,currentLine.spacesIndex.push(currentLine.charPositions.length),currentLine.chars.push(char))}else isEnd=charData.kerning[previousChar]||0,charData=charData.xAdvance+isEnd+adjustedLetterSpacing,currentWord.positions[currentWord.index++]=currentWord.width+isEnd,currentWord.chars.push(char),currentWord.width+=charData;previousChar=char}if(nextLine(),"center"===style.align){var measurementData=layoutData;for(let i=0;i<measurementData.lines.length;i++){var line=measurementData.lines[i],offset=measurementData.width/2-line.width/2;for(let j=0;j<line.charPositions.length;j++)line.charPositions[j]+=offset}}else"right"===style.align?function(measurementData){for(let i=0;i<measurementData.lines.length;i++){var line=measurementData.lines[i],offset=measurementData.width-line.width;for(let j=0;j<line.charPositions.length;j++)line.charPositions[j]+=offset}}(layoutData):"justify"===style.align&&function(measurementData){var width=measurementData.width;for(let i=0;i<measurementData.lines.length;i++){var line=measurementData.lines[i];let indy=0,spaceIndex=line.spacesIndex[indy++],offset=0;var totalSpaces=line.spacesIndex.length,spaceWidth=(width-line.width)/totalSpaces;for(let j=0;j<line.charPositions.length;j++)j===spaceIndex&&(spaceIndex=line.spacesIndex[indy++],offset+=spaceWidth),line.charPositions[j]+=offset}}(layoutData);return layoutData}var __defProp$P=Object.defineProperty,__getOwnPropSymbols$P=Object.getOwnPropertySymbols,__hasOwnProp$P=Object.prototype.hasOwnProperty,__propIsEnum$P=Object.prototype.propertyIsEnumerable,__defNormalProp$P=(obj,key,value)=>key in obj?__defProp$P(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$P=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$P.call(b,prop)&&__defNormalProp$P(a,prop,b[prop]);if(__getOwnPropSymbols$P)for(var prop of __getOwnPropSymbols$P(b))__propIsEnum$P.call(b,prop)&&__defNormalProp$P(a,prop,b[prop]);return a};let fontCount=0;const BitmapFontManager=new class{constructor(){this.ALPHA=[["a","z"],["A","Z"]," "],this.NUMERIC=[["0","9"]],this.ALPHANUMERIC=[["a","z"],["A","Z"],["0","9"]," "],this.ASCII=[[" ","~"]],this.defaultOptions={chars:this.ALPHANUMERIC,resolution:1,padding:4,skipKerning:!1}}getFont(text,style){var _a;let fontFamilyKey=style.fontFamily+"-bitmap",overrideFill=!0;if(style._fill.fill&&!style._stroke)fontFamilyKey+=style._fill.fill.styleKey,overrideFill=!1;else if(style._stroke||style.dropShadow){let key=style.styleKey;key=key.substring(0,key.lastIndexOf("-")),fontFamilyKey=key+"-bitmap",overrideFill=!1}return Cache.has(fontFamilyKey)||(style=new DynamicBitmapFont(__spreadValues$P({style:style,overrideFill:overrideFill,overrideSize:!0},this.defaultOptions)),50<++fontCount&&warn("BitmapText",`You have dynamically created ${fontCount} bitmap fonts, this can be inefficient. Try pre installing your font styles using \`BitmapFont.install({name:"style1", style})\``),style.once("destroy",()=>{fontCount--,Cache.remove(fontFamilyKey)}),Cache.set(fontFamilyKey,style)),null!=(_a=(style=Cache.get(fontFamilyKey)).ensureCharacters)&&_a.call(style,text),style}getLayout(text,style,trimEnd=!0){var bitmapFont=this.getFont(text,style);return getBitmapTextLayout([...text],style,bitmapFont,trimEnd)}measureText(text,style,trimEnd=!0){return this.getLayout(text,style,trimEnd)}install(...args){var _a;let options=args[0];"string"==typeof options&&(options={name:options,style:args[1],chars:null==(_a=args[2])?void 0:_a.chars,resolution:null==(_a=args[2])?void 0:_a.resolution,padding:null==(_a=args[2])?void 0:_a.padding,skipKerning:null==(_a=args[2])?void 0:_a.skipKerning},deprecation(v8_0_0,"BitmapFontManager.install(name, style, options) is deprecated, use BitmapFontManager.install({name, style, ...options})"));const name=null==options?void 0:options.name;if(name)return args=null!==(_a=(args=(options=__spreadValues$P(__spreadValues$P({},this.defaultOptions),options)).style)instanceof TextStyle?args:new TextStyle(args))._fill.fill&&void 0!==_a._fill.fill,_a=new DynamicBitmapFont({style:_a,overrideFill:args,skipKerning:options.skipKerning,padding:options.padding,resolution:options.resolution,overrideSize:!1}),args=resolveCharacters(options.chars),_a.ensureCharacters(args.join("")),Cache.set(name+"-bitmap",_a),_a.once("destroy",()=>Cache.remove(name+"-bitmap")),_a;throw new Error("[BitmapFontManager] Property `name` is required.")}uninstall(name){name+="-bitmap",(name=Cache.get(name))&&name.destroy()}};class BitmapTextPipe{constructor(renderer){this._gpuBitmapText={},this._destroyRenderableBound=this.destroyRenderable.bind(this),this._renderer=renderer,this._renderer.renderableGC.addManagedHash(this,"_gpuBitmapText")}validateRenderable(bitmapText){var graphicsRenderable=this._getGpuBitmapText(bitmapText);return bitmapText._didTextUpdate&&(bitmapText._didTextUpdate=!1,this._updateContext(bitmapText,graphicsRenderable)),this._renderer.renderPipes.graphics.validateRenderable(graphicsRenderable)}addRenderable(bitmapText,instructionSet){var graphicsRenderable=this._getGpuBitmapText(bitmapText);syncWithProxy(bitmapText,graphicsRenderable),bitmapText._didTextUpdate&&(bitmapText._didTextUpdate=!1,this._updateContext(bitmapText,graphicsRenderable)),this._renderer.renderPipes.graphics.addRenderable(graphicsRenderable,instructionSet),graphicsRenderable.context.customShader&&this._updateDistanceField(bitmapText)}destroyRenderable(bitmapText){bitmapText.off("destroyed",this._destroyRenderableBound),this._destroyRenderableByUid(bitmapText.uid)}_destroyRenderableByUid(renderableUid){var context=this._gpuBitmapText[renderableUid].context;context.customShader&&(BigPool.return(context.customShader),context.customShader=null),BigPool.return(this._gpuBitmapText[renderableUid]),this._gpuBitmapText[renderableUid]=null}updateRenderable(bitmapText){var graphicsRenderable=this._getGpuBitmapText(bitmapText);syncWithProxy(bitmapText,graphicsRenderable),this._renderer.renderPipes.graphics.updateRenderable(graphicsRenderable),graphicsRenderable.context.customShader&&this._updateDistanceField(bitmapText)}_updateContext(bitmapText,proxyGraphics){var context=proxyGraphics.context,bitmapFont=BitmapFontManager.getFont(bitmapText.text,bitmapText._style),chars=(context.clear(),"none"===bitmapFont.distanceField.type||context.customShader||(context.customShader=BigPool.get(SdfShader)),Array.from(bitmapText.text)),proxyGraphics=bitmapText._style;let currentY=bitmapFont.baseLineOffset;var bitmapTextLayout=getBitmapTextLayout(chars,proxyGraphics,bitmapFont,!0);let index=0;var padding=proxyGraphics.padding,scale=bitmapTextLayout.scale;let tx=bitmapTextLayout.width,ty=bitmapTextLayout.height+bitmapTextLayout.offsetY;proxyGraphics._stroke&&(tx+=proxyGraphics._stroke.width/scale,ty+=proxyGraphics._stroke.width/scale),context.translate(-bitmapText._anchor._x*tx-padding,-bitmapText._anchor._y*ty-padding).scale(scale,scale);var tint=bitmapFont.applyFillAsTint?proxyGraphics._fill.color:16777215;for(let i=0;i<bitmapTextLayout.lines.length;i++){var line=bitmapTextLayout.lines[i];for(let j=0;j<line.charPositions.length;j++){var char=chars[index++];null!=(char=bitmapFont.chars[char])&&char.texture&&context.texture(char.texture,tint||"black",Math.round(line.charPositions[j]+char.xOffset),Math.round(currentY+char.yOffset))}currentY+=bitmapFont.lineHeight}}_getGpuBitmapText(bitmapText){return this._gpuBitmapText[bitmapText.uid]||this.initGpuText(bitmapText)}initGpuText(bitmapText){var proxyRenderable=BigPool.get(Graphics);return this._gpuBitmapText[bitmapText.uid]=proxyRenderable,this._updateContext(bitmapText,proxyRenderable),bitmapText.on("destroyed",this._destroyRenderableBound),this._gpuBitmapText[bitmapText.uid]}_updateDistanceField(bitmapText){var context=this._getGpuBitmapText(bitmapText).context,fontFamily=bitmapText._style.fontFamily,fontFamily=Cache.get(fontFamily+"-bitmap"),{a,b,c,d}=bitmapText.groupTransform,a=Math.sqrt(a*a+b*b),b=Math.sqrt(c*c+d*d),c=(Math.abs(a)+Math.abs(b))/2,d=fontFamily.baseRenderedFontSize/bitmapText._style.fontSize,a=c*fontFamily.distanceField.range*(1/d);context.customShader.resources.localUniforms.uniforms.uDistance=a}destroy(){for(const uid in this._gpuBitmapText)this._destroyRenderableByUid(uid);this._gpuBitmapText=null,this._renderer=null}}function syncWithProxy(container,proxy){proxy.groupTransform=container.groupTransform,proxy.groupColorAlpha=container.groupColorAlpha,proxy.groupColor=container.groupColor,proxy.groupBlendMode=container.groupBlendMode,proxy.globalDisplayStatus=container.globalDisplayStatus,proxy.groupTransform=container.groupTransform,proxy.localDisplayStatus=container.localDisplayStatus,proxy.groupAlpha=container.groupAlpha,proxy._roundPixels=container._roundPixels}BitmapTextPipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"bitmapText"},extensions.add(BitmapTextPipe);class HTMLTextPipe{constructor(renderer){this._gpuText=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this._renderer=renderer,this._renderer.runners.resolutionChange.add(this),this._renderer.renderableGC.addManagedHash(this,"_gpuText")}resolutionChange(){for(const i in this._gpuText){var gpuText=this._gpuText[i];gpuText&&(gpuText=gpuText.batchableSprite.renderable)._autoResolution&&(gpuText._resolution=this._renderer.resolution,gpuText.onViewUpdate())}}validateRenderable(htmlText){var gpuText=this._getGpuText(htmlText),htmlText=htmlText._getKey();return gpuText.textureNeedsUploading?!(gpuText.textureNeedsUploading=!1):gpuText.currentKey!==htmlText}addRenderable(htmlText,instructionSet){var batchableSprite=this._getGpuText(htmlText).batchableSprite;htmlText._didTextUpdate&&this._updateText(htmlText),this._renderer.renderPipes.batch.addToBatch(batchableSprite,instructionSet)}updateRenderable(htmlText){var batchableSprite=this._getGpuText(htmlText).batchableSprite;htmlText._didTextUpdate&&this._updateText(htmlText),batchableSprite._batcher.updateElement(batchableSprite)}destroyRenderable(htmlText){htmlText.off("destroyed",this._destroyRenderableBound),this._destroyRenderableById(htmlText.uid)}_destroyRenderableById(htmlTextUid){var gpuText=this._gpuText[htmlTextUid];this._renderer.htmlText.decreaseReferenceCount(gpuText.currentKey),BigPool.return(gpuText.batchableSprite),this._gpuText[htmlTextUid]=null}_updateText(htmlText){var newKey=htmlText._getKey(),gpuText=this._getGpuText(htmlText),batchableSprite=gpuText.batchableSprite;gpuText.currentKey!==newKey&&this._updateGpuText(htmlText).catch(e=>{console.error(e)}),htmlText._didTextUpdate=!1,updateTextBounds(batchableSprite,htmlText)}async _updateGpuText(htmlText){htmlText._didTextUpdate=!1;var newKey,batchableSprite,gpuText=this._getGpuText(htmlText);gpuText.generatingTexture||(newKey=htmlText._getKey(),this._renderer.htmlText.decreaseReferenceCount(gpuText.currentKey),gpuText.generatingTexture=!0,gpuText.currentKey=newKey,newKey=null!=(newKey=htmlText.resolution)?newKey:this._renderer.resolution,newKey=await this._renderer.htmlText.getManagedTexture(htmlText.text,newKey,htmlText._style,htmlText._getKey()),(batchableSprite=gpuText.batchableSprite).texture=gpuText.texture=newKey,gpuText.generatingTexture=!1,gpuText.textureNeedsUploading=!0,htmlText.onViewUpdate(),updateTextBounds(batchableSprite,htmlText))}_getGpuText(htmlText){return this._gpuText[htmlText.uid]||this.initGpuText(htmlText)}initGpuText(htmlText){var gpuTextData={texture:Texture.EMPTY,currentKey:"--",batchableSprite:BigPool.get(BatchableSprite),textureNeedsUploading:!1,generatingTexture:!1},batchableSprite=gpuTextData.batchableSprite;return batchableSprite.renderable=htmlText,batchableSprite.transform=htmlText.groupTransform,batchableSprite.texture=Texture.EMPTY,batchableSprite.bounds={minX:0,maxX:1,minY:0,maxY:0},batchableSprite.roundPixels=this._renderer._roundPixels|htmlText._roundPixels,htmlText._resolution=(htmlText._autoResolution?this._renderer:htmlText).resolution,this._gpuText[htmlText.uid]=gpuTextData,htmlText.on("destroyed",this._destroyRenderableBound),gpuTextData}destroy(){for(const i in this._gpuText)this._destroyRenderableById(i);this._gpuText=null,this._renderer=null}}function isSafari(){var userAgent=DOMAdapter.get().getNavigator().userAgent;return/^((?!chrome|android).)*safari/i.test(userAgent)}HTMLTextPipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"htmlText"};const nssvg="http://www.w3.org/2000/svg",nsxhtml="http://www.w3.org/1999/xhtml";class HTMLTextRenderData{constructor(){this.svgRoot=document.createElementNS(nssvg,"svg"),this.foreignObject=document.createElementNS(nssvg,"foreignObject"),this.domElement=document.createElementNS(nsxhtml,"div"),this.styleElement=document.createElementNS(nsxhtml,"style"),this.image=new Image;var{foreignObject,svgRoot,styleElement,domElement}=this;foreignObject.setAttribute("width","10000"),foreignObject.setAttribute("height","10000"),foreignObject.style.overflow="hidden",svgRoot.appendChild(foreignObject),foreignObject.appendChild(styleElement),foreignObject.appendChild(domElement)}}function textStyleToCSS(style){var stroke=style._stroke,fill=style._fill,fill=[`div { ${["color: "+Color.shared.setValue(fill.color).toHex(),`font-size: ${style.fontSize}px`,"font-family: "+style.fontFamily,"font-weight: "+style.fontWeight,"font-style: "+style.fontStyle,"font-variant: "+style.fontVariant,`letter-spacing: ${style.letterSpacing}px`,"text-align: "+style.align,`padding: ${style.padding}px`,"white-space: "+("pre"===style.whiteSpace&&style.wordWrap?"pre-wrap":style.whiteSpace),...style.lineHeight?[`line-height: ${style.lineHeight}px`]:[],...style.wordWrap?["word-wrap: "+(style.breakWords?"break-all":"break-word"),`max-width: ${style.wordWrapWidth}px`]:[],...stroke?[strokeToCSS(stroke)]:[],...style.dropShadow?[dropShadowToCSS(style.dropShadow)]:[],...style.cssOverrides].join(";")} }`],tagStyles=style.tagStyles,out=fill;for(const i in tagStyles){var tagStyle=tagStyles[i],cssTagStyle=[];for(const j in tagStyle)transform[j]?cssTagStyle.push(transform[j](tagStyle[j])):templates[j]&&cssTagStyle.push(templates[j].replace("{{VALUE}}",tagStyle[j]));out.push(`${i} { ${cssTagStyle.join(";")} }`)}return fill.join(" ")}function dropShadowToCSS(dropShadowStyle){var color=Color.shared.setValue(dropShadowStyle.color).setAlpha(dropShadowStyle.alpha).toHexa(),position=Math.round(Math.cos(dropShadowStyle.angle)*dropShadowStyle.distance)+`px ${Math.round(Math.sin(dropShadowStyle.angle)*dropShadowStyle.distance)}px`;return 0<dropShadowStyle.blur?`text-shadow: ${position} ${dropShadowStyle.blur}px `+color:`text-shadow: ${position} `+color}function strokeToCSS(stroke){return[`-webkit-text-stroke-width: ${stroke.width}px`,"-webkit-text-stroke-color: "+Color.shared.setValue(stroke.color).toHex(),`text-stroke-width: ${stroke.width}px`,"text-stroke-color: "+Color.shared.setValue(stroke.color).toHex(),"paint-order: stroke"].join(";")}const templates={fontSize:"font-size: {{VALUE}}px",fontFamily:"font-family: {{VALUE}}",fontWeight:"font-weight: {{VALUE}}",fontStyle:"font-style: {{VALUE}}",fontVariant:"font-variant: {{VALUE}}",letterSpacing:"letter-spacing: {{VALUE}}px",align:"text-align: {{VALUE}}",padding:"padding: {{VALUE}}px",whiteSpace:"white-space: {{VALUE}}",lineHeight:"line-height: {{VALUE}}px",wordWrapWidth:"max-width: {{VALUE}}px"},transform={fill:value=>"color: "+Color.shared.setValue(value).toHex(),breakWords:value=>"word-wrap: "+(value?"break-all":"break-word"),stroke:strokeToCSS,dropShadow:dropShadowToCSS};var __defProp$O=Object.defineProperty,__getOwnPropSymbols$O=Object.getOwnPropertySymbols,__hasOwnProp$O=Object.prototype.hasOwnProperty,__propIsEnum$O=Object.prototype.propertyIsEnumerable,__defNormalProp$O=(obj,key,value)=>key in obj?__defProp$O(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class HTMLTextStyle extends TextStyle{constructor(options={}){super(options),this._cssOverrides=[],null==this.cssOverrides&&(this.cssOverrides=options.cssOverrides),this.tagStyles=null!=(options=options.tagStyles)?options:{}}set cssOverrides(value){this._cssOverrides=value instanceof Array?value:[value],this.update()}get cssOverrides(){return this._cssOverrides}_generateKey(){return this._styleKey=generateTextStyleKey(this)+this._cssOverrides.join("-"),this._styleKey}update(){this._cssStyle=null,super.update()}clone(){return new HTMLTextStyle({align:this.align,breakWords:this.breakWords,dropShadow:this.dropShadow?((a,b)=>{for(var prop in b=b||{})__hasOwnProp$O.call(b,prop)&&__defNormalProp$O(a,prop,b[prop]);if(__getOwnPropSymbols$O)for(var prop of __getOwnPropSymbols$O(b))__propIsEnum$O.call(b,prop)&&__defNormalProp$O(a,prop,b[prop]);return a})({},this.dropShadow):null,fill:this._fill,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth,cssOverrides:this.cssOverrides})}get cssStyle(){return this._cssStyle||(this._cssStyle=textStyleToCSS(this)),this._cssStyle}addOverride(...value){0<(value=value.filter(v=>!this.cssOverrides.includes(v))).length&&(this.cssOverrides.push(...value),this.update())}removeOverride(...value){const toRemove=value.filter(v=>this.cssOverrides.includes(v));0<toRemove.length&&(this.cssOverrides=this.cssOverrides.filter(v=>!toRemove.includes(v)),this.update())}set fill(value){"string"!=typeof value&&"number"!=typeof value&&warn("[HTMLTextStyle] only color fill is not supported by HTMLText"),super.fill=value}set stroke(value){value&&"string"!=typeof value&&"number"!=typeof value&&warn("[HTMLTextStyle] only color stroke is not supported by HTMLText"),super.stroke=value}}function extractFontFamilies(text,style){var fontFamily=style.fontFamily;const fontFamilies=[],dedupe={};function addFontFamily(fontFamily2){dedupe[fontFamily2]||(fontFamilies.push(fontFamily2),dedupe[fontFamily2]=!0)}if(text=text.match(/font-family:([^;"\s]+)/g),Array.isArray(fontFamily))for(let i=0;i<fontFamily.length;i++)addFontFamily(fontFamily[i]);else addFontFamily(fontFamily);text&&text.forEach(match=>{addFontFamily(match.split(":")[1].trim())});for(const i in style.tagStyles)addFontFamily(style.tagStyles[i].fontFamily);return fontFamilies}async function loadFontAsBase64(url){const blob=await(await DOMAdapter.get().fetch(url)).blob(),reader=new FileReader;return new Promise((resolve,reject)=>{reader.onloadend=()=>resolve(reader.result),reader.onerror=reject,reader.readAsDataURL(blob)})}async function loadFontCSS(style,url){return url=await loadFontAsBase64(url),`@font-face {
font-family: "${style.fontFamily}";
src: url('${url}');
font-weight: ${style.fontWeight};
font-style: ${style.fontStyle};
}`}const FontStylePromiseCache=new Map;async function getFontCss(fontFamilies,style,defaultOptions){return fontFamilies=fontFamilies.filter(fontFamily=>Cache.has(fontFamily+"-and-url")).map((fontFamily,i)=>{var url;return FontStylePromiseCache.has(fontFamily)||(url=Cache.get(fontFamily+"-and-url").url,0===i?FontStylePromiseCache.set(fontFamily,loadFontCSS({fontWeight:style.fontWeight,fontStyle:style.fontStyle,fontFamily:fontFamily},url)):FontStylePromiseCache.set(fontFamily,loadFontCSS({fontWeight:defaultOptions.fontWeight,fontStyle:defaultOptions.fontStyle,fontFamily:fontFamily},url))),FontStylePromiseCache.get(fontFamily)}),(await Promise.all(fontFamilies)).join("\n")}function getSVGUrl(text,style,resolution,fontCSS,htmlTextData){var{domElement,styleElement,svgRoot}=htmlTextData,{width:style,height:text}=(domElement.innerHTML=`<style>${style.cssStyle}</style><div style='padding:0;'>${text}</div>`,domElement.setAttribute("style",`transform: scale(${resolution});transform-origin: top left; display: inline-block`),styleElement.textContent=fontCSS,htmlTextData.image);return svgRoot.setAttribute("width",style.toString()),svgRoot.setAttribute("height",text.toString()),(new XMLSerializer).serializeToString(svgRoot)}function getTemporaryCanvasFromImage(image,resolution){var context=(resolution=CanvasPool.getOptimalCanvasAndContext(image.width,image.height,resolution)).context;return context.clearRect(0,0,image.width,image.height),context.drawImage(image,0,0),resolution}function loadSVGImage(image,url,delay){return new Promise(async resolve=>{delay&&await new Promise(resolve2=>setTimeout(resolve2,100)),image.onload=()=>{resolve()},image.src="data:image/svg+xml;charset=utf8,"+encodeURIComponent(url),image.crossOrigin="anonymous"})}let tempHTMLTextRenderData;function measureHtmlText(text,style,fontStyleCSS,htmlTextRenderData){var{domElement:htmlTextRenderData,styleElement,svgRoot}=htmlTextRenderData=htmlTextRenderData||(tempHTMLTextRenderData=tempHTMLTextRenderData||new HTMLTextRenderData),text=(htmlTextRenderData.innerHTML=`<style>${style.cssStyle};</style><div style='padding:0'>${text}</div>`,htmlTextRenderData.setAttribute("style","transform-origin: top left; display: inline-block"),fontStyleCSS&&(styleElement.textContent=fontStyleCSS),document.body.appendChild(svgRoot),htmlTextRenderData.getBoundingClientRect()),styleElement=(svgRoot.remove(),2*style.padding);return{width:text.width-styleElement,height:text.height-styleElement}}class HTMLTextSystem{constructor(renderer){this._activeTextures={},this._renderer=renderer,this._createCanvas=renderer.type===RendererType.WEBGPU}getTexture(options){return this._buildTexturePromise(options.text,options.resolution,options.style)}getManagedTexture(text,resolution,style,textKey){return this._activeTextures[textKey]?(this._increaseReferenceCount(textKey),this._activeTextures[textKey].promise):(text=this._buildTexturePromise(text,resolution,style).then(texture=>this._activeTextures[textKey].texture=texture),this._activeTextures[textKey]={texture:null,promise:text,usageCount:1},text)}async _buildTexturePromise(text,resolution,style){var htmlTextData=BigPool.get(HTMLTextRenderData),fontFamilies=extractFontFamilies(text,style),fontCSS=await getFontCss(fontFamilies,style,HTMLTextStyle.defaultTextStyle),measured=measureHtmlText(text,style,fontCSS,htmlTextData),width=Math.ceil(Math.ceil(Math.max(1,measured.width)+2*style.padding)*resolution),measured=Math.ceil(Math.ceil(Math.max(1,measured.height)+2*style.padding)*resolution),image=htmlTextData.image,width=(image.width=2+(0|width),image.height=2+(0|measured),getSVGUrl(text,style,resolution,fontCSS,htmlTextData)),measured=(await loadSVGImage(image,width,isSafari()&&0<fontFamilies.length),image);return text=getPo2TextureFromSource((style=this._createCanvas?getTemporaryCanvasFromImage(image,resolution):void 0)?style.canvas:measured,image.width-2,image.height-2,resolution),this._createCanvas&&(this._renderer.texture.initSource(text.source),CanvasPool.returnCanvasAndContext(style)),BigPool.return(htmlTextData),text}_increaseReferenceCount(textKey){this._activeTextures[textKey].usageCount++}decreaseReferenceCount(textKey){const activeTexture=this._activeTextures[textKey];activeTexture&&(activeTexture.usageCount--,0===activeTexture.usageCount)&&(activeTexture.texture?this._cleanUp(activeTexture):activeTexture.promise.then(texture=>{activeTexture.texture=texture,this._cleanUp(activeTexture)}).catch(()=>{warn("HTMLTextSystem: Failed to clean texture")}),this._activeTextures[textKey]=null)}_cleanUp(activeTexture){TexturePool.returnTexture(activeTexture.texture),activeTexture.texture.source.resource=null,activeTexture.texture.source.uploadMethodId="unknown"}getReferenceCount(textKey){return this._activeTextures[textKey].usageCount}destroy(){this._activeTextures=null}}HTMLTextSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem,ExtensionType2.CanvasSystem],name:"htmlText"},HTMLTextSystem.defaultFontOptions={fontFamily:"Arial",fontStyle:"normal",fontWeight:"normal"},extensions.add(HTMLTextSystem),extensions.add(HTMLTextPipe);var __defProp$N=Object.defineProperty,__getOwnPropSymbols$N=Object.getOwnPropertySymbols,__hasOwnProp$N=Object.prototype.hasOwnProperty,__propIsEnum$N=Object.prototype.propertyIsEnumerable,__defNormalProp$N=(obj,key,value)=>key in obj?__defProp$N(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$N=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$N.call(b,prop)&&__defNormalProp$N(a,prop,b[prop]);if(__getOwnPropSymbols$N)for(var prop of __getOwnPropSymbols$N(b))__propIsEnum$N.call(b,prop)&&__defNormalProp$N(a,prop,b[prop]);return a};const _MeshGeometry=class _MeshGeometry extends Geometry{constructor(...args){let options=null!=(_a=args[0])?_a:{};options instanceof Float32Array&&(deprecation(v8_0_0,"use new MeshGeometry({ positions, uvs, indices }) instead"),options={positions:options,uvs:args[1],indices:args[2]});var _a=(options=__spreadValues$N(__spreadValues$N({},_MeshGeometry.defaultOptions),options)).positions||new Float32Array([0,0,1,0,1,1,0,1]),uvs=options.uvs||(options.positions?new Float32Array(_a.length):new Float32Array([0,0,1,0,1,1,0,1])),args=options.indices||new Uint32Array([0,1,2,0,2,3]),shrinkToFit=options.shrinkBuffersToFit;super({attributes:{aPosition:{buffer:new Buffer({data:_a,label:"attribute-mesh-positions",shrinkToFit:shrinkToFit,usage:BufferUsage.VERTEX|BufferUsage.COPY_DST}),format:"float32x2",stride:8,offset:0},aUV:{buffer:new Buffer({data:uvs,label:"attribute-mesh-uvs",shrinkToFit:shrinkToFit,usage:BufferUsage.VERTEX|BufferUsage.COPY_DST}),format:"float32x2",stride:8,offset:0}},indexBuffer:new Buffer({data:args,label:"index-mesh-buffer",shrinkToFit:shrinkToFit,usage:BufferUsage.INDEX|BufferUsage.COPY_DST}),topology:options.topology}),this.batchMode="auto"}get positions(){return this.attributes.aPosition.buffer.data}set positions(value){this.attributes.aPosition.buffer.data=value}get uvs(){return this.attributes.aUV.buffer.data}set uvs(value){this.attributes.aUV.buffer.data=value}get indices(){return this.indexBuffer.data}set indices(value){this.indexBuffer.data=value}};_MeshGeometry.defaultOptions={topology:"triangle-list",shrinkBuffersToFit:!1};let MeshGeometry=_MeshGeometry;var __defProp$M=Object.defineProperty,__defProps$l=Object.defineProperties,__getOwnPropDescs$l=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$M=Object.getOwnPropertySymbols,__hasOwnProp$M=Object.prototype.hasOwnProperty,__propIsEnum$M=Object.prototype.propertyIsEnumerable,__defNormalProp$M=(obj,key,value)=>key in obj?__defProp$M(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadProps$l=(a,b)=>__defProps$l(a,__getOwnPropDescs$l(b));const localUniformBit={name:"local-uniform-bit",vertex:{header:`
struct LocalUniforms {
uTransformMatrix:mat3x3<f32>,
uColor:vec4<f32>,
uRound:f32,
}
@group(1) @binding(0) var<uniform> localUniforms : LocalUniforms;
`,main:`
vColor *= localUniforms.uColor;
modelMatrix *= localUniforms.uTransformMatrix;
`,end:`
if(localUniforms.uRound == 1)
{
vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
}
`}},localUniformBitGroup2=__spreadProps$l((__spreadValues$M=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$M.call(b,prop)&&__defNormalProp$M(a,prop,b[prop]);if(__getOwnPropSymbols$M)for(var prop of __getOwnPropSymbols$M(b))__propIsEnum$M.call(b,prop)&&__defNormalProp$M(a,prop,b[prop]);return a})({},localUniformBit),{vertex:__spreadProps$l(__spreadValues$M({},localUniformBit.vertex),{header:localUniformBit.vertex.header.replace("group(1)","group(2)")})}),localUniformBitGl={name:"local-uniform-bit",vertex:{header:`
uniform mat3 uTransformMatrix;
uniform vec4 uColor;
uniform float uRound;
`,main:`
vColor *= uColor;
modelMatrix = uTransformMatrix;
`,end:`
if(uRound == 1.)
{
gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
}
`}},tilingBit={name:"tiling-bit",vertex:{header:`
struct TilingUniforms {
uMapCoord:mat3x3<f32>,
uClampFrame:vec4<f32>,
uClampOffset:vec2<f32>,
uTextureTransform:mat3x3<f32>,
uSizeAnchor:vec4<f32>
};
@group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms;
@group(2) @binding(1) var uTexture: texture_2d<f32>;
@group(2) @binding(2) var uSampler: sampler;
`,main:`
uv = (tilingUniforms.uTextureTransform * vec3(uv, 1.0)).xy;
position = (position - tilingUniforms.uSizeAnchor.zw) * tilingUniforms.uSizeAnchor.xy;
`},fragment:{header:`
struct TilingUniforms {
uMapCoord:mat3x3<f32>,
uClampFrame:vec4<f32>,
uClampOffset:vec2<f32>,
uTextureTransform:mat3x3<f32>,
uSizeAnchor:vec4<f32>
};
@group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms;
@group(2) @binding(1) var uTexture: texture_2d<f32>;
@group(2) @binding(2) var uSampler: sampler;
`,main:`
var coord = vUV + ceil(tilingUniforms.uClampOffset - vUV);
coord = (tilingUniforms.uMapCoord * vec3(coord, 1.0)).xy;
var unclamped = coord;
coord = clamp(coord, tilingUniforms.uClampFrame.xy, tilingUniforms.uClampFrame.zw);
var bias = 0.;
if(unclamped.x == coord.x && unclamped.y == coord.y)
{
bias = -32.;
}
outColor = textureSampleBias(uTexture, uSampler, coord, bias);
`}},tilingBitGl={name:"tiling-bit",vertex:{header:`
uniform mat3 uTextureTransform;
uniform vec4 uSizeAnchor;
`,main:`
uv = (uTextureTransform * vec3(aUV, 1.0)).xy;
position = (position - uSizeAnchor.zw) * uSizeAnchor.xy;
`},fragment:{header:`
uniform sampler2D uTexture;
uniform mat3 uMapCoord;
uniform vec4 uClampFrame;
uniform vec2 uClampOffset;
`,main:`
vec2 coord = vUV + ceil(uClampOffset - vUV);
coord = (uMapCoord * vec3(coord, 1.0)).xy;
vec2 unclamped = coord;
coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);
outColor = texture(uTexture, coord, unclamped == coord ? 0.0 : -32.0);// lod-bias very negative to force lod 0
`}};let gpuProgram,glProgram;class TilingSpriteShader extends Shader{constructor(){null!=gpuProgram?gpuProgram:gpuProgram=compileHighShaderGpuProgram({name:"tiling-sprite-shader",bits:[localUniformBit,tilingBit,roundPixelsBit]}),null!=glProgram?glProgram:glProgram=compileHighShaderGlProgram({name:"tiling-sprite-shader",bits:[localUniformBitGl,tilingBitGl,roundPixelsBitGl]});var tilingUniforms=new UniformGroup({uMapCoord:{value:new Matrix,type:"mat3x3<f32>"},uClampFrame:{value:new Float32Array([0,0,1,1]),type:"vec4<f32>"},uClampOffset:{value:new Float32Array([0,0]),type:"vec2<f32>"},uTextureTransform:{value:new Matrix,type:"mat3x3<f32>"},uSizeAnchor:{value:new Float32Array([100,100,.5,.5]),type:"vec4<f32>"}});super({glProgram:glProgram,gpuProgram:gpuProgram,resources:{localUniforms:new UniformGroup({uTransformMatrix:{value:new Matrix,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}}),tilingUniforms:tilingUniforms,uTexture:Texture.EMPTY.source,uSampler:Texture.EMPTY.source.style}})}updateUniforms(width,height,matrix,anchorX,anchorY,texture){var tilingUniforms=this.resources.tilingUniforms,textureWidth=texture.width,textureHeight=texture.height,textureMatrix=texture.textureMatrix,uTextureTransform=tilingUniforms.uniforms.uTextureTransform;uTextureTransform.set(matrix.a*textureWidth/width,matrix.b*textureWidth/height,matrix.c*textureHeight/width,matrix.d*textureHeight/height,matrix.tx/width,matrix.ty/height),uTextureTransform.invert(),tilingUniforms.uniforms.uMapCoord=textureMatrix.mapCoord,tilingUniforms.uniforms.uClampFrame=textureMatrix.uClampFrame,tilingUniforms.uniforms.uClampOffset=textureMatrix.uClampOffset,tilingUniforms.uniforms.uTextureTransform=uTextureTransform,tilingUniforms.uniforms.uSizeAnchor[0]=width,tilingUniforms.uniforms.uSizeAnchor[1]=height,tilingUniforms.uniforms.uSizeAnchor[2]=anchorX,tilingUniforms.uniforms.uSizeAnchor[3]=anchorY,texture&&(this.resources.uTexture=texture.source,this.resources.uSampler=texture.source.style)}}class QuadGeometry extends MeshGeometry{constructor(){super({positions:new Float32Array([0,0,1,0,1,1,0,1]),uvs:new Float32Array([0,0,1,0,1,1,0,1]),indices:new Uint32Array([0,1,2,0,2,3])})}}function setPositions(tilingSprite,positions){var anchorX=tilingSprite.anchor.x,anchorY=tilingSprite.anchor.y;positions[0]=-anchorX*tilingSprite.width,positions[1]=-anchorY*tilingSprite.height,positions[2]=(1-anchorX)*tilingSprite.width,positions[3]=-anchorY*tilingSprite.height,positions[4]=(1-anchorX)*tilingSprite.width,positions[5]=(1-anchorY)*tilingSprite.height,positions[6]=-anchorX*tilingSprite.width,positions[7]=(1-anchorY)*tilingSprite.height}function applyMatrix(array,stride,offset,matrix){let index=0;var size=array.length/(stride||2),a=matrix.a,b=matrix.b,c=matrix.c,d=matrix.d,tx=matrix.tx,ty=matrix.ty;for(offset*=stride;index<size;){var x=array[offset],y=array[offset+1];array[offset]=a*x+c*y+tx,array[offset+1]=b*x+d*y+ty,offset+=stride,index++}}function setUvs(tilingSprite,uvs){var width=(texture=tilingSprite.texture).frame.width,texture=texture.frame.height;let anchorX=0,anchorY=0;tilingSprite.applyAnchorToTexture&&(anchorX=tilingSprite.anchor.x,anchorY=tilingSprite.anchor.y),uvs[0]=uvs[6]=-anchorX,uvs[2]=uvs[4]=1-anchorX,uvs[1]=uvs[3]=-anchorY,uvs[5]=uvs[7]=1-anchorY;var textureMatrix=Matrix.shared;textureMatrix.copyFrom(tilingSprite._tileTransform.matrix),textureMatrix.tx/=tilingSprite.width,textureMatrix.ty/=tilingSprite.height,textureMatrix.invert(),textureMatrix.scale(tilingSprite.width/width,tilingSprite.height/texture),applyMatrix(uvs,2,0,textureMatrix)}const sharedQuad=new QuadGeometry;class TilingSpritePipe{constructor(renderer){this._state=State.default2d,this._tilingSpriteDataHash=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this._renderer=renderer,this._renderer.renderableGC.addManagedHash(this,"_tilingSpriteDataHash")}validateRenderable(renderable){var tilingSpriteData=this._getTilingSpriteData(renderable),couldBatch=tilingSpriteData.canBatch,canBatch=(this._updateCanBatch(renderable),tilingSpriteData.canBatch);return canBatch&&canBatch===couldBatch?!(tilingSpriteData=tilingSpriteData.batchableMesh)._batcher.checkAndUpdateTexture(tilingSpriteData,renderable.texture):couldBatch!==canBatch}addRenderable(tilingSprite,instructionSet){var batcher=this._renderer.renderPipes.batch,tilingSpriteData=(this._updateCanBatch(tilingSprite),this._getTilingSpriteData(tilingSprite)),{geometry,canBatch}=tilingSpriteData;canBatch?(tilingSpriteData.batchableMesh||(tilingSpriteData.batchableMesh=new BatchableMesh),canBatch=tilingSpriteData.batchableMesh,tilingSprite.didViewUpdate&&(this._updateBatchableMesh(tilingSprite),canBatch.geometry=geometry,canBatch.renderable=tilingSprite,canBatch.transform=tilingSprite.groupTransform,canBatch.setTexture(tilingSprite._texture)),canBatch.roundPixels=this._renderer._roundPixels|tilingSprite._roundPixels,batcher.addToBatch(canBatch,instructionSet)):(batcher.break(instructionSet),tilingSpriteData.shader||(tilingSpriteData.shader=new TilingSpriteShader),this.updateRenderable(tilingSprite),instructionSet.add(tilingSprite))}execute(tilingSprite){var shader=this._tilingSpriteDataHash[tilingSprite.uid].shader,localUniforms=(shader.groups[0]=this._renderer.globalUniforms.bindGroup,shader.resources.localUniforms.uniforms);localUniforms.uTransformMatrix=tilingSprite.groupTransform,localUniforms.uRound=this._renderer._roundPixels|tilingSprite._roundPixels,color32BitToUniform(tilingSprite.groupColorAlpha,localUniforms.uColor,0),this._state.blendMode=getAdjustedBlendModeBlend(tilingSprite.groupBlendMode,tilingSprite.texture._source),this._renderer.encoder.draw({geometry:sharedQuad,shader:shader,state:this._state})}updateRenderable(tilingSprite){var tilingSpriteData=this._getTilingSpriteData(tilingSprite),canBatch=tilingSpriteData.canBatch;canBatch?(canBatch=tilingSpriteData.batchableMesh,tilingSprite.didViewUpdate&&this._updateBatchableMesh(tilingSprite),canBatch._batcher.updateElement(canBatch)):tilingSprite.didViewUpdate&&(canBatch=tilingSpriteData.shader).updateUniforms(tilingSprite.width,tilingSprite.height,tilingSprite._tileTransform.matrix,tilingSprite.anchor.x,tilingSprite.anchor.y,tilingSprite.texture)}destroyRenderable(tilingSprite){var tilingSpriteData=this._getTilingSpriteData(tilingSprite);(tilingSpriteData.batchableMesh=null)!=(tilingSpriteData=tilingSpriteData.shader)&&tilingSpriteData.destroy(),this._tilingSpriteDataHash[tilingSprite.uid]=null,tilingSprite.off("destroyed",this._destroyRenderableBound)}_getTilingSpriteData(renderable){return this._tilingSpriteDataHash[renderable.uid]||this._initTilingSpriteData(renderable)}_initTilingSpriteData(tilingSprite){var geometry=new MeshGeometry({indices:sharedQuad.indices,positions:sharedQuad.positions.slice(),uvs:sharedQuad.uvs.slice()});return this._tilingSpriteDataHash[tilingSprite.uid]={canBatch:!0,renderable:tilingSprite,geometry:geometry},tilingSprite.on("destroyed",this._destroyRenderableBound),this._tilingSpriteDataHash[tilingSprite.uid]}_updateBatchableMesh(tilingSprite){var geometry=this._getTilingSpriteData(tilingSprite).geometry,style=tilingSprite.texture.source.style;"repeat"!==style.addressMode&&(style.addressMode="repeat",style.update()),setUvs(tilingSprite,geometry.uvs),setPositions(tilingSprite,geometry.positions)}destroy(){for(const i in this._tilingSpriteDataHash)this.destroyRenderable(this._tilingSpriteDataHash[i].renderable);this._tilingSpriteDataHash=null,this._renderer=null}_updateCanBatch(tilingSprite){var renderableData=this._getTilingSpriteData(tilingSprite),tilingSprite=tilingSprite.texture;let _nonPowOf2wrapping=!0;return this._renderer.type===RendererType.WEBGL&&(_nonPowOf2wrapping=this._renderer.context.supports.nonPowOf2wrapping),renderableData.canBatch=tilingSprite.textureMatrix.isSimple&&(_nonPowOf2wrapping||tilingSprite.source.isPowerOfTwo),renderableData.canBatch}}TilingSpritePipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"tilingSprite"},extensions.add(TilingSpritePipe);var __defProp$L=Object.defineProperty,__getOwnPropSymbols$L=Object.getOwnPropertySymbols,__hasOwnProp$L=Object.prototype.hasOwnProperty,__propIsEnum$L=Object.prototype.propertyIsEnumerable,__defNormalProp$L=(obj,key,value)=>key in obj?__defProp$L(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$L=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$L.call(b,prop)&&__defNormalProp$L(a,prop,b[prop]);if(__getOwnPropSymbols$L)for(var prop of __getOwnPropSymbols$L(b))__propIsEnum$L.call(b,prop)&&__defNormalProp$L(a,prop,b[prop]);return a};const _PlaneGeometry=class _PlaneGeometry extends MeshGeometry{constructor(...args){var _a;super({});let options=null!=(_a=args[0])?_a:{};"number"==typeof options&&(deprecation(v8_0_0,"PlaneGeometry constructor changed please use { width, height, verticesX, verticesY } instead"),options={width:options,height:args[1],verticesX:args[2],verticesY:args[3]}),this.build(options)}build(options){options=__spreadValues$L(__spreadValues$L({},_PlaneGeometry.defaultOptions),options),this.verticesX=null!=(_a=this.verticesX)?_a:options.verticesX,this.verticesY=null!=(_a=this.verticesY)?_a:options.verticesY,this.width=null!=(_a=this.width)?_a:options.width,this.height=null!=(_a=this.height)?_a:options.height;var _a,total=this.verticesX*this.verticesY,verts=[],uvs=[],indices=[],verticesX=this.verticesX-1,verticesY=this.verticesY-1,sizeX=this.width/verticesX,sizeY=this.height/verticesY;for(let i=0;i<total;i++){var x=i%this.verticesX,y=i/this.verticesX|0;verts.push(x*sizeX,y*sizeY),uvs.push(x/verticesX,y/verticesY)}var totalSub=verticesX*verticesY;for(let i=0;i<totalSub;i++){var xpos=i%verticesX,value=(ypos=i/verticesX|0)*this.verticesX+xpos,value2=ypos*this.verticesX+xpos+1,value3=(1+ypos)*this.verticesX+xpos,ypos=(1+ypos)*this.verticesX+xpos+1;indices.push(value,value2,value3,value2,ypos,value3)}this.buffers[0].data=new Float32Array(verts),this.buffers[1].data=new Float32Array(uvs),this.indexBuffer.data=new Uint32Array(indices),this.buffers[0].update(),this.buffers[1].update(),this.indexBuffer.update()}};_PlaneGeometry.defaultOptions={width:100,height:100,verticesX:10,verticesY:10};let PlaneGeometry=_PlaneGeometry;var __defProp$K=Object.defineProperty,__getOwnPropSymbols$K=Object.getOwnPropertySymbols,__hasOwnProp$K=Object.prototype.hasOwnProperty,__propIsEnum$K=Object.prototype.propertyIsEnumerable,__defNormalProp$K=(obj,key,value)=>key in obj?__defProp$K(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$K=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$K.call(b,prop)&&__defNormalProp$K(a,prop,b[prop]);if(__getOwnPropSymbols$K)for(var prop of __getOwnPropSymbols$K(b))__propIsEnum$K.call(b,prop)&&__defNormalProp$K(a,prop,b[prop]);return a};const _NineSliceGeometry=class _NineSliceGeometry extends PlaneGeometry{constructor(options={}){super({width:(options=__spreadValues$K(__spreadValues$K({},_NineSliceGeometry.defaultOptions),options)).width,height:options.height,verticesX:4,verticesY:4}),this.update(options)}update(options){var _a;this.width=null!=(_a=options.width)?_a:this.width,this.height=null!=(_a=options.height)?_a:this.height,this._originalWidth=null!=(_a=options.originalWidth)?_a:this._originalWidth,this._originalHeight=null!=(_a=options.originalHeight)?_a:this._originalHeight,this._leftWidth=null!=(_a=options.leftWidth)?_a:this._leftWidth,this._rightWidth=null!=(_a=options.rightWidth)?_a:this._rightWidth,this._topHeight=null!=(_a=options.topHeight)?_a:this._topHeight,this._bottomHeight=null!=(_a=options.bottomHeight)?_a:this._bottomHeight,this._anchorX=null==(_a=options.anchor)?void 0:_a.x,this._anchorY=null==(_a=options.anchor)?void 0:_a.y,this.updateUvs(),this.updatePositions()}updatePositions(){var p=this.positions,{width,height,_leftWidth,_rightWidth,_topHeight,_bottomHeight,_anchorX,_anchorY}=this,w=_leftWidth+_rightWidth,h=_topHeight+_bottomHeight,w=Math.min(w<width?1:width/w,h<height?1:height/h),h=_anchorX*width,_anchorX=_anchorY*height;p[0]=p[8]=p[16]=p[24]=-h,p[2]=p[10]=p[18]=p[26]=_leftWidth*w-h,p[4]=p[12]=p[20]=p[28]=width-_rightWidth*w-h,p[6]=p[14]=p[22]=p[30]=width-h,p[1]=p[3]=p[5]=p[7]=-_anchorX,p[9]=p[11]=p[13]=p[15]=_topHeight*w-_anchorX,p[17]=p[19]=p[21]=p[23]=height-_bottomHeight*w-_anchorX,p[25]=p[27]=p[29]=p[31]=height-_anchorX,this.getBuffer("aPosition").update()}updateUvs(){var uvs=this.uvs,_uvw=(uvs[0]=uvs[8]=uvs[16]=uvs[24]=0,uvs[1]=uvs[3]=uvs[5]=uvs[7]=0,uvs[6]=uvs[14]=uvs[22]=uvs[30]=1,(uvs[25]=uvs[27]=uvs[29]=uvs[31]=1)/this._originalWidth),_uvh=1/this._originalHeight;uvs[2]=uvs[10]=uvs[18]=uvs[26]=_uvw*this._leftWidth,uvs[9]=uvs[11]=uvs[13]=uvs[15]=_uvh*this._topHeight,uvs[4]=uvs[12]=uvs[20]=uvs[28]=1-_uvw*this._rightWidth,uvs[17]=uvs[19]=uvs[21]=uvs[23]=1-_uvh*this._bottomHeight,this.getBuffer("aUV").update()}};_NineSliceGeometry.defaultOptions={width:100,height:100,leftWidth:10,topHeight:10,rightWidth:10,bottomHeight:10,originalWidth:100,originalHeight:100};let NineSliceGeometry=_NineSliceGeometry;class NineSliceSpritePipe{constructor(renderer){this._gpuSpriteHash=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this._renderer=renderer,this._renderer.renderableGC.addManagedHash(this,"_gpuSpriteHash")}addRenderable(sprite,instructionSet){var gpuSprite=this._getGpuSprite(sprite);sprite.didViewUpdate&&this._updateBatchableSprite(sprite,gpuSprite),this._renderer.renderPipes.batch.addToBatch(gpuSprite,instructionSet)}updateRenderable(sprite){var gpuSprite=this._gpuSpriteHash[sprite.uid];sprite.didViewUpdate&&this._updateBatchableSprite(sprite,gpuSprite),gpuSprite._batcher.updateElement(gpuSprite)}validateRenderable(sprite){var gpuSprite=this._getGpuSprite(sprite);return!gpuSprite._batcher.checkAndUpdateTexture(gpuSprite,sprite._texture)}destroyRenderable(sprite){var batchableMesh=this._gpuSpriteHash[sprite.uid];BigPool.return(batchableMesh.geometry),BigPool.return(batchableMesh),this._gpuSpriteHash[sprite.uid]=null,sprite.off("destroyed",this._destroyRenderableBound)}_updateBatchableSprite(sprite,batchableSprite){batchableSprite.geometry.update(sprite),batchableSprite.setTexture(sprite._texture)}_getGpuSprite(sprite){return this._gpuSpriteHash[sprite.uid]||this._initGPUSprite(sprite)}_initGPUSprite(sprite){var batchableMesh=BigPool.get(BatchableMesh);return batchableMesh.geometry=BigPool.get(NineSliceGeometry),batchableMesh.renderable=sprite,batchableMesh.transform=sprite.groupTransform,batchableMesh.texture=sprite._texture,batchableMesh.roundPixels=this._renderer._roundPixels|sprite._roundPixels,this._gpuSpriteHash[sprite.uid]=batchableMesh,sprite.didViewUpdate||this._updateBatchableSprite(sprite,batchableMesh),sprite.on("destroyed",this._destroyRenderableBound),batchableMesh}destroy(){for(const i in this._gpuSpriteHash)this._gpuSpriteHash[i].geometry.destroy();this._gpuSpriteHash=null,this._renderer=null}}NineSliceSpritePipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"nineSliceSprite"},extensions.add(NineSliceSpritePipe);class FilterPipe{constructor(renderer){this._renderer=renderer}push(filterEffect,container,instructionSet){this._renderer.renderPipes.batch.break(instructionSet),instructionSet.add({renderPipeId:"filter",canBundle:!1,action:"pushFilter",container:container,filterEffect:filterEffect})}pop(_filterEffect,_container,instructionSet){this._renderer.renderPipes.batch.break(instructionSet),instructionSet.add({renderPipeId:"filter",action:"popFilter",canBundle:!1})}execute(instruction){"pushFilter"===instruction.action?this._renderer.filter.push(instruction):"popFilter"===instruction.action&&this._renderer.filter.pop()}destroy(){this._renderer=null}}function getGlobalRenderableBounds(renderables,bounds){bounds.clear();var tempMatrix=bounds.matrix;for(let i=0;i<renderables.length;i++){var renderable=renderables[i];renderable.globalDisplayStatus<7||(bounds.matrix=renderable.worldTransform,bounds.addBounds(renderable.bounds))}return bounds.matrix=tempMatrix,bounds}FilterPipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"filter"};const quadGeometry=new Geometry({attributes:{aPosition:{buffer:new Float32Array([0,0,1,0,1,1,0,1]),format:"float32x2",stride:8,offset:0}},indexBuffer:new Uint32Array([0,1,2,0,2,3])});class FilterSystem{constructor(renderer){this._filterStackIndex=0,this._filterStack=[],this._filterGlobalUniforms=new UniformGroup({uInputSize:{value:new Float32Array(4),type:"vec4<f32>"},uInputPixel:{value:new Float32Array(4),type:"vec4<f32>"},uInputClamp:{value:new Float32Array(4),type:"vec4<f32>"},uOutputFrame:{value:new Float32Array(4),type:"vec4<f32>"},uGlobalFrame:{value:new Float32Array(4),type:"vec4<f32>"},uOutputTexture:{value:new Float32Array(4),type:"vec4<f32>"}}),this._globalFilterBindGroup=new BindGroup({}),this.renderer=renderer}get activeBackTexture(){var _a;return null==(_a=this._activeFilterData)?void 0:_a.backTexture}push(instruction){var renderer=this.renderer,filters=instruction.filterEffect.filters,filterData=(this._filterStack[this._filterStackIndex]||(this._filterStack[this._filterStackIndex]=this._getFilterData()),this._filterStack[this._filterStackIndex]);if(this._filterStackIndex++,0===filters.length)filterData.skip=!0;else{var filterFrameTransform,rootResolution,bounds=filterData.bounds,colorTextureSource=(instruction.renderables?getGlobalRenderableBounds(instruction.renderables,bounds):instruction.filterEffect.filterArea?(bounds.clear(),bounds.addRect(instruction.filterEffect.filterArea),bounds.applyMatrix(instruction.container.worldTransform)):instruction.container.getFastGlobalBounds(!0,bounds),instruction.container&&(filterFrameTransform=(instruction.container.renderGroup||instruction.container.parentRenderGroup).cacheToLocalTransform)&&bounds.applyMatrix(filterFrameTransform),renderer.renderTarget.renderTarget.colorTexture.source);let resolution=1/0,padding=0,antialias=!0,blendRequired=!1,enabled=!1,clipToViewport=!0;for(let i=0;i<filters.length;i++){var filter=filters[i],isCompatible=(resolution=Math.min(resolution,"inherit"===filter.resolution?colorTextureSource._resolution:filter.resolution),padding+=filter.padding,"off"===filter.antialias?antialias=!1:"inherit"===filter.antialias&&(antialias=antialias&&colorTextureSource.antialias),filter.clipToViewport||(clipToViewport=!1),!!(filter.compatibleRenderers&renderer.type));if(!isCompatible){enabled=!1;break}if(filter.blendRequired&&null!=(isCompatible=null==(isCompatible=renderer.backBuffer)?void 0:isCompatible.useBackBuffer)&&!isCompatible){warn("Blend filter requires backBuffer on WebGL renderer to be enabled. Set `useBackBuffer: true` in the renderer options."),enabled=!1;break}enabled=filter.enabled||enabled,blendRequired=blendRequired||filter.blendRequired}enabled&&(clipToViewport&&(filterFrameTransform=renderer.renderTarget.rootViewPort,rootResolution=renderer.renderTarget.renderTarget.resolution,bounds.fitBounds(0,filterFrameTransform.width/rootResolution,0,filterFrameTransform.height/rootResolution)),bounds.scale(resolution).ceil().scale(1/resolution).pad(0|padding),bounds.isPositive)?(filterData.skip=!1,filterData.bounds=bounds,filterData.blendRequired=blendRequired,filterData.container=instruction.container,filterData.filterEffect=instruction.filterEffect,filterData.previousRenderSurface=renderer.renderTarget.renderSurface,filterData.inputTexture=TexturePool.getOptimalTexture(bounds.width,bounds.height,resolution,antialias),renderer.renderTarget.bind(filterData.inputTexture,!0),renderer.globalUniforms.push({offset:bounds})):filterData.skip=!0}}pop(){var renderer=this.renderer,filterData=(this._filterStackIndex--,this._filterStack[this._filterStackIndex]);if(!filterData.skip){var previousBounds,renderTarget,inputTexture=(this._activeFilterData=filterData).inputTexture,bounds=filterData.bounds;let backTexture=Texture.EMPTY;renderer.renderTarget.finishRenderPass(),filterData.blendRequired&&(previousBounds=0<this._filterStackIndex?this._filterStack[this._filterStackIndex-1].bounds:null,renderTarget=renderer.renderTarget.getRenderTarget(filterData.previousRenderSurface),backTexture=this.getBackTexture(renderTarget,bounds,previousBounds)),filterData.backTexture=backTexture;var filters=filterData.filterEffect.filters;if(this._globalFilterBindGroup.setResource(inputTexture.source.style,2),this._globalFilterBindGroup.setResource(backTexture.source,3),renderer.globalUniforms.pop(),1===filters.length)filters[0].apply(this,inputTexture,filterData.previousRenderSurface,!1),TexturePool.returnTexture(inputTexture);else{let flip=filterData.inputTexture,flop=TexturePool.getOptimalTexture(bounds.width,bounds.height,flip.source._resolution,!1),i=0;for(i=0;i<filters.length-1;++i){filters[i].apply(this,flip,flop,!0);var t=flip;flip=flop,flop=t}filters[i].apply(this,flip,filterData.previousRenderSurface,!1),TexturePool.returnTexture(flip),TexturePool.returnTexture(flop)}filterData.blendRequired&&TexturePool.returnTexture(backTexture)}}getBackTexture(lastRenderSurface,bounds,previousBounds){var backgroundResolution=lastRenderSurface.colorTexture.source._resolution,backTexture=TexturePool.getOptimalTexture(bounds.width,bounds.height,backgroundResolution,!1);let x=bounds.minX,y=bounds.minY;return previousBounds&&(x-=previousBounds.minX,y-=previousBounds.minY),x=Math.floor(x*backgroundResolution),y=Math.floor(y*backgroundResolution),previousBounds=Math.ceil(bounds.width*backgroundResolution),bounds=Math.ceil(bounds.height*backgroundResolution),this.renderer.renderTarget.copyToTexture(lastRenderSurface,backTexture,{x:x,y:y},{width:previousBounds,height:bounds},{x:0,y:0}),backTexture}applyFilter(filter,input,output,clear){var renderer=this.renderer,bounds=(filterData=this._filterStack[this._filterStackIndex]).bounds,offset=Point.shared,filterData=filterData.previousRenderSurface===output;let resolution=this.renderer.renderTarget.rootRenderTarget.colorTexture.source._resolution,currentIndex=this._filterStackIndex-1;for(;0<currentIndex&&this._filterStack[currentIndex].skip;)--currentIndex;0<currentIndex&&(resolution=this._filterStack[currentIndex].inputTexture.source._resolution);var filterUniforms=this._filterGlobalUniforms,outputFrame=(uniforms=filterUniforms.uniforms).uOutputFrame,inputSize=uniforms.uInputSize,inputPixel=uniforms.uInputPixel,inputClamp=uniforms.uInputClamp,globalFrame=uniforms.uGlobalFrame,uniforms=uniforms.uOutputTexture;if(filterData){let lastIndex=this._filterStackIndex;for(;0<lastIndex;){lastIndex--;var filterData2=this._filterStack[this._filterStackIndex-1];if(!filterData2.skip){offset.x=filterData2.bounds.minX,offset.y=filterData2.bounds.minY;break}}outputFrame[0]=bounds.minX-offset.x,outputFrame[1]=bounds.minY-offset.y}else outputFrame[0]=0,outputFrame[1]=0;outputFrame[2]=input.frame.width,outputFrame[3]=input.frame.height,inputSize[0]=input.source.width,inputSize[1]=input.source.height,inputSize[2]=1/inputSize[0],inputSize[3]=1/inputSize[1],inputPixel[0]=input.source.pixelWidth,inputPixel[1]=input.source.pixelHeight,inputPixel[2]=1/inputPixel[0],inputPixel[3]=1/inputPixel[1],inputClamp[0]=.5*inputPixel[2],inputClamp[1]=.5*inputPixel[3],inputClamp[2]=input.frame.width*inputSize[2]-.5*inputPixel[2],inputClamp[3]=input.frame.height*inputSize[3]-.5*inputPixel[3],filterData=this.renderer.renderTarget.rootRenderTarget.colorTexture,globalFrame[0]=offset.x*resolution,globalFrame[1]=offset.y*resolution,globalFrame[2]=filterData.source.width*resolution,globalFrame[3]=filterData.source.height*resolution,bounds=this.renderer.renderTarget.getRenderTarget(output),renderer.renderTarget.bind(output,!!clear),output instanceof Texture?(uniforms[0]=output.frame.width,uniforms[1]=output.frame.height):(uniforms[0]=bounds.width,uniforms[1]=bounds.height),uniforms[2]=bounds.isRoot?-1:1,filterUniforms.update(),renderer.renderPipes.uniformBatch?(outputFrame=renderer.renderPipes.uniformBatch.getUboResource(filterUniforms),this._globalFilterBindGroup.setResource(outputFrame,0)):this._globalFilterBindGroup.setResource(filterUniforms,0),this._globalFilterBindGroup.setResource(input.source,1),this._globalFilterBindGroup.setResource(input.source.style,2),filter.groups[0]=this._globalFilterBindGroup,renderer.encoder.draw({geometry:quadGeometry,shader:filter,state:filter._state,topology:"triangle-list"}),renderer.type===RendererType.WEBGL&&renderer.renderTarget.finishRenderPass()}_getFilterData(){return{skip:!1,inputTexture:null,bounds:new Bounds,container:null,filterEffect:null,blendRequired:!1,previousRenderSurface:null}}calculateSpriteMatrix(outputMatrix,sprite){var data=this._activeFilterData,outputMatrix=outputMatrix.set(data.inputTexture._source.width,0,0,data.inputTexture._source.height,data.bounds.minX,data.bounds.minY),data=sprite.worldTransform.copyTo(Matrix.shared),renderGroup=sprite.renderGroup||sprite.parentRenderGroup;return renderGroup&&renderGroup.cacheToLocalTransform&&data.prepend(renderGroup.cacheToLocalTransform),data.invert(),outputMatrix.prepend(data),outputMatrix.scale(1/sprite.texture.frame.width,1/sprite.texture.frame.height),outputMatrix.translate(sprite.anchor.x,sprite.anchor.y),outputMatrix}}FilterSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem],name:"filter"},extensions.add(FilterSystem),extensions.add(FilterPipe);var browserAll={__proto__:null};const environments=[];async function loadEnvironmentExtensions(skip){if(!skip)for(let i=0;i<environments.length;i++){var env=environments[i];if(env.value.test())return void await env.value.load()}}extensions.handleByNamedList(ExtensionType2.Environment,environments);let unsafeEval;function unsafeEvalSupported(){if("boolean"!=typeof unsafeEval)try{var func=new Function("param1","param2","param3","return param1[param2] === param3;");unsafeEval=!0===func({a:"b"},"a","b")}catch(_e){unsafeEval=!1}return unsafeEval}var CLEAR={NONE:0,0:"NONE",COLOR:16384,16384:"COLOR",STENCIL:1024,1024:"STENCIL",DEPTH:256,256:"DEPTH",COLOR_DEPTH:16640,16640:"COLOR_DEPTH",COLOR_STENCIL:17408,17408:"COLOR_STENCIL",DEPTH_STENCIL:1280,1280:"DEPTH_STENCIL",ALL:17664,17664:"ALL"};class SystemRunner{constructor(name){this.items=[],this._name=name}emit(a0,a1,a2,a3,a4,a5,a6,a7){var{name,items}=this;for(let i=0,len=items.length;i<len;i++)items[i][name](a0,a1,a2,a3,a4,a5,a6,a7);return this}add(item){return item[this._name]&&(this.remove(item),this.items.push(item)),this}remove(item){return-1!==(item=this.items.indexOf(item))&&this.items.splice(item,1),this}contains(item){return-1!==this.items.indexOf(item)}removeAll(){return this.items.length=0,this}destroy(){this.removeAll(),this.items=null,this._name=null}get empty(){return 0===this.items.length}get name(){return this._name}}var __defProp$J=Object.defineProperty,__getOwnPropSymbols$J=Object.getOwnPropertySymbols,__hasOwnProp$J=Object.prototype.hasOwnProperty,__propIsEnum$J=Object.prototype.propertyIsEnumerable,__defNormalProp$J=(obj,key,value)=>key in obj?__defProp$J(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$J=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$J.call(b,prop)&&__defNormalProp$J(a,prop,b[prop]);if(__getOwnPropSymbols$J)for(var prop of __getOwnPropSymbols$J(b))__propIsEnum$J.call(b,prop)&&__defNormalProp$J(a,prop,b[prop]);return a};const defaultRunners=["init","destroy","contextChange","resolutionChange","resetState","renderEnd","renderStart","render","update","postrender","prerender"],_AbstractRenderer=class _AbstractRenderer extends EventEmitter{constructor(config){super(),this.runners=Object.create(null),this.renderPipes=Object.create(null),this._initOptions={},this._systemsHash=Object.create(null),this.type=config.type,this.name=config.name,this.config=config,config=[...defaultRunners,...null!=(config=this.config.runners)?config:[]],this._addRunners(...config),this._unsafeEvalCheck()}async init(options={}){await loadEnvironmentExtensions(!0===options.skipExtensionImports||!1===options.manageImports),this._addSystems(this.config.systems),this._addPipes(this.config.renderPipes,this.config.renderPipeAdaptors);for(const systemName in this._systemsHash){var defaultSystemOptions=this._systemsHash[systemName].constructor.defaultOptions;options=__spreadValues$J(__spreadValues$J({},defaultSystemOptions),options)}options=__spreadValues$J(__spreadValues$J({},_AbstractRenderer.defaultOptions),options),this._roundPixels=options.roundPixels?1:0;for(let i=0;i<this.runners.init.items.length;i++)await this.runners.init.items[i].init(options);this._initOptions=options}render(args,deprecated){let options=args;options instanceof Container&&(options={container:options},deprecated)&&(deprecation(v8_0_0,"passing a second argument is deprecated, please use render options instead"),options.target=deprecated.renderTexture),options.target||(options.target=this.view.renderTarget),options.target===this.view.renderTarget&&(this._lastObjectRendered=options.container,null==options.clearColor&&(options.clearColor=this.background.colorRgba),null==options.clear)&&(options.clear=this.background.clearBeforeRender),options.clearColor&&(args=Array.isArray(options.clearColor)&&4===options.clearColor.length,options.clearColor=args?options.clearColor:Color.shared.setValue(options.clearColor).toArray()),options.transform||(options.container.updateLocalTransform(),options.transform=options.container.localTransform),options.container.enableRenderGroup(),this.runners.prerender.emit(options),this.runners.renderStart.emit(options),this.runners.render.emit(options),this.runners.renderEnd.emit(options),this.runners.postrender.emit(options)}resize(desiredScreenWidth,desiredScreenHeight,resolution){var previousResolution=this.view.resolution;this.view.resize(desiredScreenWidth,desiredScreenHeight,resolution),this.emit("resize",this.view.screen.width,this.view.screen.height,this.view.resolution),void 0!==resolution&&resolution!==previousResolution&&this.runners.resolutionChange.emit(resolution)}clear(options={}){options.target||(options.target=this.renderTarget.renderTarget),options.clearColor||(options.clearColor=this.background.colorRgba),null==options.clear&&(options.clear=CLEAR.ALL);var{clear:options,clearColor,target}=options;Color.shared.setValue(null!=clearColor?clearColor:this.background.colorRgba),this.renderTarget.clear(target,options,Color.shared.toArray())}get resolution(){return this.view.resolution}set resolution(value){this.view.resolution=value,this.runners.resolutionChange.emit(value)}get width(){return this.view.texture.frame.width}get height(){return this.view.texture.frame.height}get canvas(){return this.view.canvas}get lastObjectRendered(){return this._lastObjectRendered}get renderingToScreen(){return this.renderTarget.renderingToScreen}get screen(){return this.view.screen}_addRunners(...runnerIds){runnerIds.forEach(runnerId=>{this.runners[runnerId]=new SystemRunner(runnerId)})}_addSystems(systems){let i;for(i in systems){var val=systems[i];this._addSystem(val.value,val.name)}}_addSystem(ClassRef,name){var system=new ClassRef(this);if(this[name])throw new Error(`Whoops! The name "${name}" is already in use`);this[name]=system,this._systemsHash[name]=system;for(const i in this.runners)this.runners[i].add(system);return this}_addPipes(pipes,pipeAdaptors){const adaptors=pipeAdaptors.reduce((acc,adaptor)=>(acc[adaptor.name]=adaptor.value,acc),{});pipes.forEach(pipe=>{var PipeClass=pipe.value,pipe=pipe.name,Adaptor=adaptors[pipe];this.renderPipes[pipe]=new PipeClass(this,Adaptor?new Adaptor:null)})}destroy(options=!1){this.runners.destroy.items.reverse(),this.runners.destroy.emit(options),Object.values(this.runners).forEach(runner=>{runner.destroy()}),this._systemsHash=null,this.renderPipes=null}generateTexture(options){return this.textureGenerator.generateTexture(options)}get roundPixels(){return!!this._roundPixels}_unsafeEvalCheck(){if(!unsafeEvalSupported())throw new Error("Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.")}resetState(){this.runners.resetState.emit()}};_AbstractRenderer.defaultOptions={resolution:1,failIfMajorPerformanceCaveat:!1,roundPixels:!1};let AbstractRenderer=_AbstractRenderer,_isWebGLSupported;function isWebGLSupported(failIfMajorPerformanceCaveat){return _isWebGLSupported=void 0===_isWebGLSupported?(()=>{var _a,contextOptions={stencil:!0,failIfMajorPerformanceCaveat:null!=failIfMajorPerformanceCaveat?failIfMajorPerformanceCaveat:AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat};try{if(!DOMAdapter.get().getWebGLRenderingContext())return!1;let gl=DOMAdapter.get().createCanvas().getContext("webgl",contextOptions);var loseContext,success=!(null==(_a=null==gl?void 0:gl.getContextAttributes())||!_a.stencil);return gl&&(loseContext=gl.getExtension("WEBGL_lose_context"))&&loseContext.loseContext(),gl=null,success}catch(_e){return!1}})():_isWebGLSupported}let _isWebGPUSupported;async function isWebGPUSupported(options={}){return _isWebGPUSupported=void 0===_isWebGPUSupported?await(async()=>{var gpu=DOMAdapter.get().getNavigator().gpu;if(!gpu)return!1;try{return await(await gpu.requestAdapter(options)).requestDevice(),!0}catch(_e){return!1}})():_isWebGPUSupported}var __defProp$I=Object.defineProperty,__getOwnPropSymbols$I=Object.getOwnPropertySymbols,__hasOwnProp$I=Object.prototype.hasOwnProperty,__propIsEnum$I=Object.prototype.propertyIsEnumerable,__defNormalProp$I=(obj,key,value)=>key in obj?__defProp$I(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$I=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$I.call(b,prop)&&__defNormalProp$I(a,prop,b[prop]);if(__getOwnPropSymbols$I)for(var prop of __getOwnPropSymbols$I(b))__propIsEnum$I.call(b,prop)&&__defNormalProp$I(a,prop,b[prop]);return a};const renderPriority=["webgl","webgpu","canvas"];async function autoDetectRenderer(options){var renderer;let preferredOrder=[];options.preference?(preferredOrder.push(options.preference),renderPriority.forEach(item=>{item!==options.preference&&preferredOrder.push(item)})):preferredOrder=renderPriority.slice();let RendererClass,finalOptions={};for(let i=0;i<preferredOrder.length;i++){var rendererType=preferredOrder[i];if("webgpu"===rendererType&&await isWebGPUSupported()){var WebGPURenderer=(await Promise.resolve().then(function(){return WebGPURenderer$1})).WebGPURenderer;RendererClass=WebGPURenderer,finalOptions=__spreadValues$I(__spreadValues$I({},options),options.webgpu);break}if("webgl"===rendererType&&isWebGLSupported(null!=(WebGPURenderer=options.failIfMajorPerformanceCaveat)?WebGPURenderer:AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat)){var WebGLRenderer=(await Promise.resolve().then(function(){return WebGLRenderer$1})).WebGLRenderer;RendererClass=WebGLRenderer,finalOptions=__spreadValues$I(__spreadValues$I({},options),options.webgl);break}if("canvas"===rendererType)throw finalOptions=__spreadValues$I({},options),new Error("CanvasRenderer is not yet implemented")}if(delete finalOptions.webgpu,delete finalOptions.webgl,RendererClass)return await(renderer=new RendererClass).init(finalOptions),renderer;throw new Error("No available renderer for the current environment")}class ApplicationInitHook{static init(){var _a;null!=(_a=globalThis.__PIXI_APP_INIT__)&&_a.call(globalThis,this,"8.9.1")}static destroy(){}}ApplicationInitHook.extension=ExtensionType2.Application;class RendererInitHook{constructor(renderer){this._renderer=renderer}init(){var _a;null!=(_a=globalThis.__PIXI_RENDERER_INIT__)&&_a.call(globalThis,this._renderer,"8.9.1")}destroy(){this._renderer=null}}RendererInitHook.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem],name:"initHook",priority:-10};var __defProp$H=Object.defineProperty,__getOwnPropSymbols$H=Object.getOwnPropertySymbols,__hasOwnProp$H=Object.prototype.hasOwnProperty,__propIsEnum$H=Object.prototype.propertyIsEnumerable,__defNormalProp$H=(obj,key,value)=>key in obj?__defProp$H(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;const _Application=class _Application{constructor(...args){this.stage=new Container,void 0!==args[0]&&deprecation(v8_0_0,"Application constructor options are deprecated, please use Application.init() instead.")}async init(options){options=((a,b)=>{for(var prop in b=options||{})__hasOwnProp$H.call(b,prop)&&__defNormalProp$H(a,prop,b[prop]);if(__getOwnPropSymbols$H)for(var prop of __getOwnPropSymbols$H(b))__propIsEnum$H.call(b,prop)&&__defNormalProp$H(a,prop,b[prop]);return a})({}),this.renderer=await autoDetectRenderer(options),_Application._plugins.forEach(plugin=>{plugin.init.call(this,options)})}render(){this.renderer.render({container:this.stage})}get canvas(){return this.renderer.canvas}get view(){return deprecation(v8_0_0,"Application.view is deprecated, please use Application.canvas instead."),this.renderer.canvas}get screen(){return this.renderer.screen}destroy(rendererDestroyOptions=!1,options=!1){var plugins=_Application._plugins.slice(0);plugins.reverse(),plugins.forEach(plugin=>{plugin.destroy.call(this)}),this.stage.destroy(options),this.stage=null,this.renderer.destroy(rendererDestroyOptions),this.renderer=null}};_Application._plugins=[],__spreadProps$l=_Application,extensions.handleByList(ExtensionType2.Application,__spreadProps$l._plugins),extensions.add(ApplicationInitHook);class BitmapFont extends AbstractBitmapFont{constructor(options,url){super();const{textures,data}=options;Object.keys(data.pages).forEach(key=>{key=data.pages[parseInt(key,10)],key=textures[key.id],this.pages.push({texture:key})}),Object.keys(data.chars).forEach(key=>{var charData=data.chars[key],{frame:textureFrame,source:textureSource}=textures[charData.page],textureFrame=new Rectangle(charData.x+textureFrame.x,charData.y+textureFrame.y,charData.width,charData.height),textureSource=new Texture({source:textureSource,frame:textureFrame});this.chars[key]={id:key.codePointAt(0),xOffset:charData.xOffset,yOffset:charData.yOffset,xAdvance:charData.xAdvance,kerning:null!=(textureFrame=charData.kerning)?textureFrame:{},texture:textureSource}}),this.baseRenderedFontSize=data.fontSize,this.baseMeasurementFontSize=data.fontSize,this.fontMetrics={ascent:0,descent:0,fontSize:data.fontSize},this.baseLineOffset=data.baseLineOffset,this.lineHeight=data.lineHeight,this.fontFamily=data.fontFamily,this.distanceField=null!=(options=data.distanceField)?options:{type:"none",range:0},this.url=url}destroy(){super.destroy();for(let i=0;i<this.pages.length;i++)this.pages[i].texture.destroy(!0);this.pages=null}static install(options){BitmapFontManager.install(options)}static uninstall(name){BitmapFontManager.uninstall(name)}}const bitmapFontTextParser={test(data){return"string"==typeof data&&data.startsWith("info face=")},parse(txt){var _b,items=txt.match(/^[a-z]+\s+.+$/gm),rawData={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(const i in items){var name=items[i].match(/^[a-z]+/gm)[0],attributeList=items[i].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),itemData={};for(const i2 in attributeList){var key=(split=attributeList[i2].split("="))[0],split=split[1].replace(/"/gm,""),floatValue=parseFloat(split),split=isNaN(floatValue)?split:floatValue;itemData[key]=split}rawData[name].push(itemData)}var font={chars:{},pages:[],lineHeight:0,fontSize:0,fontFamily:"",distanceField:null,baseLineOffset:0},[txt]=rawData.info,[common]=rawData.common,[_a]=null!=(_a=rawData.distanceField)?_a:[],page=(_a&&(font.distanceField={range:parseInt(_a.distanceRange,10),type:_a.fieldType}),font.fontSize=parseInt(txt.size,10),font.fontFamily=txt.face,font.lineHeight=parseInt(common.lineHeight,10),rawData.page);for(let i=0;i<page.length;i++)font.pages.push({id:parseInt(page[i].id,10)||0,file:page[i].file});var map={},char=(font.baseLineOffset=font.lineHeight-parseInt(common.base,10),rawData.char);for(let i=0;i<char.length;i++){var charNode=char[i],id=parseInt(charNode.id,10);let letter=null!=(_b=null!=(_b=charNode.letter)?_b:charNode.char)?_b:String.fromCharCode(id);"space"===letter&&(letter=" "),map[id]=letter,font.chars[letter]={id:id,page:parseInt(charNode.page,10)||0,x:parseInt(charNode.x,10),y:parseInt(charNode.y,10),width:parseInt(charNode.width,10),height:parseInt(charNode.height,10),xOffset:parseInt(charNode.xoffset,10),yOffset:parseInt(charNode.yoffset,10),xAdvance:parseInt(charNode.xadvance,10),kerning:{}}}var kerning=rawData.kerning||[];for(let i=0;i<kerning.length;i++){var first=parseInt(kerning[i].first,10),second=parseInt(kerning[i].second,10),amount=parseInt(kerning[i].amount,10);font.chars[map[second]].kerning[map[first]]=amount}return font}},bitmapFontXMLParser={test(data){return"string"!=typeof data&&"getElementsByTagName"in data&&data.getElementsByTagName("page").length&&null!==data.getElementsByTagName("info")[0].getAttribute("face")},parse(xml){var _a,data={chars:{},pages:[],lineHeight:0,fontSize:0,fontFamily:"",distanceField:null,baseLineOffset:0},info=xml.getElementsByTagName("info")[0],common=xml.getElementsByTagName("common")[0],distanceField=xml.getElementsByTagName("distanceField")[0],page=(distanceField&&(data.distanceField={type:distanceField.getAttribute("fieldType"),range:parseInt(distanceField.getAttribute("distanceRange"),10)}),xml.getElementsByTagName("page")),char=xml.getElementsByTagName("char"),kerning=xml.getElementsByTagName("kerning");data.fontSize=parseInt(info.getAttribute("size"),10),data.fontFamily=info.getAttribute("face"),data.lineHeight=parseInt(common.getAttribute("lineHeight"),10);for(let i=0;i<page.length;i++)data.pages.push({id:parseInt(page[i].getAttribute("id"),10)||0,file:page[i].getAttribute("file")});var map={};data.baseLineOffset=data.lineHeight-parseInt(common.getAttribute("base"),10);for(let i=0;i<char.length;i++){var charNode=char[i],id=parseInt(charNode.getAttribute("id"),10);let letter=null!=(_a=null!=(_a=charNode.getAttribute("letter"))?_a:charNode.getAttribute("char"))?_a:String.fromCharCode(id);"space"===letter&&(letter=" "),map[id]=letter,data.chars[letter]={id:id,page:parseInt(charNode.getAttribute("page"),10)||0,x:parseInt(charNode.getAttribute("x"),10),y:parseInt(charNode.getAttribute("y"),10),width:parseInt(charNode.getAttribute("width"),10),height:parseInt(charNode.getAttribute("height"),10),xOffset:parseInt(charNode.getAttribute("xoffset"),10),yOffset:parseInt(charNode.getAttribute("yoffset"),10),xAdvance:parseInt(charNode.getAttribute("xadvance"),10),kerning:{}}}for(let i=0;i<kerning.length;i++){var first=parseInt(kerning[i].getAttribute("first"),10),second=parseInt(kerning[i].getAttribute("second"),10),amount=parseInt(kerning[i].getAttribute("amount"),10);data.chars[map[second]].kerning[map[first]]=amount}return data}},bitmapFontXMLStringParser={test(data){return!("string"!=typeof data||!data.includes("<font>"))&&bitmapFontXMLParser.test(DOMAdapter.get().parseXML(data))},parse(data){return bitmapFontXMLParser.parse(DOMAdapter.get().parseXML(data))}},validExtensions=[".xml",".fnt"];var __spreadValues$M={extension:{type:ExtensionType2.CacheParser,name:"cacheBitmapFont"},test:asset=>asset instanceof BitmapFont,getCacheableAssets(keys,asset){const out={};return keys.forEach(key=>{out[key]=asset,out[key+"-bitmap"]=asset}),out[asset.fontFamily+"-bitmap"]=asset,out}},CLEAR2={extension:{type:ExtensionType2.LoadParser,priority:LoaderParserPriority2.Normal},name:"loadBitmapFont",test(url){return validExtensions.includes(path.extname(url).toLowerCase())},async testParse(data){return bitmapFontTextParser.test(data)||bitmapFontXMLStringParser.test(data)},async parse(asset,data,loader){var asset=(bitmapFontTextParser.test(asset)?bitmapFontTextParser:bitmapFontXMLStringParser).parse(asset),src=data.src,pages=asset.pages,textureUrls=[],textureOptions=asset.distanceField?{scaleMode:"linear",alphaMode:"premultiply-alpha-on-upload",autoGenerateMipmaps:!1,resolution:1}:{};for(let i=0;i<pages.length;++i){var pageFile=pages[i].file,pageFile=path.join(path.dirname(src),pageFile),pageFile=copySearchParams(pageFile,src);textureUrls.push({src:pageFile,data:textureOptions})}const loadedTextures=await loader.load(textureUrls);return data=textureUrls.map(url=>loadedTextures[url.src]),new BitmapFont({data:asset,textures:data},src)},async load(url,_options){return(await DOMAdapter.get().fetch(url)).text()},async unload(bitmapFont,_resolvedAsset,loader){await Promise.all(bitmapFont.pages.map(page=>loader.unload(page.texture.source._sourceOrigin))),bitmapFont.destroy()}};class BackgroundLoader{constructor(loader,verbose=!1){this._loader=loader,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=verbose}add(assetUrls){assetUrls.forEach(a=>{this._assetList.push(a)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;var toLoad=[],toLoadAmount=Math.min(this._assetList.length,this._maxConcurrent);for(let i=0;i<toLoadAmount;i++)toLoad.push(this._assetList.pop());await this._loader.load(toLoad),this._isLoading=!1,this._next()}}get active(){return this._isActive}set active(value){this._isActive!==value&&(this._isActive=value)&&!this._isLoading&&this._next()}}var cacheTextureArray={extension:{type:ExtensionType2.CacheParser,name:"cacheTextureArray"},test:asset=>Array.isArray(asset)&&asset.every(t=>t instanceof Texture),getCacheableAssets:(keys,asset)=>{const out={};return keys.forEach(key=>{asset.forEach((item,i)=>{out[key+(0===i?"":i+1)]=item})}),out}};async function testImageFormat(imageData){if("Image"in globalThis)return new Promise(resolve=>{var image=new Image;image.onload=()=>{resolve(!0)},image.onerror=()=>{resolve(!1)},image.src=imageData});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{var blob=await(await fetch(imageData)).blob();await createImageBitmap(blob)}catch(_e){return!1}return!0}return!1}var detectAvif={extension:{type:ExtensionType2.DetectionParser,priority:1},test:async()=>testImageFormat("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async formats=>[...formats,"avif"],remove:async formats=>formats.filter(f=>"avif"!==f)};const imageFormats=["png","jpg","jpeg"];var detectDefaults={extension:{type:ExtensionType2.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async formats=>[...formats,...imageFormats],remove:async formats=>formats.filter(f=>!imageFormats.includes(f))};const inWorker="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function testVideoFormat(mimeType){return!inWorker&&""!==document.createElement("video").canPlayType(mimeType)}var detectMp4={extension:{type:ExtensionType2.DetectionParser,priority:0},test:async()=>testVideoFormat("video/mp4"),add:async formats=>[...formats,"mp4","m4v"],remove:async formats=>formats.filter(f=>"mp4"!==f&&"m4v"!==f)},detectOgv={extension:{type:ExtensionType2.DetectionParser,priority:0},test:async()=>testVideoFormat("video/ogg"),add:async formats=>[...formats,"ogv"],remove:async formats=>formats.filter(f=>"ogv"!==f)},detectWebm={extension:{type:ExtensionType2.DetectionParser,priority:0},test:async()=>testVideoFormat("video/webm"),add:async formats=>[...formats,"webm"],remove:async formats=>formats.filter(f=>"webm"!==f)},detectWebp={extension:{type:ExtensionType2.DetectionParser,priority:0},test:async()=>testImageFormat("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async formats=>[...formats,"webp"],remove:async formats=>formats.filter(f=>"webp"!==f)},__defProp$G=Object.defineProperty,__defProps$k=Object.defineProperties,__getOwnPropDescs$k=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$G=Object.getOwnPropertySymbols,__hasOwnProp$G=Object.prototype.hasOwnProperty,__propIsEnum$G=Object.prototype.propertyIsEnumerable,__defNormalProp$G=(obj,key,value)=>key in obj?__defProp$G(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class Loader{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(target,key,value)=>(this._parsersValidated=!1,target[key]=value,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(url,data){const result={promise:null,parser:null};return result.promise=(async()=>{var _a,_b;let asset=null,parser=null;if(data.loadParser&&!(parser=this._parserHash[data.loadParser])&&warn(`[Assets] specified load parser "${data.loadParser}" not found while loading `+url),!parser){for(let i=0;i<this.parsers.length;i++){var parserX=this.parsers[i];if(parserX.load&&null!=(_a=parserX.test)&&_a.call(parserX,url,data,this)){parser=parserX;break}}if(!parser)return warn(`[Assets] ${url} could not be loaded as we don't know how to parse it, ensure the correct parser has been added`),null}asset=await parser.load(url,data,this),result.parser=parser;for(let i=0;i<this.parsers.length;i++){var parser2=this.parsers[i];parser2.parse&&parser2.parse&&await(null==(_b=parser2.testParse)?void 0:_b.call(parser2,asset,data,this))&&(asset=await parser2.parse(asset,data,this)||asset,result.parser=parser2)}return asset})(),result}async load(assetsToLoadIn,onProgress){this._parsersValidated||this._validateParsers();let count=0;const assets={};var singleAsset=isSingleItem(assetsToLoadIn);const total=(assetsToLoadIn=convertToList(assetsToLoadIn,item=>({alias:[item],src:item,data:{}}))).length;var promises=assetsToLoadIn.map(async asset=>{var url=path.toAbsolute(asset.src);if(!assets[asset.src])try{this.promiseCache[url]||(this.promiseCache[url]=this._getLoadPromiseAndParser(url,asset)),assets[asset.src]=await this.promiseCache[url].promise,onProgress&&onProgress(++count/total)}catch(e){throw delete this.promiseCache[url],delete assets[asset.src],new Error(`[Loader.load] Failed to load ${url}.
`+e)}});return await Promise.all(promises),singleAsset?assets[assetsToLoadIn[0].src]:assets}async unload(assetsToUnloadIn){assetsToUnloadIn=convertToList(assetsToUnloadIn,item=>({alias:[item],src:item})).map(async asset=>{var loadedAsset,url=path.toAbsolute(asset.src),loadPromise=this.promiseCache[url];loadPromise&&(loadedAsset=await loadPromise.promise,delete this.promiseCache[url],await(null==(loadPromise=null==(url=loadPromise.parser)?void 0:url.unload)?void 0:loadPromise.call(url,loadedAsset,asset,this)))}),await Promise.all(assetsToUnloadIn)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(parser=>parser.name).reduce((hash,parser)=>(parser.name?hash[parser.name]&&warn(`[Assets] loadParser name conflict "${parser.name}"`):warn("[Assets] loadParser should have a name"),hash=((a,b)=>{for(var prop in b=hash||{})__hasOwnProp$G.call(b,prop)&&__defNormalProp$G(a,prop,b[prop]);if(__getOwnPropSymbols$G)for(var prop of __getOwnPropSymbols$G(b))__propIsEnum$G.call(b,prop)&&__defNormalProp$G(a,prop,b[prop]);return a})({}),parser={[parser.name]:parser},__defProps$k(hash,__getOwnPropDescs$k(parser))),{})}}function checkDataUrl(url,mimes){if(Array.isArray(mimes)){for(const mime of mimes)if(url.startsWith("data:"+mime))return!0;return!1}return url.startsWith("data:"+mimes)}function checkExtension(url,extension){return url=url.split("?")[0],url=path.extname(url).toLowerCase(),Array.isArray(extension)?extension.includes(url):url===extension}var loadJson={extension:{type:ExtensionType2.LoadParser,priority:LoaderParserPriority2.Low},name:"loadJson",test(url){return checkDataUrl(url,"application/json")||checkExtension(url,".json")},async load(url){return(await DOMAdapter.get().fetch(url)).json()}},loadTxt={name:"loadTxt",extension:{type:ExtensionType2.LoadParser,priority:LoaderParserPriority2.Low,name:"loadTxt"},test(url){return checkDataUrl(url,"text/plain")||checkExtension(url,".txt")},async load(url){return(await DOMAdapter.get().fetch(url)).text()}},__defProp$F=Object.defineProperty,__defProps$j=Object.defineProperties,__getOwnPropDescs$j=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$F=Object.getOwnPropertySymbols,__hasOwnProp$F=Object.prototype.hasOwnProperty,__propIsEnum$F=Object.prototype.propertyIsEnumerable,__defNormalProp$F=(obj,key,value)=>key in obj?__defProp$F(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;const validWeights=["normal","bold","100","200","300","400","500","600","700","800","900"],validFontExtensions=[".ttf",".otf",".woff",".woff2"],validFontMIMEs=["font/ttf","font/otf","font/woff","font/woff2"],CSS_IDENT_TOKEN_REGEX=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function getFontFamilyName(url){var ext=path.extname(url);let valid=0<(url=path.basename(url,ext).replace(/(-|_)/g," ").toLowerCase().split(" ").map(word=>word.charAt(0).toUpperCase()+word.slice(1))).length;for(const token of url)if(!token.match(CSS_IDENT_TOKEN_REGEX)){valid=!1;break}let fontFamilyName=url.join(" ");return fontFamilyName=valid?fontFamilyName:`"${fontFamilyName.replace(/[\\"]/g,"\\$&")}"`}const validURICharactersRegex=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;var loadWebFont={extension:{type:ExtensionType2.LoadParser,priority:LoaderParserPriority2.Low},name:"loadWebFont",test(url){return checkDataUrl(url,validFontMIMEs)||checkExtension(url,validFontExtensions)},async load(url,options){var _a,fonts=DOMAdapter.get().getFontFaceSet();if(fonts){var fontFaces=[],name=null!=(_a=null==(_a=options.data)?void 0:_a.family)?_a:getFontFamilyName(url),weights=null!=(_a=null==(_a=null==(_a=options.data)?void 0:_a.weights)?void 0:_a.filter(weight=>validWeights.includes(weight)))?_a:["normal"],data=null!=(_a=options.data)?_a:{};for(let i=0;i<weights.length;i++){var weight=weights[i],uri=new FontFace(name,`url(${uri=url,validURICharactersRegex.test(uri)?uri:encodeURI(uri)})`,(uri=((a,b)=>{for(var prop in b=data||{})__hasOwnProp$F.call(b,prop)&&__defNormalProp$F(a,prop,b[prop]);if(__getOwnPropSymbols$F)for(var prop of __getOwnPropSymbols$F(b))__propIsEnum$F.call(b,prop)&&__defNormalProp$F(a,prop,b[prop]);return a})({}),__defProps$j(uri,__getOwnPropDescs$j({weight:weight}))));await uri.load(),fonts.add(uri),fontFaces.push(uri)}return Cache.set(name+"-and-url",{url:url,fontFaces:fontFaces}),1===fontFaces.length?fontFaces[0]:fontFaces}return warn("[loadWebFont] FontFace API is not supported. Skipping loading font"),null},unload(font){(Array.isArray(font)?font:[font]).forEach(t=>{Cache.remove(t.family+"-and-url"),DOMAdapter.get().getFontFaceSet().delete(t)})}};function getResolutionOfUrl(url,defaultValue=1){var _a=null==(_a=Resolver.RETINA_PREFIX)?void 0:_a.exec(url);return _a?parseFloat(_a[1]):defaultValue}function createTexture(source,loader,url){source.label=url,source._sourceOrigin=url;var texture=new Texture({source:source,label:url});const unload=()=>{delete loader.promiseCache[url],Cache.has(url)&&Cache.remove(url)};return texture.source.once("destroy",()=>{loader.promiseCache[url]&&(warn("[Assets] A TextureSource managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the TextureSource."),unload())}),texture.once("destroy",()=>{source.destroyed||(warn("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),unload())}),texture}var __defProp$E=Object.defineProperty,__getOwnPropSymbols$E=Object.getOwnPropertySymbols,__hasOwnProp$E=Object.prototype.hasOwnProperty,__propIsEnum$E=Object.prototype.propertyIsEnumerable,__defNormalProp$E=(obj,key,value)=>key in obj?__defProp$E(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,loadSvg={extension:{type:ExtensionType2.LoadParser,priority:LoaderParserPriority2.Low,name:"loadSVG"},name:"loadSVG",config:{crossOrigin:"anonymous",parseAsGraphicsContext:!1},test(url){return checkDataUrl(url,"image/svg+xml")||checkExtension(url,".svg")},async load(url,asset,loader){var _a;return(null!=(_a=null==(_a=asset.data)?void 0:_a.parseAsGraphicsContext)?_a:this.config.parseAsGraphicsContext)?async function(url){var url=await(url=await DOMAdapter.get().fetch(url)).text(),context=new GraphicsContext;return context.svg(url),context}(url):async function(url,asset,loader,crossOrigin){var response=await(response=await DOMAdapter.get().fetch(url)).blob(),response=URL.createObjectURL(response),image=new Image,response=(image.src=response,image.crossOrigin=crossOrigin,await image.decode(),URL.revokeObjectURL(response),(crossOrigin=document.createElement("canvas")).getContext("2d")),_a=(null==(_a=asset.data)?void 0:_a.resolution)||getResolutionOfUrl(url),_b=null!=(_b=null==(_b=asset.data)?void 0:_b.width)?_b:image.width,_d=null!=(_d=null==(_d=asset.data)?void 0:_d.height)?_d:image.height,{}=(crossOrigin.width=_b*_a,crossOrigin.height=_d*_a,response.drawImage(image,0,0,_b*_a,_d*_a),image=null!=(response=asset.data)?response:{}),_b=((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$E.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$E)for(var prop of __getOwnPropSymbols$E(source))exclude.indexOf(prop)<0&&__propIsEnum$E.call(source,prop)&&(target[prop]=source[prop]);return target})(image,["parseAsGraphicsContext"]);return createTexture(new ImageSource(((a,b)=>{for(var prop in b=_b||{})__hasOwnProp$E.call(b,prop)&&__defNormalProp$E(a,prop,b[prop]);if(__getOwnPropSymbols$E)for(var prop of __getOwnPropSymbols$E(b))__propIsEnum$E.call(b,prop)&&__defNormalProp$E(a,prop,b[prop]);return a})({resource:crossOrigin,alphaMode:"premultiply-alpha-on-upload",resolution:_a})),loader,url)}(url,asset,loader,this.config.crossOrigin)},unload(asset){asset.destroy(!0)}};let WORKER_URL$3=null,WorkerInstance$3=class{constructor(){WORKER_URL$3=WORKER_URL$3||URL.createObjectURL(new Blob(['(function () {\n \'use strict\';\n\n const WHITE_PNG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=";\n async function checkImageBitmap() {\n try {\n if (typeof createImageBitmap !== "function")\n return false;\n const response = await fetch(WHITE_PNG);\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n return imageBitmap.width === 1 && imageBitmap.height === 1;\n } catch (_e) {\n return false;\n }\n }\n void checkImageBitmap().then((result) => {\n self.postMessage(result);\n });\n\n})();\n'],{type:"application/javascript"})),this.worker=new Worker(WORKER_URL$3)}},WORKER_URL$2=(WorkerInstance$3.revokeObjectURL=function(){WORKER_URL$3&&(URL.revokeObjectURL(WORKER_URL$3),WORKER_URL$3=null)},null),WorkerInstance$2=class{constructor(){WORKER_URL$2=WORKER_URL$2||URL.createObjectURL(new Blob(['(function () {\n \'use strict\';\n\n async function loadImageBitmap(url, alphaMode) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`[WorkerManager.loadImageBitmap] Failed to fetch ${url}: ${response.status} ${response.statusText}`);\n }\n const imageBlob = await response.blob();\n return alphaMode === "premultiplied-alpha" ? createImageBitmap(imageBlob, { premultiplyAlpha: "none" }) : createImageBitmap(imageBlob);\n }\n self.onmessage = async (event) => {\n try {\n const imageBitmap = await loadImageBitmap(event.data.data[0], event.data.data[1]);\n self.postMessage({\n data: imageBitmap,\n uuid: event.data.uuid,\n id: event.data.id\n }, [imageBitmap]);\n } catch (e) {\n self.postMessage({\n error: e,\n uuid: event.data.uuid,\n id: event.data.id\n });\n }\n };\n\n})();\n'],{type:"application/javascript"})),this.worker=new Worker(WORKER_URL$2)}},UUID=(WorkerInstance$2.revokeObjectURL=function(){WORKER_URL$2&&(URL.revokeObjectURL(WORKER_URL$2),WORKER_URL$2=null)},0),MAX_WORKERS;const WorkerManager=new class{constructor(){this._initialized=!1,this._createdWorkers=0,this._workerPool=[],this._queue=[],this._resolveHash={}}isImageBitmapSupported(){return void 0===this._isImageBitmapSupported&&(this._isImageBitmapSupported=new Promise(resolve=>{const worker=(new WorkerInstance$3).worker;worker.addEventListener("message",event=>{worker.terminate(),WorkerInstance$3.revokeObjectURL(),resolve(event.data)})})),this._isImageBitmapSupported}loadImageBitmap(src,asset){return this._run("loadImageBitmap",[src,null==(src=null==asset?void 0:asset.data)?void 0:src.alphaMode])}async _initWorkers(){this._initialized||(this._initialized=!0)}_getWorker(){void 0===MAX_WORKERS&&(MAX_WORKERS=navigator.hardwareConcurrency||4);let worker=this._workerPool.pop();return!worker&&this._createdWorkers<MAX_WORKERS&&(this._createdWorkers++,(worker=(new WorkerInstance$2).worker).addEventListener("message",event=>{this._complete(event.data),this._returnWorker(event.target),this._next()})),worker}_returnWorker(worker){this._workerPool.push(worker)}_complete(data){void 0!==data.error?this._resolveHash[data.uuid].reject(data.error):this._resolveHash[data.uuid].resolve(data.data),this._resolveHash[data.uuid]=null}async _run(id,args){await this._initWorkers();var promise=new Promise((resolve,reject)=>{this._queue.push({id:id,arguments:args,resolve:resolve,reject:reject})});return this._next(),promise}_next(){var worker,toDo,id;this._queue.length&&(worker=this._getWorker())&&(id=(toDo=this._queue.pop()).id,this._resolveHash[UUID]={resolve:toDo.resolve,reject:toDo.reject},worker.postMessage({data:toDo.arguments,uuid:UUID++,id:id}))}};var __defProp$D=Object.defineProperty,__getOwnPropSymbols$D=Object.getOwnPropertySymbols,__hasOwnProp$D=Object.prototype.hasOwnProperty,__propIsEnum$D=Object.prototype.propertyIsEnumerable,__defNormalProp$D=(obj,key,value)=>key in obj?__defProp$D(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;const validImageExtensions=[".jpeg",".jpg",".png",".webp",".avif"],validImageMIMEs=["image/jpeg","image/png","image/webp","image/avif"];async function loadImageBitmap(url,asset){var imageBlob,response=await DOMAdapter.get().fetch(url);if(response.ok)return imageBlob=await response.blob(),"premultiplied-alpha"===(null==(asset=null==asset?void 0:asset.data)?void 0:asset.alphaMode)?createImageBitmap(imageBlob,{premultiplyAlpha:"none"}):createImageBitmap(imageBlob);throw new Error(`[loadImageBitmap] Failed to fetch ${url}: ${response.status} `+response.statusText)}var loadTextures={name:"loadTextures",extension:{type:ExtensionType2.LoadParser,priority:LoaderParserPriority2.High,name:"loadTextures"},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(url){return checkDataUrl(url,validImageMIMEs)||checkExtension(url,validImageExtensions)},async load(url,asset,loader){var _a;let src=null;return src=globalThis.createImageBitmap&&this.config.preferCreateImageBitmap?this.config.preferWorkers&&await WorkerManager.isImageBitmapSupported()?await WorkerManager.loadImageBitmap(url,asset):await loadImageBitmap(url,asset):await new Promise((resolve,reject)=>{(src=new Image).crossOrigin=this.config.crossOrigin,src.src=url,src.complete?resolve(src):(src.onload=()=>{resolve(src)},src.onerror=reject)}),createTexture(new ImageSource(((a,b)=>{for(var prop in b=asset.data||{})__hasOwnProp$D.call(b,prop)&&__defNormalProp$D(a,prop,b[prop]);if(__getOwnPropSymbols$D)for(var prop of __getOwnPropSymbols$D(b))__propIsEnum$D.call(b,prop)&&__defNormalProp$D(a,prop,b[prop]);return a})({resource:src,alphaMode:"premultiply-alpha-on-upload",resolution:(null==(_a=asset.data)?void 0:_a.resolution)||getResolutionOfUrl(url)})),loader,url)},unload(texture){texture.destroy(!0)}},__defProp$C=Object.defineProperty,__defProps$i=Object.defineProperties,__getOwnPropDescs$i=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$C=Object.getOwnPropertySymbols,__hasOwnProp$C=Object.prototype.hasOwnProperty,__propIsEnum$C=Object.prototype.propertyIsEnumerable,__defNormalProp$C=(obj,key,value)=>key in obj?__defProp$C(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$C=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$C.call(b,prop)&&__defNormalProp$C(a,prop,b[prop]);if(__getOwnPropSymbols$C)for(var prop of __getOwnPropSymbols$C(b))__propIsEnum$C.call(b,prop)&&__defNormalProp$C(a,prop,b[prop]);return a},__spreadProps$i=(a,b)=>__defProps$i(a,__getOwnPropDescs$i(b));const validVideoExtensions=[".mp4",".m4v",".webm",".ogg",".ogv",".h264",".avi",".mov"],validVideoMIMEs=validVideoExtensions.map(ext=>"video/"+ext.substring(1));function crossOrigin(element,url,crossorigin){void 0!==crossorigin||url.startsWith("data:")?!1!==crossorigin&&(element.crossOrigin="string"==typeof crossorigin?crossorigin:"anonymous"):element.crossOrigin=determineCrossOrigin(url)}function preloadVideo(element){return new Promise((resolve,reject)=>{function loaded(){cleanup(),resolve()}function error(err){cleanup(),reject(err)}function cleanup(){element.removeEventListener("canplaythrough",loaded),element.removeEventListener("error",error)}element.addEventListener("canplaythrough",loaded),element.addEventListener("error",error),element.load()})}function determineCrossOrigin(url,loc=globalThis.location){return url.startsWith("data:")||(loc=loc||globalThis.location,(url=new URL(url,document.baseURI)).hostname===loc.hostname&&url.port===loc.port&&url.protocol===loc.protocol)?"":"anonymous"}var loadVideoTextures={name:"loadVideo",extension:{type:ExtensionType2.LoadParser,name:"loadVideo"},test(url){var isValidDataUrl=checkDataUrl(url,validVideoMIMEs),url=checkExtension(url,validVideoExtensions);return isValidDataUrl||url},async load(url,asset,loader){var _a;const options=__spreadValues$C(__spreadProps$i(__spreadValues$C({},VideoSource.defaultOptions),{resolution:(null==(_a=asset.data)?void 0:_a.resolution)||getResolutionOfUrl(url),alphaMode:(null==(_a=asset.data)?void 0:_a.alphaMode)||await detectVideoAlphaMode()}),asset.data),videoElement=document.createElement("video"),attributeMap={preload:!1!==options.autoLoad?"auto":void 0,"webkit-playsinline":!1!==options.playsinline?"":void 0,playsinline:!1!==options.playsinline?"":void 0,muted:!0===options.muted?"":void 0,loop:!0===options.loop?"":void 0,autoplay:!1!==options.autoPlay?"":void 0},sourceElement=(Object.keys(attributeMap).forEach(key=>{var value=attributeMap[key];void 0!==value&&videoElement.setAttribute(key,value)}),!0===options.muted&&(videoElement.muted=!0),crossOrigin(videoElement,url,options.crossorigin),document.createElement("source"));let mime;return url.startsWith("data:")?mime=url.slice(5,url.indexOf(";")):url.startsWith("blob:")||(_a=url.split("?")[0].slice(url.lastIndexOf(".")+1).toLowerCase(),mime=VideoSource.MIME_TYPES[_a]||"video/"+_a),sourceElement.src=url,mime&&(sourceElement.type=mime),new Promise(resolve=>{const onCanPlay=async()=>{var base=new VideoSource(__spreadProps$i(__spreadValues$C({},options),{resource:videoElement}));videoElement.removeEventListener("canplay",onCanPlay),asset.data.preload&&await preloadVideo(videoElement),resolve(createTexture(base,loader,url))};videoElement.addEventListener("canplay",onCanPlay),videoElement.appendChild(sourceElement)})},unload(texture){texture.destroy(!0)}},resolveTextureUrl={extension:{type:ExtensionType2.ResolveParser,name:"resolveTexture"},test:loadTextures.test,parse:value=>{var _a;return{resolution:parseFloat(null!=(_a=null==(_a=Resolver.RETINA_PREFIX.exec(value))?void 0:_a[1])?_a:"1"),format:value.split(".").pop(),src:value}}},resolveJsonUrl={extension:{type:ExtensionType2.ResolveParser,priority:-2,name:"resolveJson"},test:value=>Resolver.RETINA_PREFIX.test(value)&&value.endsWith(".json"),parse:resolveTextureUrl.parse};class AssetsClass{constructor(){this._detections=[],this._initialized=!1,this.resolver=new Resolver,this.loader=new Loader,this.cache=Cache,this._backgroundLoader=new BackgroundLoader(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(options={}){if(this._initialized)warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");else{if(this._initialized=!0,options.defaultSearchParams&&this.resolver.setDefaultSearchParams(options.defaultSearchParams),options.basePath&&(this.resolver.basePath=options.basePath),options.bundleIdentifier&&this.resolver.setBundleIdentifier(options.bundleIdentifier),options.manifest){let manifest=options.manifest;"string"==typeof manifest&&(manifest=await this.load(manifest)),this.resolver.addManifest(manifest)}var _a="number"==typeof(_a=null!=(_a=null==(_a=options.texturePreference)?void 0:_a.resolution)?_a:1)?[_a]:_a,_c=await this._detectFormats({preferredFormats:null==(_c=options.texturePreference)?void 0:_c.format,skipDetections:options.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:_c,resolution:_a}}),options.preferences&&this.setPreferences(options.preferences)}}add(assets){this.resolver.add(assets)}async load(urls,onProgress){this._initialized||await this.init();var singleAsset=isSingleItem(urls),urls=convertToList(urls).map(url=>{var aliases;return"string"!=typeof url?((aliases=this.resolver.getAlias(url)).some(alias=>!this.resolver.hasKey(alias))&&this.add(url),Array.isArray(aliases)?aliases[0]:aliases):(this.resolver.hasKey(url)||this.add({alias:url,src:url}),url)}),resolveResults=this.resolver.resolve(urls),resolveResults=await this._mapLoadToResolve(resolveResults,onProgress);return singleAsset?resolveResults[urls[0]]:resolveResults}addBundle(bundleId,assets){this.resolver.addBundle(bundleId,assets)}async loadBundle(bundleIds,onProgress){this._initialized||await this.init();let singleAsset=!1;"string"==typeof bundleIds&&(singleAsset=!0,bundleIds=[bundleIds]);const resolveResults=this.resolver.resolveBundle(bundleIds),out={};var keys=Object.keys(resolveResults);let count=0,total=0;const _onProgress=()=>{null!=onProgress&&onProgress(++count/total)};return keys=keys.map(bundleId=>{var resolveResult=resolveResults[bundleId];return total+=Object.keys(resolveResult).length,this._mapLoadToResolve(resolveResult,_onProgress).then(resolveResult2=>{out[bundleId]=resolveResult2})}),await Promise.all(keys),singleAsset?out[bundleIds[0]]:out}async backgroundLoad(urls){this._initialized||await this.init(),urls=this.resolver.resolve(urls="string"==typeof urls?[urls]:urls),this._backgroundLoader.add(Object.values(urls))}async backgroundLoadBundle(bundleIds){this._initialized||await this.init(),bundleIds=this.resolver.resolveBundle(bundleIds="string"==typeof bundleIds?[bundleIds]:bundleIds),Object.values(bundleIds).forEach(resolveResult=>{this._backgroundLoader.add(Object.values(resolveResult))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(keys){if("string"==typeof keys)return Cache.get(keys);var assets={};for(let i=0;i<keys.length;i++)assets[i]=Cache.get(keys[i]);return assets}async _mapLoadToResolve(resolveResults,onProgress){resolveResults=[...new Set(Object.values(resolveResults))],this._backgroundLoader.active=!1;const loadedAssets=await this.loader.load(resolveResults,onProgress),out=(this._backgroundLoader.active=!0,{});return resolveResults.forEach(resolveResult=>{const asset=loadedAssets[resolveResult.src];var keys=[resolveResult.src];resolveResult.alias&&keys.push(...resolveResult.alias),keys.forEach(key=>{out[key]=asset}),Cache.set(keys,asset)}),out}async unload(urls){this._initialized||await this.init(),urls=convertToList(urls).map(url=>"string"!=typeof url?url.src:url),urls=this.resolver.resolve(urls),await this._unloadFromResolved(urls)}async unloadBundle(bundleIds){this._initialized||await this.init(),bundleIds=convertToList(bundleIds);const resolveResults=this.resolver.resolveBundle(bundleIds);bundleIds=Object.keys(resolveResults).map(bundleId=>this._unloadFromResolved(resolveResults[bundleId])),await Promise.all(bundleIds)}async _unloadFromResolved(resolveResult){(resolveResult=Object.values(resolveResult)).forEach(resolveResult2=>{Cache.remove(resolveResult2.src)}),await this.loader.unload(resolveResult)}async _detectFormats(options){let formats=[];options.preferredFormats&&(formats=Array.isArray(options.preferredFormats)?options.preferredFormats:[options.preferredFormats]);for(const detection of options.detections)options.skipDetections||await detection.test()?formats=await detection.add(formats):options.skipDetections||(formats=await detection.remove(formats));return formats=formats.filter((format,index)=>formats.indexOf(format)===index)}get detections(){return this._detections}setPreferences(preferences){this.loader.parsers.forEach(parser=>{parser.config&&Object.keys(parser.config).filter(key=>key in preferences).forEach(key=>{parser.config[key]=preferences[key]})})}}var Assets=new AssetsClass;extensions.handleByList(ExtensionType2.LoadParser,Assets.loader.parsers).handleByList(ExtensionType2.ResolveParser,Assets.resolver.parsers).handleByList(ExtensionType2.CacheParser,Assets.cache.parsers).handleByList(ExtensionType2.DetectionParser,Assets.detections),extensions.add(cacheTextureArray,detectDefaults,detectAvif,detectWebp,detectMp4,detectOgv,detectWebm,loadJson,loadTxt,loadWebFont,loadSvg,loadTextures,loadVideoTextures,CLEAR2,__spreadValues$M,resolveTextureUrl,resolveJsonUrl);const assetKeyMap={loader:ExtensionType2.LoadParser,resolver:ExtensionType2.ResolveParser,cache:ExtensionType2.CacheParser,detection:ExtensionType2.DetectionParser};extensions.handle(ExtensionType2.Asset,extension=>{const ref=extension.ref;Object.entries(assetKeyMap).filter(([key])=>!!ref[key]).forEach(([key,type])=>extensions.add(Object.assign(ref[key],{extension:null!=(key=ref[key].extension)?key:type})))},extension=>{const ref=extension.ref;Object.keys(assetKeyMap).filter(key=>!!ref[key]).forEach(key=>extensions.remove(ref[key]))});var detectBasis={extension:{type:ExtensionType2.DetectionParser,priority:3},test:async()=>!!await isWebGPUSupported()||!!isWebGLSupported(),add:async formats=>[...formats,"basis"],remove:async formats=>formats.filter(f=>"basis"!==f)};class CompressedSource extends TextureSource{constructor(options){super(options),this.uploadMethodId="compressed",this.resource=options.resource,this.mipLevelCount=this.resource.length}}let supportedGLCompressedTextureFormats;function getSupportedGlCompressedTextureFormats(){if(!supportedGLCompressedTextureFormats){var gl=document.createElement("canvas").getContext("webgl");if(!gl)return[];supportedGLCompressedTextureFormats=[...gl.getExtension("EXT_texture_compression_bptc")?["bc6h-rgb-ufloat","bc6h-rgb-float","bc7-rgba-unorm","bc7-rgba-unorm-srgb"]:[],...gl.getExtension("WEBGL_compressed_texture_s3tc")?["bc1-rgba-unorm","bc2-rgba-unorm","bc3-rgba-unorm"]:[],...gl.getExtension("WEBGL_compressed_texture_s3tc_srgb")?["bc1-rgba-unorm-srgb","bc2-rgba-unorm-srgb","bc3-rgba-unorm-srgb"]:[],...gl.getExtension("EXT_texture_compression_rgtc")?["bc4-r-unorm","bc4-r-snorm","bc5-rg-unorm","bc5-rg-snorm"]:[],...gl.getExtension("WEBGL_compressed_texture_etc")?["etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","eac-r11unorm","eac-rg11unorm"]:[],...gl.getExtension("WEBGL_compressed_texture_astc")?["astc-4x4-unorm","astc-4x4-unorm-srgb","astc-5x4-unorm","astc-5x4-unorm-srgb","astc-5x5-unorm","astc-5x5-unorm-srgb","astc-6x5-unorm","astc-6x5-unorm-srgb","astc-6x6-unorm","astc-6x6-unorm-srgb","astc-8x5-unorm","astc-8x5-unorm-srgb","astc-8x6-unorm","astc-8x6-unorm-srgb","astc-8x8-unorm","astc-8x8-unorm-srgb","astc-10x5-unorm","astc-10x5-unorm-srgb","astc-10x6-unorm","astc-10x6-unorm-srgb","astc-10x8-unorm","astc-10x8-unorm-srgb","astc-10x10-unorm","astc-10x10-unorm-srgb","astc-12x10-unorm","astc-12x10-unorm-srgb","astc-12x12-unorm","astc-12x12-unorm-srgb"]:[]]}return supportedGLCompressedTextureFormats}let supportedGPUCompressedTextureFormats;async function getSupportedGPUCompressedTextureFormats(){var adapter;return supportedGPUCompressedTextureFormats||(adapter=await DOMAdapter.get().getNavigator().gpu.requestAdapter(),supportedGPUCompressedTextureFormats=[...adapter.features.has("texture-compression-bc")?["bc1-rgba-unorm","bc1-rgba-unorm-srgb","bc2-rgba-unorm","bc2-rgba-unorm-srgb","bc3-rgba-unorm","bc3-rgba-unorm-srgb","bc4-r-unorm","bc4-r-snorm","bc5-rg-unorm","bc5-rg-snorm","bc6h-rgb-ufloat","bc6h-rgb-float","bc7-rgba-unorm","bc7-rgba-unorm-srgb"]:[],...adapter.features.has("texture-compression-etc2")?["etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","eac-r11unorm","eac-r11snorm","eac-rg11unorm","eac-rg11snorm"]:[],...adapter.features.has("texture-compression-astc")?["astc-4x4-unorm","astc-4x4-unorm-srgb","astc-5x4-unorm","astc-5x4-unorm-srgb","astc-5x5-unorm","astc-5x5-unorm-srgb","astc-6x5-unorm","astc-6x5-unorm-srgb","astc-6x6-unorm","astc-6x6-unorm-srgb","astc-8x5-unorm","astc-8x5-unorm-srgb","astc-8x6-unorm","astc-8x6-unorm-srgb","astc-8x8-unorm","astc-8x8-unorm-srgb","astc-10x5-unorm","astc-10x5-unorm-srgb","astc-10x6-unorm","astc-10x6-unorm-srgb","astc-10x8-unorm","astc-10x8-unorm-srgb","astc-10x10-unorm","astc-10x10-unorm-srgb","astc-12x10-unorm","astc-12x10-unorm-srgb","astc-12x12-unorm","astc-12x12-unorm-srgb"]:[]]),supportedGPUCompressedTextureFormats}let supportedCompressedTextureFormats;async function getSupportedCompressedTextureFormats(){return supportedCompressedTextureFormats=void 0===supportedCompressedTextureFormats?await(async()=>{var _isWebGPUSupported=await isWebGPUSupported(),_isWebGLSupported=isWebGLSupported();if(_isWebGPUSupported&&_isWebGLSupported){var gpuTextureFormats=await getSupportedGPUCompressedTextureFormats();const glTextureFormats=getSupportedGlCompressedTextureFormats();return gpuTextureFormats.filter(format=>glTextureFormats.includes(format))}return _isWebGPUSupported?getSupportedGPUCompressedTextureFormats():_isWebGLSupported?getSupportedGlCompressedTextureFormats():[]})():supportedCompressedTextureFormats}const nonCompressedFormats=["r8unorm","r8snorm","r8uint","r8sint","r16uint","r16sint","r16float","rg8unorm","rg8snorm","rg8uint","rg8sint","r32uint","r32sint","r32float","rg16uint","rg16sint","rg16float","rgba8unorm","rgba8unorm-srgb","rgba8snorm","rgba8uint","rgba8sint","bgra8unorm","bgra8unorm-srgb","rgb9e5ufloat","rgb10a2unorm","rg11b10ufloat","rg32uint","rg32sint","rg32float","rgba16uint","rgba16sint","rgba16float","rgba32uint","rgba32sint","rgba32float","stencil8","depth16unorm","depth24plus","depth24plus-stencil8","depth32float","depth32float-stencil8"];let supportedTextureFormats;async function getSupportedTextureFormats(){var compressedTextureFormats;return void 0===supportedTextureFormats&&(compressedTextureFormats=await getSupportedCompressedTextureFormats(),supportedTextureFormats=[...nonCompressedFormats,...compressedTextureFormats]),supportedTextureFormats}let WORKER_URL$1=null,WorkerInstance$1=class{constructor(){WORKER_URL$1=WORKER_URL$1||URL.createObjectURL(new Blob(['(function () {\n \'use strict\';\n\n function createLevelBuffers(basisTexture, basisTranscoderFormat) {\n const images = basisTexture.getNumImages();\n const levels = basisTexture.getNumLevels(0);\n const success = basisTexture.startTranscoding();\n if (!success) {\n throw new Error("startTranscoding failed");\n }\n const levelBuffers = [];\n for (let levelIndex = 0; levelIndex < levels; ++levelIndex) {\n for (let sliceIndex = 0; sliceIndex < images; ++sliceIndex) {\n const transcodeSize = basisTexture.getImageTranscodedSizeInBytes(sliceIndex, levelIndex, basisTranscoderFormat);\n const levelBuffer = new Uint8Array(transcodeSize);\n const success2 = basisTexture.transcodeImage(levelBuffer, sliceIndex, levelIndex, basisTranscoderFormat, 1, 0);\n if (!success2) {\n throw new Error("transcodeImage failed");\n }\n levelBuffers.push(levelBuffer);\n }\n }\n return levelBuffers;\n }\n\n const gpuFormatToBasisTranscoderFormatMap = {\n "bc3-rgba-unorm": 3,\n // cTFBC3_RGBA\n "bc7-rgba-unorm": 6,\n // cTFBC7_RGBA,\n "etc2-rgba8unorm": 1,\n // cTFETC2_RGBA,\n "astc-4x4-unorm": 10,\n // cTFASTC_4x4_RGBA,\n // Uncompressed\n rgba8unorm: 13,\n // cTFRGBA32,\n rgba4unorm: 16\n // cTFRGBA4444,\n };\n function gpuFormatToBasisTranscoderFormat(transcoderFormat) {\n const format = gpuFormatToBasisTranscoderFormatMap[transcoderFormat];\n if (format) {\n return format;\n }\n throw new Error(`Unsupported transcoderFormat: ${transcoderFormat}`);\n }\n\n const settings = {\n jsUrl: "basis/basis_transcoder.js",\n wasmUrl: "basis/basis_transcoder.wasm"\n };\n let basisTranscoderFormat;\n let basisTranscodedTextureFormat;\n let basisPromise;\n async function getBasis() {\n if (!basisPromise) {\n const absoluteJsUrl = new URL(settings.jsUrl, location.origin).href;\n const absoluteWasmUrl = new URL(settings.wasmUrl, location.origin).href;\n importScripts(absoluteJsUrl);\n basisPromise = new Promise((resolve) => {\n BASIS({\n locateFile: (_file) => absoluteWasmUrl\n }).then((module) => {\n module.initializeBasis();\n resolve(module.BasisFile);\n });\n });\n }\n return basisPromise;\n }\n async function fetchBasisTexture(url, BasisTexture) {\n const basisResponse = await fetch(url);\n if (basisResponse.ok) {\n const basisArrayBuffer = await basisResponse.arrayBuffer();\n return new BasisTexture(new Uint8Array(basisArrayBuffer));\n }\n throw new Error(`Failed to load Basis texture: ${url}`);\n }\n const preferredTranscodedFormat = [\n "bc7-rgba-unorm",\n "astc-4x4-unorm",\n "etc2-rgba8unorm",\n "bc3-rgba-unorm",\n "rgba8unorm"\n ];\n async function load(url) {\n const BasisTexture = await getBasis();\n const basisTexture = await fetchBasisTexture(url, BasisTexture);\n const levelBuffers = createLevelBuffers(basisTexture, basisTranscoderFormat);\n return {\n width: basisTexture.getImageWidth(0, 0),\n height: basisTexture.getImageHeight(0, 0),\n format: basisTranscodedTextureFormat,\n resource: levelBuffers,\n alphaMode: "no-premultiply-alpha"\n };\n }\n async function init(jsUrl, wasmUrl, supportedTextures) {\n if (jsUrl)\n settings.jsUrl = jsUrl;\n if (wasmUrl)\n settings.wasmUrl = wasmUrl;\n basisTranscodedTextureFormat = preferredTranscodedFormat.filter((format) => supportedTextures.includes(format))[0];\n basisTranscoderFormat = gpuFormatToBasisTranscoderFormat(basisTranscodedTextureFormat);\n await getBasis();\n }\n const messageHandlers = {\n init: async (data) => {\n const { jsUrl, wasmUrl, supportedTextures } = data;\n await init(jsUrl, wasmUrl, supportedTextures);\n },\n load: async (data) => {\n var _a;\n try {\n const textureOptions = await load(data.url);\n return {\n type: "load",\n url: data.url,\n success: true,\n textureOptions,\n transferables: (_a = textureOptions.resource) == null ? void 0 : _a.map((arr) => arr.buffer)\n };\n } catch (e) {\n throw e;\n }\n }\n };\n self.onmessage = async (messageEvent) => {\n const message = messageEvent.data;\n const response = await messageHandlers[message.type](message);\n if (response) {\n self.postMessage(response, response.transferables);\n }\n };\n\n})();\n'],{type:"application/javascript"})),this.worker=new Worker(WORKER_URL$1)}};WorkerInstance$1.revokeObjectURL=function(){WORKER_URL$1&&(URL.revokeObjectURL(WORKER_URL$1),WORKER_URL$1=null)};const basisTranscoderUrls={jsUrl:"https://files.pixijs.download/transcoders/basis/basis_transcoder.js",wasmUrl:"https://files.pixijs.download/transcoders/basis/basis_transcoder.wasm"};let basisWorker;const urlHash$1={};function loadBasisOnWorker(url,supportedTextures){const ktxWorker=function(supportedTextures){return basisWorker||((basisWorker=(new WorkerInstance$1).worker).onmessage=messageEvent=>{var{success:messageEvent,url,textureOptions}=messageEvent.data;messageEvent||console.warn("Failed to load Basis texture",url),urlHash$1[url](textureOptions)},basisWorker.postMessage({type:"init",jsUrl:basisTranscoderUrls.jsUrl,wasmUrl:basisTranscoderUrls.wasmUrl,supportedTextures:supportedTextures})),basisWorker}(supportedTextures);return new Promise(resolve=>{urlHash$1[url]=resolve,ktxWorker.postMessage({type:"load",url:url})})}var D3DFMT2,DXGI_FORMAT2,D3D10_RESOURCE_DIMENSION2,loadBasis={extension:{type:ExtensionType2.LoadParser,priority:LoaderParserPriority2.High,name:"loadBasis"},name:"loadBasis",test(url){return checkExtension(url,[".basis"])},async load(url,_asset,loader){var textureOptions=await loadBasisOnWorker(url,await getSupportedTextureFormats());return createTexture(new CompressedSource(textureOptions),loader,url)},unload(texture){Array.isArray(texture)?texture.forEach(t=>t.destroy(!0)):texture.destroy(!0)}};const gpuFormatToBasisTranscoderFormatMap$1={"bc3-rgba-unorm":3,"bc7-rgba-unorm":6,"etc2-rgba8unorm":1,"astc-4x4-unorm":10,rgba8unorm:13,rgba4unorm:16};function fourCCToInt32(value){return value.charCodeAt(0)+(value.charCodeAt(1)<<8)+(value.charCodeAt(2)<<16)+(value.charCodeAt(3)<<24)}DXGI_FORMAT2={DXGI_FORMAT_UNKNOWN:0,0:"DXGI_FORMAT_UNKNOWN",DXGI_FORMAT_R32G32B32A32_TYPELESS:1,1:"DXGI_FORMAT_R32G32B32A32_TYPELESS",DXGI_FORMAT_R32G32B32A32_FLOAT:2,2:"DXGI_FORMAT_R32G32B32A32_FLOAT",DXGI_FORMAT_R32G32B32A32_UINT:3,3:"DXGI_FORMAT_R32G32B32A32_UINT",DXGI_FORMAT_R32G32B32A32_SINT:4,4:"DXGI_FORMAT_R32G32B32A32_SINT",DXGI_FORMAT_R32G32B32_TYPELESS:5,5:"DXGI_FORMAT_R32G32B32_TYPELESS",DXGI_FORMAT_R32G32B32_FLOAT:6,6:"DXGI_FORMAT_R32G32B32_FLOAT",DXGI_FORMAT_R32G32B32_UINT:7,7:"DXGI_FORMAT_R32G32B32_UINT",DXGI_FORMAT_R32G32B32_SINT:8,8:"DXGI_FORMAT_R32G32B32_SINT",DXGI_FORMAT_R16G16B16A16_TYPELESS:9,9:"DXGI_FORMAT_R16G16B16A16_TYPELESS",DXGI_FORMAT_R16G16B16A16_FLOAT:10,10:"DXGI_FORMAT_R16G16B16A16_FLOAT",DXGI_FORMAT_R16G16B16A16_UNORM:11,11:"DXGI_FORMAT_R16G16B16A16_UNORM",DXGI_FORMAT_R16G16B16A16_UINT:12,12:"DXGI_FORMAT_R16G16B16A16_UINT",DXGI_FORMAT_R16G16B16A16_SNORM:13,13:"DXGI_FORMAT_R16G16B16A16_SNORM",DXGI_FORMAT_R16G16B16A16_SINT:14,14:"DXGI_FORMAT_R16G16B16A16_SINT",DXGI_FORMAT_R32G32_TYPELESS:15,15:"DXGI_FORMAT_R32G32_TYPELESS",DXGI_FORMAT_R32G32_FLOAT:16,16:"DXGI_FORMAT_R32G32_FLOAT",DXGI_FORMAT_R32G32_UINT:17,17:"DXGI_FORMAT_R32G32_UINT",DXGI_FORMAT_R32G32_SINT:18,18:"DXGI_FORMAT_R32G32_SINT",DXGI_FORMAT_R32G8X24_TYPELESS:19,19:"DXGI_FORMAT_R32G8X24_TYPELESS",DXGI_FORMAT_D32_FLOAT_S8X24_UINT:20,20:"DXGI_FORMAT_D32_FLOAT_S8X24_UINT",DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:21,21:"DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS",DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:22,22:"DXGI_FORMAT_X32_TYPELESS_G8X24_UINT",DXGI_FORMAT_R10G10B10A2_TYPELESS:23,23:"DXGI_FORMAT_R10G10B10A2_TYPELESS",DXGI_FORMAT_R10G10B10A2_UNORM:24,24:"DXGI_FORMAT_R10G10B10A2_UNORM",DXGI_FORMAT_R10G10B10A2_UINT:25,25:"DXGI_FORMAT_R10G10B10A2_UINT",DXGI_FORMAT_R11G11B10_FLOAT:26,26:"DXGI_FORMAT_R11G11B10_FLOAT",DXGI_FORMAT_R8G8B8A8_TYPELESS:27,27:"DXGI_FORMAT_R8G8B8A8_TYPELESS",DXGI_FORMAT_R8G8B8A8_UNORM:28,28:"DXGI_FORMAT_R8G8B8A8_UNORM",DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:29,29:"DXGI_FORMAT_R8G8B8A8_UNORM_SRGB",DXGI_FORMAT_R8G8B8A8_UINT:30,30:"DXGI_FORMAT_R8G8B8A8_UINT",DXGI_FORMAT_R8G8B8A8_SNORM:31,31:"DXGI_FORMAT_R8G8B8A8_SNORM",DXGI_FORMAT_R8G8B8A8_SINT:32,32:"DXGI_FORMAT_R8G8B8A8_SINT",DXGI_FORMAT_R16G16_TYPELESS:33,33:"DXGI_FORMAT_R16G16_TYPELESS",DXGI_FORMAT_R16G16_FLOAT:34,34:"DXGI_FORMAT_R16G16_FLOAT",DXGI_FORMAT_R16G16_UNORM:35,35:"DXGI_FORMAT_R16G16_UNORM",DXGI_FORMAT_R16G16_UINT:36,36:"DXGI_FORMAT_R16G16_UINT",DXGI_FORMAT_R16G16_SNORM:37,37:"DXGI_FORMAT_R16G16_SNORM",DXGI_FORMAT_R16G16_SINT:38,38:"DXGI_FORMAT_R16G16_SINT",DXGI_FORMAT_R32_TYPELESS:39,39:"DXGI_FORMAT_R32_TYPELESS",DXGI_FORMAT_D32_FLOAT:40,40:"DXGI_FORMAT_D32_FLOAT",DXGI_FORMAT_R32_FLOAT:41,41:"DXGI_FORMAT_R32_FLOAT",DXGI_FORMAT_R32_UINT:42,42:"DXGI_FORMAT_R32_UINT",DXGI_FORMAT_R32_SINT:43,43:"DXGI_FORMAT_R32_SINT",DXGI_FORMAT_R24G8_TYPELESS:44,44:"DXGI_FORMAT_R24G8_TYPELESS",DXGI_FORMAT_D24_UNORM_S8_UINT:45,45:"DXGI_FORMAT_D24_UNORM_S8_UINT",DXGI_FORMAT_R24_UNORM_X8_TYPELESS:46,46:"DXGI_FORMAT_R24_UNORM_X8_TYPELESS",DXGI_FORMAT_X24_TYPELESS_G8_UINT:47,47:"DXGI_FORMAT_X24_TYPELESS_G8_UINT",DXGI_FORMAT_R8G8_TYPELESS:48,48:"DXGI_FORMAT_R8G8_TYPELESS",DXGI_FORMAT_R8G8_UNORM:49,49:"DXGI_FORMAT_R8G8_UNORM",DXGI_FORMAT_R8G8_UINT:50,50:"DXGI_FORMAT_R8G8_UINT",DXGI_FORMAT_R8G8_SNORM:51,51:"DXGI_FORMAT_R8G8_SNORM",DXGI_FORMAT_R8G8_SINT:52,52:"DXGI_FORMAT_R8G8_SINT",DXGI_FORMAT_R16_TYPELESS:53,53:"DXGI_FORMAT_R16_TYPELESS",DXGI_FORMAT_R16_FLOAT:54,54:"DXGI_FORMAT_R16_FLOAT",DXGI_FORMAT_D16_UNORM:55,55:"DXGI_FORMAT_D16_UNORM",DXGI_FORMAT_R16_UNORM:56,56:"DXGI_FORMAT_R16_UNORM",DXGI_FORMAT_R16_UINT:57,57:"DXGI_FORMAT_R16_UINT",DXGI_FORMAT_R16_SNORM:58,58:"DXGI_FORMAT_R16_SNORM",DXGI_FORMAT_R16_SINT:59,59:"DXGI_FORMAT_R16_SINT",DXGI_FORMAT_R8_TYPELESS:60,60:"DXGI_FORMAT_R8_TYPELESS",DXGI_FORMAT_R8_UNORM:61,61:"DXGI_FORMAT_R8_UNORM",DXGI_FORMAT_R8_UINT:62,62:"DXGI_FORMAT_R8_UINT",DXGI_FORMAT_R8_SNORM:63,63:"DXGI_FORMAT_R8_SNORM",DXGI_FORMAT_R8_SINT:64,64:"DXGI_FORMAT_R8_SINT",DXGI_FORMAT_A8_UNORM:65,65:"DXGI_FORMAT_A8_UNORM",DXGI_FORMAT_R1_UNORM:66,66:"DXGI_FORMAT_R1_UNORM",DXGI_FORMAT_R9G9B9E5_SHAREDEXP:67,67:"DXGI_FORMAT_R9G9B9E5_SHAREDEXP",DXGI_FORMAT_R8G8_B8G8_UNORM:68,68:"DXGI_FORMAT_R8G8_B8G8_UNORM",DXGI_FORMAT_G8R8_G8B8_UNORM:69,69:"DXGI_FORMAT_G8R8_G8B8_UNORM",DXGI_FORMAT_BC1_TYPELESS:70,70:"DXGI_FORMAT_BC1_TYPELESS",DXGI_FORMAT_BC1_UNORM:71,71:"DXGI_FORMAT_BC1_UNORM",DXGI_FORMAT_BC1_UNORM_SRGB:72,72:"DXGI_FORMAT_BC1_UNORM_SRGB",DXGI_FORMAT_BC2_TYPELESS:73,73:"DXGI_FORMAT_BC2_TYPELESS",DXGI_FORMAT_BC2_UNORM:74,74:"DXGI_FORMAT_BC2_UNORM",DXGI_FORMAT_BC2_UNORM_SRGB:75,75:"DXGI_FORMAT_BC2_UNORM_SRGB",DXGI_FORMAT_BC3_TYPELESS:76,76:"DXGI_FORMAT_BC3_TYPELESS",DXGI_FORMAT_BC3_UNORM:77,77:"DXGI_FORMAT_BC3_UNORM",DXGI_FORMAT_BC3_UNORM_SRGB:78,78:"DXGI_FORMAT_BC3_UNORM_SRGB",DXGI_FORMAT_BC4_TYPELESS:79,79:"DXGI_FORMAT_BC4_TYPELESS",DXGI_FORMAT_BC4_UNORM:80,80:"DXGI_FORMAT_BC4_UNORM",DXGI_FORMAT_BC4_SNORM:81,81:"DXGI_FORMAT_BC4_SNORM",DXGI_FORMAT_BC5_TYPELESS:82,82:"DXGI_FORMAT_BC5_TYPELESS",DXGI_FORMAT_BC5_UNORM:83,83:"DXGI_FORMAT_BC5_UNORM",DXGI_FORMAT_BC5_SNORM:84,84:"DXGI_FORMAT_BC5_SNORM",DXGI_FORMAT_B5G6R5_UNORM:85,85:"DXGI_FORMAT_B5G6R5_UNORM",DXGI_FORMAT_B5G5R5A1_UNORM:86,86:"DXGI_FORMAT_B5G5R5A1_UNORM",DXGI_FORMAT_B8G8R8A8_UNORM:87,87:"DXGI_FORMAT_B8G8R8A8_UNORM",DXGI_FORMAT_B8G8R8X8_UNORM:88,88:"DXGI_FORMAT_B8G8R8X8_UNORM",DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:89,89:"DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM",DXGI_FORMAT_B8G8R8A8_TYPELESS:90,90:"DXGI_FORMAT_B8G8R8A8_TYPELESS",DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:91,91:"DXGI_FORMAT_B8G8R8A8_UNORM_SRGB",DXGI_FORMAT_B8G8R8X8_TYPELESS:92,92:"DXGI_FORMAT_B8G8R8X8_TYPELESS",DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:93,93:"DXGI_FORMAT_B8G8R8X8_UNORM_SRGB",DXGI_FORMAT_BC6H_TYPELESS:94,94:"DXGI_FORMAT_BC6H_TYPELESS",DXGI_FORMAT_BC6H_UF16:95,95:"DXGI_FORMAT_BC6H_UF16",DXGI_FORMAT_BC6H_SF16:96,96:"DXGI_FORMAT_BC6H_SF16",DXGI_FORMAT_BC7_TYPELESS:97,97:"DXGI_FORMAT_BC7_TYPELESS",DXGI_FORMAT_BC7_UNORM:98,98:"DXGI_FORMAT_BC7_UNORM",DXGI_FORMAT_BC7_UNORM_SRGB:99,99:"DXGI_FORMAT_BC7_UNORM_SRGB",DXGI_FORMAT_AYUV:100,100:"DXGI_FORMAT_AYUV",DXGI_FORMAT_Y410:101,101:"DXGI_FORMAT_Y410",DXGI_FORMAT_Y416:102,102:"DXGI_FORMAT_Y416",DXGI_FORMAT_NV12:103,103:"DXGI_FORMAT_NV12",DXGI_FORMAT_P010:104,104:"DXGI_FORMAT_P010",DXGI_FORMAT_P016:105,105:"DXGI_FORMAT_P016",DXGI_FORMAT_420_OPAQUE:106,106:"DXGI_FORMAT_420_OPAQUE",DXGI_FORMAT_YUY2:107,107:"DXGI_FORMAT_YUY2",DXGI_FORMAT_Y210:108,108:"DXGI_FORMAT_Y210",DXGI_FORMAT_Y216:109,109:"DXGI_FORMAT_Y216",DXGI_FORMAT_NV11:110,110:"DXGI_FORMAT_NV11",DXGI_FORMAT_AI44:111,111:"DXGI_FORMAT_AI44",DXGI_FORMAT_IA44:112,112:"DXGI_FORMAT_IA44",DXGI_FORMAT_P8:113,113:"DXGI_FORMAT_P8",DXGI_FORMAT_A8P8:114,114:"DXGI_FORMAT_A8P8",DXGI_FORMAT_B4G4R4A4_UNORM:115,115:"DXGI_FORMAT_B4G4R4A4_UNORM",DXGI_FORMAT_P208:116,116:"DXGI_FORMAT_P208",DXGI_FORMAT_V208:117,117:"DXGI_FORMAT_V208",DXGI_FORMAT_V408:118,118:"DXGI_FORMAT_V408",DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE:119,119:"DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE",DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE:120,120:"DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE",DXGI_FORMAT_FORCE_UINT:121,121:"DXGI_FORMAT_FORCE_UINT"},D3D10_RESOURCE_DIMENSION2={DDS_DIMENSION_TEXTURE1D:2,2:"DDS_DIMENSION_TEXTURE1D",DDS_DIMENSION_TEXTURE2D:3,3:"DDS_DIMENSION_TEXTURE2D",DDS_DIMENSION_TEXTURE3D:6,6:"DDS_DIMENSION_TEXTURE3D"},(D3DFMT2={UNKNOWN:0,0:"UNKNOWN",R8G8B8:20,20:"R8G8B8",A8R8G8B8:21,21:"A8R8G8B8",X8R8G8B8:22,22:"X8R8G8B8",R5G6B5:23,23:"R5G6B5",X1R5G5B5:24,24:"X1R5G5B5",A1R5G5B5:25,25:"A1R5G5B5",A4R4G4B4:26,26:"A4R4G4B4",R3G3B2:27,27:"R3G3B2",A8:28,28:"A8",A8R3G3B2:29,29:"A8R3G3B2",X4R4G4B4:30,30:"X4R4G4B4",A2B10G10R10:31,31:"A2B10G10R10",A8B8G8R8:32,32:"A8B8G8R8",X8B8G8R8:33,33:"X8B8G8R8",G16R16:34,34:"G16R16",A2R10G10B10:35,35:"A2R10G10B10",A16B16G16R16:36,36:"A16B16G16R16",A8P8:40,40:"A8P8",P8:41,41:"P8",L8:50,50:"L8",A8L8:51,51:"A8L8",A4L4:52,52:"A4L4",V8U8:60,60:"V8U8",L6V5U5:61,61:"L6V5U5",X8L8V8U8:62,62:"X8L8V8U8",Q8W8V8U8:63,63:"Q8W8V8U8",V16U16:64,64:"V16U16",A2W10V10U10:67,67:"A2W10V10U10",Q16W16V16U16:110,110:"Q16W16V16U16",R16F:111,111:"R16F",G16R16F:112,112:"G16R16F",A16B16G16R16F:113,113:"A16B16G16R16F",R32F:114,114:"R32F",G32R32F:115,115:"G32R32F",A32B32G32R32F:116,116:"A32B32G32R32F"})[D3DFMT2.UYVY=fourCCToInt32("UYVY")]="UYVY",D3DFMT2[D3DFMT2.R8G8_B8G8=fourCCToInt32("RGBG")]="R8G8_B8G8",D3DFMT2[D3DFMT2.YUY2=fourCCToInt32("YUY2")]="YUY2",D3DFMT2[D3DFMT2.D3DFMT_G8R8_G8B8=fourCCToInt32("GRGB")]="D3DFMT_G8R8_G8B8",D3DFMT2[D3DFMT2.DXT1=fourCCToInt32("DXT1")]="DXT1",D3DFMT2[D3DFMT2.DXT2=fourCCToInt32("DXT2")]="DXT2",D3DFMT2[D3DFMT2.DXT3=fourCCToInt32("DXT3")]="DXT3",D3DFMT2[D3DFMT2.DXT4=fourCCToInt32("DXT4")]="DXT4",D3DFMT2[D3DFMT2.DXT5=fourCCToInt32("DXT5")]="DXT5",D3DFMT2[D3DFMT2.ATI1=fourCCToInt32("ATI1")]="ATI1",D3DFMT2[D3DFMT2.AT1N=fourCCToInt32("AT1N")]="AT1N",D3DFMT2[D3DFMT2.ATI2=fourCCToInt32("ATI2")]="ATI2",D3DFMT2[D3DFMT2.AT2N=fourCCToInt32("AT2N")]="AT2N",D3DFMT2[D3DFMT2.BC4U=fourCCToInt32("BC4U")]="BC4U",D3DFMT2[D3DFMT2.BC4S=fourCCToInt32("BC4S")]="BC4S",D3DFMT2[D3DFMT2.BC5U=fourCCToInt32("BC5U")]="BC5U",D3DFMT2[D3DFMT2.BC5S=fourCCToInt32("BC5S")]="BC5S",D3DFMT2[D3DFMT2.DX10=fourCCToInt32("DX10")]="DX10";const FOURCC_TO_TEXTURE_FORMAT={[D3DFMT2.DXT1]:"bc1-rgba-unorm",[D3DFMT2.DXT2]:"bc2-rgba-unorm",[D3DFMT2.DXT3]:"bc2-rgba-unorm",[D3DFMT2.DXT4]:"bc3-rgba-unorm",[D3DFMT2.DXT5]:"bc3-rgba-unorm",[D3DFMT2.ATI1]:"bc4-r-unorm",[D3DFMT2.BC4U]:"bc4-r-unorm",[D3DFMT2.BC4S]:"bc4-r-snorm",[D3DFMT2.ATI2]:"bc5-rg-unorm",[D3DFMT2.BC5U]:"bc5-rg-unorm",[D3DFMT2.BC5S]:"bc5-rg-snorm",36:"rgba16uint",110:"rgba16sint",111:"r16float",112:"rg16float",113:"rgba16float",114:"r32float",115:"rg32float",116:"rgba32float"},DXGI_TO_TEXTURE_FORMAT={[70]:"bc1-rgba-unorm",71:"bc1-rgba-unorm",72:"bc1-rgba-unorm-srgb",73:"bc2-rgba-unorm",74:"bc2-rgba-unorm",75:"bc2-rgba-unorm-srgb",76:"bc3-rgba-unorm",77:"bc3-rgba-unorm",78:"bc3-rgba-unorm-srgb",79:"bc4-r-unorm",80:"bc4-r-unorm",81:"bc4-r-snorm",82:"bc5-rg-unorm",83:"bc5-rg-unorm",84:"bc5-rg-snorm",94:"bc6h-rgb-ufloat",95:"bc6h-rgb-ufloat",96:"bc6h-rgb-float",97:"bc7-rgba-unorm",98:"bc7-rgba-unorm",99:"bc7-rgba-unorm-srgb",28:"rgba8unorm",29:"rgba8unorm-srgb",87:"bgra8unorm",91:"bgra8unorm-srgb",41:"r32float",49:"rg8unorm",56:"r16uint",61:"r8unorm",24:"rgb10a2unorm",11:"rgba16uint",13:"rgba16sint",10:"rgba16float",54:"r16float",34:"rg16float",16:"rg32float",2:"rgba32float"},DDS={MAGIC_VALUE:542327876,MAGIC_SIZE:4,HEADER_SIZE:124,HEADER_DX10_SIZE:20,PIXEL_FORMAT_FLAGS:{ALPHAPIXELS:1,ALPHA:2,FOURCC:4,RGB:64,RGBA:65,YUV:512,LUMINANCE:131072,LUMINANCEA:131073},RESOURCE_MISC_TEXTURECUBE:4,HEADER_FIELDS:{MAGIC:0,SIZE:1,FLAGS:2,HEIGHT:3,WIDTH:4,MIPMAP_COUNT:7,PIXEL_FORMAT:19,PF_FLAGS:20,FOURCC:21,RGB_BITCOUNT:22,R_BIT_MASK:23,G_BIT_MASK:24,B_BIT_MASK:25,A_BIT_MASK:26},HEADER_DX10_FIELDS:{DXGI_FORMAT:0,RESOURCE_DIMENSION:1,MISC_FLAG:2,ARRAY_SIZE:3,MISC_FLAGS2:4},DXGI_FORMAT:DXGI_FORMAT2,D3D10_RESOURCE_DIMENSION:D3D10_RESOURCE_DIMENSION2,D3DFMT:D3DFMT2},TEXTURE_FORMAT_BLOCK_SIZE={"bc1-rgba-unorm":8,"bc1-rgba-unorm-srgb":8,"bc2-rgba-unorm":16,"bc2-rgba-unorm-srgb":16,"bc3-rgba-unorm":16,"bc3-rgba-unorm-srgb":16,"bc4-r-unorm":8,"bc4-r-snorm":8,"bc5-rg-unorm":16,"bc5-rg-snorm":16,"bc6h-rgb-ufloat":16,"bc6h-rgb-float":16,"bc7-rgba-unorm":16,"bc7-rgba-unorm-srgb":16};function parseDDS(arrayBuffer,supportedFormats){var{format,fourCC,width,height,dataOffset,mipmapCount}=function(buffer){var header=new Uint32Array(buffer,0,DDS.HEADER_SIZE/Uint32Array.BYTES_PER_ELEMENT);if(header[DDS.HEADER_FIELDS.MAGIC]!==DDS.MAGIC_VALUE)throw new Error("Invalid magic number in DDS header");var height=header[DDS.HEADER_FIELDS.HEIGHT],width=header[DDS.HEADER_FIELDS.WIDTH],mipmapCount=Math.max(1,header[DDS.HEADER_FIELDS.MIPMAP_COUNT]),flags=header[DDS.HEADER_FIELDS.PF_FLAGS],fourCC=header[DDS.HEADER_FIELDS.FOURCC];return{format:function(header,flags,fourCC,buffer){if(flags&DDS.PIXEL_FORMAT_FLAGS.FOURCC){if(fourCC===DDS.D3DFMT.DX10){if((buffer=new Uint32Array(buffer,DDS.MAGIC_SIZE+DDS.HEADER_SIZE,DDS.HEADER_DX10_SIZE/Uint32Array.BYTES_PER_ELEMENT))[DDS.HEADER_DX10_FIELDS.MISC_FLAG]===DDS.RESOURCE_MISC_TEXTURECUBE)throw new Error("DDSParser does not support cubemap textures");if(buffer[DDS.HEADER_DX10_FIELDS.RESOURCE_DIMENSION]===DDS.D3D10_RESOURCE_DIMENSION.DDS_DIMENSION_TEXTURE3D)throw new Error("DDSParser does not supported 3D texture data");if((buffer=buffer[DDS.HEADER_DX10_FIELDS.DXGI_FORMAT])in DXGI_TO_TEXTURE_FORMAT)return DXGI_TO_TEXTURE_FORMAT[buffer];throw new Error("DDSParser cannot parse texture data with DXGI format "+buffer)}if(fourCC in FOURCC_TO_TEXTURE_FORMAT)return FOURCC_TO_TEXTURE_FORMAT[fourCC];throw new Error("DDSParser cannot parse texture data with fourCC format "+fourCC)}if(flags&DDS.PIXEL_FORMAT_FLAGS.RGB||flags&DDS.PIXEL_FORMAT_FLAGS.RGBA)return function(header){var bitCount=header[DDS.HEADER_FIELDS.RGB_BITCOUNT],rBitMask=header[DDS.HEADER_FIELDS.R_BIT_MASK],gBitMask=header[DDS.HEADER_FIELDS.G_BIT_MASK],bBitMask=header[DDS.HEADER_FIELDS.B_BIT_MASK],aBitMask=header[DDS.HEADER_FIELDS.A_BIT_MASK];switch(bitCount){case 32:if(255===rBitMask&&65280===gBitMask&&16711680===bBitMask&&4278190080===aBitMask)return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_R8G8B8A8_UNORM];if(16711680===rBitMask&&65280===gBitMask&&255===bBitMask&&4278190080===aBitMask)return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_B8G8R8A8_UNORM];if(1072693248===rBitMask&&1047552===gBitMask&&1023===bBitMask&&3221225472===aBitMask)return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_R10G10B10A2_UNORM];if(65535===rBitMask&&4294901760===gBitMask&&0===bBitMask&&0===aBitMask)return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_R16G16_UNORM];if(4294967295===rBitMask&&0===gBitMask&&0===bBitMask&&0===aBitMask)return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_R32_FLOAT];break;case 24:break;case 16:if(31744===rBitMask&&992===gBitMask&&31===bBitMask&&32768===aBitMask)return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_B5G5R5A1_UNORM];if(63488===rBitMask&&2016===gBitMask&&31===bBitMask&&0===aBitMask)return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_B5G6R5_UNORM];if(3840===rBitMask&&240===gBitMask&&15===bBitMask&&61440===aBitMask)return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_B4G4R4A4_UNORM];if(255===rBitMask&&0===gBitMask&&0===bBitMask&&65280===aBitMask)return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_R8G8_UNORM];if(65535===rBitMask&&0===gBitMask&&0===bBitMask&&0===aBitMask)return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_R16_UNORM];break;case 8:if(255===rBitMask&&0===gBitMask&&0===bBitMask&&0===aBitMask)return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_R8_UNORM]}throw new Error(`DDSParser does not support uncompressed texture with configuration:
bitCount = ${bitCount}, rBitMask = ${rBitMask}, gBitMask = ${gBitMask}, aBitMask = `+aBitMask)}(header);if(flags&DDS.PIXEL_FORMAT_FLAGS.YUV)throw new Error("DDSParser does not supported YUV uncompressed texture data.");if(flags&DDS.PIXEL_FORMAT_FLAGS.LUMINANCE||flags&DDS.PIXEL_FORMAT_FLAGS.LUMINANCEA)throw new Error("DDSParser does not support single-channel (lumninance) texture data!");if(flags&DDS.PIXEL_FORMAT_FLAGS.ALPHA||flags&DDS.PIXEL_FORMAT_FLAGS.ALPHAPIXELS)throw new Error("DDSParser does not support single-channel (alpha) texture data!");throw new Error("DDSParser failed to load a texture file due to an unknown reason!")}(header,flags,fourCC,buffer),fourCC:fourCC,width:width,height:height,dataOffset:DDS.MAGIC_SIZE+DDS.HEADER_SIZE+(fourCC===DDS.D3DFMT.DX10?DDS.HEADER_DX10_SIZE:0),mipmapCount:mipmapCount}}(arrayBuffer);if(supportedFormats.includes(format))return mipmapCount<=1?{format:format,width:width,height:height,resource:[new Uint8Array(arrayBuffer,dataOffset)],alphaMode:"no-premultiply-alpha"}:{format:format,width:width,height:height,resource:function(format,width,height,dataOffset,mipmapCount,arrayBuffer){var levelBuffers=[],blockBytes=TEXTURE_FORMAT_BLOCK_SIZE[format];let mipWidth=width,mipHeight=height,offset=dataOffset;for(let level=0;level<mipmapCount;++level){var alignedWidth=4*Math.ceil(Math.max(4,mipWidth)/4),alignedHeight=4*Math.ceil(Math.max(4,mipHeight)/4),alignedWidth=blockBytes?alignedWidth/4*alignedHeight/4*blockBytes:mipWidth*mipHeight*4,alignedHeight=new Uint8Array(arrayBuffer,offset,alignedWidth);levelBuffers.push(alignedHeight),offset+=alignedWidth,mipWidth=Math.max(mipWidth>>1,1),mipHeight=Math.max(mipHeight>>1,1)}return levelBuffers}(format,width,height,dataOffset,mipmapCount,arrayBuffer),alphaMode:"no-premultiply-alpha"};throw new Error(`Unsupported texture format: ${fourCC} ${format}, supported: `+supportedFormats)}var loadDDS={extension:{type:ExtensionType2.LoadParser,priority:LoaderParserPriority2.High,name:"loadDDS"},name:"loadDDS",test(url){return checkExtension(url,[".dds"])},async load(url,_asset,loader){var supportedTextures=await getSupportedTextureFormats(),supportedTextures=parseDDS(await(await fetch(url)).arrayBuffer(),supportedTextures);return createTexture(new CompressedSource(supportedTextures),loader,url)},unload(texture){Array.isArray(texture)?texture.forEach(t=>t.destroy(!0)):texture.destroy(!0)}};const KTX={FILE_HEADER_SIZE:64,FILE_IDENTIFIER:[171,75,84,88,32,49,49,187,13,10,26,10],FORMATS_TO_COMPONENTS:{[6408]:4,6407:3,33319:2,6403:1,6409:1,6410:2,6406:1},INTERNAL_FORMAT_TO_BYTES_PER_PIXEL:{[33776]:.5,33777:.5,33778:1,33779:1,35916:.5,35917:.5,35918:1,35919:1,36283:.5,36284:.5,36285:1,36286:1,37488:.5,37489:.5,37490:1,37491:1,37492:.5,37496:1,37493:.5,37497:1,37494:.5,37495:.5,37808:1,37840:1,37809:.8,37841:.8,37810:.64,37842:.64,37811:.53375,37843:.53375,37812:.445,37844:.445,37813:.4,37845:.4,37814:.33375,37846:.33375,37815:.25,37847:.25,37816:.32,37848:.32,37817:.26625,37849:.26625,37818:.2,37850:.2,37819:.16,37851:.16,37820:.13375,37852:.13375,37821:.11125,37853:.11125,36492:1,36493:1,36494:1,36495:1},INTERNAL_FORMAT_TO_TEXTURE_FORMATS:{[33776]:"bc1-rgba-unorm",33777:"bc1-rgba-unorm",33778:"bc2-rgba-unorm",33779:"bc3-rgba-unorm",35916:"bc1-rgba-unorm-srgb",35917:"bc1-rgba-unorm-srgb",35918:"bc2-rgba-unorm-srgb",35919:"bc3-rgba-unorm-srgb",36283:"bc4-r-unorm",36284:"bc4-r-snorm",36285:"bc5-rg-unorm",36286:"bc5-rg-snorm",37488:"eac-r11unorm",37490:"eac-rg11snorm",37492:"etc2-rgb8unorm",37496:"etc2-rgba8unorm",37493:"etc2-rgb8unorm-srgb",37497:"etc2-rgba8unorm-srgb",37494:"etc2-rgb8a1unorm",37495:"etc2-rgb8a1unorm-srgb",37808:"astc-4x4-unorm",37840:"astc-4x4-unorm-srgb",37809:"astc-5x4-unorm",37841:"astc-5x4-unorm-srgb",37810:"astc-5x5-unorm",37842:"astc-5x5-unorm-srgb",37811:"astc-6x5-unorm",37843:"astc-6x5-unorm-srgb",37812:"astc-6x6-unorm",37844:"astc-6x6-unorm-srgb",37813:"astc-8x5-unorm",37845:"astc-8x5-unorm-srgb",37814:"astc-8x6-unorm",37846:"astc-8x6-unorm-srgb",37815:"astc-8x8-unorm",37847:"astc-8x8-unorm-srgb",37816:"astc-10x5-unorm",37848:"astc-10x5-unorm-srgb",37817:"astc-10x6-unorm",37849:"astc-10x6-unorm-srgb",37818:"astc-10x8-unorm",37850:"astc-10x8-unorm-srgb",37819:"astc-10x10-unorm",37851:"astc-10x10-unorm-srgb",37820:"astc-12x10-unorm",37852:"astc-12x10-unorm-srgb",37821:"astc-12x12-unorm",37853:"astc-12x12-unorm-srgb",36492:"bc7-rgba-unorm",36493:"bc7-rgba-unorm-srgb",36494:"bc6h-rgb-float",36495:"bc6h-rgb-ufloat",35907:"rgba8unorm-srgb",36759:"rgba8snorm",36220:"rgba8uint",36238:"rgba8sint",6408:"rgba8unorm"},FIELDS:{FILE_IDENTIFIER:0,ENDIANNESS:12,GL_TYPE:16,GL_TYPE_SIZE:20,GL_FORMAT:24,GL_INTERNAL_FORMAT:28,GL_BASE_INTERNAL_FORMAT:32,PIXEL_WIDTH:36,PIXEL_HEIGHT:40,PIXEL_DEPTH:44,NUMBER_OF_ARRAY_ELEMENTS:48,NUMBER_OF_FACES:52,NUMBER_OF_MIPMAP_LEVELS:56,BYTES_OF_KEY_VALUE_DATA:60},TYPES_TO_BYTES_PER_COMPONENT:{[5121]:1,5123:2,5124:4,5125:4,5126:4,36193:8},TYPES_TO_BYTES_PER_PIXEL:{[32819]:2,32820:2,33635:2},ENDIANNESS:67305985};function parseKTX(arrayBuffer,supportedFormats){if(!function(dataView){for(let i=0;i<KTX.FILE_IDENTIFIER.length;i++)if(dataView.getUint8(i)!==KTX.FILE_IDENTIFIER[i])return;return 1}(arrayBuffer=new DataView(arrayBuffer)))throw new Error("Invalid KTX identifier in header");var{littleEndian,glType,glFormat,glInternalFormat,pixelWidth,pixelHeight,numberOfMipmapLevels,offset}=function(dataView){var littleEndian=dataView.getUint32(KTX.FIELDS.ENDIANNESS,!0)===KTX.ENDIANNESS,glType=dataView.getUint32(KTX.FIELDS.GL_TYPE,littleEndian),glFormat=dataView.getUint32(KTX.FIELDS.GL_FORMAT,littleEndian),glInternalFormat=dataView.getUint32(KTX.FIELDS.GL_INTERNAL_FORMAT,littleEndian),pixelWidth=dataView.getUint32(KTX.FIELDS.PIXEL_WIDTH,littleEndian),pixelHeight=dataView.getUint32(KTX.FIELDS.PIXEL_HEIGHT,littleEndian)||1,pixelDepth=dataView.getUint32(KTX.FIELDS.PIXEL_DEPTH,littleEndian)||1,numberOfArrayElements=dataView.getUint32(KTX.FIELDS.NUMBER_OF_ARRAY_ELEMENTS,littleEndian)||1,numberOfFaces=dataView.getUint32(KTX.FIELDS.NUMBER_OF_FACES,littleEndian),numberOfMipmapLevels=dataView.getUint32(KTX.FIELDS.NUMBER_OF_MIPMAP_LEVELS,littleEndian),dataView=dataView.getUint32(KTX.FIELDS.BYTES_OF_KEY_VALUE_DATA,littleEndian);if(0===pixelHeight||1!==pixelDepth)throw new Error("Only 2D textures are supported");if(1!==numberOfFaces)throw new Error("CubeTextures are not supported by KTXLoader yet!");if(1===numberOfArrayElements)return{littleEndian:littleEndian,glType:glType,glFormat:glFormat,glInternalFormat:glInternalFormat,pixelWidth:pixelWidth,pixelHeight:pixelHeight,numberOfMipmapLevels:numberOfMipmapLevels,offset:KTX.FILE_HEADER_SIZE+dataView};throw new Error("WebGL does not support array textures")}(arrayBuffer),textureFormat=KTX.INTERNAL_FORMAT_TO_TEXTURE_FORMATS[glInternalFormat];if(!textureFormat)throw new Error("Unknown texture format "+glInternalFormat);if(supportedFormats.includes(textureFormat))return{format:textureFormat,width:pixelWidth,height:pixelHeight,resource:function(dataView,glType,imagePixelByteSize,pixelWidth,pixelHeight,offset,numberOfMipmapLevels,littleEndian){let imagePixels=pixelWidth*pixelHeight,mipByteSize=(0===glType?(pixelWidth+3&-4)*(pixelHeight+3&-4):imagePixels)*imagePixelByteSize,mipWidth=pixelWidth,mipHeight=pixelHeight,alignedMipWidth,alignedMipHeight,imageOffset=offset;var imageBuffers=new Array(numberOfMipmapLevels);for(let mipmapLevel=0;mipmapLevel<numberOfMipmapLevels;mipmapLevel++){var imageSize=dataView.getUint32(imageOffset,littleEndian),elementOffset=imageOffset+4;imageBuffers[mipmapLevel]=new Uint8Array(dataView.buffer,elementOffset,mipByteSize),mipByteSize,imageOffset=(imageOffset+=imageSize+4)%4!=0?imageOffset+4-imageOffset%4:imageOffset,mipWidth=mipWidth>>1||1,mipHeight=mipHeight>>1||1,alignedMipWidth=mipWidth+4-1&-4,alignedMipHeight=mipHeight+4-1&-4,mipByteSize=alignedMipWidth*alignedMipHeight*imagePixelByteSize}return imageBuffers}(arrayBuffer,glType,function(glType,glFormat,glInternalFormat){if(glInternalFormat=KTX.INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[glInternalFormat],void 0!==(glInternalFormat=0!==glType?KTX.TYPES_TO_BYTES_PER_COMPONENT[glType]?KTX.TYPES_TO_BYTES_PER_COMPONENT[glType]*KTX.FORMATS_TO_COMPONENTS[glFormat]:KTX.TYPES_TO_BYTES_PER_PIXEL[glType]:glInternalFormat))return glInternalFormat;throw new Error("Unable to resolve the pixel format stored in the *.ktx file!")}(glType,glFormat,glInternalFormat),pixelWidth,pixelHeight,offset,numberOfMipmapLevels,littleEndian),alphaMode:"no-premultiply-alpha"};throw new Error(`Unsupported texture format: ${textureFormat}, supportedFormats: `+supportedFormats)}var loadKTX={extension:{type:ExtensionType2.LoadParser,priority:LoaderParserPriority2.High,name:"loadKTX"},name:"loadKTX",test(url){return checkExtension(url,".ktx")},async load(url,_asset,loader){var supportedTextures=await getSupportedTextureFormats(),supportedTextures=parseKTX(await(await fetch(url)).arrayBuffer(),supportedTextures);return createTexture(new CompressedSource(supportedTextures),loader,url)},unload(texture){Array.isArray(texture)?texture.forEach(t=>t.destroy(!0)):texture.destroy(!0)}};let WORKER_URL=null;class WorkerInstance{constructor(){WORKER_URL=WORKER_URL||URL.createObjectURL(new Blob(['(function () {\n \'use strict\';\n\n const converters = {\n rgb8unorm: {\n convertedFormat: "rgba8unorm",\n convertFunction: convertRGBtoRGBA\n },\n "rgb8unorm-srgb": {\n convertedFormat: "rgba8unorm-srgb",\n convertFunction: convertRGBtoRGBA\n }\n };\n function convertFormatIfRequired(textureOptions) {\n const format = textureOptions.format;\n if (converters[format]) {\n const convertFunction = converters[format].convertFunction;\n const levelBuffers = textureOptions.resource;\n for (let i = 0; i < levelBuffers.length; i++) {\n levelBuffers[i] = convertFunction(levelBuffers[i]);\n }\n textureOptions.format = converters[format].convertedFormat;\n }\n }\n function convertRGBtoRGBA(levelBuffer) {\n const pixelCount = levelBuffer.byteLength / 3;\n const levelBufferWithAlpha = new Uint32Array(pixelCount);\n for (let i = 0; i < pixelCount; ++i) {\n levelBufferWithAlpha[i] = levelBuffer[i * 3] + (levelBuffer[i * 3 + 1] << 8) + (levelBuffer[i * 3 + 2] << 16) + 4278190080;\n }\n return new Uint8Array(levelBufferWithAlpha.buffer);\n }\n\n function createLevelBuffersFromKTX(ktxTexture) {\n const levelBuffers = [];\n for (let i = 0; i < ktxTexture.numLevels; i++) {\n const imageData = ktxTexture.getImageData(i, 0, 0);\n const levelBuffer = new Uint8Array(imageData.byteLength);\n levelBuffer.set(imageData);\n levelBuffers.push(levelBuffer);\n }\n return levelBuffers;\n }\n\n const glFormatToGPUFormatMap = {\n 6408: "rgba8unorm",\n 32856: "bgra8unorm",\n //\n 32857: "rgb10a2unorm",\n 33189: "depth16unorm",\n 33190: "depth24plus",\n 33321: "r8unorm",\n 33323: "rg8unorm",\n 33325: "r16float",\n 33326: "r32float",\n 33327: "rg16float",\n 33328: "rg32float",\n 33329: "r8sint",\n 33330: "r8uint",\n 33331: "r16sint",\n 33332: "r16uint",\n 33333: "r32sint",\n 33334: "r32uint",\n 33335: "rg8sint",\n 33336: "rg8uint",\n 33337: "rg16sint",\n 33338: "rg16uint",\n 33339: "rg32sint",\n 33340: "rg32uint",\n 33778: "bc2-rgba-unorm",\n 33779: "bc3-rgba-unorm",\n 34836: "rgba32float",\n 34842: "rgba16float",\n 35056: "depth24plus-stencil8",\n 35898: "rg11b10ufloat",\n 35901: "rgb9e5ufloat",\n 35907: "rgba8unorm-srgb",\n // bgra8unorm-srgb\n 36012: "depth32float",\n 36013: "depth32float-stencil8",\n 36168: "stencil8",\n 36208: "rgba32uint",\n 36214: "rgba16uint",\n 36220: "rgba8uint",\n 36226: "rgba32sint",\n 36232: "rgba16sint",\n 36238: "rgba8sint",\n 36492: "bc7-rgba-unorm",\n 36756: "r8snorm",\n 36757: "rg8snorm",\n 36759: "rgba8snorm",\n 37496: "etc2-rgba8unorm",\n 37808: "astc-4x4-unorm"\n };\n function glFormatToGPUFormat(glInternalFormat) {\n const format = glFormatToGPUFormatMap[glInternalFormat];\n if (format) {\n return format;\n }\n throw new Error(`Unsupported glInternalFormat: ${glInternalFormat}`);\n }\n\n const vkFormatToGPUFormatMap = {\n 23: "rgb8unorm",\n // VK_FORMAT_R8G8B8_UNORM\n 37: "rgba8unorm",\n // VK_FORMAT_R8G8B8A8_UNORM\n 43: "rgba8unorm-srgb"\n // VK_FORMAT_R8G8B8A8_SRGB\n // TODO add more!\n };\n function vkFormatToGPUFormat(vkFormat) {\n const format = vkFormatToGPUFormatMap[vkFormat];\n if (format) {\n return format;\n }\n throw new Error(`Unsupported VkFormat: ${vkFormat}`);\n }\n\n function getTextureFormatFromKTXTexture(ktxTexture) {\n if (ktxTexture.classId === 2) {\n return vkFormatToGPUFormat(ktxTexture.vkFormat);\n }\n return glFormatToGPUFormat(ktxTexture.glInternalformat);\n }\n\n const gpuFormatToBasisTranscoderFormatMap = {\n "bc3-rgba-unorm": "BC3_RGBA",\n "bc7-rgba-unorm": "BC7_M5_RGBA",\n "etc2-rgba8unorm": "ETC2_RGBA",\n "astc-4x4-unorm": "ASTC_4x4_RGBA",\n // Uncompressed\n rgba8unorm: "RGBA32",\n rg11b10ufloat: "R11F_G11F_B10F"\n };\n function gpuFormatToKTXBasisTranscoderFormat(transcoderFormat) {\n const format = gpuFormatToBasisTranscoderFormatMap[transcoderFormat];\n if (format) {\n return format;\n }\n throw new Error(`Unsupported transcoderFormat: ${transcoderFormat}`);\n }\n\n const settings = {\n jsUrl: "",\n wasmUrl: ""\n };\n let basisTranscoderFormat;\n let basisTranscodedTextureFormat;\n let ktxPromise;\n async function getKTX() {\n if (!ktxPromise) {\n const absoluteJsUrl = new URL(settings.jsUrl, location.origin).href;\n const absoluteWasmUrl = new URL(settings.wasmUrl, location.origin).href;\n importScripts(absoluteJsUrl);\n ktxPromise = new Promise((resolve) => {\n LIBKTX({\n locateFile: (_file) => absoluteWasmUrl\n }).then((libktx) => {\n resolve(libktx);\n });\n });\n }\n return ktxPromise;\n }\n async function fetchKTXTexture(url, ktx) {\n const ktx2Response = await fetch(url);\n if (ktx2Response.ok) {\n const ktx2ArrayBuffer = await ktx2Response.arrayBuffer();\n return new ktx.ktxTexture(new Uint8Array(ktx2ArrayBuffer));\n }\n throw new Error(`Failed to load KTX(2) texture: ${url}`);\n }\n const preferredTranscodedFormat = [\n "bc7-rgba-unorm",\n "astc-4x4-unorm",\n "etc2-rgba8unorm",\n "bc3-rgba-unorm",\n "rgba8unorm"\n ];\n async function load(url) {\n const ktx = await getKTX();\n const ktxTexture = await fetchKTXTexture(url, ktx);\n let format;\n if (ktxTexture.needsTranscoding) {\n format = basisTranscodedTextureFormat;\n const transcodeFormat = ktx.TranscodeTarget[basisTranscoderFormat];\n const result = ktxTexture.transcodeBasis(transcodeFormat, 0);\n if (result !== ktx.ErrorCode.SUCCESS) {\n throw new Error("Unable to transcode basis texture.");\n }\n } else {\n format = getTextureFormatFromKTXTexture(ktxTexture);\n }\n const levelBuffers = createLevelBuffersFromKTX(ktxTexture);\n const textureOptions = {\n width: ktxTexture.baseWidth,\n height: ktxTexture.baseHeight,\n format,\n mipLevelCount: ktxTexture.numLevels,\n resource: levelBuffers,\n alphaMode: "no-premultiply-alpha"\n };\n convertFormatIfRequired(textureOptions);\n return textureOptions;\n }\n async function init(jsUrl, wasmUrl, supportedTextures) {\n if (jsUrl)\n settings.jsUrl = jsUrl;\n if (wasmUrl)\n settings.wasmUrl = wasmUrl;\n basisTranscodedTextureFormat = preferredTranscodedFormat.filter((format) => supportedTextures.includes(format))[0];\n basisTranscoderFormat = gpuFormatToKTXBasisTranscoderFormat(basisTranscodedTextureFormat);\n await getKTX();\n }\n const messageHandlers = {\n init: async (data) => {\n const { jsUrl, wasmUrl, supportedTextures } = data;\n await init(jsUrl, wasmUrl, supportedTextures);\n },\n load: async (data) => {\n var _a;\n try {\n const textureOptions = await load(data.url);\n return {\n type: "load",\n url: data.url,\n success: true,\n textureOptions,\n transferables: (_a = textureOptions.resource) == null ? void 0 : _a.map((arr) => arr.buffer)\n };\n } catch (e) {\n throw e;\n }\n }\n };\n self.onmessage = async (messageEvent) => {\n var _a;\n const message = messageEvent.data;\n const response = await ((_a = messageHandlers[message.type]) == null ? void 0 : _a.call(messageHandlers, message));\n if (response) {\n self.postMessage(response, response.transferables);\n }\n };\n\n})();\n'],{type:"application/javascript"})),this.worker=new Worker(WORKER_URL)}}WorkerInstance.revokeObjectURL=function(){WORKER_URL&&(URL.revokeObjectURL(WORKER_URL),WORKER_URL=null)};const ktxTranscoderUrls={jsUrl:"https://files.pixijs.download/transcoders/ktx/libktx.js",wasmUrl:"https://files.pixijs.download/transcoders/ktx/libktx.wasm"};let ktxWorker;const urlHash={};function loadKTX2onWorker(url,supportedTextures){const ktxWorker2=function(supportedTextures){return ktxWorker||((ktxWorker=(new WorkerInstance).worker).onmessage=messageEvent=>{var{success:messageEvent,url,textureOptions}=messageEvent.data;messageEvent||console.warn("Failed to load KTX texture",url),urlHash[url](textureOptions)},ktxWorker.postMessage({type:"init",jsUrl:ktxTranscoderUrls.jsUrl,wasmUrl:ktxTranscoderUrls.wasmUrl,supportedTextures:supportedTextures})),ktxWorker}(supportedTextures);return new Promise(resolve=>{urlHash[url]=resolve,ktxWorker2.postMessage({type:"load",url:url})})}var loadKTX2={extension:{type:ExtensionType2.LoadParser,priority:LoaderParserPriority2.High,name:"loadKTX2"},name:"loadKTX2",test(url){return checkExtension(url,".ktx2")},async load(url,_asset,loader){var textureOptions=await loadKTX2onWorker(url,await getSupportedTextureFormats());return createTexture(new CompressedSource(textureOptions),loader,url)},async unload(texture){Array.isArray(texture)?texture.forEach(t=>t.destroy(!0)):texture.destroy(!0)}};const converters={rgb8unorm:{convertedFormat:"rgba8unorm",convertFunction:convertRGBtoRGBA},"rgb8unorm-srgb":{convertedFormat:"rgba8unorm-srgb",convertFunction:convertRGBtoRGBA}};function convertRGBtoRGBA(levelBuffer){var pixelCount=levelBuffer.byteLength/3,levelBufferWithAlpha=new Uint32Array(pixelCount);for(let i=0;i<pixelCount;++i)levelBufferWithAlpha[i]=levelBuffer[3*i]+(levelBuffer[3*i+1]<<8)+(levelBuffer[3*i+2]<<16)+4278190080;return new Uint8Array(levelBufferWithAlpha.buffer)}const glFormatToGPUFormatMap={6408:"rgba8unorm",32856:"bgra8unorm",32857:"rgb10a2unorm",33189:"depth16unorm",33190:"depth24plus",33321:"r8unorm",33323:"rg8unorm",33325:"r16float",33326:"r32float",33327:"rg16float",33328:"rg32float",33329:"r8sint",33330:"r8uint",33331:"r16sint",33332:"r16uint",33333:"r32sint",33334:"r32uint",33335:"rg8sint",33336:"rg8uint",33337:"rg16sint",33338:"rg16uint",33339:"rg32sint",33340:"rg32uint",33778:"bc2-rgba-unorm",33779:"bc3-rgba-unorm",34836:"rgba32float",34842:"rgba16float",35056:"depth24plus-stencil8",35898:"rg11b10ufloat",35901:"rgb9e5ufloat",35907:"rgba8unorm-srgb",36012:"depth32float",36013:"depth32float-stencil8",36168:"stencil8",36208:"rgba32uint",36214:"rgba16uint",36220:"rgba8uint",36226:"rgba32sint",36232:"rgba16sint",36238:"rgba8sint",36492:"bc7-rgba-unorm",36756:"r8snorm",36757:"rg8snorm",36759:"rgba8snorm",37496:"etc2-rgba8unorm",37808:"astc-4x4-unorm"};function glFormatToGPUFormat(glInternalFormat){var format=glFormatToGPUFormatMap[glInternalFormat];if(format)return format;throw new Error("Unsupported glInternalFormat: "+glInternalFormat)}const vkFormatToGPUFormatMap={23:"rgb8unorm",37:"rgba8unorm",43:"rgba8unorm-srgb"};function vkFormatToGPUFormat(vkFormat){var format=vkFormatToGPUFormatMap[vkFormat];if(format)return format;throw new Error("Unsupported VkFormat: "+vkFormat)}const gpuFormatToBasisTranscoderFormatMap={"bc3-rgba-unorm":"BC3_RGBA","bc7-rgba-unorm":"BC7_M5_RGBA","etc2-rgba8unorm":"ETC2_RGBA","astc-4x4-unorm":"ASTC_4x4_RGBA",rgba8unorm:"RGBA32",rg11b10ufloat:"R11F_G11F_B10F"},validFormats=["basis","bc7","bc6h","astc","etc2","bc5","bc4","bc3","bc2","bc1","eac"];var resolveCompressedTextureUrl={extension:ExtensionType2.ResolveParser,test:value=>checkExtension(value,[".ktx",".ktx2",".dds"]),parse:value=>{let format;var newFormat,splitValue=value.split(".");return 2<splitValue.length?(newFormat=splitValue[splitValue.length-2],validFormats.includes(newFormat)&&(format=newFormat)):format=splitValue[splitValue.length-1],{resolution:parseFloat(null!=(splitValue=null==(newFormat=Resolver.RETINA_PREFIX.exec(value))?void 0:newFormat[1])?splitValue:"1"),format:format,src:value}}};let compressedTextureExtensions;var detectCompressed={extension:{type:ExtensionType2.DetectionParser,priority:2},test:async()=>!!await isWebGPUSupported()||!!isWebGLSupported(),add:async formats=>{var supportedCompressedTextureFormats=await getSupportedCompressedTextureFormats();return[...compressedTextureExtensions=function(){const extensions=["basis"],dupeMap={};return supportedCompressedTextureFormats.forEach(format=>{(format=format.split("-")[0])&&!dupeMap[format]&&(dupeMap[format]=!0,extensions.push(format))}),extensions.sort((a,b)=>(a=validFormats.indexOf(a),b=validFormats.indexOf(b),-1===a?1:-1===b?-1:a-b)),extensions}(),...formats]},remove:async formats=>compressedTextureExtensions?formats.filter(f=>!(f in compressedTextureExtensions)):formats};const tempBounds$2=new Bounds,_Culler=class{cull(container,view,skipUpdateTransform=!0){this._cullRecursive(container,view,skipUpdateTransform)}_cullRecursive(container,view,skipUpdateTransform=!0){var _a;if(container.cullable&&container.measurable&&container.includeInBuild?(_a=null!=(_a=container.cullArea)?_a:getGlobalBounds(container,skipUpdateTransform,tempBounds$2),container.culled=_a.x>=view.x+view.width||_a.y>=view.y+view.height||_a.x+_a.width<=view.x||_a.y+_a.height<=view.y):container.culled=!1,container.cullableChildren&&!container.culled&&container.renderable&&container.measurable&&container.includeInBuild)for(let i=0;i<container.children.length;i++)this._cullRecursive(container.children[i],view,skipUpdateTransform)}};_Culler.shared=new _Culler;let Culler=_Culler;class CullerPlugin{static init(){this._renderRef=this.render.bind(this),this.render=()=>{Culler.shared.cull(this.stage,this.renderer.screen),this.renderer.render({container:this.stage})}}static destroy(){this.render=this._renderRef}}CullerPlugin.extension={priority:10,type:ExtensionType2.Application,name:"culler"};var browserExt={extension:{type:ExtensionType2.Environment,name:"browser",priority:-1},test:()=>!0,load:async()=>{await Promise.resolve().then(function(){return browserAll})}},__defProp$B=Object.defineProperty,__getOwnPropSymbols$B=Object.getOwnPropertySymbols,__hasOwnProp$B=Object.prototype.hasOwnProperty,__propIsEnum$B=Object.prototype.propertyIsEnumerable,__defNormalProp$B=(obj,key,value)=>key in obj?__defProp$B(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$B=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$B.call(b,prop)&&__defNormalProp$B(a,prop,b[prop]);if(__getOwnPropSymbols$B)for(var prop of __getOwnPropSymbols$B(b))__propIsEnum$B.call(b,prop)&&__defNormalProp$B(a,prop,b[prop]);return a};const _Filter=class _Filter extends Shader{constructor(options){super(options=__spreadValues$B(__spreadValues$B({},_Filter.defaultOptions),options)),this.enabled=!0,this._state=State.for2d(),this.blendMode=options.blendMode,this.padding=options.padding,"boolean"==typeof options.antialias?this.antialias=options.antialias?"on":"off":this.antialias=options.antialias,this.resolution=options.resolution,this.blendRequired=options.blendRequired,this.clipToViewport=options.clipToViewport,this.addResource("uTexture",0,1)}apply(filterManager,input,output,clearMode){filterManager.applyFilter(this,input,output,clearMode)}get blendMode(){return this._state.blendMode}set blendMode(value){this._state.blendMode=value}static from(options){var{gpu,gl}=options,options=((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$B.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$B)for(var prop of __getOwnPropSymbols$B(source))exclude.indexOf(prop)<0&&__propIsEnum$B.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["gpu","gl"]);let gpuProgram,glProgram;return gpu&&(gpuProgram=GpuProgram.from(gpu)),gl&&(glProgram=GlProgram.from(gl)),new _Filter(__spreadValues$B({gpuProgram:gpuProgram,glProgram:glProgram},options))}};_Filter.defaultOptions={blendMode:"normal",resolution:1,padding:0,antialias:"off",blendRequired:!1,clipToViewport:!0};var Filter=_Filter,blendTemplateFrag="\nin vec2 vTextureCoord;\nin vec4 vColor;\n\nout vec4 finalColor;\n\nuniform float uBlend;\n\nuniform sampler2D uTexture;\nuniform sampler2D uBackTexture;\n\n{FUNCTIONS}\n\nvoid main()\n{ \n vec4 back = texture(uBackTexture, vTextureCoord);\n vec4 front = texture(uTexture, vTextureCoord);\n float blendedAlpha = front.a + back.a * (1.0 - front.a);\n \n {MAIN}\n}\n",blendTemplateVert="in vec2 aPosition;\nout vec2 vTextureCoord;\nout vec2 backgroundUv;\n\nuniform vec4 uInputSize;\nuniform vec4 uOutputFrame;\nuniform vec4 uOutputTexture;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n \n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n",blendTemplate="\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\nstruct BlendUniforms {\n uBlend:f32,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n@group(0) @binding(1) var uTexture: texture_2d<f32>;\n@group(0) @binding(2) var uSampler : sampler;\n@group(0) @binding(3) var uBackTexture: texture_2d<f32>;\n\n@group(1) @binding(0) var<uniform> blendUniforms : BlendUniforms;\n\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n };\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \n}\n \n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n return VSOutput(\n filterVertexPosition(aPosition),\n filterTextureCoord(aPosition)\n );\n}\n\n{FUNCTIONS}\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>\n) -> @location(0) vec4<f32> {\n\n\n var back = textureSample(uBackTexture, uSampler, uv);\n var front = textureSample(uTexture, uSampler, uv);\n var blendedAlpha = front.a + back.a * (1.0 - front.a);\n \n var out = vec4<f32>(0.0,0.0,0.0,0.0);\n\n {MAIN}\n\n return out;\n}",__defProp$A=Object.defineProperty,__getOwnPropSymbols$A=Object.getOwnPropertySymbols,__hasOwnProp$A=Object.prototype.hasOwnProperty,__propIsEnum$A=Object.prototype.propertyIsEnumerable,__defNormalProp$A=(obj,key,value)=>key in obj?__defProp$A(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$A=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$A.call(b,prop)&&__defNormalProp$A(a,prop,b[prop]);if(__getOwnPropSymbols$A)for(var prop of __getOwnPropSymbols$A(b))__propIsEnum$A.call(b,prop)&&__defNormalProp$A(a,prop,b[prop]);return a};class BlendModeFilter extends Filter{constructor(options){var gpuOptions=options.gpu,gpuOptions=compileBlendModeShader(__spreadValues$A({source:blendTemplate},gpuOptions)),gpuOptions=GpuProgram.from({vertex:{source:gpuOptions,entryPoint:"mainVertex"},fragment:{source:gpuOptions,entryPoint:"mainFragment"}}),options=options.gl,options=compileBlendModeShader(__spreadValues$A({source:blendTemplateFrag},options));super({gpuProgram:gpuOptions,glProgram:GlProgram.from({vertex:blendTemplateVert,fragment:options}),blendRequired:!0,resources:{blendUniforms:new UniformGroup({uBlend:{value:1,type:"f32"}}),uBackTexture:Texture.EMPTY}})}}function compileBlendModeShader(options){var{source:options,functions,main}=options;return options.replace("{FUNCTIONS}",functions).replace("{MAIN}",main)}var vertex$2="in vec2 aPosition;\nout vec2 vTextureCoord;\n\nuniform vec4 uInputSize;\nuniform vec4 uOutputFrame;\nuniform vec4 uOutputTexture;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n \n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n",fragment$4="\nin vec2 vTextureCoord;\n\nout vec4 finalColor;\n\nuniform float uAlpha;\nuniform sampler2D uTexture;\n\nvoid main()\n{\n finalColor = texture(uTexture, vTextureCoord) * uAlpha;\n}\n",source$5="struct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\nstruct AlphaUniforms {\n uAlpha:f32,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n@group(0) @binding(1) var uTexture: texture_2d<f32>;\n@group(0) @binding(2) var uSampler : sampler;\n\n@group(1) @binding(0) var<uniform> alphaUniforms : AlphaUniforms;\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n };\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \n}\n\nfn getSize() -> vec2<f32>\n{\n return gfu.uGlobalFrame.zw;\n}\n \n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n return VSOutput(\n filterVertexPosition(aPosition),\n filterTextureCoord(aPosition)\n );\n}\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n \n var sample = textureSample(uTexture, uSampler, uv);\n \n return sample * alphaUniforms.uAlpha;\n}",__defProp$z=Object.defineProperty,__defProps$h=Object.defineProperties,__getOwnPropDescs$h=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$z=Object.getOwnPropertySymbols,__hasOwnProp$z=Object.prototype.hasOwnProperty,__propIsEnum$z=Object.prototype.propertyIsEnumerable,__defNormalProp$z=(obj,key,value)=>key in obj?__defProp$z(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$z=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$z.call(b,prop)&&__defNormalProp$z(a,prop,b[prop]);if(__getOwnPropSymbols$z)for(var prop of __getOwnPropSymbols$z(b))__propIsEnum$z.call(b,prop)&&__defNormalProp$z(a,prop,b[prop]);return a};const _AlphaFilter=class _AlphaFilter extends Filter{constructor(options){options=__spreadValues$z(__spreadValues$z({},_AlphaFilter.defaultOptions),options);var gpuProgram=GpuProgram.from({vertex:{source:source$5,entryPoint:"mainVertex"},fragment:{source:source$5,entryPoint:"mainFragment"}}),glProgram=GlProgram.from({vertex:vertex$2,fragment:fragment$4,name:"alpha-filter"}),alpha=options.alpha,options=((source2,exclude)=>{var target={};for(prop in source2)__hasOwnProp$z.call(source2,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source2[prop]);if(null!=source2&&__getOwnPropSymbols$z)for(var prop of __getOwnPropSymbols$z(source2))exclude.indexOf(prop)<0&&__propIsEnum$z.call(source2,prop)&&(target[prop]=source2[prop]);return target})(options,["alpha"]),alpha=new UniformGroup({uAlpha:{value:alpha,type:"f32"}});super((options=__spreadValues$z({},options),__defProps$h(options,__getOwnPropDescs$h({gpuProgram:gpuProgram,glProgram:glProgram,resources:{alphaUniforms:alpha}}))))}get alpha(){return this.resources.alphaUniforms.uniforms.uAlpha}set alpha(value){this.resources.alphaUniforms.uniforms.uAlpha=value}};_AlphaFilter.defaultOptions={alpha:1};var AlphaFilter=_AlphaFilter;const GAUSSIAN_VALUES={5:[.153388,.221461,.250301],7:[.071303,.131514,.189879,.214607],9:[.028532,.067234,.124009,.179044,.20236],11:[.0093,.028002,.065984,.121703,.175713,.198596],13:[.002406,.009255,.027867,.065666,.121117,.174868,.197641],15:[489e-6,.002403,.009246,.02784,.065602,.120999,.174697,.197448]},fragTemplate=["in vec2 vBlurTexCoords[%size%];","uniform sampler2D uTexture;","out vec4 finalColor;","void main(void)","{"," finalColor = vec4(0.0);"," %blur%","}"].join("\n");function generateBlurFragSource(kernelSize){var kernel=GAUSSIAN_VALUES[kernelSize],halfLength=kernel.length;let fragSource=fragTemplate,blurLoop="",value;for(let i=0;i<kernelSize;i++){let blur="finalColor += texture(uTexture, vBlurTexCoords[%index%]) * %value%;".replace("%index%",i.toString());(value=i)>=halfLength&&(value=kernelSize-i-1),blur=blur.replace("%value%",kernel[value].toString()),blurLoop=blurLoop+blur+"\n"}return fragSource=(fragSource=fragSource.replace("%blur%",blurLoop)).replace("%size%",kernelSize.toString())}const vertTemplate=`
in vec2 aPosition;
uniform float uStrength;
out vec2 vBlurTexCoords[%size%];
uniform vec4 uInputSize;
uniform vec4 uOutputFrame;
uniform vec4 uOutputTexture;
vec4 filterVertexPosition( void )
{
vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
vec2 filterTextureCoord( void )
{
return aPosition * (uOutputFrame.zw * uInputSize.zw);
}
void main(void)
{
gl_Position = filterVertexPosition();
float pixelStrength = uInputSize.%dimension% * uStrength;
vec2 textureCoord = filterTextureCoord();
%blur%
}`;function generateBlurVertSource(kernelSize,x){var halfLength=Math.ceil(kernelSize/2);let vertSource=vertTemplate,blurLoop="",template;template=x?"vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * pixelStrength, 0.0);":"vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * pixelStrength);";for(let i=0;i<kernelSize;i++){let blur=template.replace("%index%",i.toString());blur=blur.replace("%sampleIndex%",i-(halfLength-1)+".0"),blurLoop=blurLoop+blur+"\n"}return vertSource=(vertSource=(vertSource=vertSource.replace("%blur%",blurLoop)).replace("%size%",kernelSize.toString())).replace("%dimension%",x?"z":"w")}function generateBlurGlProgram(horizontal,kernelSize){var vertex=generateBlurVertSource(kernelSize,horizontal),kernelSize=generateBlurFragSource(kernelSize);return GlProgram.from({vertex:vertex,fragment:kernelSize,name:`blur-${horizontal?"horizontal":"vertical"}-pass-filter`})}var source$4="\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\nstruct BlurUniforms {\n uStrength:f32,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n@group(0) @binding(1) var uTexture: texture_2d<f32>;\n@group(0) @binding(2) var uSampler : sampler;\n\n@group(1) @binding(0) var<uniform> blurUniforms : BlurUniforms;\n\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n %blur-struct%\n };\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \n}\n\nfn getSize() -> vec2<f32>\n{\n return gfu.uGlobalFrame.zw;\n}\n\n\n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n\n let filteredCord = filterTextureCoord(aPosition);\n\n let pixelStrength = gfu.uInputSize.%dimension% * blurUniforms.uStrength;\n\n return VSOutput(\n filterVertexPosition(aPosition),\n %blur-vertex-out%\n );\n}\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n %blur-fragment-in%\n) -> @location(0) vec4<f32> {\n\n var finalColor = vec4(0.0);\n\n %blur-sampling%\n\n return finalColor;\n}";function generateBlurProgram(horizontal,kernelSize){var kernel=GAUSSIAN_VALUES[kernelSize],halfLength=kernel.length,blurStructSource=[],blurOutSource=[],blurSamplingSource=[];for(let i=0;i<kernelSize;i++){blurStructSource[i]=`@location(${i}) offset${i}: vec2<f32>,`,blurOutSource[i]=horizontal?`filteredCord + vec2(${i-halfLength+1} * pixelStrength, 0.0),`:`filteredCord + vec2(0.0, ${i-halfLength+1} * pixelStrength),`;var kernelValue=kernel[i<halfLength?i:kernelSize-i-1].toString();blurSamplingSource[i]=`finalColor += textureSample(uTexture, uSampler, offset${i}) * ${kernelValue};`}var blurStruct=blurStructSource.join("\n"),blurOut=blurOutSource.join("\n"),blurSampling=blurSamplingSource.join("\n"),blurOut=source$4.replace("%blur-struct%",blurStruct).replace("%blur-vertex-out%",blurOut).replace("%blur-fragment-in%",blurStruct).replace("%blur-sampling%",blurSampling).replace("%dimension%",horizontal?"z":"w");return GpuProgram.from({vertex:{source:blurOut,entryPoint:"mainVertex"},fragment:{source:blurOut,entryPoint:"mainFragment"}})}var __defProp$y=Object.defineProperty,__getOwnPropSymbols$y=Object.getOwnPropertySymbols,__hasOwnProp$y=Object.prototype.hasOwnProperty,__propIsEnum$y=Object.prototype.propertyIsEnumerable,__defNormalProp$y=(obj,key,value)=>key in obj?__defProp$y(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$y=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$y.call(b,prop)&&__defNormalProp$y(a,prop,b[prop]);if(__getOwnPropSymbols$y)for(var prop of __getOwnPropSymbols$y(b))__propIsEnum$y.call(b,prop)&&__defNormalProp$y(a,prop,b[prop]);return a};const _BlurFilterPass=class _BlurFilterPass extends Filter{constructor(options){var glProgram=generateBlurGlProgram((options=__spreadValues$y(__spreadValues$y({},_BlurFilterPass.defaultOptions),options)).horizontal,options.kernelSize),gpuProgram=generateBlurProgram(options.horizontal,options.kernelSize);super(__spreadValues$y({glProgram:glProgram,gpuProgram:gpuProgram,resources:{blurUniforms:{uStrength:{value:0,type:"f32"}}}},options)),this.horizontal=options.horizontal,this._quality=0,this.quality=options.quality,this.blur=options.strength,this._uniforms=this.resources.blurUniforms.uniforms}apply(filterManager,input,output,clearMode){if(this._uniforms.uStrength=this.strength/this.passes,1===this.passes)filterManager.applyFilter(this,input,output,clearMode);else{var tempTexture=TexturePool.getSameSizeTexture(input);let flip=input,flop=tempTexture;this._state.blend=!1;var shouldClear=filterManager.renderer.type===RendererType.WEBGPU;for(let i=0;i<this.passes-1;i++){filterManager.applyFilter(this,flip,flop,0===i||shouldClear);var temp=flop;flop=flip,flip=temp}this._state.blend=!0,filterManager.applyFilter(this,flip,output,clearMode),TexturePool.returnTexture(tempTexture)}}get blur(){return this.strength}set blur(value){this.padding=1+2*Math.abs(value),this.strength=value}get quality(){return this._quality}set quality(value){this._quality=value,this.passes=value}};_BlurFilterPass.defaultOptions={strength:8,quality:4,kernelSize:5};let BlurFilterPass=_BlurFilterPass;var __defProp$x=Object.defineProperty,__defProps$g=Object.defineProperties,__getOwnPropDescs$g=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$x=Object.getOwnPropertySymbols,__hasOwnProp$x=Object.prototype.hasOwnProperty,__propIsEnum$x=Object.prototype.propertyIsEnumerable,__defNormalProp$x=(obj,key,value)=>key in obj?__defProp$x(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$x=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$x.call(b,prop)&&__defNormalProp$x(a,prop,b[prop]);if(__getOwnPropSymbols$x)for(var prop of __getOwnPropSymbols$x(b))__propIsEnum$x.call(b,prop)&&__defNormalProp$x(a,prop,b[prop]);return a};class BlurFilter extends Filter{constructor(...args){let options=null!=(_a=args[0])?_a:{};"number"==typeof options&&(deprecation(v8_0_0,"BlurFilter constructor params are now options object. See params: { strength, quality, resolution, kernelSize }"),options={strength:options},void 0!==args[1]&&(options.quality=args[1]),void 0!==args[2]&&(options.resolution=args[2]||"inherit"),void 0!==args[3])&&(options.kernelSize=args[3]);var{strength:_a,strengthX:args,strengthY,quality}=options=__spreadValues$x(__spreadValues$x({},BlurFilterPass.defaultOptions),options),rest=((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$x.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$x)for(var prop of __getOwnPropSymbols$x(source))exclude.indexOf(prop)<0&&__propIsEnum$x.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["strength","strengthX","strengthY","quality"]);super((rest=__spreadValues$x({},rest),__defProps$g(rest,__getOwnPropDescs$g({compatibleRenderers:RendererType.BOTH,resources:{}})))),this._repeatEdgePixels=!1,this.blurXFilter=new BlurFilterPass(__spreadValues$x({horizontal:!0},options)),this.blurYFilter=new BlurFilterPass(__spreadValues$x({horizontal:!1},options)),this.quality=quality,this.strengthX=null!=args?args:_a,this.strengthY=null!=strengthY?strengthY:_a,this.repeatEdgePixels=!1}apply(filterManager,input,output,clearMode){var xStrength=Math.abs(this.blurXFilter.strength),yStrength=Math.abs(this.blurYFilter.strength);xStrength&&yStrength?(xStrength=TexturePool.getSameSizeTexture(input),this.blurXFilter.blendMode="normal",this.blurXFilter.apply(filterManager,input,xStrength,!0),this.blurYFilter.blendMode=this.blendMode,this.blurYFilter.apply(filterManager,xStrength,output,clearMode),TexturePool.returnTexture(xStrength)):(yStrength?(this.blurYFilter.blendMode=this.blendMode,this.blurYFilter):(this.blurXFilter.blendMode=this.blendMode,this.blurXFilter)).apply(filterManager,input,output,clearMode)}updatePadding(){this._repeatEdgePixels?this.padding=0:this.padding=2*Math.max(Math.abs(this.blurXFilter.blur),Math.abs(this.blurYFilter.blur))}get strength(){if(this.strengthX!==this.strengthY)throw new Error("BlurFilter's strengthX and strengthY are different");return this.strengthX}set strength(value){this.blurXFilter.blur=this.blurYFilter.blur=value,this.updatePadding()}get quality(){return this.blurXFilter.quality}set quality(value){this.blurXFilter.quality=this.blurYFilter.quality=value}get strengthX(){return this.blurXFilter.blur}set strengthX(value){this.blurXFilter.blur=value,this.updatePadding()}get strengthY(){return this.blurYFilter.blur}set strengthY(value){this.blurYFilter.blur=value,this.updatePadding()}get blur(){return deprecation("8.3.0","BlurFilter.blur is deprecated, please use BlurFilter.strength instead."),this.strength}set blur(value){deprecation("8.3.0","BlurFilter.blur is deprecated, please use BlurFilter.strength instead."),this.strength=value}get blurX(){return deprecation("8.3.0","BlurFilter.blurX is deprecated, please use BlurFilter.strengthX instead."),this.strengthX}set blurX(value){deprecation("8.3.0","BlurFilter.blurX is deprecated, please use BlurFilter.strengthX instead."),this.strengthX=value}get blurY(){return deprecation("8.3.0","BlurFilter.blurY is deprecated, please use BlurFilter.strengthY instead."),this.strengthY}set blurY(value){deprecation("8.3.0","BlurFilter.blurY is deprecated, please use BlurFilter.strengthY instead."),this.strengthY=value}get repeatEdgePixels(){return this._repeatEdgePixels}set repeatEdgePixels(value){this._repeatEdgePixels=value,this.updatePadding()}}BlurFilter.defaultOptions={strength:8,quality:4,kernelSize:5};var fragment$3="\nin vec2 vTextureCoord;\nin vec4 vColor;\n\nout vec4 finalColor;\n\nuniform float uColorMatrix[20];\nuniform float uAlpha;\n\nuniform sampler2D uTexture;\n\nfloat rand(vec2 co)\n{\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main()\n{\n vec4 color = texture(uTexture, vTextureCoord);\n float randomValue = rand(gl_FragCoord.xy * 0.2);\n float diff = (randomValue - 0.5) * 0.5;\n\n if (uAlpha == 0.0) {\n finalColor = color;\n return;\n }\n\n if (color.a > 0.0) {\n color.rgb /= color.a;\n }\n\n vec4 result;\n\n result.r = (uColorMatrix[0] * color.r);\n result.r += (uColorMatrix[1] * color.g);\n result.r += (uColorMatrix[2] * color.b);\n result.r += (uColorMatrix[3] * color.a);\n result.r += uColorMatrix[4];\n\n result.g = (uColorMatrix[5] * color.r);\n result.g += (uColorMatrix[6] * color.g);\n result.g += (uColorMatrix[7] * color.b);\n result.g += (uColorMatrix[8] * color.a);\n result.g += uColorMatrix[9];\n\n result.b = (uColorMatrix[10] * color.r);\n result.b += (uColorMatrix[11] * color.g);\n result.b += (uColorMatrix[12] * color.b);\n result.b += (uColorMatrix[13] * color.a);\n result.b += uColorMatrix[14];\n\n result.a = (uColorMatrix[15] * color.r);\n result.a += (uColorMatrix[16] * color.g);\n result.a += (uColorMatrix[17] * color.b);\n result.a += (uColorMatrix[18] * color.a);\n result.a += uColorMatrix[19];\n\n vec3 rgb = mix(color.rgb, result.rgb, uAlpha);\n\n // Premultiply alpha again.\n rgb *= result.a;\n\n finalColor = vec4(rgb, result.a);\n}\n",source$3="struct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\nstruct ColorMatrixUniforms {\n uColorMatrix:array<vec4<f32>, 5>,\n uAlpha:f32,\n};\n\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n@group(0) @binding(1) var uTexture: texture_2d<f32>;\n@group(0) @binding(2) var uSampler : sampler;\n@group(1) @binding(0) var<uniform> colorMatrixUniforms : ColorMatrixUniforms;\n\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>,\n };\n \nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n return VSOutput(\n filterVertexPosition(aPosition),\n filterTextureCoord(aPosition),\n );\n}\n\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n) -> @location(0) vec4<f32> {\n\n\n var c = textureSample(uTexture, uSampler, uv);\n \n if (colorMatrixUniforms.uAlpha == 0.0) {\n return c;\n }\n\n \n // Un-premultiply alpha before applying the color matrix. See issue #3539.\n if (c.a > 0.0) {\n c.r /= c.a;\n c.g /= c.a;\n c.b /= c.a;\n }\n\n var cm = colorMatrixUniforms.uColorMatrix;\n\n\n var result = vec4<f32>(0.);\n\n result.r = (cm[0][0] * c.r);\n result.r += (cm[0][1] * c.g);\n result.r += (cm[0][2] * c.b);\n result.r += (cm[0][3] * c.a);\n result.r += cm[1][0];\n\n result.g = (cm[1][1] * c.r);\n result.g += (cm[1][2] * c.g);\n result.g += (cm[1][3] * c.b);\n result.g += (cm[2][0] * c.a);\n result.g += cm[2][1];\n\n result.b = (cm[2][2] * c.r);\n result.b += (cm[2][3] * c.g);\n result.b += (cm[3][0] * c.b);\n result.b += (cm[3][1] * c.a);\n result.b += cm[3][2];\n\n result.a = (cm[3][3] * c.r);\n result.a += (cm[4][0] * c.g);\n result.a += (cm[4][1] * c.b);\n result.a += (cm[4][2] * c.a);\n result.a += cm[4][3];\n\n var rgb = mix(c.rgb, result.rgb, colorMatrixUniforms.uAlpha);\n\n rgb.r *= result.a;\n rgb.g *= result.a;\n rgb.b *= result.a;\n\n return vec4(rgb, result.a);\n}",__defProp$w=Object.defineProperty,__defProps$f=Object.defineProperties,__getOwnPropDescs$f=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$w=Object.getOwnPropertySymbols,__hasOwnProp$w=Object.prototype.hasOwnProperty,__propIsEnum$w=Object.prototype.propertyIsEnumerable,__defNormalProp$w=(obj,key,value)=>key in obj?__defProp$w(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class ColorMatrixFilter extends Filter{constructor(options={}){var colorMatrixUniforms=new UniformGroup({uColorMatrix:{value:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],type:"f32",size:20},uAlpha:{value:1,type:"f32"}}),gpuProgram=GpuProgram.from({vertex:{source:source$3,entryPoint:"mainVertex"},fragment:{source:source$3,entryPoint:"mainFragment"}}),glProgram=GlProgram.from({vertex:vertex$2,fragment:fragment$3,name:"color-matrix-filter"});super((options=((a,b)=>{for(var prop in b=options||{})__hasOwnProp$w.call(b,prop)&&__defNormalProp$w(a,prop,b[prop]);if(__getOwnPropSymbols$w)for(var prop of __getOwnPropSymbols$w(b))__propIsEnum$w.call(b,prop)&&__defNormalProp$w(a,prop,b[prop]);return a})({}),__defProps$f(options,__getOwnPropDescs$f({gpuProgram:gpuProgram,glProgram:glProgram,resources:{colorMatrixUniforms:colorMatrixUniforms}})))),this.alpha=1}_loadMatrix(matrix,multiply=!1){let newMatrix=matrix;multiply&&(this._multiply(newMatrix,this.matrix,matrix),newMatrix=this._colorMatrix(newMatrix)),this.resources.colorMatrixUniforms.uniforms.uColorMatrix=newMatrix,this.resources.colorMatrixUniforms.update()}_multiply(out,a,b){return out[0]=a[0]*b[0]+a[1]*b[5]+a[2]*b[10]+a[3]*b[15],out[1]=a[0]*b[1]+a[1]*b[6]+a[2]*b[11]+a[3]*b[16],out[2]=a[0]*b[2]+a[1]*b[7]+a[2]*b[12]+a[3]*b[17],out[3]=a[0]*b[3]+a[1]*b[8]+a[2]*b[13]+a[3]*b[18],out[4]=a[0]*b[4]+a[1]*b[9]+a[2]*b[14]+a[3]*b[19]+a[4],out[5]=a[5]*b[0]+a[6]*b[5]+a[7]*b[10]+a[8]*b[15],out[6]=a[5]*b[1]+a[6]*b[6]+a[7]*b[11]+a[8]*b[16],out[7]=a[5]*b[2]+a[6]*b[7]+a[7]*b[12]+a[8]*b[17],out[8]=a[5]*b[3]+a[6]*b[8]+a[7]*b[13]+a[8]*b[18],out[9]=a[5]*b[4]+a[6]*b[9]+a[7]*b[14]+a[8]*b[19]+a[9],out[10]=a[10]*b[0]+a[11]*b[5]+a[12]*b[10]+a[13]*b[15],out[11]=a[10]*b[1]+a[11]*b[6]+a[12]*b[11]+a[13]*b[16],out[12]=a[10]*b[2]+a[11]*b[7]+a[12]*b[12]+a[13]*b[17],out[13]=a[10]*b[3]+a[11]*b[8]+a[12]*b[13]+a[13]*b[18],out[14]=a[10]*b[4]+a[11]*b[9]+a[12]*b[14]+a[13]*b[19]+a[14],out[15]=a[15]*b[0]+a[16]*b[5]+a[17]*b[10]+a[18]*b[15],out[16]=a[15]*b[1]+a[16]*b[6]+a[17]*b[11]+a[18]*b[16],out[17]=a[15]*b[2]+a[16]*b[7]+a[17]*b[12]+a[18]*b[17],out[18]=a[15]*b[3]+a[16]*b[8]+a[17]*b[13]+a[18]*b[18],out[19]=a[15]*b[4]+a[16]*b[9]+a[17]*b[14]+a[18]*b[19]+a[19],out}_colorMatrix(matrix){return(matrix=new Float32Array(matrix))[4]/=255,matrix[9]/=255,matrix[14]/=255,matrix[19]/=255,matrix}brightness(b,multiply){this._loadMatrix([b,0,0,0,0,0,b,0,0,0,0,0,b,0,0,0,0,0,1,0],multiply)}tint(color,multiply){var[color,g,b]=Color.shared.setValue(color).toArray();this._loadMatrix([color,0,0,0,0,0,g,0,0,0,0,0,b,0,0,0,0,0,1,0],multiply)}greyscale(scale,multiply){this._loadMatrix([scale,scale,scale,0,0,scale,scale,scale,0,0,scale,scale,scale,0,0,0,0,0,1,0],multiply)}grayscale(scale,multiply){this.greyscale(scale,multiply)}blackAndWhite(multiply){this._loadMatrix([.3,.6,.1,0,0,.3,.6,.1,0,0,.3,.6,.1,0,0,0,0,0,1,0],multiply)}hue(rotation,multiply){rotation=(rotation||0)/180*Math.PI;var cosR=Math.cos(rotation),rotation=Math.sin(rotation),w=1/3,sqrW=(0,Math.sqrt)(w);this._loadMatrix([cosR+(1-cosR)*w,w*(1-cosR)-sqrW*rotation,w*(1-cosR)+sqrW*rotation,0,0,w*(1-cosR)+sqrW*rotation,cosR+w*(1-cosR),w*(1-cosR)-sqrW*rotation,0,0,w*(1-cosR)-sqrW*rotation,w*(1-cosR)+sqrW*rotation,cosR+w*(1-cosR),0,0,0,0,0,1,0],multiply)}contrast(amount,multiply){var o=-.5*((amount=(amount||0)+1)-1);this._loadMatrix([amount,0,0,0,o,0,amount,0,0,o,0,0,amount,0,o,0,0,0,1,0],multiply)}saturate(amount=0,multiply){var y=-.5*((amount=2*amount/3+1)-1);this._loadMatrix([amount,y,y,0,0,y,amount,y,0,0,y,y,amount,0,0,0,0,0,1,0],multiply)}desaturate(){this.saturate(-1)}negative(multiply){this._loadMatrix([-1,0,0,1,0,0,-1,0,1,0,0,0,-1,1,0,0,0,0,1,0],multiply)}sepia(multiply){this._loadMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0],multiply)}technicolor(multiply){this._loadMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0],multiply)}polaroid(multiply){this._loadMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0],multiply)}toBGR(multiply){this._loadMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0],multiply)}kodachrome(multiply){this._loadMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0],multiply)}browni(multiply){this._loadMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0],multiply)}vintage(multiply){this._loadMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0],multiply)}colorTone(desaturation,toned,lightColor,darkColor,multiply){desaturation=desaturation||.2,toned=toned||.15,lightColor=lightColor||16770432,darkColor=darkColor||3375104;var[lightColor,lG,lB]=(temp=Color.shared).setValue(lightColor).toArray(),[temp,darkColor,dB]=temp.setValue(darkColor).toArray();this._loadMatrix([.3,.59,.11,0,0,lightColor,lG,lB,desaturation,0,temp,darkColor,dB,toned,0,lightColor-temp,lG-darkColor,lB-dB,0,0],multiply)}night(intensity,multiply){this._loadMatrix([-2*(intensity=intensity||.1),-intensity,0,0,0,-intensity,0,intensity,0,0,0,intensity,2*intensity,0,0,0,0,0,1,0],multiply)}predator(amount,multiply){this._loadMatrix([11.224130630493164*amount,-4.794486999511719*amount,-2.8746118545532227*amount,0*amount,.40342438220977783*amount,-3.6330697536468506*amount,9.193157196044922*amount,-2.951810836791992*amount,0*amount,-1.316135048866272*amount,-3.2184197902679443*amount,-4.2375030517578125*amount,7.476448059082031*amount,0*amount,.8044459223747253*amount,0,0,0,1,0],multiply)}lsd(multiply){this._loadMatrix([2,-.4,.5,0,0,-.5,2,-.4,0,0,-.4,-.5,3,0,0,0,0,0,1,0],multiply)}reset(){this._loadMatrix([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],!1)}get matrix(){return this.resources.colorMatrixUniforms.uniforms.uColorMatrix}set matrix(value){this.resources.colorMatrixUniforms.uniforms.uColorMatrix=value}get alpha(){return this.resources.colorMatrixUniforms.uniforms.uAlpha}set alpha(value){this.resources.colorMatrixUniforms.uniforms.uAlpha=value}}var fragment$2="\nin vec2 vTextureCoord;\nin vec2 vFilterUv;\n\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform sampler2D uMapTexture;\n\nuniform vec4 uInputClamp;\nuniform highp vec4 uInputSize;\nuniform mat2 uRotation;\nuniform vec2 uScale;\n\nvoid main()\n{\n vec4 map = texture(uMapTexture, vFilterUv);\n \n vec2 offset = uInputSize.zw * (uRotation * (map.xy - 0.5)) * uScale; \n\n finalColor = texture(uTexture, clamp(vTextureCoord + offset, uInputClamp.xy, uInputClamp.zw));\n}\n",vertex$1="in vec2 aPosition;\nout vec2 vTextureCoord;\nout vec2 vFilterUv;\n\n\nuniform vec4 uInputSize;\nuniform vec4 uOutputFrame;\nuniform vec4 uOutputTexture;\n\nuniform mat3 uFilterMatrix;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n \n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\n}\n\nvec2 getFilterCoord( void )\n{\n return ( uFilterMatrix * vec3( filterTextureCoord(), 1.0) ).xy;\n}\n\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n vFilterUv = getFilterCoord();\n}\n",source$2="\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\nstruct DisplacementUniforms {\n uFilterMatrix:mat3x3<f32>,\n uScale:vec2<f32>,\n uRotation:mat2x2<f32>\n};\n\n\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n@group(0) @binding(1) var uTexture: texture_2d<f32>;\n@group(0) @binding(2) var uSampler : sampler;\n\n@group(1) @binding(0) var<uniform> filterUniforms : DisplacementUniforms;\n@group(1) @binding(1) var uMapTexture: texture_2d<f32>;\n@group(1) @binding(2) var uMapSampler : sampler;\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>,\n @location(1) filterUv : vec2<f32>,\n };\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \n}\n\nfn getFilterCoord(aPosition:vec2<f32> ) -> vec2<f32>\n{\n return ( filterUniforms.uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;\n}\n\nfn getSize() -> vec2<f32>\n{\n\n \n return gfu.uGlobalFrame.zw;\n}\n \n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n return VSOutput(\n filterVertexPosition(aPosition),\n filterTextureCoord(aPosition),\n getFilterCoord(aPosition)\n );\n}\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @location(1) filterUv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n\n var map = textureSample(uMapTexture, uMapSampler, filterUv);\n\n var offset = gfu.uInputSize.zw * (filterUniforms.uRotation * (map.xy - 0.5)) * filterUniforms.uScale; \n \n return textureSample(uTexture, uSampler, clamp(uv + offset, gfu.uInputClamp.xy, gfu.uInputClamp.zw));\n}",__defProp$v=Object.defineProperty,__defProps$e=Object.defineProperties,__getOwnPropDescs$e=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$v=Object.getOwnPropertySymbols,__hasOwnProp$v=Object.prototype.hasOwnProperty,__propIsEnum$v=Object.prototype.propertyIsEnumerable,__defNormalProp$v=(obj,key,value)=>key in obj?__defProp$v(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class DisplacementFilter extends Filter{constructor(...args){let options=args[0];options instanceof Sprite&&(args[1]&&deprecation(v8_0_0,"DisplacementFilter now uses options object instead of params. {sprite, scale}"),options={sprite:options,scale:args[1]});var{sprite:args,scale:scaleOption}=options,rest=((source2,exclude)=>{var target={};for(prop in source2)__hasOwnProp$v.call(source2,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source2[prop]);if(null!=source2&&__getOwnPropSymbols$v)for(var prop of __getOwnPropSymbols$v(source2))exclude.indexOf(prop)<0&&__propIsEnum$v.call(source2,prop)&&(target[prop]=source2[prop]);return target})(options,["sprite","scale"]);let scale=null!=scaleOption?scaleOption:20;"number"==typeof scale&&(scale=new Point(scale,scale));var scaleOption=new UniformGroup({uFilterMatrix:{value:new Matrix,type:"mat3x3<f32>"},uScale:{value:scale,type:"vec2<f32>"},uRotation:{value:new Float32Array([0,0,0,0]),type:"mat2x2<f32>"}}),glProgram=GlProgram.from({vertex:vertex$1,fragment:fragment$2,name:"displacement-filter"}),gpuProgram=GpuProgram.from({vertex:{source:source$2,entryPoint:"mainVertex"},fragment:{source:source$2,entryPoint:"mainFragment"}}),args=args.texture.source;super((rest=((a,b)=>{for(var prop in b=rest||{})__hasOwnProp$v.call(b,prop)&&__defNormalProp$v(a,prop,b[prop]);if(__getOwnPropSymbols$v)for(var prop of __getOwnPropSymbols$v(b))__propIsEnum$v.call(b,prop)&&__defNormalProp$v(a,prop,b[prop]);return a})({}),gpuProgram={gpuProgram:gpuProgram,glProgram:glProgram,resources:{filterUniforms:scaleOption,uMapTexture:args,uMapSampler:args.style}},__defProps$e(rest,__getOwnPropDescs$e(gpuProgram)))),this._sprite=options.sprite,this._sprite.renderable=!1}apply(filterManager,input,output,clearMode){var uniforms=this.resources.filterUniforms.uniforms,wt=(filterManager.calculateSpriteMatrix(uniforms.uFilterMatrix,this._sprite),this._sprite.worldTransform),lenX=Math.sqrt(wt.a*wt.a+wt.b*wt.b),lenY=Math.sqrt(wt.c*wt.c+wt.d*wt.d);0!==lenX&&0!==lenY&&(uniforms.uRotation[0]=wt.a/lenX,uniforms.uRotation[1]=wt.b/lenX,uniforms.uRotation[2]=wt.c/lenY,uniforms.uRotation[3]=wt.d/lenY),this.resources.uMapTexture=this._sprite.texture.source,filterManager.applyFilter(this,input,output,clearMode)}get scale(){return this.resources.filterUniforms.uniforms.uScale}}var fragment$1="\nin vec2 vTextureCoord;\nin vec4 vColor;\n\nout vec4 finalColor;\n\nuniform float uNoise;\nuniform float uSeed;\nuniform sampler2D uTexture;\n\nfloat rand(vec2 co)\n{\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main()\n{\n vec4 color = texture(uTexture, vTextureCoord);\n float randomValue = rand(gl_FragCoord.xy * uSeed);\n float diff = (randomValue - 0.5) * uNoise;\n\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\n if (color.a > 0.0) {\n color.rgb /= color.a;\n }\n\n color.r += diff;\n color.g += diff;\n color.b += diff;\n\n // Premultiply alpha again.\n color.rgb *= color.a;\n\n finalColor = color;\n}\n",source$1="\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\nstruct NoiseUniforms {\n uNoise:f32,\n uSeed:f32,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n@group(0) @binding(1) var uTexture: texture_2d<f32>;\n@group(0) @binding(2) var uSampler : sampler;\n\n@group(1) @binding(0) var<uniform> noiseUniforms : NoiseUniforms;\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n };\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \n}\n\nfn getSize() -> vec2<f32>\n{\n return gfu.uGlobalFrame.zw;\n}\n \n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n return VSOutput(\n filterVertexPosition(aPosition),\n filterTextureCoord(aPosition)\n );\n}\n\nfn rand(co:vec2<f32>) -> f32\n{\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\n\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n\n var pixelPosition = globalTextureCoord(position.xy);// / (getSize());//- gfu.uOutputFrame.xy);\n \n \n var sample = textureSample(uTexture, uSampler, uv);\n var randomValue = rand(pixelPosition.xy * noiseUniforms.uSeed);\n var diff = (randomValue - 0.5) * noiseUniforms.uNoise;\n \n // Un-premultiply alpha before applying the color matrix. See issue #3539.\n if (sample.a > 0.0) {\n sample.r /= sample.a;\n sample.g /= sample.a;\n sample.b /= sample.a;\n }\n\n sample.r += diff;\n sample.g += diff;\n sample.b += diff;\n\n // Premultiply alpha again.\n sample.r *= sample.a;\n sample.g *= sample.a;\n sample.b *= sample.a;\n \n return sample;\n}",__defProp$u=Object.defineProperty,__defProps$d=Object.defineProperties,__getOwnPropDescs$d=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$u=Object.getOwnPropertySymbols,__hasOwnProp$u=Object.prototype.hasOwnProperty,__propIsEnum$u=Object.prototype.propertyIsEnumerable,__defNormalProp$u=(obj,key,value)=>key in obj?__defProp$u(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$u=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$u.call(b,prop)&&__defNormalProp$u(a,prop,b[prop]);if(__getOwnPropSymbols$u)for(var prop of __getOwnPropSymbols$u(b))__propIsEnum$u.call(b,prop)&&__defNormalProp$u(a,prop,b[prop]);return a};const _NoiseFilter=class _NoiseFilter extends Filter{constructor(options={}){options=__spreadValues$u(__spreadValues$u({},_NoiseFilter.defaultOptions),options);var gpuProgram=GpuProgram.from({vertex:{source:source$1,entryPoint:"mainVertex"},fragment:{source:source$1,entryPoint:"mainFragment"}}),glProgram=GlProgram.from({vertex:vertex$2,fragment:fragment$1,name:"noise-filter"}),{noise,seed}=options,options=((source2,exclude)=>{var target={};for(prop in source2)__hasOwnProp$u.call(source2,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source2[prop]);if(null!=source2&&__getOwnPropSymbols$u)for(var prop of __getOwnPropSymbols$u(source2))exclude.indexOf(prop)<0&&__propIsEnum$u.call(source2,prop)&&(target[prop]=source2[prop]);return target})(options,["noise","seed"]);super((options=__spreadValues$u({},options),gpuProgram={gpuProgram:gpuProgram,glProgram:glProgram,resources:{noiseUniforms:new UniformGroup({uNoise:{value:1,type:"f32"},uSeed:{value:1,type:"f32"}})}},__defProps$d(options,__getOwnPropDescs$d(gpuProgram)))),this.noise=noise,this.seed=null!=seed?seed:Math.random()}get noise(){return this.resources.noiseUniforms.uniforms.uNoise}set noise(value){this.resources.noiseUniforms.uniforms.uNoise=value}get seed(){return this.resources.noiseUniforms.uniforms.uSeed}set seed(value){this.resources.noiseUniforms.uniforms.uSeed=value}};_NoiseFilter.defaultOptions={noise:.5};var NoiseFilter=_NoiseFilter,fragment="in vec2 vMaskCoord;\nin vec2 vTextureCoord;\n\nuniform sampler2D uTexture;\nuniform sampler2D uMaskTexture;\n\nuniform float uAlpha;\nuniform vec4 uMaskClamp;\nuniform float uInverse;\n\nout vec4 finalColor;\n\nvoid main(void)\n{\n float clip = step(3.5,\n step(uMaskClamp.x, vMaskCoord.x) +\n step(uMaskClamp.y, vMaskCoord.y) +\n step(vMaskCoord.x, uMaskClamp.z) +\n step(vMaskCoord.y, uMaskClamp.w));\n\n // TODO look into why this is needed\n float npmAlpha = uAlpha;\n vec4 original = texture(uTexture, vTextureCoord);\n vec4 masky = texture(uMaskTexture, vMaskCoord);\n float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);\n\n float a = alphaMul * masky.r * npmAlpha * clip;\n\n if (uInverse == 1.0) {\n a = 1.0 - a;\n }\n\n finalColor = original * a;\n}\n",vertex="in vec2 aPosition;\n\nout vec2 vTextureCoord;\nout vec2 vMaskCoord;\n\n\nuniform vec4 uInputSize;\nuniform vec4 uOutputFrame;\nuniform vec4 uOutputTexture;\nuniform mat3 uFilterMatrix;\n\nvec4 filterVertexPosition( vec2 aPosition )\n{\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n \n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( vec2 aPosition )\n{\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\n}\n\nvec2 getFilterCoord( vec2 aPosition )\n{\n return ( uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;\n} \n\nvoid main(void)\n{\n gl_Position = filterVertexPosition(aPosition);\n vTextureCoord = filterTextureCoord(aPosition);\n vMaskCoord = getFilterCoord(aPosition);\n}\n",source="struct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\nstruct MaskUniforms {\n uFilterMatrix:mat3x3<f32>,\n uMaskClamp:vec4<f32>,\n uAlpha:f32,\n uInverse:f32,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n@group(0) @binding(1) var uTexture: texture_2d<f32>;\n@group(0) @binding(2) var uSampler : sampler;\n\n@group(1) @binding(0) var<uniform> filterUniforms : MaskUniforms;\n@group(1) @binding(1) var uMaskTexture: texture_2d<f32>;\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>,\n @location(1) filterUv : vec2<f32>,\n};\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw);\n}\n\nfn getFilterCoord(aPosition:vec2<f32> ) -> vec2<f32>\n{\n return ( filterUniforms.uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;\n}\n\nfn getSize() -> vec2<f32>\n{\n return gfu.uGlobalFrame.zw;\n}\n\n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>,\n) -> VSOutput {\n return VSOutput(\n filterVertexPosition(aPosition),\n filterTextureCoord(aPosition),\n getFilterCoord(aPosition)\n );\n}\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @location(1) filterUv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n\n var maskClamp = filterUniforms.uMaskClamp;\n var uAlpha = filterUniforms.uAlpha;\n\n var clip = step(3.5,\n step(maskClamp.x, filterUv.x) +\n step(maskClamp.y, filterUv.y) +\n step(filterUv.x, maskClamp.z) +\n step(filterUv.y, maskClamp.w));\n\n var mask = textureSample(uMaskTexture, uSampler, filterUv);\n var source = textureSample(uTexture, uSampler, uv);\n var alphaMul = 1.0 - uAlpha * (1.0 - mask.a);\n\n var a: f32 = alphaMul * mask.r * uAlpha * clip;\n\n if (filterUniforms.uInverse == 1.0) {\n a = 1.0 - a;\n }\n\n return source * a;\n}\n",__defProp$t=Object.defineProperty,__defProps$c=Object.defineProperties,__getOwnPropDescs$c=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$t=Object.getOwnPropertySymbols,__hasOwnProp$t=Object.prototype.hasOwnProperty,__propIsEnum$t=Object.prototype.propertyIsEnumerable,__defNormalProp$t=(obj,key,value)=>key in obj?__defProp$t(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class MaskFilter extends Filter{constructor(options){var sprite=options.sprite,rest=((source2,exclude)=>{var target={};for(prop in source2)__hasOwnProp$t.call(source2,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source2[prop]);if(null!=source2&&__getOwnPropSymbols$t)for(var prop of __getOwnPropSymbols$t(source2))exclude.indexOf(prop)<0&&__propIsEnum$t.call(source2,prop)&&(target[prop]=source2[prop]);return target})(options,["sprite"]),textureMatrix=new TextureMatrix(sprite.texture),options=new UniformGroup({uFilterMatrix:{value:new Matrix,type:"mat3x3<f32>"},uMaskClamp:{value:textureMatrix.uClampFrame,type:"vec4<f32>"},uAlpha:{value:1,type:"f32"},uInverse:{value:options.inverse?1:0,type:"f32"}}),gpuProgram=GpuProgram.from({vertex:{source:source,entryPoint:"mainVertex"},fragment:{source:source,entryPoint:"mainFragment"}}),glProgram=GlProgram.from({vertex:vertex,fragment:fragment,name:"mask-filter"});super((rest=((a,b)=>{for(var prop in b=rest||{})__hasOwnProp$t.call(b,prop)&&__defNormalProp$t(a,prop,b[prop]);if(__getOwnPropSymbols$t)for(var prop of __getOwnPropSymbols$t(b))__propIsEnum$t.call(b,prop)&&__defNormalProp$t(a,prop,b[prop]);return a})({}),gpuProgram={gpuProgram:gpuProgram,glProgram:glProgram,resources:{filterUniforms:options,uMaskTexture:sprite.texture.source}},__defProps$c(rest,__getOwnPropDescs$c(gpuProgram)))),this.sprite=sprite,this._textureMatrix=textureMatrix}set inverse(value){this.resources.filterUniforms.uniforms.uInverse=value?1:0}get inverse(){return 1===this.resources.filterUniforms.uniforms.uInverse}apply(filterManager,input,output,clearMode){this._textureMatrix.texture=this.sprite.texture,filterManager.calculateSpriteMatrix(this.resources.filterUniforms.uniforms.uFilterMatrix,this.sprite).prepend(this._textureMatrix.mapCoord),this.resources.uMaskTexture=this.sprite.texture.source,filterManager.applyFilter(this,input,output,clearMode)}}function pointInTriangle(px,py,x1,y1,x2,y2,x3,y3){return x3-=x1,x2-=x1,px-=x1,x1=py-y1,py=x3*x3+(y3-=y1)*y3,y1=x3*x2+y3*(y2-=y1),x3=x3*px+y3*x1,y3=x2*x2+y2*y2,x1=(py*(x2=x2*px+y2*x1)-y1*x3)*(px=1/(py*y3-y1*y1)),0<=(y2=(y3*x3-y1*x2)*px)&&0<=x1&&y2+x1<1}const _PrepareBase=class _PrepareBase{constructor(renderer){this._tick=()=>{this.timeout=setTimeout(this._processQueue,0)},this._processQueue=()=>{var queue=this.queue;let itemsProcessed=0;for(;queue.length&&itemsProcessed<_PrepareBase.uploadsPerFrame;){var queueItem=queue.shift();this.uploadQueueItem(queueItem),itemsProcessed++}queue.length?Ticker.system.addOnce(this._tick,this,UPDATE_PRIORITY.UTILITY):this._resolve()},this.renderer=renderer,this.queue=[],this.resolves=[]}getQueue(){return[...this.queue]}add(resource){for(const resourceItem of Array.isArray(resource)?resource:[resource])resourceItem instanceof Container?this._addContainer(resourceItem):this.resolveQueueItem(resourceItem,this.queue);return this}_addContainer(container){this.resolveQueueItem(container,this.queue);for(const child of container.children)this._addContainer(child)}upload(resource){return resource&&this.add(resource),new Promise(resolve=>{this.queue.length?(this.resolves.push(resolve),this.dedupeQueue(),Ticker.system.addOnce(this._tick,this,UPDATE_PRIORITY.UTILITY)):resolve()})}dedupeQueue(){var hash=Object.create(null);let nextUnique=0;for(let i=0;i<this.queue.length;i++){var current=this.queue[i];hash[current.uid]||(hash[current.uid]=!0,this.queue[nextUnique++]=current)}this.queue.length=nextUnique}_resolve(){var resolves=this.resolves,array=resolves.slice(0);resolves.length=0;for(const resolve of array)resolve()}};_PrepareBase.uploadsPerFrame=4;var PrepareBase=_PrepareBase,__defProp$s=Object.defineProperty,__getOwnPropSymbols$s=Object.getOwnPropertySymbols,__hasOwnProp$s=Object.prototype.hasOwnProperty,__propIsEnum$s=Object.prototype.propertyIsEnumerable,__defNormalProp$s=(obj,key,value)=>key in obj?__defProp$s(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class Mesh extends ViewContainer{constructor(...args){let options=args[0];options instanceof Geometry&&(deprecation(v8_0_0,"Mesh: use new Mesh({ geometry, shader }) instead"),options={geometry:options,shader:args[1]},args[3])&&(deprecation(v8_0_0,"Mesh: drawMode argument has been removed, use geometry.topology instead"),options.geometry.topology=args[3]);var{geometry:args,shader,texture,roundPixels,state}=options;super(((a,b)=>{for(var prop in b=b||{})__hasOwnProp$s.call(b,prop)&&__defNormalProp$s(a,prop,b[prop]);if(__getOwnPropSymbols$s)for(var prop of __getOwnPropSymbols$s(b))__propIsEnum$s.call(b,prop)&&__defNormalProp$s(a,prop,b[prop]);return a})({label:"Mesh"},((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$s.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$s)for(var prop of __getOwnPropSymbols$s(source))exclude.indexOf(prop)<0&&__propIsEnum$s.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["geometry","shader","texture","roundPixels","state"]))),this.renderPipeId="mesh",this._shader=null,this.allowChildren=!1,this.shader=null!=shader?shader:null,this.texture=null!=(texture=null!=texture?texture:null==shader?void 0:shader.texture)?texture:Texture.WHITE,this.state=null!=state?state:State.for2d(),this._geometry=args,this._geometry.on("update",this.onViewUpdate,this),this.roundPixels=null!=roundPixels&&roundPixels}get material(){return deprecation(v8_0_0,"mesh.material property has been removed, use mesh.shader instead"),this._shader}set shader(value){this._shader!==value&&(this._shader=value,this.onViewUpdate())}get shader(){return this._shader}set geometry(value){var _a;this._geometry!==value&&(null!=(_a=this._geometry)&&_a.off("update",this.onViewUpdate,this),value.on("update",this.onViewUpdate,this),this._geometry=value,this.onViewUpdate())}get geometry(){return this._geometry}set texture(value){value=value||Texture.EMPTY;var currentTexture=this._texture;currentTexture!==value&&(currentTexture&&currentTexture.dynamic&&currentTexture.off("update",this.onViewUpdate,this),value.dynamic&&value.on("update",this.onViewUpdate,this),this.shader&&(this.shader.texture=value),this._texture=value,this.onViewUpdate())}get texture(){return this._texture}get batched(){return!this._shader&&0==(12&this.state.data)&&this._geometry instanceof MeshGeometry&&("auto"===this._geometry.batchMode?this._geometry.positions.length/2<=100:"batch"===this._geometry.batchMode)}get bounds(){return this._geometry.bounds}updateBounds(){this._bounds=this._geometry.bounds}containsPoint(point){var{x,y}=point;if(this.bounds.containsPoint(x,y)){var vertices=this.geometry.getBuffer("aPosition").data,step="triangle-strip"===this.geometry.topology?3:1;if(this.geometry.getIndex()){var indices=this.geometry.getIndex().data,len=indices.length;for(let i=0;i+2<len;i+=step){var ind0=2*indices[i],ind1=2*indices[i+1],ind2=2*indices[i+2];if(pointInTriangle(x,y,vertices[ind0],vertices[1+ind0],vertices[ind1],vertices[1+ind1],vertices[ind2],vertices[1+ind2]))return!0}}else{const len=vertices.length/2;for(let i=0;i+2<len;i+=step){const ind0=2*i,ind1=2*(i+1),ind2=2*(i+2);if(pointInTriangle(x,y,vertices[ind0],vertices[1+ind0],vertices[ind1],vertices[1+ind1],vertices[ind2],vertices[1+ind2]))return!0}}}return!1}destroy(options){var destroyTexture;super.destroy(options),("boolean"==typeof options?options:null!=options&&options.texture)&&(destroyTexture="boolean"==typeof options?options:null==options?void 0:options.textureSource,this._texture.destroy(destroyTexture)),null!=(options=this._geometry)&&options.off("update",this.onViewUpdate,this),this._texture=null,this._geometry=null,this._shader=null}}var __defProp$r=Object.defineProperty,__defProps$b=Object.defineProperties,__getOwnPropDescs$b=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$r=Object.getOwnPropertySymbols,__hasOwnProp$r=Object.prototype.hasOwnProperty,__propIsEnum$r=Object.prototype.propertyIsEnumerable,__defNormalProp$r=(obj,key,value)=>key in obj?__defProp$r(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class AnimatedSprite extends Sprite{constructor(...args){var options=args[0],{animationSpeed:args=1,autoPlay=!1,autoUpdate=!0,loop=!0,onComplete=null,onFrameChange=null,onLoop=null,textures,updateAnchor=!1}=options=Array.isArray(args[0])?{textures:args[0],autoUpdate:args[1]}:options,rest=((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$r.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$r)for(var prop of __getOwnPropSymbols$r(source))exclude.indexOf(prop)<0&&__propIsEnum$r.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["animationSpeed","autoPlay","autoUpdate","loop","onComplete","onFrameChange","onLoop","textures","updateAnchor"]),[options]=textures;super((rest=((a,b)=>{for(var prop in b=rest||{})__hasOwnProp$r.call(b,prop)&&__defNormalProp$r(a,prop,b[prop]);if(__getOwnPropSymbols$r)for(var prop of __getOwnPropSymbols$r(b))__propIsEnum$r.call(b,prop)&&__defNormalProp$r(a,prop,b[prop]);return a})({}),options={texture:options instanceof Texture?options:options.texture},__defProps$b(rest,__getOwnPropDescs$b(options)))),this._textures=null,this._durations=null,this._autoUpdate=autoUpdate,this._isConnectedToTicker=!1,this.animationSpeed=args,this.loop=loop,this.updateAnchor=updateAnchor,this.onComplete=onComplete,this.onFrameChange=onFrameChange,this.onLoop=onLoop,this._currentTime=0,this._playing=!1,this._previousFrame=null,this.textures=textures,autoPlay&&this.play()}stop(){this._playing&&(this._playing=!1,this._autoUpdate)&&this._isConnectedToTicker&&(Ticker.shared.remove(this.update,this),this._isConnectedToTicker=!1)}play(){this._playing||(this._playing=!0,this._autoUpdate&&!this._isConnectedToTicker&&(Ticker.shared.add(this.update,this,UPDATE_PRIORITY.HIGH),this._isConnectedToTicker=!0))}gotoAndStop(frameNumber){this.stop(),this.currentFrame=frameNumber}gotoAndPlay(frameNumber){this.currentFrame=frameNumber,this.play()}update(ticker){if(this._playing){var ticker=ticker.deltaTime,elapsed=this.animationSpeed*ticker,previousFrame=this.currentFrame;if(null!==this._durations){let lag=this._currentTime%1*this._durations[this.currentFrame];for(lag+=elapsed/60*1e3;lag<0;)this._currentTime--,lag+=this._durations[this.currentFrame];var sign=Math.sign(this.animationSpeed*ticker);for(this._currentTime=Math.floor(this._currentTime);lag>=this._durations[this.currentFrame];)lag-=this._durations[this.currentFrame]*sign,this._currentTime+=sign;this._currentTime+=lag/this._durations[this.currentFrame]}else this._currentTime+=elapsed;this._currentTime<0&&!this.loop?(this.gotoAndStop(0),this.onComplete&&this.onComplete()):this._currentTime>=this._textures.length&&!this.loop?(this.gotoAndStop(this._textures.length-1),this.onComplete&&this.onComplete()):previousFrame!==this.currentFrame&&(this.loop&&this.onLoop&&(0<this.animationSpeed&&this.currentFrame<previousFrame||this.animationSpeed<0&&this.currentFrame>previousFrame)&&this.onLoop(),this._updateTexture())}}_updateTexture(){var currentFrame=this.currentFrame;this._previousFrame!==currentFrame&&(this._previousFrame=currentFrame,this.texture=this._textures[currentFrame],this.updateAnchor&&this.texture.defaultAnchor&&this.anchor.copyFrom(this.texture.defaultAnchor),this.onFrameChange)&&this.onFrameChange(this.currentFrame)}destroy(){this.stop(),super.destroy(),this.onComplete=null,this.onFrameChange=null,this.onLoop=null}static fromFrames(frames){var textures=[];for(let i=0;i<frames.length;++i)textures.push(Texture.from(frames[i]));return new AnimatedSprite(textures)}static fromImages(images){var textures=[];for(let i=0;i<images.length;++i)textures.push(Texture.from(images[i]));return new AnimatedSprite(textures)}get totalFrames(){return this._textures.length}get textures(){return this._textures}set textures(value){if(value[0]instanceof Texture)this._textures=value,this._durations=null;else{this._textures=[],this._durations=[];for(let i=0;i<value.length;i++)this._textures.push(value[i].texture),this._durations.push(value[i].time)}this._previousFrame=null,this.gotoAndStop(0),this._updateTexture()}get currentFrame(){let currentFrame=Math.floor(this._currentTime)%this._textures.length;return currentFrame<0&&(currentFrame+=this._textures.length),currentFrame}set currentFrame(value){if(value<0||value>this.totalFrames-1)throw new Error(`[AnimatedSprite]: Invalid frame index value ${value}, expected to be between 0 and totalFrames ${this.totalFrames}.`);var previousFrame=this.currentFrame;this._currentTime=value,previousFrame!==this.currentFrame&&this._updateTexture()}get playing(){return this._playing}get autoUpdate(){return this._autoUpdate}set autoUpdate(value){value!==this._autoUpdate&&(this._autoUpdate=value,!this._autoUpdate&&this._isConnectedToTicker?(Ticker.shared.remove(this.update,this),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._playing&&(Ticker.shared.add(this.update,this),this._isConnectedToTicker=!0))}}class Transform{constructor({matrix,observer}={}){this.dirty=!0,this._matrix=null!=matrix?matrix:new Matrix,this.observer=observer,this.position=new ObservablePoint(this,0,0),this.scale=new ObservablePoint(this,1,1),this.pivot=new ObservablePoint(this,0,0),this.skew=new ObservablePoint(this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1}get matrix(){var lt=this._matrix;return this.dirty&&(lt.a=this._cx*this.scale.x,lt.b=this._sx*this.scale.x,lt.c=this._cy*this.scale.y,lt.d=this._sy*this.scale.y,lt.tx=this.position.x-(this.pivot.x*lt.a+this.pivot.y*lt.c),lt.ty=this.position.y-(this.pivot.x*lt.b+this.pivot.y*lt.d),this.dirty=!1),lt}_onUpdate(point){this.dirty=!0,point===this.skew&&this.updateSkew(),null!=(point=this.observer)&&point._onUpdate(this)}updateSkew(){this._cx=Math.cos(this._rotation+this.skew.y),this._sx=Math.sin(this._rotation+this.skew.y),this._cy=-Math.sin(this._rotation-this.skew.x),this._sy=Math.cos(this._rotation-this.skew.x),this.dirty=!0}toString(){return`[pixi.js/math:Transform position=(${this.position.x}, ${this.position.y}) rotation=${this.rotation} scale=(${this.scale.x}, ${this.scale.y}) skew=(${this.skew.x}, ${this.skew.y}) ]`}setFromMatrix(matrix){matrix.decompose(this),this.dirty=!0}get rotation(){return this._rotation}set rotation(value){this._rotation!==value&&(this._rotation=value,this._onUpdate(this.skew))}}var __defProp$q=Object.defineProperty,__getOwnPropSymbols$q=Object.getOwnPropertySymbols,__hasOwnProp$q=Object.prototype.hasOwnProperty,__propIsEnum$q=Object.prototype.propertyIsEnumerable,__defNormalProp$q=(obj,key,value)=>key in obj?__defProp$q(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$q=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$q.call(b,prop)&&__defNormalProp$q(a,prop,b[prop]);if(__getOwnPropSymbols$q)for(var prop of __getOwnPropSymbols$q(b))__propIsEnum$q.call(b,prop)&&__defNormalProp$q(a,prop,b[prop]);return a};const _TilingSprite=class _TilingSprite extends ViewContainer{constructor(...args){let options=args[0]||{};options instanceof Texture&&(options={texture:options}),1<args.length&&(deprecation(v8_0_0,"use new TilingSprite({ texture, width:100, height:100 }) instead"),options.width=args[1],options.height=args[2]);var{texture,anchor,tilePosition,tileScale,tileRotation,width,height,applyAnchorToTexture,roundPixels}=args=null!=(options=__spreadValues$q(__spreadValues$q({},_TilingSprite.defaultOptions),options))?options:{},args=((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$q.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$q)for(var prop of __getOwnPropSymbols$q(source))exclude.indexOf(prop)<0&&__propIsEnum$q.call(source,prop)&&(target[prop]=source[prop]);return target})(args,["texture","anchor","tilePosition","tileScale","tileRotation","width","height","applyAnchorToTexture","roundPixels"]);super(__spreadValues$q({label:"TilingSprite"},args)),this.renderPipeId="tilingSprite",this.batched=!0,this.allowChildren=!1,this._anchor=new ObservablePoint({_onUpdate:()=>{this.onViewUpdate()}}),this.applyAnchorToTexture=applyAnchorToTexture,this.texture=texture,this._width=null!=width?width:texture.width,this._height=null!=height?height:texture.height,this._tileTransform=new Transform({observer:{_onUpdate:()=>this.onViewUpdate()}}),anchor&&(this.anchor=anchor),this.tilePosition=tilePosition,this.tileScale=tileScale,this.tileRotation=tileRotation,this.roundPixels=null!=roundPixels&&roundPixels}static from(source,options={}){return"string"==typeof source?new _TilingSprite(__spreadValues$q({texture:Cache.get(source)},options)):new _TilingSprite(__spreadValues$q({texture:source},options))}get uvRespectAnchor(){return warn("uvRespectAnchor is deprecated, please use applyAnchorToTexture instead"),this.applyAnchorToTexture}set uvRespectAnchor(value){warn("uvRespectAnchor is deprecated, please use applyAnchorToTexture instead"),this.applyAnchorToTexture=value}get clampMargin(){return this._texture.textureMatrix.clampMargin}set clampMargin(value){this._texture.textureMatrix.clampMargin=value}get anchor(){return this._anchor}set anchor(value){"number"==typeof value?this._anchor.set(value):this._anchor.copyFrom(value)}get tilePosition(){return this._tileTransform.position}set tilePosition(value){this._tileTransform.position.copyFrom(value)}get tileScale(){return this._tileTransform.scale}set tileScale(value){"number"==typeof value?this._tileTransform.scale.set(value):this._tileTransform.scale.copyFrom(value)}set tileRotation(value){this._tileTransform.rotation=value}get tileRotation(){return this._tileTransform.rotation}get tileTransform(){return this._tileTransform}set texture(value){value=value||Texture.EMPTY;var currentTexture=this._texture;currentTexture!==value&&(currentTexture&&currentTexture.dynamic&&currentTexture.off("update",this.onViewUpdate,this),value.dynamic&&value.on("update",this.onViewUpdate,this),this._texture=value,this.onViewUpdate())}get texture(){return this._texture}set width(value){this._width=value,this.onViewUpdate()}get width(){return this._width}set height(value){this._height=value,this.onViewUpdate()}get height(){return this._height}setSize(value,height){var _a;"object"==typeof value&&(height=null!=(_a=value.height)?_a:value.width,value=value.width),this._width=value,this._height=null!=height?height:value,this.onViewUpdate()}getSize(out){return(out=out||{}).width=this._width,out.height=this._height,out}updateBounds(){var bounds=this._bounds,anchor=this._anchor,width=this._width,height=this._height;bounds.minX=-anchor._x*width,bounds.maxX=bounds.minX+width,bounds.minY=-anchor._y*height,bounds.maxY=bounds.minY+height}containsPoint(point){var width=this._width,height=this._height,x1=-width*this._anchor._x;return point.x>=x1&&point.x<=x1+width&&(x1=-height*this._anchor._y,point.y>=x1)&&point.y<=x1+height}destroy(options=!1){super.destroy(options),this._anchor=null,this._tileTransform=null,this._bounds=null,("boolean"==typeof options?options:null!=options&&options.texture)&&(options="boolean"==typeof options?options:null==options?void 0:options.textureSource,this._texture.destroy(options)),this._texture=null}};_TilingSprite.defaultOptions={texture:Texture.EMPTY,anchor:{x:0,y:0},tilePosition:{x:0,y:0},tileScale:{x:1,y:1},tileRotation:0,applyAnchorToTexture:!1};let TilingSprite=_TilingSprite;var __defProp$p=Object.defineProperty,__getOwnPropSymbols$p=Object.getOwnPropertySymbols,__hasOwnProp$p=Object.prototype.hasOwnProperty,__propIsEnum$p=Object.prototype.propertyIsEnumerable,__defNormalProp$p=(obj,key,value)=>key in obj?__defProp$p(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class AbstractText extends ViewContainer{constructor(options,styleClass){var{text,resolution,style,anchor,width,height,roundPixels}=options;super(((a,b)=>{for(var prop in b=b||{})__hasOwnProp$p.call(b,prop)&&__defNormalProp$p(a,prop,b[prop]);if(__getOwnPropSymbols$p)for(var prop of __getOwnPropSymbols$p(b))__propIsEnum$p.call(b,prop)&&__defNormalProp$p(a,prop,b[prop]);return a})({},((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$p.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$p)for(var prop of __getOwnPropSymbols$p(source))exclude.indexOf(prop)<0&&__propIsEnum$p.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["text","resolution","style","anchor","width","height","roundPixels"]))),this.batched=!0,this._resolution=null,this._autoResolution=!0,this._didTextUpdate=!0,this._styleClass=styleClass,this.text=null!=text?text:"",this.style=style,this.resolution=null!=resolution?resolution:null,this.allowChildren=!1,this._anchor=new ObservablePoint({_onUpdate:()=>{this.onViewUpdate()}}),anchor&&(this.anchor=anchor),this.roundPixels=null!=roundPixels&&roundPixels,void 0!==width&&(this.width=width),void 0!==height&&(this.height=height)}get anchor(){return this._anchor}set anchor(value){"number"==typeof value?this._anchor.set(value):this._anchor.copyFrom(value)}set text(value){value=value.toString(),this._text!==value&&(this._text=value,this.onViewUpdate())}get text(){return this._text}set resolution(value){this._autoResolution=null===value,this._resolution=value,this.onViewUpdate()}get resolution(){return this._resolution}get style(){return this._style}set style(style){var _a;style=style||{},null!=(_a=this._style)&&_a.off("update",this.onViewUpdate,this),style instanceof this._styleClass?this._style=style:this._style=new this._styleClass(style),this._style.on("update",this.onViewUpdate,this),this.onViewUpdate()}get width(){return Math.abs(this.scale.x)*this.bounds.width}set width(value){this._setWidth(value,this.bounds.width)}get height(){return Math.abs(this.scale.y)*this.bounds.height}set height(value){this._setHeight(value,this.bounds.height)}getSize(out){return(out=out||{}).width=Math.abs(this.scale.x)*this.bounds.width,out.height=Math.abs(this.scale.y)*this.bounds.height,out}setSize(value,height){var _a;"object"==typeof value?(height=null!=(_a=value.height)?_a:value.width,value=value.width):null==height&&(height=value),void 0!==value&&this._setWidth(value,this.bounds.width),void 0!==height&&this._setHeight(height,this.bounds.height)}containsPoint(point){var width=this.bounds.width,height=this.bounds.height,x1=-width*this.anchor.x;return point.x>=x1&&point.x<=x1+width&&(x1=-height*this.anchor.y,point.y>=x1)&&point.y<=x1+height}onViewUpdate(){this.didViewUpdate||(this._didTextUpdate=!0),super.onViewUpdate()}_getKey(){return`${this.text}:${this._style.styleKey}:`+this._resolution}destroy(options=!1){super.destroy(options),this.owner=null,this._bounds=null,this._anchor=null,("boolean"==typeof options?options:null!=options&&options.style)&&this._style.destroy(options),this._style=null,this._text=null}}function ensureTextOptions(args,name){var _a;let options=null!=(_a=args[0])?_a:{};return"string"!=typeof options&&!args[1]||(deprecation(v8_0_0,`use new ${name}({ text: "hi!", style }) instead`),options={text:options,style:args[1]}),options}class Text extends AbstractText{constructor(...args){super(ensureTextOptions(args,"Text"),TextStyle),this.renderPipeId="text"}updateBounds(){var bounds=this._bounds,anchor=this._anchor,{width,height}=CanvasTextMetrics.measureText(this._text,this._style);bounds.minX=-anchor._x*width,bounds.maxX=bounds.minX+width,bounds.minY=-anchor._y*height,bounds.maxY=bounds.minY+height}}class PrepareQueue extends PrepareBase{resolveQueueItem(source,queue){return source instanceof Container?this.resolveContainerQueueItem(source,queue):source instanceof TextureSource||source instanceof Texture?queue.push(source.source):source instanceof GraphicsContext&&queue.push(source),null}resolveContainerQueueItem(container,queue){container instanceof Sprite||container instanceof TilingSprite||container instanceof Mesh?queue.push(container.texture.source):container instanceof Text?queue.push(container):container instanceof Graphics?queue.push(container.context):container instanceof AnimatedSprite&&container.textures.forEach(textureOrFrame=>{textureOrFrame.source?queue.push(textureOrFrame.source):queue.push(textureOrFrame.texture.source)})}resolveGraphicsContextQueueItem(graphicsContext){this.renderer.graphicsContext.getGpuContext(graphicsContext);for(const instruction of graphicsContext=graphicsContext.instructions){if("texture"===instruction.action)return instruction.data.image.source;if("fill"===instruction.action)return instruction.data.style.texture.source}return null}}class BitmapText extends AbstractText{constructor(...args){var _b;null==(args=ensureTextOptions(args,"BitmapText")).style&&(args.style=args.style||{}),null==(_b=args.style).fill&&(_b.fill=16777215),super(args,TextStyle),this.renderPipeId="bitmapText"}updateBounds(){var bounds=this._bounds,anchor=this._anchor,bitmapMeasurement=BitmapFontManager.measureText(this.text,this._style),scale=bitmapMeasurement.scale,offset=bitmapMeasurement.offsetY*scale;let width=bitmapMeasurement.width*scale,height=bitmapMeasurement.height*scale;(bitmapMeasurement=this._style._stroke)&&(width+=bitmapMeasurement.width,height+=bitmapMeasurement.width),bounds.minX=-anchor._x*width,bounds.maxX=bounds.minX+width,bounds.minY=-anchor._y*(height+offset),bounds.maxY=bounds.minY+height}set resolution(value){null!==value&&warn("[BitmapText] dynamically updating the resolution is not supported. Resolution should be managed by the BitmapFont.")}get resolution(){return this._resolution}}class HTMLText extends AbstractText{constructor(...args){super(ensureTextOptions(args,"HtmlText"),HTMLTextStyle),this.renderPipeId="htmlText"}updateBounds(){var bounds=this._bounds,anchor=this._anchor,{width,height}=measureHtmlText(this.text,this._style);bounds.minX=-anchor._x*width,bounds.maxX=bounds.minX+width,bounds.minY=-anchor._y*height,bounds.maxY=bounds.minY+height}}class PrepareUpload extends PrepareQueue{uploadQueueItem(item){item instanceof TextureSource?this.uploadTextureSource(item):item instanceof Text?this.uploadText(item):item instanceof HTMLText?this.uploadHTMLText(item):item instanceof BitmapText?this.uploadBitmapText(item):item instanceof GraphicsContext&&this.uploadGraphicsContext(item)}uploadTextureSource(textureSource){this.renderer.texture.initSource(textureSource)}uploadText(_text){this.renderer.renderPipes.text.initGpuText(_text)}uploadBitmapText(_text){this.renderer.renderPipes.bitmapText.initGpuText(_text)}uploadHTMLText(_text){this.renderer.renderPipes.htmlText.initGpuText(_text)}uploadGraphicsContext(graphicsContext){var image;this.renderer.graphicsContext.getGpuContext(graphicsContext);for(const instruction of graphicsContext=graphicsContext.instructions)"texture"===instruction.action?(image=instruction.data.image,this.uploadTextureSource(image.source)):"fill"===instruction.action&&(image=instruction.data.style.texture,this.uploadTextureSource(image.source));return null}}class PrepareSystem extends PrepareUpload{destroy(){clearTimeout(this.timeout),this.renderer=null,this.queue=null,this.resolves=null}}PrepareSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem],name:"prepare"};class GlBatchAdaptor{constructor(){this._tempState=State.for2d(),this._didUploadHash={}}init(batcherPipe){batcherPipe.renderer.runners.contextChange.add(this)}contextChange(){this._didUploadHash={}}start(batchPipe,geometry,shader){var batchPipe=batchPipe.renderer,didUpload=this._didUploadHash[shader.uid];batchPipe.shader.bind(shader,didUpload),didUpload||(this._didUploadHash[shader.uid]=!0),batchPipe.shader.updateUniformGroup(batchPipe.globalUniforms.uniformGroup),batchPipe.geometry.bind(geometry,shader.glProgram)}execute(batchPipe,batch){var renderer=batchPipe.renderer,textures=(this._tempState.blendMode=batch.blendMode,renderer.state.set(this._tempState),batch.textures.textures);for(let i=0;i<batch.textures.count;i++)renderer.texture.bind(textures[i],i);renderer.geometry.draw(batch.topology,batch.size,batch.start)}}GlBatchAdaptor.extension={type:[ExtensionType2.WebGLPipesAdaptor],name:"batch"};const tempState=State.for2d();class GpuBatchAdaptor{start(batchPipe,geometry,shader){var encoder=(batchPipe=batchPipe.renderer).encoder,program=shader.gpuProgram,shader=(this._shader=shader,this._geometry=geometry,encoder.setGeometry(geometry,program),tempState.blendMode="normal",batchPipe.pipeline.getPipeline(geometry,program,tempState),batchPipe.globalUniforms.bindGroup);encoder.resetBindGroup(1),encoder.setBindGroup(0,shader,program)}execute(batchPipe,batch){var program=this._shader.gpuProgram,encoder=(batchPipe=batchPipe.renderer).encoder,textureBatch=(batch.bindGroup||(textureBatch=batch.textures,batch.bindGroup=getTextureBatchBindGroup(textureBatch.textures,textureBatch.count)),tempState.blendMode=batch.blendMode,batchPipe.bindGroup.getBindGroup(batch.bindGroup,program,1)),program=batchPipe.pipeline.getPipeline(this._geometry,program,tempState,batch.topology);batch.bindGroup._touch(batchPipe.textureGC.count),encoder.setPipeline(program),encoder.renderPassEncoder.setBindGroup(1,textureBatch),encoder.renderPassEncoder.drawIndexed(batch.size,1,batch.start)}}GpuBatchAdaptor.extension={type:[ExtensionType2.WebGPUPipesAdaptor],name:"batch"};const _BatcherPipe=class _BatcherPipe{constructor(renderer,adaptor){this.state=State.for2d(),this._batchersByInstructionSet=Object.create(null),this._activeBatches=Object.create(null),this.renderer=renderer,this._adaptor=adaptor,null!=(adaptor=(renderer=this._adaptor).init)&&adaptor.call(renderer,this)}static getBatcher(name){return new this._availableBatchers[name]}buildStart(instructionSet){let batchers=this._batchersByInstructionSet[instructionSet.uid];batchers||(batchers=this._batchersByInstructionSet[instructionSet.uid]=Object.create(null)).default||(batchers.default=new DefaultBatcher),this._activeBatches=batchers,this._activeBatch=this._activeBatches.default;for(const i in this._activeBatches)this._activeBatches[i].begin()}addToBatch(batchableObject,instructionSet){if(this._activeBatch.name!==batchableObject.batcherName){this._activeBatch.break(instructionSet);let batch=this._activeBatches[batchableObject.batcherName];batch||(batch=this._activeBatches[batchableObject.batcherName]=_BatcherPipe.getBatcher(batchableObject.batcherName)).begin(),this._activeBatch=batch}this._activeBatch.add(batchableObject)}break(instructionSet){this._activeBatch.break(instructionSet)}buildEnd(instructionSet){this._activeBatch.break(instructionSet);var batches=this._activeBatches;for(const i in batches){var batch=batches[i],geometry=batch.geometry;geometry.indexBuffer.setDataWithSize(batch.indexBuffer,batch.indexSize,!0),geometry.buffers[0].setDataWithSize(batch.attributeBuffer.float32View,batch.attributeSize,!1)}}upload(instructionSet){var batchers=this._batchersByInstructionSet[instructionSet.uid];for(const i in batchers){var batcher=batchers[i],geometry=batcher.geometry;batcher.dirty&&(batcher.dirty=!1,geometry.buffers[0].update(4*batcher.attributeSize))}}execute(batch){var geometry,batcher;"startBatch"===batch.action&&(geometry=(batcher=batch.batcher).geometry,batcher=batcher.shader,this._adaptor.start(this,geometry,batcher)),this._adaptor.execute(this,batch)}destroy(){this.state=null,this.renderer=null,this._adaptor=null;for(const i in this._activeBatches)this._activeBatches[i].destroy();this._activeBatches=null}};_BatcherPipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"batch"},_BatcherPipe._availableBatchers=Object.create(null);var BatcherPipe=_BatcherPipe;extensions.handleByMap(ExtensionType2.Batcher,BatcherPipe._availableBatchers),extensions.add(DefaultBatcher);const textureBit={name:"texture-bit",vertex:{header:`
struct TextureUniforms {
uTextureMatrix:mat3x3<f32>,
}
@group(2) @binding(2) var<uniform> textureUniforms : TextureUniforms;
`,main:`
uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy;
`},fragment:{header:`
@group(2) @binding(0) var uTexture: texture_2d<f32>;
@group(2) @binding(1) var uSampler: sampler;
`,main:`
outColor = textureSample(uTexture, uSampler, vUV);
`}},textureBitGl={name:"texture-bit",vertex:{header:`
uniform mat3 uTextureMatrix;
`,main:`
uv = (uTextureMatrix * vec3(uv, 1.0)).xy;
`},fragment:{header:`
uniform sampler2D uTexture;
`,main:`
outColor = texture(uTexture, vUV);
`}},tempBounds$1=new Bounds;class AlphaMaskEffect extends FilterEffect{constructor(){super(),this.filters=[new MaskFilter({sprite:new Sprite(Texture.EMPTY),inverse:!1,resolution:"inherit",antialias:"inherit"})]}get sprite(){return this.filters[0].sprite}set sprite(value){this.filters[0].sprite=value}get inverse(){return this.filters[0].inverse}set inverse(value){this.filters[0].inverse=value}}class AlphaMaskPipe{constructor(renderer){this._activeMaskStage=[],this._renderer=renderer}push(mask,maskedContainer,instructionSet){var maskContainer,renderer=this._renderer;renderer.renderPipes.batch.break(instructionSet),instructionSet.add({renderPipeId:"alphaMask",action:"pushMaskBegin",mask:mask,inverse:maskedContainer._maskOptions.inverse,canBundle:!1,maskedContainer:maskedContainer}),mask.inverse=maskedContainer._maskOptions.inverse,mask.renderMaskToTexture&&((maskContainer=mask.mask).includeInBuild=!0,maskContainer.collectRenderables(instructionSet,renderer,null),maskContainer.includeInBuild=!1),renderer.renderPipes.batch.break(instructionSet),instructionSet.add({renderPipeId:"alphaMask",action:"pushMaskEnd",mask:mask,maskedContainer:maskedContainer,inverse:maskedContainer._maskOptions.inverse,canBundle:!1})}pop(mask,_maskedContainer,instructionSet){this._renderer.renderPipes.batch.break(instructionSet),instructionSet.add({renderPipeId:"alphaMask",action:"popMaskEnd",mask:mask,inverse:_maskedContainer._maskOptions.inverse,canBundle:!1})}execute(instruction){var colorTextureSource,filterEffect,sprite,bounds,renderer=this._renderer,renderMask=instruction.mask.renderMaskToTexture;"pushMaskBegin"===instruction.action?((filterEffect=BigPool.get(AlphaMaskEffect)).inverse=instruction.inverse,renderMask?(instruction.mask.mask.measurable=!0,bounds=getGlobalBounds(instruction.mask.mask,!0,tempBounds$1),instruction.mask.mask.measurable=!1,bounds.ceil(),colorTextureSource=renderer.renderTarget.renderTarget.colorTexture.source,colorTextureSource=TexturePool.getOptimalTexture(bounds.width,bounds.height,colorTextureSource._resolution,colorTextureSource.antialias),renderer.renderTarget.push(colorTextureSource,!0),renderer.globalUniforms.push({offset:bounds,worldColor:4294967295}),(sprite=filterEffect.sprite).texture=colorTextureSource,sprite.worldTransform.tx=bounds.minX,sprite.worldTransform.ty=bounds.minY,this._activeMaskStage.push({filterEffect:filterEffect,maskedContainer:instruction.maskedContainer,filterTexture:colorTextureSource})):(filterEffect.sprite=instruction.mask.mask,this._activeMaskStage.push({filterEffect:filterEffect,maskedContainer:instruction.maskedContainer}))):"pushMaskEnd"===instruction.action?(sprite=this._activeMaskStage[this._activeMaskStage.length-1],renderMask&&(renderer.type===RendererType.WEBGL&&renderer.renderTarget.finishRenderPass(),renderer.renderTarget.pop(),renderer.globalUniforms.pop()),renderer.filter.push({renderPipeId:"filter",action:"pushFilter",container:sprite.maskedContainer,filterEffect:sprite.filterEffect,canBundle:!1})):"popMaskEnd"===instruction.action&&(renderer.filter.pop(),bounds=this._activeMaskStage.pop(),renderMask&&TexturePool.returnTexture(bounds.filterTexture),BigPool.return(bounds.filterEffect))}destroy(){this._renderer=null,this._activeMaskStage=null}}AlphaMaskPipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"alphaMask"};class ColorMaskPipe{constructor(renderer){this._colorStack=[],this._colorStackIndex=0,this._currentColor=0,this._renderer=renderer}buildStart(){this._colorStack[0]=15,this._colorStackIndex=1,this._currentColor=15}push(mask,_container,instructionSet){this._renderer.renderPipes.batch.break(instructionSet);var colorStack=this._colorStack;colorStack[this._colorStackIndex]=colorStack[this._colorStackIndex-1]&mask.mask,(colorStack=this._colorStack[this._colorStackIndex])!==this._currentColor&&(this._currentColor=colorStack,instructionSet.add({renderPipeId:"colorMask",colorMask:colorStack,canBundle:!1})),this._colorStackIndex++}pop(_mask,_container,instructionSet){this._renderer.renderPipes.batch.break(instructionSet);var colorStack=this._colorStack;this._colorStackIndex--,(colorStack=colorStack[this._colorStackIndex-1])!==this._currentColor&&(this._currentColor=colorStack,instructionSet.add({renderPipeId:"colorMask",colorMask:colorStack,canBundle:!1}))}execute(instruction){this._renderer.colorMask.setMask(instruction.colorMask)}destroy(){this._colorStack=null}}ColorMaskPipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"colorMask"};class StencilMaskPipe{constructor(renderer){this._maskStackHash={},this._maskHash=new WeakMap,this._renderer=renderer}push(mask,_container,instructionSet){var effect=mask,renderer=this._renderer,maskContainer=(renderer.renderPipes.batch.break(instructionSet),renderer.renderPipes.blendMode.setBlendMode(effect.mask,"none",instructionSet),instructionSet.add({renderPipeId:"stencilMask",action:"pushMaskBegin",mask:mask,inverse:_container._maskOptions.inverse,canBundle:!1}),(maskContainer=effect.mask).includeInBuild=!0,this._maskHash.has(effect)||this._maskHash.set(effect,{instructionsStart:0,instructionsLength:0}),(effect=this._maskHash.get(effect)).instructionsStart=instructionSet.instructionSize,maskContainer.collectRenderables(instructionSet,renderer,null),maskContainer.includeInBuild=!1,renderer.renderPipes.batch.break(instructionSet),instructionSet.add({renderPipeId:"stencilMask",action:"pushMaskEnd",mask:mask,inverse:_container._maskOptions.inverse,canBundle:!1}),instructionSet.instructionSize-effect.instructionsStart-1),mask=(effect.instructionsLength=maskContainer,renderer.renderTarget.renderTarget.uid);null==(_container=this._maskStackHash)[mask]&&(_container[mask]=0)}pop(mask,_container,instructionSet){var effect=mask,renderer=this._renderer,maskData=(renderer.renderPipes.batch.break(instructionSet),renderer.renderPipes.blendMode.setBlendMode(effect.mask,"none",instructionSet),instructionSet.add({renderPipeId:"stencilMask",action:"popMaskBegin",inverse:_container._maskOptions.inverse,canBundle:!1}),this._maskHash.get(mask));for(let i=0;i<maskData.instructionsLength;i++)instructionSet.instructions[instructionSet.instructionSize++]=instructionSet.instructions[maskData.instructionsStart++];instructionSet.add({renderPipeId:"stencilMask",action:"popMaskEnd",canBundle:!1})}execute(instruction){var _a,_b,renderer=this._renderer,renderTargetUid=renderer.renderTarget.renderTarget.uid;let maskStackIndex=null!=(_b=(_a=this._maskStackHash)[renderTargetUid])?_b:_a[renderTargetUid]=0;"pushMaskBegin"===instruction.action?(renderer.renderTarget.ensureDepthStencil(),renderer.stencil.setStencilMode(STENCIL_MODES.RENDERING_MASK_ADD,maskStackIndex),maskStackIndex++,renderer.colorMask.setMask(0)):"pushMaskEnd"===instruction.action?(instruction.inverse?renderer.stencil.setStencilMode(STENCIL_MODES.INVERSE_MASK_ACTIVE,maskStackIndex):renderer.stencil.setStencilMode(STENCIL_MODES.MASK_ACTIVE,maskStackIndex),renderer.colorMask.setMask(15)):"popMaskBegin"===instruction.action?(renderer.colorMask.setMask(0),0!==maskStackIndex?renderer.stencil.setStencilMode(STENCIL_MODES.RENDERING_MASK_REMOVE,maskStackIndex):(renderer.renderTarget.clear(null,CLEAR.STENCIL),renderer.stencil.setStencilMode(STENCIL_MODES.DISABLED,maskStackIndex)),maskStackIndex--):"popMaskEnd"===instruction.action&&(instruction.inverse?renderer.stencil.setStencilMode(STENCIL_MODES.INVERSE_MASK_ACTIVE,maskStackIndex):renderer.stencil.setStencilMode(STENCIL_MODES.MASK_ACTIVE,maskStackIndex),renderer.colorMask.setMask(15)),this._maskStackHash[renderTargetUid]=maskStackIndex}destroy(){this._renderer=null,this._maskStackHash=null,this._maskHash=null}}StencilMaskPipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"stencilMask"};var BUFFER_TYPE={ELEMENT_ARRAY_BUFFER:34963,34963:"ELEMENT_ARRAY_BUFFER",ARRAY_BUFFER:34962,34962:"ARRAY_BUFFER",UNIFORM_BUFFER:35345,35345:"UNIFORM_BUFFER"};class GlBuffer{constructor(buffer,type){this._lastBindBaseLocation=-1,this._lastBindCallId=-1,this.buffer=buffer||null,this.updateID=-1,this.byteLength=-1,this.type=type}}class GlBufferSystem{constructor(renderer){this._gpuBuffers=Object.create(null),this._boundBufferBases=Object.create(null),this._minBaseLocation=0,this._nextBindBaseIndex=this._minBaseLocation,this._bindCallId=0,this._renderer=renderer,this._renderer.renderableGC.addManagedHash(this,"_gpuBuffers")}destroy(){this._renderer=null,this._gl=null,this._gpuBuffers=null,this._boundBufferBases=null}contextChange(){var gl=this._gl=this._renderer.gl;this._gpuBuffers=Object.create(null),this._maxBindings=gl.MAX_UNIFORM_BUFFER_BINDINGS?gl.getParameter(gl.MAX_UNIFORM_BUFFER_BINDINGS):0}getGlBuffer(buffer){return this._gpuBuffers[buffer.uid]||this.createGLBuffer(buffer)}bind(buffer){var gl=this._gl,buffer=this.getGlBuffer(buffer);gl.bindBuffer(buffer.type,buffer.buffer)}bindBufferBase(glBuffer,index){var gl=this._gl;this._boundBufferBases[index]!==glBuffer&&((this._boundBufferBases[index]=glBuffer)._lastBindBaseLocation=index,gl.bindBufferBase(gl.UNIFORM_BUFFER,index,glBuffer.buffer))}nextBindBase(hasTransformFeedback){this._bindCallId++,this._minBaseLocation=0,hasTransformFeedback&&(this._boundBufferBases[0]=null,this._minBaseLocation=1,this._nextBindBaseIndex<1)&&(this._nextBindBaseIndex=1)}freeLocationForBufferBase(glBuffer){var freeIndex=this.getLastBindBaseLocation(glBuffer);if(freeIndex>=this._minBaseLocation)glBuffer._lastBindCallId=this._bindCallId;else{let loop=0,nextIndex=this._nextBindBaseIndex;for(;loop<2;){nextIndex>=this._maxBindings&&(nextIndex=this._minBaseLocation,loop++);var curBuf=this._boundBufferBases[nextIndex];if(!curBuf||curBuf._lastBindCallId!==this._bindCallId)break;nextIndex++}if(freeIndex=nextIndex,this._nextBindBaseIndex=nextIndex+1,2<=loop)return-1;glBuffer._lastBindCallId=this._bindCallId,this._boundBufferBases[freeIndex]=null}return freeIndex}getLastBindBaseLocation(glBuffer){var index=glBuffer._lastBindBaseLocation;return this._boundBufferBases[index]===glBuffer?index:-1}bindBufferRange(glBuffer,index,offset,size){var gl=this._gl;offset=offset||0,this._boundBufferBases[index=index||0]=null,gl.bindBufferRange(gl.UNIFORM_BUFFER,index||0,glBuffer.buffer,256*offset,size||256)}updateBuffer(buffer){var data,drawType,gl=this._gl,glBuffer=this.getGlBuffer(buffer);return buffer._updateID!==glBuffer.updateID&&(glBuffer.updateID=buffer._updateID,gl.bindBuffer(glBuffer.type,glBuffer.buffer),data=buffer.data,drawType=buffer.descriptor.usage&BufferUsage.STATIC?gl.STATIC_DRAW:gl.DYNAMIC_DRAW,data?glBuffer.byteLength>=data.byteLength?gl.bufferSubData(glBuffer.type,0,data,0,buffer._updateSize/data.BYTES_PER_ELEMENT):(glBuffer.byteLength=data.byteLength,gl.bufferData(glBuffer.type,data,drawType)):(glBuffer.byteLength=buffer.descriptor.size,gl.bufferData(glBuffer.type,glBuffer.byteLength,drawType))),glBuffer}destroyAll(){var gl=this._gl;for(const id in this._gpuBuffers)gl.deleteBuffer(this._gpuBuffers[id].buffer);this._gpuBuffers=Object.create(null)}onBufferDestroy(buffer,contextLost){var glBuffer=this._gpuBuffers[buffer.uid],gl=this._gl;contextLost||gl.deleteBuffer(glBuffer.buffer),this._gpuBuffers[buffer.uid]=null}createGLBuffer(buffer){var gl=this._gl;let type=BUFFER_TYPE.ARRAY_BUFFER;return buffer.descriptor.usage&BufferUsage.INDEX?type=BUFFER_TYPE.ELEMENT_ARRAY_BUFFER:buffer.descriptor.usage&BufferUsage.UNIFORM&&(type=BUFFER_TYPE.UNIFORM_BUFFER),gl=new GlBuffer(gl.createBuffer(),type),this._gpuBuffers[buffer.uid]=gl,buffer.on("destroy",this.onBufferDestroy,this),gl}resetState(){this._boundBufferBases=Object.create(null)}}GlBufferSystem.extension={type:[ExtensionType2.WebGLSystem],name:"buffer"};var __defProp$o=Object.defineProperty,__defProps$a=Object.defineProperties,__getOwnPropDescs$a=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$o=Object.getOwnPropertySymbols,__hasOwnProp$o=Object.prototype.hasOwnProperty,__propIsEnum$o=Object.prototype.propertyIsEnumerable,__defNormalProp$o=(obj,key,value)=>key in obj?__defProp$o(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$o=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$o.call(b,prop)&&__defNormalProp$o(a,prop,b[prop]);if(__getOwnPropSymbols$o)for(var prop of __getOwnPropSymbols$o(b))__propIsEnum$o.call(b,prop)&&__defNormalProp$o(a,prop,b[prop]);return a},__spreadProps$a=(a,b)=>__defProps$a(a,__getOwnPropDescs$a(b));const _GlContextSystem=class _GlContextSystem{constructor(renderer){this.supports={uint32Indices:!0,uniformBufferObject:!0,vertexArrayObject:!0,srgbTextures:!0,nonPowOf2wrapping:!0,msaa:!0,nonPowOf2mipmaps:!0},this._renderer=renderer,this.extensions=Object.create(null),this.handleContextLost=this.handleContextLost.bind(this),this.handleContextRestored=this.handleContextRestored.bind(this)}get isLost(){return!this.gl||this.gl.isContextLost()}contextChange(gl){this.gl=gl,this._renderer.gl=gl}init(options){var alpha,_a,antialias;options=__spreadValues$o(__spreadValues$o({},_GlContextSystem.defaultOptions),options);let multiView=this.multiView=options.multiView;options.context&&multiView&&(warn("Renderer created with both a context and multiview enabled. Disabling multiView as both cannot work together."),multiView=!1),multiView?this.canvas=DOMAdapter.get().createCanvas(this._renderer.canvas.width,this._renderer.canvas.height):this.canvas=this._renderer.view.canvas,options.context?this.initFromContext(options.context):(alpha=this._renderer.background.alpha<1,_a=null==(_a=options.premultipliedAlpha)||_a,antialias=options.antialias&&!this._renderer.backBuffer.useBackBuffer,this.createContext(options.preferWebGLVersion,{alpha:alpha,premultipliedAlpha:_a,antialias:antialias,stencil:!0,preserveDrawingBuffer:options.preserveDrawingBuffer,powerPreference:null!=(alpha=options.powerPreference)?alpha:"default"}))}ensureCanvasSize(targetCanvas){var canvas;this.multiView?((canvas=this.canvas).width<targetCanvas.width||canvas.height<targetCanvas.height)&&(canvas.width=Math.max(targetCanvas.width,targetCanvas.width),canvas.height=Math.max(targetCanvas.height,targetCanvas.height)):targetCanvas!==this.canvas&&warn("multiView is disabled, but targetCanvas is not the main canvas")}initFromContext(gl){this.gl=gl,this.webGLVersion=gl instanceof DOMAdapter.get().getWebGLRenderingContext()?1:2,this.getExtensions(),this.validateContext(gl),this._renderer.runners.contextChange.emit(gl),(gl=this._renderer.view.canvas).addEventListener("webglcontextlost",this.handleContextLost,!1),gl.addEventListener("webglcontextrestored",this.handleContextRestored,!1)}createContext(preferWebGLVersion,options){let gl;var canvas=this.canvas;if(!(gl=2===preferWebGLVersion?canvas.getContext("webgl2",options):gl)&&!(gl=canvas.getContext("webgl",options)))throw new Error("This browser does not support WebGL. Try using the canvas renderer");this.gl=gl,this.initFromContext(this.gl)}getExtensions(){var gl=this.gl,common={anisotropicFiltering:gl.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:gl.getExtension("OES_texture_float_linear"),s3tc:gl.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:gl.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:gl.getExtension("WEBGL_compressed_texture_etc"),etc1:gl.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:gl.getExtension("WEBGL_compressed_texture_pvrtc")||gl.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:gl.getExtension("WEBGL_compressed_texture_atc"),astc:gl.getExtension("WEBGL_compressed_texture_astc"),bptc:gl.getExtension("EXT_texture_compression_bptc"),rgtc:gl.getExtension("EXT_texture_compression_rgtc"),loseContext:gl.getExtension("WEBGL_lose_context")};1===this.webGLVersion?this.extensions=__spreadProps$a(__spreadValues$o({},common),{drawBuffers:gl.getExtension("WEBGL_draw_buffers"),depthTexture:gl.getExtension("WEBGL_depth_texture"),vertexArrayObject:gl.getExtension("OES_vertex_array_object")||gl.getExtension("MOZ_OES_vertex_array_object")||gl.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:gl.getExtension("OES_element_index_uint"),floatTexture:gl.getExtension("OES_texture_float"),floatTextureLinear:gl.getExtension("OES_texture_float_linear"),textureHalfFloat:gl.getExtension("OES_texture_half_float"),textureHalfFloatLinear:gl.getExtension("OES_texture_half_float_linear"),vertexAttribDivisorANGLE:gl.getExtension("ANGLE_instanced_arrays"),srgb:gl.getExtension("EXT_sRGB")}):(this.extensions=__spreadProps$a(__spreadValues$o({},common),{colorBufferFloat:gl.getExtension("EXT_color_buffer_float")}),(common=gl.getExtension("WEBGL_provoking_vertex"))&&common.provokingVertexWEBGL(common.FIRST_VERTEX_CONVENTION_WEBGL))}handleContextLost(event){event.preventDefault(),this._contextLossForced&&(this._contextLossForced=!1,setTimeout(()=>{var _a;this.gl.isContextLost()&&null!=(_a=this.extensions.loseContext)&&_a.restoreContext()},0))}handleContextRestored(){this.getExtensions(),this._renderer.runners.contextChange.emit(this.gl)}destroy(){var element=this._renderer.view.canvas;this._renderer=null,element.removeEventListener("webglcontextlost",this.handleContextLost),element.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),null!=(element=this.extensions.loseContext)&&element.loseContext()}forceContextLoss(){var _a;null!=(_a=this.extensions.loseContext)&&_a.loseContext(),this._contextLossForced=!0}validateContext(gl){(gl=gl.getContextAttributes())&&!gl.stencil&&warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");var gl=this.supports,isWebGl2=2===this.webGLVersion,extensions=this.extensions;gl.uint32Indices=isWebGl2||!!extensions.uint32ElementIndex,gl.uniformBufferObject=isWebGl2,gl.vertexArrayObject=isWebGl2||!!extensions.vertexArrayObject,gl.srgbTextures=isWebGl2||!!extensions.srgb,gl.nonPowOf2wrapping=isWebGl2,gl.nonPowOf2mipmaps=isWebGl2,gl.msaa=isWebGl2,gl.uint32Indices||warn("Provided WebGL context does not support 32 index buffer, large scenes may not render correctly")}};_GlContextSystem.extension={type:[ExtensionType2.WebGLSystem],name:"context"},_GlContextSystem.defaultOptions={context:null,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:void 0,preferWebGLVersion:2,multiView:!1};var BUFFER_TYPE2=_GlContextSystem;function ensureAttributes(geometry,extractedData){for(const i in geometry.attributes){var attribute=geometry.attributes[i],attributeData=extractedData[i];attributeData?(null==attribute.format&&(attribute.format=attributeData.format),null==attribute.offset&&(attribute.offset=attributeData.offset),null==attribute.instance&&(attribute.instance=attributeData.instance)):warn(`Attribute ${i} is not present in the shader, but is present in the geometry. Unable to infer attribute details.`)}!function(geometry){var attribute,{buffers,attributes}=geometry,tempStride={},tempStart={};for(const j in buffers){var buffer=buffers[j];tempStride[buffer.uid]=0,tempStart[buffer.uid]=0}for(const j in attributes)tempStride[(attribute=attributes[j]).buffer.uid]+=getAttributeInfoFromFormat(attribute.format).stride;for(const j in attributes)null==(attribute=attributes[j]).stride&&(attribute.stride=tempStride[attribute.buffer.uid]),null==attribute.start&&(attribute.start=tempStart[attribute.buffer.uid]),tempStart[attribute.buffer.uid]+=getAttributeInfoFromFormat(attribute.format).stride}(geometry)}var GL_FORMATS2={RGBA:6408,6408:"RGBA",RGB:6407,6407:"RGB",RG:33319,33319:"RG",RED:6403,6403:"RED",RGBA_INTEGER:36249,36249:"RGBA_INTEGER",RGB_INTEGER:36248,36248:"RGB_INTEGER",RG_INTEGER:33320,33320:"RG_INTEGER",RED_INTEGER:36244,36244:"RED_INTEGER",ALPHA:6406,6406:"ALPHA",LUMINANCE:6409,6409:"LUMINANCE",LUMINANCE_ALPHA:6410,6410:"LUMINANCE_ALPHA",DEPTH_COMPONENT:6402,6402:"DEPTH_COMPONENT",DEPTH_STENCIL:34041,34041:"DEPTH_STENCIL"},GL_FORMATS=GL_FORMATS2,GL_TARGETS=((GL_FORMATS2={})[GL_FORMATS2.TEXTURE_2D=3553]="TEXTURE_2D",GL_FORMATS2[GL_FORMATS2.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",GL_FORMATS2[GL_FORMATS2.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",GL_FORMATS2[GL_FORMATS2.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",GL_FORMATS2[GL_FORMATS2.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",GL_FORMATS2[GL_FORMATS2.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",GL_FORMATS2[GL_FORMATS2.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",GL_FORMATS2[GL_FORMATS2.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",GL_FORMATS2[GL_FORMATS2.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",GL_FORMATS2),GL_TYPES=((GL_FORMATS2={})[GL_FORMATS2.CLAMP=33071]="CLAMP",GL_FORMATS2[GL_FORMATS2.REPEAT=10497]="REPEAT",GL_FORMATS2[GL_FORMATS2.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",(GL_TYPES2={})[GL_TYPES2.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",GL_TYPES2[GL_TYPES2.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",GL_TYPES2[GL_TYPES2.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",GL_TYPES2[GL_TYPES2.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",GL_TYPES2[GL_TYPES2.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",GL_TYPES2[GL_TYPES2.UNSIGNED_INT=5125]="UNSIGNED_INT",GL_TYPES2[GL_TYPES2.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",GL_TYPES2[GL_TYPES2.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",GL_TYPES2[GL_TYPES2.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",GL_TYPES2[GL_TYPES2.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",GL_TYPES2[GL_TYPES2.BYTE=5120]="BYTE",GL_TYPES2[GL_TYPES2.SHORT=5122]="SHORT",GL_TYPES2[GL_TYPES2.INT=5124]="INT",GL_TYPES2[GL_TYPES2.FLOAT=5126]="FLOAT",GL_TYPES2[GL_TYPES2.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",GL_TYPES2[GL_TYPES2.HALF_FLOAT=36193]="HALF_FLOAT",GL_TYPES2);const infoMap={uint8x2:GL_TYPES.UNSIGNED_BYTE,uint8x4:GL_TYPES.UNSIGNED_BYTE,sint8x2:GL_TYPES.BYTE,sint8x4:GL_TYPES.BYTE,unorm8x2:GL_TYPES.UNSIGNED_BYTE,unorm8x4:GL_TYPES.UNSIGNED_BYTE,snorm8x2:GL_TYPES.BYTE,snorm8x4:GL_TYPES.BYTE,uint16x2:GL_TYPES.UNSIGNED_SHORT,uint16x4:GL_TYPES.UNSIGNED_SHORT,sint16x2:GL_TYPES.SHORT,sint16x4:GL_TYPES.SHORT,unorm16x2:GL_TYPES.UNSIGNED_SHORT,unorm16x4:GL_TYPES.UNSIGNED_SHORT,snorm16x2:GL_TYPES.SHORT,snorm16x4:GL_TYPES.SHORT,float16x2:GL_TYPES.HALF_FLOAT,float16x4:GL_TYPES.HALF_FLOAT,float32:GL_TYPES.FLOAT,float32x2:GL_TYPES.FLOAT,float32x3:GL_TYPES.FLOAT,float32x4:GL_TYPES.FLOAT,uint32:GL_TYPES.UNSIGNED_INT,uint32x2:GL_TYPES.UNSIGNED_INT,uint32x3:GL_TYPES.UNSIGNED_INT,uint32x4:GL_TYPES.UNSIGNED_INT,sint32:GL_TYPES.INT,sint32x2:GL_TYPES.INT,sint32x3:GL_TYPES.INT,sint32x4:GL_TYPES.INT};function getGlTypeFromFormat(format){return null!=(format=infoMap[format])?format:infoMap.float32}const topologyToGlMap={"point-list":0,"line-list":1,"line-strip":3,"triangle-list":4,"triangle-strip":5};class GlGeometrySystem{constructor(renderer){this._geometryVaoHash=Object.create(null),this._renderer=renderer,this._activeGeometry=null,this._activeVao=null,this.hasVao=!0,this.hasInstance=!0,this._renderer.renderableGC.addManagedHash(this,"_geometryVaoHash")}contextChange(){var gl=this.gl=this._renderer.gl;if(!this._renderer.context.supports.vertexArrayObject)throw new Error("[PixiJS] Vertex Array Objects are not supported on this device");const nativeVaoExtension=this._renderer.context.extensions.vertexArrayObject,nativeInstancedExtension=(nativeVaoExtension&&(gl.createVertexArray=()=>nativeVaoExtension.createVertexArrayOES(),gl.bindVertexArray=vao=>nativeVaoExtension.bindVertexArrayOES(vao),gl.deleteVertexArray=vao=>nativeVaoExtension.deleteVertexArrayOES(vao)),this._renderer.context.extensions.vertexAttribDivisorANGLE);nativeInstancedExtension&&(gl.drawArraysInstanced=(a,b,c,d)=>{nativeInstancedExtension.drawArraysInstancedANGLE(a,b,c,d)},gl.drawElementsInstanced=(a,b,c,d,e)=>{nativeInstancedExtension.drawElementsInstancedANGLE(a,b,c,d,e)},gl.vertexAttribDivisor=(a,b)=>nativeInstancedExtension.vertexAttribDivisorANGLE(a,b)),this._activeGeometry=null,this._activeVao=null,this._geometryVaoHash=Object.create(null)}bind(geometry,program){var gl=this.gl,geometry=(this._activeGeometry=geometry,this.getVao(geometry,program));this._activeVao!==geometry&&(this._activeVao=geometry,gl.bindVertexArray(geometry)),this.updateBuffers()}resetState(){this.unbind()}updateBuffers(){var geometry=this._activeGeometry,bufferSystem=this._renderer.buffer;for(let i=0;i<geometry.buffers.length;i++){var buffer=geometry.buffers[i];bufferSystem.updateBuffer(buffer)}}checkCompatibility(geometry,program){var geometryAttributes=geometry.attributes;for(const j in program._attributeData)if(!geometryAttributes[j])throw new Error(`shader and geometry incompatible, geometry missing the "${j}" attribute`)}getSignature(geometry,program){var attribs=geometry.attributes,shaderAttributes=program._attributeData,strings=["g",geometry.uid];for(const i in attribs)shaderAttributes[i]&&strings.push(i,shaderAttributes[i].location);return strings.join("-")}getVao(geometry,program){var _a;return(null==(_a=this._geometryVaoHash[geometry.uid])?void 0:_a[program._key])||this.initGeometryVao(geometry,program)}initGeometryVao(geometry,program,_incRefCount=0){var gl=this._renderer.gl,bufferSystem=this._renderer.buffer,signature=(this._renderer.shader._getProgramData(program),this.checkCompatibility(geometry,program),this.getSignature(geometry,program)),vaoObjectHash=(this._geometryVaoHash[geometry.uid]||(this._geometryVaoHash[geometry.uid]=Object.create(null),geometry.on("destroy",this.onGeometryDestroy,this)),this._geometryVaoHash[geometry.uid]);if(vao=vaoObjectHash[signature])return vaoObjectHash[program._key]=vao;ensureAttributes(geometry,program._attributeData);var buffers=geometry.buffers,vao=gl.createVertexArray();gl.bindVertexArray(vao);for(let i=0;i<buffers.length;i++){var buffer=buffers[i];bufferSystem.bind(buffer)}return this.activateVao(geometry,program),vaoObjectHash[program._key]=vao,vaoObjectHash[signature]=vao,gl.bindVertexArray(null),vao}onGeometryDestroy(geometry,contextLost){var vaoObjectHash=this._geometryVaoHash[geometry.uid],gl=this.gl;if(vaoObjectHash){if(contextLost)for(const i in vaoObjectHash)this._activeVao!==vaoObjectHash[i]&&this.unbind(),gl.deleteVertexArray(vaoObjectHash[i]);this._geometryVaoHash[geometry.uid]=null}}destroyAll(contextLost=!1){var gl=this.gl;for(const i in this._geometryVaoHash){if(contextLost)for(const j in this._geometryVaoHash[i]){var vaoObjectHash=this._geometryVaoHash[i];this._activeVao!==vaoObjectHash&&this.unbind(),gl.deleteVertexArray(vaoObjectHash[j])}this._geometryVaoHash[i]=null}}activateVao(geometry,program){var gl=this._renderer.gl,bufferSystem=this._renderer.buffer,attributes=geometry.attributes;geometry.indexBuffer&&bufferSystem.bind(geometry.indexBuffer);let lastBuffer=null;for(const j in attributes){var attribute=attributes[j],buffer=attribute.buffer,glBuffer=bufferSystem.getGlBuffer(buffer),programAttrib=program._attributeData[j];if(programAttrib){lastBuffer!==glBuffer&&(bufferSystem.bind(buffer),lastBuffer=glBuffer);var buffer=programAttrib.location,glBuffer=(gl.enableVertexAttribArray(buffer),getAttributeInfoFromFormat(attribute.format)),type=getGlTypeFromFormat(attribute.format);if("int"===(null==(programAttrib=programAttrib.format)?void 0:programAttrib.substring(1,4))?gl.vertexAttribIPointer(buffer,glBuffer.size,type,attribute.stride,attribute.offset):gl.vertexAttribPointer(buffer,glBuffer.size,type,glBuffer.normalised,attribute.stride,attribute.offset),attribute.instance){if(!this.hasInstance)throw new Error("geometry error, GPU Instancing is not supported on this device");type=null!=(programAttrib=attribute.divisor)?programAttrib:1,gl.vertexAttribDivisor(buffer,type)}}}}draw(topology,size,start,instanceCount){var byteSize,glType,gl=this._renderer.gl,geometry=this._activeGeometry,topology=topologyToGlMap[topology||geometry.topology];return null==instanceCount&&(instanceCount=geometry.instanceCount),geometry.indexBuffer?(glType=2===(byteSize=geometry.indexBuffer.data.BYTES_PER_ELEMENT)?gl.UNSIGNED_SHORT:gl.UNSIGNED_INT,1<instanceCount?gl.drawElementsInstanced(topology,size||geometry.indexBuffer.data.length,glType,(start||0)*byteSize,instanceCount):gl.drawElements(topology,size||geometry.indexBuffer.data.length,glType,(start||0)*byteSize)):1<instanceCount?gl.drawArraysInstanced(topology,start||0,size||geometry.getSize(),instanceCount):gl.drawArrays(topology,start||0,size||geometry.getSize()),this}unbind(){this.gl.bindVertexArray(null),this._activeVao=null,this._activeGeometry=null}destroy(){this._renderer=null,this.gl=null,this._activeVao=null,this._activeGeometry=null}}GlGeometrySystem.extension={type:[ExtensionType2.WebGLSystem],name:"geometry"};var __defProp$n=Object.defineProperty,__getOwnPropSymbols$n=Object.getOwnPropertySymbols,__hasOwnProp$n=Object.prototype.hasOwnProperty,__propIsEnum$n=Object.prototype.propertyIsEnumerable,__defNormalProp$n=(obj,key,value)=>key in obj?__defProp$n(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$n=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$n.call(b,prop)&&__defNormalProp$n(a,prop,b[prop]);if(__getOwnPropSymbols$n)for(var prop of __getOwnPropSymbols$n(b))__propIsEnum$n.call(b,prop)&&__defNormalProp$n(a,prop,b[prop]);return a};const bigTriangleGeometry=new Geometry({attributes:{aPosition:[-1,-1,3,-1,-1,3]}}),_GlBackBufferSystem=class _GlBackBufferSystem{constructor(renderer){this.useBackBuffer=!1,this._useBackBufferThisRender=!1,this._renderer=renderer}init(options={}){var{useBackBuffer:options,antialias}=__spreadValues$n(__spreadValues$n({},_GlBackBufferSystem.defaultOptions),options),options=(this.useBackBuffer=options,this._antialias=antialias,this._renderer.context.supports.msaa||(warn("antialiasing, is not supported on when using the back buffer"),this._antialias=!1),this._state=State.for2d(),new GlProgram({vertex:`
attribute vec2 aPosition;
out vec2 vUv;
void main() {
gl_Position = vec4(aPosition, 0.0, 1.0);
vUv = (aPosition + 1.0) / 2.0;
// flip dem UVs
vUv.y = 1.0 - vUv.y;
}`,fragment:`
in vec2 vUv;
out vec4 finalColor;
uniform sampler2D uTexture;
void main() {
finalColor = texture(uTexture, vUv);
}`,name:"big-triangle"}));this._bigTriangleShader=new Shader({glProgram:options,resources:{uTexture:Texture.WHITE.source}})}renderStart(options){var renderTarget=this._renderer.renderTarget.getRenderTarget(options.target);this._useBackBufferThisRender=this.useBackBuffer&&!!renderTarget.isRoot,this._useBackBufferThisRender&&(renderTarget=this._renderer.renderTarget.getRenderTarget(options.target),this._targetTexture=renderTarget.colorTexture,options.target=this._getBackBufferTexture(renderTarget.colorTexture))}renderEnd(){this._presentBackBuffer()}_presentBackBuffer(){var renderer=this._renderer;renderer.renderTarget.finishRenderPass(),this._useBackBufferThisRender&&(renderer.renderTarget.bind(this._targetTexture,!1),this._bigTriangleShader.resources.uTexture=this._backBufferTexture.source,renderer.encoder.draw({geometry:bigTriangleGeometry,shader:this._bigTriangleShader,state:this._state}))}_getBackBufferTexture(targetSourceTexture){return this._backBufferTexture=this._backBufferTexture||new Texture({source:new TextureSource({width:targetSourceTexture.width,height:targetSourceTexture.height,resolution:targetSourceTexture._resolution,antialias:this._antialias})}),this._backBufferTexture.source.resize(targetSourceTexture.width,targetSourceTexture.height,targetSourceTexture._resolution),this._backBufferTexture}destroy(){this._backBufferTexture&&(this._backBufferTexture.destroy(),this._backBufferTexture=null)}};_GlBackBufferSystem.extension={type:[ExtensionType2.WebGLSystem],name:"backBuffer",priority:1},_GlBackBufferSystem.defaultOptions={useBackBuffer:!1};var GL_TYPES2=_GlBackBufferSystem;class GlColorMaskSystem{constructor(renderer){this._colorMaskCache=15,this._renderer=renderer}setMask(colorMask){this._colorMaskCache!==colorMask&&(this._colorMaskCache=colorMask,this._renderer.gl.colorMask(!!(8&colorMask),!!(4&colorMask),!!(2&colorMask),!!(1&colorMask)))}}GlColorMaskSystem.extension={type:[ExtensionType2.WebGLSystem],name:"colorMask"};class GlEncoderSystem{constructor(renderer){this.commandFinished=Promise.resolve(),this._renderer=renderer}setGeometry(geometry,shader){this._renderer.geometry.bind(geometry,shader.glProgram)}finishRenderPass(){}draw(options){var renderer=this._renderer,{geometry:options,shader,state,skipSync,topology:type,size,start,instanceCount}=options;renderer.shader.bind(shader,skipSync),renderer.geometry.bind(options,renderer.shader._activeProgram),state&&renderer.state.set(state),renderer.geometry.draw(type,size,start,null!=instanceCount?instanceCount:options.instanceCount)}destroy(){this._renderer=null}}GlEncoderSystem.extension={type:[ExtensionType2.WebGLSystem],name:"encoder"};class GlRenderTarget{constructor(){this.width=-1,this.height=-1,this.msaa=!1,this.msaaRenderBuffer=[]}}const GpuStencilModesToPixi=[];GpuStencilModesToPixi[STENCIL_MODES.NONE]=void 0,GpuStencilModesToPixi[STENCIL_MODES.DISABLED]={stencilWriteMask:0,stencilReadMask:0},GpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_ADD]={stencilFront:{compare:"equal",passOp:"increment-clamp"},stencilBack:{compare:"equal",passOp:"increment-clamp"}},GpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_REMOVE]={stencilFront:{compare:"equal",passOp:"decrement-clamp"},stencilBack:{compare:"equal",passOp:"decrement-clamp"}},GpuStencilModesToPixi[STENCIL_MODES.MASK_ACTIVE]={stencilWriteMask:0,stencilFront:{compare:"equal",passOp:"keep"},stencilBack:{compare:"equal",passOp:"keep"}},GpuStencilModesToPixi[STENCIL_MODES.INVERSE_MASK_ACTIVE]={stencilWriteMask:0,stencilFront:{compare:"not-equal",passOp:"replace"},stencilBack:{compare:"not-equal",passOp:"replace"}};class GlStencilSystem{constructor(renderer){this._stencilCache={enabled:!1,stencilReference:0,stencilMode:STENCIL_MODES.NONE},this._renderTargetStencilState=Object.create(null),renderer.renderTarget.onRenderTargetChange.add(this)}contextChange(gl){this._gl=gl,this._comparisonFuncMapping={always:gl.ALWAYS,never:gl.NEVER,equal:gl.EQUAL,"not-equal":gl.NOTEQUAL,less:gl.LESS,"less-equal":gl.LEQUAL,greater:gl.GREATER,"greater-equal":gl.GEQUAL},this._stencilOpsMapping={keep:gl.KEEP,zero:gl.ZERO,replace:gl.REPLACE,invert:gl.INVERT,"increment-clamp":gl.INCR,"decrement-clamp":gl.DECR,"increment-wrap":gl.INCR_WRAP,"decrement-wrap":gl.DECR_WRAP},this.resetState()}onRenderTargetChange(renderTarget){this._activeRenderTarget!==renderTarget&&(this._activeRenderTarget=renderTarget,renderTarget=this._renderTargetStencilState[renderTarget.uid]||(this._renderTargetStencilState[renderTarget.uid]={stencilMode:STENCIL_MODES.DISABLED,stencilReference:0}),this.setStencilMode(renderTarget.stencilMode,renderTarget.stencilReference))}resetState(){this._stencilCache.enabled=!1,this._stencilCache.stencilMode=STENCIL_MODES.NONE,this._stencilCache.stencilReference=0}setStencilMode(stencilMode,stencilReference){var stencilState=this._renderTargetStencilState[this._activeRenderTarget.uid],gl=this._gl,mode=GpuStencilModesToPixi[stencilMode],_stencilCache=this._stencilCache;stencilState.stencilMode=stencilMode,stencilState.stencilReference=stencilReference,stencilMode===STENCIL_MODES.DISABLED?this._stencilCache.enabled&&(this._stencilCache.enabled=!1,gl.disable(gl.STENCIL_TEST)):(this._stencilCache.enabled||(this._stencilCache.enabled=!0,gl.enable(gl.STENCIL_TEST)),stencilMode===_stencilCache.stencilMode&&_stencilCache.stencilReference===stencilReference||(_stencilCache.stencilMode=stencilMode,_stencilCache.stencilReference=stencilReference,gl.stencilFunc(this._comparisonFuncMapping[mode.stencilBack.compare],stencilReference,255),gl.stencilOp(gl.KEEP,gl.KEEP,this._stencilOpsMapping[mode.stencilBack.passOp])))}}GlStencilSystem.extension={type:[ExtensionType2.WebGLSystem],name:"stencil"};class UboSystem{constructor(adaptor){this._syncFunctionHash=Object.create(null),this._adaptor=adaptor,this._systemCheck()}_systemCheck(){if(!unsafeEvalSupported())throw new Error("Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.")}ensureUniformGroup(uniformGroup){var uniformData=this.getUniformGroupData(uniformGroup);uniformGroup.buffer||(uniformGroup.buffer=new Buffer({data:new Float32Array(uniformData.layout.size/4),usage:BufferUsage.UNIFORM|BufferUsage.COPY_DST}))}getUniformGroupData(uniformGroup){return this._syncFunctionHash[uniformGroup._signature]||this._initUniformGroup(uniformGroup)}_initUniformGroup(uniformGroup){var elements,syncFunction,uniformGroupSignature=uniformGroup._signature;return this._syncFunctionHash[uniformGroupSignature]||(elements=Object.keys(uniformGroup.uniformStructures).map(i=>uniformGroup.uniformStructures[i]),elements=this._adaptor.createUboElements(elements),syncFunction=this._generateUboSync(elements.uboElements),this._syncFunctionHash[uniformGroupSignature]={layout:elements,syncFunction:syncFunction}),this._syncFunctionHash[uniformGroupSignature]}_generateUboSync(uboElements){return this._adaptor.generateUboSync(uboElements)}syncUniformGroup(uniformGroup,data,offset){var uniformGroupData=this.getUniformGroupData(uniformGroup);uniformGroup.buffer||(uniformGroup.buffer=new Buffer({data:new Float32Array(uniformGroupData.layout.size/4),usage:BufferUsage.UNIFORM|BufferUsage.COPY_DST}));let dataInt32=null;return data||(data=uniformGroup.buffer.data,dataInt32=uniformGroup.buffer.dataInt32),offset=offset||0,uniformGroupData.syncFunction(uniformGroup.uniforms,data,dataInt32,offset),!0}updateUniformGroup(uniformGroup){if(uniformGroup.isStatic&&!uniformGroup._dirtyId)return!1;uniformGroup._dirtyId=0;var synced=this.syncUniformGroup(uniformGroup);return uniformGroup.buffer.update(),synced}destroy(){this._syncFunctionHash=null}}const WGSL_TO_STD40_SIZE={f32:4,i32:4,"vec2<f32>":8,"vec3<f32>":12,"vec4<f32>":16,"vec2<i32>":8,"vec3<i32>":12,"vec4<i32>":16,"mat2x2<f32>":32,"mat3x3<f32>":48,"mat4x4<f32>":64};function createUboElementsSTD40(uniformData){var uboElements=uniformData.map(data=>({data:data,offset:0,size:0}));let size,offset=0;for(let i=0;i<uboElements.length;i++){var uboElement=uboElements[i];if(!(size=WGSL_TO_STD40_SIZE[uboElement.data.type]))throw new Error("Unknown type "+uboElement.data.type);var boundary=12===(size=1<uboElement.data.size?Math.max(size,16)*uboElement.data.size:size)?16:size,curOffset=(uboElement.size=size,offset%16);offset+=0<curOffset&&16-curOffset<boundary?(16-curOffset)%16:(size-curOffset%size)%size,uboElement.offset=offset,offset+=size}return{uboElements:uboElements,size:offset=16*Math.ceil(offset/16)}}const uniformParsers=[{type:"mat3x3<f32>",test:data=>void 0!==data.value.a,ubo:`
var matrix = uv[name].toArray(true);
data[offset] = matrix[0];
data[offset + 1] = matrix[1];
data[offset + 2] = matrix[2];
data[offset + 4] = matrix[3];
data[offset + 5] = matrix[4];
data[offset + 6] = matrix[5];
data[offset + 8] = matrix[6];
data[offset + 9] = matrix[7];
data[offset + 10] = matrix[8];
`,uniform:`
gl.uniformMatrix3fv(ud[name].location, false, uv[name].toArray(true));
`},{type:"vec4<f32>",test:data=>"vec4<f32>"===data.type&&1===data.size&&void 0!==data.value.width,ubo:`
v = uv[name];
data[offset] = v.x;
data[offset + 1] = v.y;
data[offset + 2] = v.width;
data[offset + 3] = v.height;
`,uniform:`
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height) {
cv[0] = v.x;
cv[1] = v.y;
cv[2] = v.width;
cv[3] = v.height;
gl.uniform4f(ud[name].location, v.x, v.y, v.width, v.height);
}
`},{type:"vec2<f32>",test:data=>"vec2<f32>"===data.type&&1===data.size&&void 0!==data.value.x,ubo:`
v = uv[name];
data[offset] = v.x;
data[offset + 1] = v.y;
`,uniform:`
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.x || cv[1] !== v.y) {
cv[0] = v.x;
cv[1] = v.y;
gl.uniform2f(ud[name].location, v.x, v.y);
}
`},{type:"vec4<f32>",test:data=>"vec4<f32>"===data.type&&1===data.size&&void 0!==data.value.red,ubo:`
v = uv[name];
data[offset] = v.red;
data[offset + 1] = v.green;
data[offset + 2] = v.blue;
data[offset + 3] = v.alpha;
`,uniform:`
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha) {
cv[0] = v.red;
cv[1] = v.green;
cv[2] = v.blue;
cv[3] = v.alpha;
gl.uniform4f(ud[name].location, v.red, v.green, v.blue, v.alpha);
}
`},{type:"vec3<f32>",test:data=>"vec3<f32>"===data.type&&1===data.size&&void 0!==data.value.red,ubo:`
v = uv[name];
data[offset] = v.red;
data[offset + 1] = v.green;
data[offset + 2] = v.blue;
`,uniform:`
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue) {
cv[0] = v.red;
cv[1] = v.green;
cv[2] = v.blue;
gl.uniform3f(ud[name].location, v.red, v.green, v.blue);
}
`}];function createUboSyncFunction(uboElements,parserCode,arrayGenerationFunction,singleSettersMap){var funcFragments=[`
var v = null;
var v2 = null;
var t = 0;
var index = 0;
var name = null;
var arrayOffset = null;
`];let prev=0;for(let i=0;i<uboElements.length;i++){var template,uboElement=uboElements[i],name=uboElement.data.name;let parsed=!1,offset=0;for(let j=0;j<uniformParsers.length;j++)if(uniformParsers[j].test(uboElement.data)){offset=uboElement.offset/4,funcFragments.push(`name = "${name}";`,`offset += ${offset-prev};`,uniformParsers[j][parserCode]||uniformParsers[j].ubo),parsed=!0;break}parsed||(1<uboElement.data.size?(offset=uboElement.offset/4,funcFragments.push(arrayGenerationFunction(uboElement,offset-prev))):(template=singleSettersMap[uboElement.data.type],offset=uboElement.offset/4,funcFragments.push(`
v = uv.${name};
offset += ${offset-prev};
${template};
`))),prev=offset}var fragmentSrc=funcFragments.join("\n");return new Function("uv","data","dataInt32","offset",fragmentSrc)}var __defProp$m=Object.defineProperty,__defProps$9=Object.defineProperties,__getOwnPropDescs$9=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$m=Object.getOwnPropertySymbols,__hasOwnProp$m=Object.prototype.hasOwnProperty,__propIsEnum$m=Object.prototype.propertyIsEnumerable,__defNormalProp$m=(obj,key,value)=>key in obj?__defProp$m(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;function loopMatrix(col,row){return`
for (let i = 0; i < ${col*row}; i++) {
data[offset + (((i / ${col})|0) * 4) + (i % ${col})] = v[i];
}
`}const uboSyncFunctionsSTD40={f32:`
data[offset] = v;`,i32:`
dataInt32[offset] = v;`,"vec2<f32>":`
data[offset] = v[0];
data[offset + 1] = v[1];`,"vec3<f32>":`
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];`,"vec4<f32>":`
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];
data[offset + 3] = v[3];`,"vec2<i32>":`
dataInt32[offset] = v[0];
dataInt32[offset + 1] = v[1];`,"vec3<i32>":`
dataInt32[offset] = v[0];
dataInt32[offset + 1] = v[1];
dataInt32[offset + 2] = v[2];`,"vec4<i32>":`
dataInt32[offset] = v[0];
dataInt32[offset + 1] = v[1];
dataInt32[offset + 2] = v[2];
dataInt32[offset + 3] = v[3];`,"mat2x2<f32>":`
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 4] = v[2];
data[offset + 5] = v[3];`,"mat3x3<f32>":`
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];
data[offset + 4] = v[3];
data[offset + 5] = v[4];
data[offset + 6] = v[5];
data[offset + 8] = v[6];
data[offset + 9] = v[7];
data[offset + 10] = v[8];`,"mat4x4<f32>":`
for (let i = 0; i < 16; i++) {
data[offset + i] = v[i];
}`,"mat3x2<f32>":loopMatrix(3,2),"mat4x2<f32>":loopMatrix(4,2),"mat2x3<f32>":loopMatrix(2,3),"mat4x3<f32>":loopMatrix(4,3),"mat2x4<f32>":loopMatrix(2,4),"mat3x4<f32>":loopMatrix(3,4)},uboSyncFunctionsWGSL=(a=>__defProps$9(a,__getOwnPropDescs$9({"mat2x2<f32>":`
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];
data[offset + 3] = v[3];
`})))(((a,b)=>{for(var prop in uboSyncFunctionsSTD40)__hasOwnProp$m.call(b,prop)&&__defNormalProp$m(a,prop,b[prop]);if(__getOwnPropSymbols$m)for(var prop of __getOwnPropSymbols$m(b))__propIsEnum$m.call(b,prop)&&__defNormalProp$m(a,prop,b[prop]);return a})({},uboSyncFunctionsSTD40));function generateArraySyncSTD40(uboElement,offsetToAdd){var rowSize=Math.max(WGSL_TO_STD40_SIZE[uboElement.data.type]/16,1),elementSize=uboElement.data.value.length/uboElement.data.size,remainder=(4-elementSize%4)%4,data=0<=uboElement.data.type.indexOf("i32")?"dataInt32":"data";return`
v = uv.${uboElement.data.name};
offset += ${offsetToAdd};
arrayOffset = offset;
t = 0;
for(var i=0; i < ${uboElement.data.size*rowSize}; i++)
{
for(var j = 0; j < ${elementSize}; j++)
{
${data}[arrayOffset++] = v[t++];
}
${0!=remainder?`arrayOffset += ${remainder};`:""}
}
`}function createUboSyncFunctionSTD40(uboElements){return createUboSyncFunction(uboElements,"uboStd40",generateArraySyncSTD40,uboSyncFunctionsSTD40)}class GlUboSystem extends UboSystem{constructor(){super({createUboElements:createUboElementsSTD40,generateUboSync:createUboSyncFunctionSTD40})}}GlUboSystem.extension={type:[ExtensionType2.WebGLSystem],name:"ubo"};class GlRenderTargetAdaptor{constructor(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new Rectangle}init(renderer,renderTargetSystem){this._renderer=renderer,this._renderTargetSystem=renderTargetSystem,renderer.runners.contextChange.add(this)}contextChange(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new Rectangle}copyToTexture(sourceRenderSurfaceTexture,destinationTexture,originSrc,size,originDest){var renderTargetSystem=this._renderTargetSystem,renderer=this._renderer,renderTargetSystem=renderTargetSystem.getGpuRenderTarget(sourceRenderSurfaceTexture),gl=renderer.gl;return this.finishRenderPass(sourceRenderSurfaceTexture),gl.bindFramebuffer(gl.FRAMEBUFFER,renderTargetSystem.resolveTargetFramebuffer),renderer.texture.bind(destinationTexture,0),gl.copyTexSubImage2D(gl.TEXTURE_2D,0,originDest.x,originDest.y,originSrc.x,originSrc.y,size.width,size.height),destinationTexture}startRenderPass(renderTarget,clear=!0,clearColor,viewport){var renderTargetSystem=this._renderTargetSystem,source=renderTarget.colorTexture,renderTargetSystem=renderTargetSystem.getGpuRenderTarget(renderTarget);let viewPortY=viewport.y;renderTarget.isRoot&&(viewPortY=source.pixelHeight-viewport.height),renderTarget.colorTextures.forEach(texture=>{this._renderer.texture.unbind(texture)}),(source=this._renderer.gl).bindFramebuffer(source.FRAMEBUFFER,renderTargetSystem.framebuffer);var viewPortCache=this._viewPortCache;viewPortCache.x===viewport.x&&viewPortCache.y===viewPortY&&viewPortCache.width===viewport.width&&viewPortCache.height===viewport.height||(viewPortCache.x=viewport.x,viewPortCache.y=viewPortY,viewPortCache.width=viewport.width,viewPortCache.height=viewport.height,source.viewport(viewport.x,viewPortY,viewport.width,viewport.height)),renderTargetSystem.depthStencilRenderBuffer||!renderTarget.stencil&&!renderTarget.depth||this._initStencil(renderTargetSystem),this.clear(renderTarget,clear,clearColor)}finishRenderPass(renderTarget){var gl;(renderTarget=this._renderTargetSystem.getGpuRenderTarget(renderTarget)).msaa&&((gl=this._renderer.gl).bindFramebuffer(gl.FRAMEBUFFER,renderTarget.resolveTargetFramebuffer),gl.bindFramebuffer(gl.READ_FRAMEBUFFER,renderTarget.framebuffer),gl.blitFramebuffer(0,0,renderTarget.width,renderTarget.height,0,0,renderTarget.width,renderTarget.height,gl.COLOR_BUFFER_BIT,gl.NEAREST),gl.bindFramebuffer(gl.FRAMEBUFFER,renderTarget.framebuffer))}initGpuRenderTarget(renderTarget){var gl=this._renderer.gl,glRenderTarget=new GlRenderTarget,colorTexture=renderTarget.colorTexture;return CanvasSource.test(colorTexture.resource)?(this._renderer.context.ensureCanvasSize(renderTarget.colorTexture.resource),glRenderTarget.framebuffer=null):(this._initColor(renderTarget,glRenderTarget),gl.bindFramebuffer(gl.FRAMEBUFFER,null)),glRenderTarget}destroyGpuRenderTarget(gpuRenderTarget){const gl=this._renderer.gl;gpuRenderTarget.framebuffer&&(gl.deleteFramebuffer(gpuRenderTarget.framebuffer),gpuRenderTarget.framebuffer=null),gpuRenderTarget.resolveTargetFramebuffer&&(gl.deleteFramebuffer(gpuRenderTarget.resolveTargetFramebuffer),gpuRenderTarget.resolveTargetFramebuffer=null),gpuRenderTarget.depthStencilRenderBuffer&&(gl.deleteRenderbuffer(gpuRenderTarget.depthStencilRenderBuffer),gpuRenderTarget.depthStencilRenderBuffer=null),gpuRenderTarget.msaaRenderBuffer.forEach(renderBuffer=>{gl.deleteRenderbuffer(renderBuffer)}),gpuRenderTarget.msaaRenderBuffer=null}clear(_renderTarget,clear,clearColor){var gl,renderTargetSystem;clear&&(renderTargetSystem=this._renderTargetSystem,gl=this._renderer.gl,(clear="boolean"==typeof clear?clear?CLEAR.ALL:CLEAR.NONE:clear)&CLEAR.COLOR&&(renderTargetSystem=clearColor=null==clearColor?renderTargetSystem.defaultClearColor:clearColor,(clearColor=this._clearColorCache)[0]===renderTargetSystem[0]&&clearColor[1]===renderTargetSystem[1]&&clearColor[2]===renderTargetSystem[2]&&clearColor[3]===renderTargetSystem[3]||(clearColor[0]=renderTargetSystem[0],clearColor[1]=renderTargetSystem[1],clearColor[2]=renderTargetSystem[2],clearColor[3]=renderTargetSystem[3],gl.clearColor(renderTargetSystem[0],renderTargetSystem[1],renderTargetSystem[2],renderTargetSystem[3]))),gl.clear(clear))}resizeGpuRenderTarget(renderTarget){var glRenderTarget;!renderTarget.isRoot&&(glRenderTarget=this._renderTargetSystem.getGpuRenderTarget(renderTarget),this._resizeColor(renderTarget,glRenderTarget),renderTarget.stencil||renderTarget.depth)&&this._resizeStencil(glRenderTarget)}_initColor(renderTarget,glRenderTarget){const renderer=this._renderer,gl=renderer.gl;var viewFramebuffer,resolveTargetFramebuffer=gl.createFramebuffer();glRenderTarget.resolveTargetFramebuffer=resolveTargetFramebuffer,gl.bindFramebuffer(gl.FRAMEBUFFER,resolveTargetFramebuffer),glRenderTarget.width=renderTarget.colorTexture.source.pixelWidth,glRenderTarget.height=renderTarget.colorTexture.source.pixelHeight,renderTarget.colorTextures.forEach((colorTexture,i)=>{(colorTexture=colorTexture.source).antialias&&(renderer.context.supports.msaa?glRenderTarget.msaa=!0:warn("[RenderTexture] Antialiasing on textures is not supported in WebGL1")),renderer.texture.bindSource(colorTexture,0),colorTexture=(colorTexture=renderer.texture.getGlSource(colorTexture)).texture,gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0+i,3553,colorTexture,0)}),glRenderTarget.msaa?(viewFramebuffer=gl.createFramebuffer(),glRenderTarget.framebuffer=viewFramebuffer,gl.bindFramebuffer(gl.FRAMEBUFFER,viewFramebuffer),renderTarget.colorTextures.forEach((_,i)=>{var msaaRenderBuffer=gl.createRenderbuffer();glRenderTarget.msaaRenderBuffer[i]=msaaRenderBuffer})):glRenderTarget.framebuffer=resolveTargetFramebuffer,this._resizeColor(renderTarget,glRenderTarget)}_resizeColor(renderTarget,glRenderTarget){const source=renderTarget.colorTexture.source;if(glRenderTarget.width=source.pixelWidth,glRenderTarget.height=source.pixelHeight,renderTarget.colorTextures.forEach((colorTexture,i)=>{0!==i&&colorTexture.source.resize(source.width,source.height,source._resolution)}),glRenderTarget.msaa){const renderer=this._renderer,gl=renderer.gl;var viewFramebuffer=glRenderTarget.framebuffer;gl.bindFramebuffer(gl.FRAMEBUFFER,viewFramebuffer),renderTarget.colorTextures.forEach((colorTexture,i)=>{colorTexture=colorTexture.source,renderer.texture.bindSource(colorTexture,0);var glSource=renderer.texture.getGlSource(colorTexture).internalFormat,msaaRenderBuffer=glRenderTarget.msaaRenderBuffer[i];gl.bindRenderbuffer(gl.RENDERBUFFER,msaaRenderBuffer),gl.renderbufferStorageMultisample(gl.RENDERBUFFER,4,glSource,colorTexture.pixelWidth,colorTexture.pixelHeight),gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0+i,gl.RENDERBUFFER,msaaRenderBuffer)})}}_initStencil(glRenderTarget){var gl,depthStencilRenderBuffer;null!==glRenderTarget.framebuffer&&(depthStencilRenderBuffer=(gl=this._renderer.gl).createRenderbuffer(),glRenderTarget.depthStencilRenderBuffer=depthStencilRenderBuffer,gl.bindRenderbuffer(gl.RENDERBUFFER,depthStencilRenderBuffer),gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.DEPTH_STENCIL_ATTACHMENT,gl.RENDERBUFFER,depthStencilRenderBuffer),this._resizeStencil(glRenderTarget))}_resizeStencil(glRenderTarget){var gl=this._renderer.gl;gl.bindRenderbuffer(gl.RENDERBUFFER,glRenderTarget.depthStencilRenderBuffer),glRenderTarget.msaa?gl.renderbufferStorageMultisample(gl.RENDERBUFFER,4,gl.DEPTH24_STENCIL8,glRenderTarget.width,glRenderTarget.height):gl.renderbufferStorage(gl.RENDERBUFFER,2===this._renderer.context.webGLVersion?gl.DEPTH24_STENCIL8:gl.DEPTH_STENCIL,glRenderTarget.width,glRenderTarget.height)}prerender(renderTarget){renderTarget=renderTarget.colorTexture.resource,this._renderer.context.multiView&&CanvasSource.test(renderTarget)&&this._renderer.context.ensureCanvasSize(renderTarget)}postrender(renderTarget){var contextCanvas;this._renderer.context.multiView&&CanvasSource.test(renderTarget.colorTexture.resource)&&(contextCanvas=this._renderer.context.canvas,(renderTarget=renderTarget.colorTexture).context2D.drawImage(contextCanvas,0,renderTarget.pixelHeight-contextCanvas.height))}}function calculateProjection(pm,x,y,width,height,flipY){return flipY=flipY?1:-1,pm.identity(),pm.a=1/width*2,pm.d=1/height*2*flipY,pm.tx=-1-x*pm.a,pm.ty=-flipY-y*pm.d,pm}var __defProp$l=Object.defineProperty,__getOwnPropSymbols$l=Object.getOwnPropertySymbols,__hasOwnProp$l=Object.prototype.hasOwnProperty,__propIsEnum$l=Object.prototype.propertyIsEnumerable,__defNormalProp$l=(obj,key,value)=>key in obj?__defProp$l(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;const canvasCache=new Map;function getCanvasTexture(canvas,options){if(!canvasCache.has(canvas)){const texture=new Texture({source:new CanvasSource(((a,b)=>{for(var prop in b=options||{})__hasOwnProp$l.call(b,prop)&&__defNormalProp$l(a,prop,b[prop]);if(__getOwnPropSymbols$l)for(var prop of __getOwnPropSymbols$l(b))__propIsEnum$l.call(b,prop)&&__defNormalProp$l(a,prop,b[prop]);return a})({resource:canvas}))});options=()=>{canvasCache.get(canvas)===texture&&canvasCache.delete(canvas)},texture.once("destroy",options),texture.source.once("destroy",options),canvasCache.set(canvas,texture)}return canvasCache.get(canvas)}function isRenderingToScreen(renderTarget){return renderTarget=renderTarget.colorTexture.source.resource,globalThis.HTMLCanvasElement&&renderTarget instanceof HTMLCanvasElement&&document.body.contains(renderTarget)}var __defProp$k=Object.defineProperty,__getOwnPropSymbols$k=Object.getOwnPropertySymbols,__hasOwnProp$k=Object.prototype.hasOwnProperty,__propIsEnum$k=Object.prototype.propertyIsEnumerable,__defNormalProp$k=(obj,key,value)=>key in obj?__defProp$k(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$k=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$k.call(b,prop)&&__defNormalProp$k(a,prop,b[prop]);if(__getOwnPropSymbols$k)for(var prop of __getOwnPropSymbols$k(b))__propIsEnum$k.call(b,prop)&&__defNormalProp$k(a,prop,b[prop]);return a};const _RenderTarget=class _RenderTarget{constructor(descriptor={}){if(this.uid=uid$1("renderTarget"),this.colorTextures=[],this.dirtyId=0,this.isRoot=!1,this._size=new Float32Array(2),this._managedColorTextures=!1,descriptor=__spreadValues$k(__spreadValues$k({},_RenderTarget.defaultOptions),descriptor),this.stencil=descriptor.stencil,this.depth=descriptor.depth,this.isRoot=descriptor.isRoot,"number"==typeof descriptor.colorTextures){this._managedColorTextures=!0;for(let i=0;i<descriptor.colorTextures;i++)this.colorTextures.push(new TextureSource({width:descriptor.width,height:descriptor.height,resolution:descriptor.resolution,antialias:descriptor.antialias}))}else{this.colorTextures=[...descriptor.colorTextures.map(texture=>texture.source)];var colorSource=this.colorTexture.source;this.resize(colorSource.width,colorSource.height,colorSource._resolution)}this.colorTexture.source.on("resize",this.onSourceResize,this),(descriptor.depthStencilTexture||this.stencil)&&(descriptor.depthStencilTexture instanceof Texture||descriptor.depthStencilTexture instanceof TextureSource?this.depthStencilTexture=descriptor.depthStencilTexture.source:this.ensureDepthStencilTexture())}get size(){var _size=this._size;return _size[0]=this.pixelWidth,_size[1]=this.pixelHeight,_size}get width(){return this.colorTexture.source.width}get height(){return this.colorTexture.source.height}get pixelWidth(){return this.colorTexture.source.pixelWidth}get pixelHeight(){return this.colorTexture.source.pixelHeight}get resolution(){return this.colorTexture.source._resolution}get colorTexture(){return this.colorTextures[0]}onSourceResize(source){this.resize(source.width,source.height,source._resolution,!0)}ensureDepthStencilTexture(){this.depthStencilTexture||(this.depthStencilTexture=new TextureSource({width:this.width,height:this.height,resolution:this.resolution,format:"depth24plus-stencil8",autoGenerateMipmaps:!1,antialias:!1,mipLevelCount:1}))}resize(width,height,resolution=this.resolution,skipColorTexture=!1){this.dirtyId++,this.colorTextures.forEach((colorTexture,i)=>{skipColorTexture&&0===i||colorTexture.source.resize(width,height,resolution)}),this.depthStencilTexture&&this.depthStencilTexture.source.resize(width,height,resolution)}destroy(){this.colorTexture.source.off("resize",this.onSourceResize,this),this._managedColorTextures&&this.colorTextures.forEach(texture=>{texture.destroy()}),this.depthStencilTexture&&(this.depthStencilTexture.destroy(),delete this.depthStencilTexture)}};_RenderTarget.defaultOptions={width:0,height:0,resolution:1,colorTextures:1,stencil:!1,depth:!1,antialias:!1,isRoot:!1};let RenderTarget=_RenderTarget;class RenderTargetSystem{constructor(renderer){this.rootViewPort=new Rectangle,this.viewport=new Rectangle,this.onRenderTargetChange=new SystemRunner("onRenderTargetChange"),this.projectionMatrix=new Matrix,this.defaultClearColor=[0,0,0,0],this._renderSurfaceToRenderTargetHash=new Map,this._gpuRenderTargetHash=Object.create(null),this._renderTargetStack=[],(this._renderer=renderer).renderableGC.addManagedHash(this,"_gpuRenderTargetHash")}finishRenderPass(){this.adaptor.finishRenderPass(this.renderTarget)}renderStart({target,clear,clearColor,frame}){this._renderTargetStack.length=0,this.push(target,clear,clearColor,frame),this.rootViewPort.copyFrom(this.viewport),this.rootRenderTarget=this.renderTarget,this.renderingToScreen=isRenderingToScreen(this.rootRenderTarget),null!=(clear=(target=this.adaptor).prerender)&&clear.call(target,this.rootRenderTarget)}postrender(){var _a,_b;null!=(_b=(_a=this.adaptor).postrender)&&_b.call(_a,this.rootRenderTarget)}bind(renderSurface,clear=!0,clearColor,frame){var renderTarget=this.getRenderTarget(renderSurface),didChange=this.renderTarget!==renderTarget,gpuRenderTarget=(this.renderTarget=renderTarget,this.renderSurface=renderSurface,this.getGpuRenderTarget(renderTarget)),gpuRenderTarget=(renderTarget.pixelWidth===gpuRenderTarget.width&&renderTarget.pixelHeight===gpuRenderTarget.height||(this.adaptor.resizeGpuRenderTarget(renderTarget),gpuRenderTarget.width=renderTarget.pixelWidth,gpuRenderTarget.height=renderTarget.pixelHeight),renderTarget.colorTexture),viewport=this.viewport,pixelWidth=gpuRenderTarget.pixelWidth,pixelHeight=gpuRenderTarget.pixelHeight;return(frame=!frame&&renderSurface instanceof Texture?renderSurface.frame:frame)?(renderSurface=gpuRenderTarget._resolution,viewport.x=frame.x*renderSurface+.5|0,viewport.y=frame.y*renderSurface+.5|0,viewport.width=frame.width*renderSurface+.5|0,viewport.height=frame.height*renderSurface+.5|0):(viewport.x=0,viewport.y=0,viewport.width=pixelWidth,viewport.height=pixelHeight),calculateProjection(this.projectionMatrix,0,0,viewport.width/gpuRenderTarget.resolution,viewport.height/gpuRenderTarget.resolution,!renderTarget.isRoot),this.adaptor.startRenderPass(renderTarget,clear,clearColor,viewport),didChange&&this.onRenderTargetChange.emit(renderTarget),renderTarget}clear(target,clear=CLEAR.ALL,clearColor){clear&&(target=target&&this.getRenderTarget(target),this.adaptor.clear(target||this.renderTarget,clear,clearColor,this.viewport))}contextChange(){this._gpuRenderTargetHash=Object.create(null)}push(renderSurface,clear=CLEAR.ALL,clearColor,frame){return renderSurface=this.bind(renderSurface,clear,clearColor,frame),this._renderTargetStack.push({renderTarget:renderSurface,frame:frame}),renderSurface}pop(){this._renderTargetStack.pop();var currentRenderTargetData=this._renderTargetStack[this._renderTargetStack.length-1];this.bind(currentRenderTargetData.renderTarget,!1,null,currentRenderTargetData.frame)}getRenderTarget(renderSurface){var _a;return renderSurface.isTexture&&(renderSurface=renderSurface.source),null!=(_a=this._renderSurfaceToRenderTargetHash.get(renderSurface))?_a:this._initRenderTarget(renderSurface)}copyToTexture(sourceRenderSurfaceTexture,destinationTexture,originSrc,size,originDest){originSrc.x<0&&(size.width+=originSrc.x,originDest.x-=originSrc.x,originSrc.x=0),originSrc.y<0&&(size.height+=originSrc.y,originDest.y-=originSrc.y,originSrc.y=0);var{pixelWidth,pixelHeight}=sourceRenderSurfaceTexture;return size.width=Math.min(size.width,pixelWidth-originSrc.x),size.height=Math.min(size.height,pixelHeight-originSrc.y),this.adaptor.copyToTexture(sourceRenderSurfaceTexture,destinationTexture,originSrc,size,originDest)}ensureDepthStencil(){this.renderTarget.stencil||(this.renderTarget.stencil=!0,this.adaptor.startRenderPass(this.renderTarget,!1,null,this.viewport))}destroy(){this._renderer=null,this._renderSurfaceToRenderTargetHash.forEach((renderTarget,key)=>{renderTarget!==key&&renderTarget.destroy()}),this._renderSurfaceToRenderTargetHash.clear(),this._gpuRenderTargetHash=Object.create(null)}_initRenderTarget(renderSurface){let renderTarget=null;return(renderSurface=CanvasSource.test(renderSurface)?getCanvasTexture(renderSurface).source:renderSurface)instanceof RenderTarget?renderTarget=renderSurface:renderSurface instanceof TextureSource&&(renderTarget=new RenderTarget({colorTextures:[renderSurface]}),CanvasSource.test(renderSurface.source.resource)&&(renderTarget.isRoot=!0),renderSurface.once("destroy",()=>{renderTarget.destroy(),this._renderSurfaceToRenderTargetHash.delete(renderSurface);var gpuRenderTarget=this._gpuRenderTargetHash[renderTarget.uid];gpuRenderTarget&&(this._gpuRenderTargetHash[renderTarget.uid]=null,this.adaptor.destroyGpuRenderTarget(gpuRenderTarget))})),this._renderSurfaceToRenderTargetHash.set(renderSurface,renderTarget),renderTarget}getGpuRenderTarget(renderTarget){return this._gpuRenderTargetHash[renderTarget.uid]||(this._gpuRenderTargetHash[renderTarget.uid]=this.adaptor.initGpuRenderTarget(renderTarget))}resetState(){this.renderTarget=null,this.renderSurface=null}}class GlRenderTargetSystem extends RenderTargetSystem{constructor(renderer){super(renderer),this.adaptor=new GlRenderTargetAdaptor,this.adaptor.init(renderer,this)}}GlRenderTargetSystem.extension={type:[ExtensionType2.WebGLSystem],name:"renderTarget"};class BufferResource extends EventEmitter{constructor({buffer,offset,size}){super(),this.uid=uid$1("buffer"),this._resourceType="bufferResource",this._touched=0,this._resourceId=uid$1("resource"),this._bufferResource=!0,this.destroyed=!1,this.buffer=buffer,this.offset=0|offset,this.size=size,this.buffer.on("change",this.onBufferChange,this)}onBufferChange(){this._resourceId=uid$1("resource"),this.emit("change",this)}destroy(destroyBuffer=!1){this.destroyed=!0,destroyBuffer&&this.buffer.destroy(),this.emit("change",this),this.buffer=null}}function generateShaderSyncCode(shader,shaderSystem){var funcFragments=[],headerFragments=[`
var g = s.groups;
var sS = r.shader;
var p = s.glProgram;
var ugS = r.uniformGroup;
var resources;
`];let addedTextreSystem=!1,textureCount=0;var programData=shaderSystem._getProgramData(shader.glProgram);for(const i in shader.groups){var group=shader.groups[i];funcFragments.push(`
resources = g[${i}].resources;
`);for(const j in group.resources){var resName,resource=group.resources[j];if(resource instanceof UniformGroup)resource.ubo?(resName=shader._uniformBindMap[i][Number(j)],funcFragments.push(`
sS.bindUniformBlock(
resources[${j}],
'${resName}',
${shader.glProgram._uniformBlockData[resName].index}
);
`)):funcFragments.push(`
ugS.updateUniformGroup(resources[${j}], p, sD);
`);else if(resource instanceof BufferResource){const resName=shader._uniformBindMap[i][Number(j)];funcFragments.push(`
sS.bindUniformBlock(
resources[${j}],
'${resName}',
${shader.glProgram._uniformBlockData[resName].index}
);
`)}else resource instanceof TextureSource&&(resName=shader._uniformBindMap[i][j],resource=programData.uniformData[resName])&&(addedTextreSystem||(addedTextreSystem=!0,headerFragments.push(`
var tS = r.texture;
`)),shaderSystem._gl.uniform1i(resource.location,textureCount),funcFragments.push(`
tS.bind(resources[${j}], ${textureCount});
`),textureCount++)}}var functionSource=[...headerFragments,...funcFragments].join("\n");return new Function("r","s","sD",functionSource)}class GlProgramData{constructor(program,uniformData){this.program=program,this.uniformData=uniformData,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBlockBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBlockBindings=null,this.program=null}}function compileShader(gl,type,src){return type=gl.createShader(type),gl.shaderSource(type,src),gl.compileShader(type),type}function booleanArray(size){var array=new Array(size);for(let i=0;i<array.length;i++)array[i]=!1;return array}function defaultValue(type,size){switch(type){case"float":return 0;case"vec2":return new Float32Array(2*size);case"vec3":return new Float32Array(3*size);case"vec4":return new Float32Array(4*size);case"int":case"uint":case"sampler2D":case"sampler2DArray":return 0;case"ivec2":return new Int32Array(2*size);case"ivec3":return new Int32Array(3*size);case"ivec4":return new Int32Array(4*size);case"uvec2":return new Uint32Array(2*size);case"uvec3":return new Uint32Array(3*size);case"uvec4":return new Uint32Array(4*size);case"bool":return!1;case"bvec2":return booleanArray(2*size);case"bvec3":return booleanArray(3*size);case"bvec4":return booleanArray(4*size);case"mat2":return new Float32Array([1,0,0,1]);case"mat3":return new Float32Array([1,0,0,0,1,0,0,0,1]);case"mat4":return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}return null}let GL_TABLE=null;const GL_TO_GLSL_TYPES={FLOAT:"float",FLOAT_VEC2:"vec2",FLOAT_VEC3:"vec3",FLOAT_VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",UNSIGNED_INT:"uint",UNSIGNED_INT_VEC2:"uvec2",UNSIGNED_INT_VEC3:"uvec3",UNSIGNED_INT_VEC4:"uvec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",FLOAT_MAT2:"mat2",FLOAT_MAT3:"mat3",FLOAT_MAT4:"mat4",SAMPLER_2D:"sampler2D",INT_SAMPLER_2D:"sampler2D",UNSIGNED_INT_SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube",INT_SAMPLER_CUBE:"samplerCube",UNSIGNED_INT_SAMPLER_CUBE:"samplerCube",SAMPLER_2D_ARRAY:"sampler2DArray",INT_SAMPLER_2D_ARRAY:"sampler2DArray",UNSIGNED_INT_SAMPLER_2D_ARRAY:"sampler2DArray"},GLSL_TO_VERTEX_TYPES={float:"float32",vec2:"float32x2",vec3:"float32x3",vec4:"float32x4",int:"sint32",ivec2:"sint32x2",ivec3:"sint32x3",ivec4:"sint32x4",uint:"uint32",uvec2:"uint32x2",uvec3:"uint32x3",uvec4:"uint32x4",bool:"uint32",bvec2:"uint32x2",bvec3:"uint32x3",bvec4:"uint32x4"};function mapType(gl,type){if(!GL_TABLE){var typeNames=Object.keys(GL_TO_GLSL_TYPES);GL_TABLE={};for(let i=0;i<typeNames.length;++i){var tn=typeNames[i];GL_TABLE[gl[tn]]=GL_TO_GLSL_TYPES[tn]}}return GL_TABLE[type]}function mapGlToVertexFormat(gl,type){return gl=mapType(gl,type),GLSL_TO_VERTEX_TYPES[gl]||"float32"}function extractAttributesFromGlProgram(program,gl,sortAttributes=!1){var attributes={},totalAttributes=gl.getProgramParameter(program,gl.ACTIVE_ATTRIBUTES);for(let i=0;i<totalAttributes;i++){var format,attribData=gl.getActiveAttrib(program,i);attribData.name.startsWith("gl_")||(format=mapGlToVertexFormat(gl,attribData.type),attributes[attribData.name]={location:0,format:format,stride:getAttributeInfoFromFormat(format).stride,offset:0,instance:!1,start:0})}var keys=Object.keys(attributes);if(sortAttributes){keys.sort((a,b)=>b<a?1:-1);for(let i=0;i<keys.length;i++)attributes[keys[i]].location=i,gl.bindAttribLocation(program,i,keys[i]);gl.linkProgram(program)}else for(let i=0;i<keys.length;i++)attributes[keys[i]].location=gl.getAttribLocation(program,keys[i]);return attributes}function getUboData(program,gl){if(!gl.ACTIVE_UNIFORM_BLOCKS)return{};var uniformBlocks={},totalUniformsBlocks=gl.getProgramParameter(program,gl.ACTIVE_UNIFORM_BLOCKS);for(let i=0;i<totalUniformsBlocks;i++){var name=gl.getActiveUniformBlockName(program,i),uniformBlockIndex=gl.getUniformBlockIndex(program,name),size=gl.getActiveUniformBlockParameter(program,i,gl.UNIFORM_BLOCK_DATA_SIZE);uniformBlocks[name]={name:name,index:uniformBlockIndex,size:size}}return uniformBlocks}function getUniformData(program,gl){var uniforms={},totalUniforms=gl.getProgramParameter(program,gl.ACTIVE_UNIFORMS);for(let i=0;i<totalUniforms;i++){var uniformData=gl.getActiveUniform(program,i),name=uniformData.name.replace(/\[.*?\]$/,""),isArray=!!uniformData.name.match(/\[.*?\]$/),type=mapType(gl,uniformData.type);uniforms[name]={name:name,index:i,type:type,size:uniformData.size,isArray:isArray,value:defaultValue(type,uniformData.size)}}return uniforms}function logPrettyShaderError(gl,shader){const shaderSrc=gl.getShaderSource(shader).split("\n").map((line,index)=>index+": "+line),dedupe=(shader=(gl=gl.getShaderInfoLog(shader)).split("\n"),{}),logArgs=(shader=shader.map(line=>parseFloat(line.replace(/^ERROR\: 0\:([\d]+)\:.*$/,"$1"))).filter(n=>!(!n||dedupe[n])&&(dedupe[n]=!0)),[""]);shader.forEach(number=>{shaderSrc[number-1]=`%c${shaderSrc[number-1]}%c`,logArgs.push("background: #FF0000; color:#FFFFFF; font-size: 10px","font-size: 10px")}),shader=shaderSrc.join("\n"),logArgs[0]=shader,console.error(gl),console.groupCollapsed("click to view full shader code"),console.warn(...logArgs),console.groupEnd()}function logProgramError(gl,program,vertexShader,fragmentShader){gl.getProgramParameter(program,gl.LINK_STATUS)||(gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)||logPrettyShaderError(gl,vertexShader),gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)||logPrettyShaderError(gl,fragmentShader),console.error("PixiJS Error: Could not initialize shader."),""!==gl.getProgramInfoLog(program)&&console.warn("PixiJS Warning: gl.getProgramInfoLog()",gl.getProgramInfoLog(program)))}function generateProgram(gl,program){var glVertShader=compileShader(gl,gl.VERTEX_SHADER,program.vertex),glFragShader=compileShader(gl,gl.FRAGMENT_SHADER,program.fragment),webGLProgram=gl.createProgram(),transformFeedbackVaryings=(gl.attachShader(webGLProgram,glVertShader),gl.attachShader(webGLProgram,glFragShader),program.transformFeedbackVaryings),uniformData=(transformFeedbackVaryings&&("function"!=typeof gl.transformFeedbackVaryings?warn("TransformFeedback is not supported but TransformFeedbackVaryings are given."):gl.transformFeedbackVaryings(webGLProgram,transformFeedbackVaryings.names,"separate"===transformFeedbackVaryings.bufferMode?gl.SEPARATE_ATTRIBS:gl.INTERLEAVED_ATTRIBS)),gl.linkProgram(webGLProgram),gl.getProgramParameter(webGLProgram,gl.LINK_STATUS)||logProgramError(gl,webGLProgram,glVertShader,glFragShader),program._attributeData=extractAttributesFromGlProgram(webGLProgram,gl,!/^[ \t]*#[ \t]*version[ \t]+300[ \t]+es[ \t]*$/m.test(program.vertex)),program._uniformData=getUniformData(webGLProgram,gl),program._uniformBlockData=getUboData(webGLProgram,gl),gl.deleteShader(glVertShader),gl.deleteShader(glFragShader),{});for(const i in program._uniformData){var data=program._uniformData[i];uniformData[i]={location:gl.getUniformLocation(webGLProgram,i),value:defaultValue(data.type,data.size)}}return new GlProgramData(webGLProgram,uniformData)}const defaultSyncData={textureCount:0,blockIndex:0};class GlShaderSystem{constructor(renderer){this._activeProgram=null,this._programDataHash=Object.create(null),this._shaderSyncFunctions=Object.create(null),this._renderer=renderer,this._renderer.renderableGC.addManagedHash(this,"_programDataHash")}contextChange(gl){this._gl=gl,this._programDataHash=Object.create(null),this._shaderSyncFunctions=Object.create(null),this._activeProgram=null,this.maxTextures=getMaxTexturesPerBatch()}bind(shader,skipSync){this._setProgram(shader.glProgram),skipSync||(defaultSyncData.textureCount=0,defaultSyncData.blockIndex=0,skipSync=(skipSync=this._shaderSyncFunctions[shader.glProgram._key])||(this._shaderSyncFunctions[shader.glProgram._key]=this._generateShaderSync(shader,this)),this._renderer.buffer.nextBindBase(!!shader.glProgram.transformFeedbackVaryings),skipSync(this._renderer,shader,defaultSyncData))}updateUniformGroup(uniformGroup){this._renderer.uniformGroup.updateUniformGroup(uniformGroup,this._activeProgram,defaultSyncData)}bindUniformBlock(uniformGroup,name,index=0){var bufferSystem=this._renderer.buffer,programData=this._getProgramData(this._activeProgram),isBufferResource=uniformGroup._bufferResource,buffer=(isBufferResource||this._renderer.ubo.updateUniformGroup(uniformGroup),uniformGroup.buffer),glBuffer=bufferSystem.updateBuffer(buffer),boundLocation=bufferSystem.freeLocationForBufferBase(glBuffer),uniformGroup=(isBufferResource?({offset:isBufferResource,size:uniformGroup}=uniformGroup,0===isBufferResource&&uniformGroup===buffer.data.byteLength?bufferSystem.bindBufferBase(glBuffer,boundLocation):bufferSystem.bindBufferRange(glBuffer,boundLocation,isBufferResource)):bufferSystem.getLastBindBaseLocation(glBuffer)!==boundLocation&&bufferSystem.bindBufferBase(glBuffer,boundLocation),this._activeProgram._uniformBlockData[name].index);programData.uniformBlockBindings[index]!==boundLocation&&(programData.uniformBlockBindings[index]=boundLocation,this._renderer.gl.uniformBlockBinding(programData.program,uniformGroup,boundLocation))}_setProgram(program){this._activeProgram!==program&&(this._activeProgram=program,program=this._getProgramData(program),this._gl.useProgram(program.program))}_getProgramData(program){return this._programDataHash[program._key]||this._createProgramData(program)}_createProgramData(program){var key=program._key;return this._programDataHash[key]=generateProgram(this._gl,program),this._programDataHash[key]}destroy(){for(const key of Object.keys(this._programDataHash))this._programDataHash[key].destroy(),this._programDataHash[key]=null;this._programDataHash=null}_generateShaderSync(shader,shaderSystem){return generateShaderSyncCode(shader,shaderSystem)}resetState(){this._activeProgram=null}}GlShaderSystem.extension={type:[ExtensionType2.WebGLSystem],name:"shader"};const UNIFORM_TO_SINGLE_SETTERS={f32:`if (cv !== v) {
cu.value = v;
gl.uniform1f(location, v);
}`,"vec2<f32>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
cv[0] = v[0];
cv[1] = v[1];
gl.uniform2f(location, v[0], v[1]);
}`,"vec3<f32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
gl.uniform3f(location, v[0], v[1], v[2]);
}`,"vec4<f32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
cv[3] = v[3];
gl.uniform4f(location, v[0], v[1], v[2], v[3]);
}`,i32:`if (cv !== v) {
cu.value = v;
gl.uniform1i(location, v);
}`,"vec2<i32>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
cv[0] = v[0];
cv[1] = v[1];
gl.uniform2i(location, v[0], v[1]);
}`,"vec3<i32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
gl.uniform3i(location, v[0], v[1], v[2]);
}`,"vec4<i32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
cv[3] = v[3];
gl.uniform4i(location, v[0], v[1], v[2], v[3]);
}`,u32:`if (cv !== v) {
cu.value = v;
gl.uniform1ui(location, v);
}`,"vec2<u32>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
cv[0] = v[0];
cv[1] = v[1];
gl.uniform2ui(location, v[0], v[1]);
}`,"vec3<u32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
gl.uniform3ui(location, v[0], v[1], v[2]);
}`,"vec4<u32>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
cv[3] = v[3];
gl.uniform4ui(location, v[0], v[1], v[2], v[3]);
}`,bool:`if (cv !== v) {
cu.value = v;
gl.uniform1i(location, v);
}`,"vec2<bool>":`if (cv[0] !== v[0] || cv[1] !== v[1]) {
cv[0] = v[0];
cv[1] = v[1];
gl.uniform2i(location, v[0], v[1]);
}`,"vec3<bool>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
gl.uniform3i(location, v[0], v[1], v[2]);
}`,"vec4<bool>":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
cv[3] = v[3];
gl.uniform4i(location, v[0], v[1], v[2], v[3]);
}`,"mat2x2<f32>":"gl.uniformMatrix2fv(location, false, v);","mat3x3<f32>":"gl.uniformMatrix3fv(location, false, v);","mat4x4<f32>":"gl.uniformMatrix4fv(location, false, v);"},UNIFORM_TO_ARRAY_SETTERS={f32:"gl.uniform1fv(location, v);","vec2<f32>":"gl.uniform2fv(location, v);","vec3<f32>":"gl.uniform3fv(location, v);","vec4<f32>":"gl.uniform4fv(location, v);","mat2x2<f32>":"gl.uniformMatrix2fv(location, false, v);","mat3x3<f32>":"gl.uniformMatrix3fv(location, false, v);","mat4x4<f32>":"gl.uniformMatrix4fv(location, false, v);",i32:"gl.uniform1iv(location, v);","vec2<i32>":"gl.uniform2iv(location, v);","vec3<i32>":"gl.uniform3iv(location, v);","vec4<i32>":"gl.uniform4iv(location, v);",u32:"gl.uniform1iv(location, v);","vec2<u32>":"gl.uniform2iv(location, v);","vec3<u32>":"gl.uniform3iv(location, v);","vec4<u32>":"gl.uniform4iv(location, v);",bool:"gl.uniform1iv(location, v);","vec2<bool>":"gl.uniform2iv(location, v);","vec3<bool>":"gl.uniform3iv(location, v);","vec4<bool>":"gl.uniform4iv(location, v);"};function generateUniformsSync(group,uniformData){var funcFragments=[`
var v = null;
var cv = null;
var cu = null;
var t = 0;
var gl = renderer.gl;
var name = null;
`];for(const i in group.uniforms)if(uniformData[i]){var template,uniform=group.uniformStructures[i];let parsed=!1;for(let j=0;j<uniformParsers.length;j++){var parser=uniformParsers[j];if(uniform.type===parser.type&&parser.test(uniform)){funcFragments.push(`name = "${i}";`,uniformParsers[j].uniform),parsed=!0;break}}parsed||(template=(1===uniform.size?UNIFORM_TO_SINGLE_SETTERS:UNIFORM_TO_ARRAY_SETTERS)[uniform.type].replace("location",`ud["${i}"].location`),funcFragments.push(`
cu = ud["${i}"];
cv = cu.value;
v = uv["${i}"];
${template};`))}else group.uniforms[i]instanceof UniformGroup?group.uniforms[i].ubo?funcFragments.push(`
renderer.shader.bindUniformBlock(uv.${i}, "${i}");
`):funcFragments.push(`
renderer.shader.updateUniformGroup(uv.${i});
`):group.uniforms[i]instanceof BufferResource&&funcFragments.push(`
renderer.shader.bindBufferResource(uv.${i}, "${i}");
`);return new Function("ud","uv","renderer","syncData",funcFragments.join("\n"))}class GlUniformGroupSystem{constructor(renderer){this._cache={},this._uniformGroupSyncHash={},this._renderer=renderer,this.gl=null,this._cache={}}contextChange(gl){this.gl=gl}updateUniformGroup(group,program,syncData){var programData=this._renderer.shader._getProgramData(program);group.isStatic&&group._dirtyId===programData.uniformDirtyGroups[group.uid]||(programData.uniformDirtyGroups[group.uid]=group._dirtyId,this._getUniformSyncFunction(group,program)(programData.uniformData,group.uniforms,this._renderer,syncData))}_getUniformSyncFunction(group,program){var _a;return(null==(_a=this._uniformGroupSyncHash[group._signature])?void 0:_a[program._key])||this._createUniformSyncFunction(group,program)}_createUniformSyncFunction(group,program){var uniformGroupSyncHash=this._uniformGroupSyncHash[group._signature]||(this._uniformGroupSyncHash[group._signature]={}),id=this._getSignature(group,program._uniformData,"u");return this._cache[id]||(this._cache[id]=this._generateUniformsSync(group,program._uniformData)),uniformGroupSyncHash[program._key]=this._cache[id],uniformGroupSyncHash[program._key]}_generateUniformsSync(group,uniformData){return generateUniformsSync(group,uniformData)}_getSignature(group,uniformData,preFix){var strings=[preFix+"-"];for(const i in group.uniforms)strings.push(i),uniformData[i]&&strings.push(uniformData[i].type);return strings.join("-")}destroy(){this._renderer=null,this._cache=null}}GlUniformGroupSystem.extension={type:[ExtensionType2.WebGLSystem],name:"uniformGroup"};const GLSL_TO_SIZE={float:1,vec2:2,vec3:3,vec4:4,int:1,ivec2:2,ivec3:3,ivec4:4,uint:1,uvec2:2,uvec3:3,uvec4:4,bool:1,bvec2:2,bvec3:3,bvec4:4,mat2:4,mat3:9,mat4:16,sampler2D:1};function mapWebGLBlendModesToPixi(gl){var isWebGl2,blendMap={};return blendMap.normal=[gl.ONE,gl.ONE_MINUS_SRC_ALPHA],blendMap.add=[gl.ONE,gl.ONE],blendMap.multiply=[gl.DST_COLOR,gl.ONE_MINUS_SRC_ALPHA,gl.ONE,gl.ONE_MINUS_SRC_ALPHA],blendMap.screen=[gl.ONE,gl.ONE_MINUS_SRC_COLOR,gl.ONE,gl.ONE_MINUS_SRC_ALPHA],blendMap.none=[0,0],blendMap["normal-npm"]=[gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA,gl.ONE,gl.ONE_MINUS_SRC_ALPHA],blendMap["add-npm"]=[gl.SRC_ALPHA,gl.ONE,gl.ONE,gl.ONE],blendMap["screen-npm"]=[gl.SRC_ALPHA,gl.ONE_MINUS_SRC_COLOR,gl.ONE,gl.ONE_MINUS_SRC_ALPHA],blendMap.erase=[gl.ZERO,gl.ONE_MINUS_SRC_ALPHA],gl instanceof DOMAdapter.get().getWebGLRenderingContext()?(isWebGl2=gl.getExtension("EXT_blend_minmax"))&&(blendMap.min=[gl.ONE,gl.ONE,gl.ONE,gl.ONE,isWebGl2.MIN_EXT,isWebGl2.MIN_EXT],blendMap.max=[gl.ONE,gl.ONE,gl.ONE,gl.ONE,isWebGl2.MAX_EXT,isWebGl2.MAX_EXT]):(blendMap.min=[gl.ONE,gl.ONE,gl.ONE,gl.ONE,gl.MIN,gl.MIN],blendMap.max=[gl.ONE,gl.ONE,gl.ONE,gl.ONE,gl.MAX,gl.MAX]),blendMap}const _GlStateSystem=class _GlStateSystem{constructor(renderer){this._invertFrontFace=!1,this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode="none",this._blendEq=!1,this.map=[],this.map[0]=this.setBlend,this.map[1]=this.setOffset,this.map[2]=this.setCullFace,this.map[3]=this.setDepthTest,this.map[4]=this.setFrontFace,this.map[5]=this.setDepthMask,this.checks=[],this.defaultState=State.for2d(),renderer.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(renderTarget){this._invertFrontFace=!renderTarget.isRoot,this._cullFace?this.setFrontFace(this._frontFace):this._frontFaceDirty=!0}contextChange(gl){this.gl=gl,this.blendModesMap=mapWebGLBlendModesToPixi(gl),this.resetState()}set(state){if(state=state||this.defaultState,this.stateId!==state.data){let diff=this.stateId^state.data,i=0;for(;diff;)1&diff&&this.map[i].call(this,!!(state.data&1<<i)),diff>>=1,i++;this.stateId=state.data}for(let i=0;i<this.checks.length;i++)this.checks[i](this,state)}forceState(state){state=state||this.defaultState;for(let i=0;i<this.map.length;i++)this.map[i].call(this,!!(state.data&1<<i));for(let i=0;i<this.checks.length;i++)this.checks[i](this,state);this.stateId=state.data}setBlend(value){this._updateCheck(_GlStateSystem._checkBlendMode,value),this.gl[value?"enable":"disable"](this.gl.BLEND)}setOffset(value){this._updateCheck(_GlStateSystem._checkPolygonOffset,value),this.gl[value?"enable":"disable"](this.gl.POLYGON_OFFSET_FILL)}setDepthTest(value){this.gl[value?"enable":"disable"](this.gl.DEPTH_TEST)}setDepthMask(value){this.gl.depthMask(value)}setCullFace(value){this._cullFace=value,this.gl[value?"enable":"disable"](this.gl.CULL_FACE),this._cullFace&&this._frontFaceDirty&&this.setFrontFace(this._frontFace)}setFrontFace(value){this._frontFace=value,this._frontFaceDirty=!1,value=this._invertFrontFace?!value:value,this._glFrontFace!==value&&(this._glFrontFace=value,this.gl.frontFace(this.gl[value?"CW":"CCW"]))}setBlendMode(value){var gl;(value=this.blendModesMap[value]?value:"normal")!==this.blendMode&&(this.blendMode=value,value=this.blendModesMap[value],gl=this.gl,2===value.length?gl.blendFunc(value[0],value[1]):gl.blendFuncSeparate(value[0],value[1],value[2],value[3]),6===value.length?(this._blendEq=!0,gl.blendEquationSeparate(value[4],value[5])):this._blendEq&&(this._blendEq=!1,gl.blendEquationSeparate(gl.FUNC_ADD,gl.FUNC_ADD)))}setPolygonOffset(value,scale){this.gl.polygonOffset(value,scale)}resetState(){this._glFrontFace=!1,this._frontFace=!1,this._cullFace=!1,this._frontFaceDirty=!1,this._invertFrontFace=!1,this.gl.frontFace(this.gl.CCW),this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!1),this.forceState(this.defaultState),this._blendEq=!0,this.blendMode="",this.setBlendMode("normal")}_updateCheck(func,value){var index=this.checks.indexOf(func);value&&-1===index?this.checks.push(func):value||-1===index||this.checks.splice(index,1)}static _checkBlendMode(system,state){system.setBlendMode(state.blendMode)}static _checkPolygonOffset(system,state){system.setPolygonOffset(1,state.polygonOffset)}destroy(){this.gl=null,this.checks.length=0}};_GlStateSystem.extension={type:[ExtensionType2.WebGLSystem],name:"state"};var GlStateSystem=_GlStateSystem;class GlTexture{constructor(texture){this.target=GL_TARGETS.TEXTURE_2D,this.texture=texture,this.width=-1,this.height=-1,this.type=GL_TYPES.UNSIGNED_BYTE,this.internalFormat=GL_FORMATS.RGBA,this.format=GL_FORMATS.RGBA,this.samplerType=0}}const glUploadBufferImageResource={id:"buffer",upload(source,glTexture,gl){glTexture.width===source.width||glTexture.height===source.height?gl.texSubImage2D(gl.TEXTURE_2D,0,0,0,source.width,source.height,glTexture.format,glTexture.type,source.resource):gl.texImage2D(glTexture.target,0,glTexture.internalFormat,source.width,source.height,0,glTexture.format,glTexture.type,source.resource),glTexture.width=source.width,glTexture.height=source.height}},compressedFormatMap={"bc1-rgba-unorm":!0,"bc1-rgba-unorm-srgb":!0,"bc2-rgba-unorm":!0,"bc2-rgba-unorm-srgb":!0,"bc3-rgba-unorm":!0,"bc3-rgba-unorm-srgb":!0,"bc4-r-unorm":!0,"bc4-r-snorm":!0,"bc5-rg-unorm":!0,"bc5-rg-snorm":!0,"bc6h-rgb-ufloat":!0,"bc6h-rgb-float":!0,"bc7-rgba-unorm":!0,"bc7-rgba-unorm-srgb":!0,"etc2-rgb8unorm":!0,"etc2-rgb8unorm-srgb":!0,"etc2-rgb8a1unorm":!0,"etc2-rgb8a1unorm-srgb":!0,"etc2-rgba8unorm":!0,"etc2-rgba8unorm-srgb":!0,"eac-r11unorm":!0,"eac-r11snorm":!0,"eac-rg11unorm":!0,"eac-rg11snorm":!0,"astc-4x4-unorm":!0,"astc-4x4-unorm-srgb":!0,"astc-5x4-unorm":!0,"astc-5x4-unorm-srgb":!0,"astc-5x5-unorm":!0,"astc-5x5-unorm-srgb":!0,"astc-6x5-unorm":!0,"astc-6x5-unorm-srgb":!0,"astc-6x6-unorm":!0,"astc-6x6-unorm-srgb":!0,"astc-8x5-unorm":!0,"astc-8x5-unorm-srgb":!0,"astc-8x6-unorm":!0,"astc-8x6-unorm-srgb":!0,"astc-8x8-unorm":!0,"astc-8x8-unorm-srgb":!0,"astc-10x5-unorm":!0,"astc-10x5-unorm-srgb":!0,"astc-10x6-unorm":!0,"astc-10x6-unorm-srgb":!0,"astc-10x8-unorm":!0,"astc-10x8-unorm-srgb":!0,"astc-10x10-unorm":!0,"astc-10x10-unorm-srgb":!0,"astc-12x10-unorm":!0,"astc-12x10-unorm-srgb":!0,"astc-12x12-unorm":!0,"astc-12x12-unorm-srgb":!0},glUploadCompressedTextureResource={id:"compressed",upload(source,glTexture,gl){gl.pixelStorei(gl.UNPACK_ALIGNMENT,4);let mipWidth=source.pixelWidth,mipHeight=source.pixelHeight;var compressed=!!compressedFormatMap[source.format];for(let i=0;i<source.resource.length;i++){var levelBuffer=source.resource[i];compressed?gl.compressedTexImage2D(gl.TEXTURE_2D,i,glTexture.internalFormat,mipWidth,mipHeight,0,levelBuffer):gl.texImage2D(gl.TEXTURE_2D,i,glTexture.internalFormat,mipWidth,mipHeight,0,glTexture.format,glTexture.type,levelBuffer),mipWidth=Math.max(mipWidth>>1,1),mipHeight=Math.max(mipHeight>>1,1)}}},glUploadImageResource={id:"image",upload(source,glTexture,gl,webGLVersion){var glWidth=glTexture.width,glHeight=glTexture.height,textureWidth=source.pixelWidth,textureHeight=source.pixelHeight,resourceWidth=source.resourceWidth,resourceHeight=source.resourceHeight;resourceWidth<textureWidth||resourceHeight<textureHeight?(glWidth===textureWidth&&glHeight===textureHeight||gl.texImage2D(glTexture.target,0,glTexture.internalFormat,textureWidth,textureHeight,0,glTexture.format,glTexture.type,null),2===webGLVersion?gl.texSubImage2D(gl.TEXTURE_2D,0,0,0,resourceWidth,resourceHeight,glTexture.format,glTexture.type,source.resource):gl.texSubImage2D(gl.TEXTURE_2D,0,0,0,glTexture.format,glTexture.type,source.resource)):glWidth===textureWidth&&glHeight===textureHeight?gl.texSubImage2D(gl.TEXTURE_2D,0,0,0,glTexture.format,glTexture.type,source.resource):2===webGLVersion?gl.texImage2D(glTexture.target,0,glTexture.internalFormat,textureWidth,textureHeight,0,glTexture.format,glTexture.type,source.resource):gl.texImage2D(glTexture.target,0,glTexture.internalFormat,glTexture.format,glTexture.type,source.resource),glTexture.width=textureWidth,glTexture.height=textureHeight}},glUploadVideoResource={id:"video",upload(source,glTexture,gl,webGLVersion){source.isValid?glUploadImageResource.upload(source,glTexture,gl,webGLVersion):gl.texImage2D(glTexture.target,0,glTexture.internalFormat,1,1,0,glTexture.format,glTexture.type,null)}},scaleModeToGlFilter={linear:9729,nearest:9728},mipmapScaleModeToGlFilter={linear:{linear:9987,nearest:9985},nearest:{linear:9986,nearest:9984}},wrapModeToGlAddress={"clamp-to-edge":33071,repeat:10497,"mirror-repeat":33648},compareModeToGlCompare={never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519};function applyStyleParams(style,gl,mipmaps,anisotropicExt,glFunctionName,firstParam,forceClamp,firstCreation){var wrapModeS,wrapModeT;firstCreation&&"repeat"===style.addressModeU&&"repeat"===style.addressModeV&&"repeat"===style.addressModeW||(wrapModeS=wrapModeToGlAddress[forceClamp?"clamp-to-edge":style.addressModeU],wrapModeT=wrapModeToGlAddress[forceClamp?"clamp-to-edge":style.addressModeV],forceClamp=wrapModeToGlAddress[forceClamp?"clamp-to-edge":style.addressModeW],gl[glFunctionName](firstParam,gl.TEXTURE_WRAP_S,wrapModeS),gl[glFunctionName](firstParam,gl.TEXTURE_WRAP_T,wrapModeT),gl.TEXTURE_WRAP_R&&gl[glFunctionName](firstParam,gl.TEXTURE_WRAP_R,forceClamp)),firstCreation&&"linear"===style.magFilter||gl[glFunctionName](firstParam,gl.TEXTURE_MAG_FILTER,scaleModeToGlFilter[style.magFilter]),mipmaps?firstCreation&&"linear"===style.mipmapFilter||(wrapModeS=mipmapScaleModeToGlFilter[style.minFilter][style.mipmapFilter],gl[glFunctionName](firstParam,gl.TEXTURE_MIN_FILTER,wrapModeS)):gl[glFunctionName](firstParam,gl.TEXTURE_MIN_FILTER,scaleModeToGlFilter[style.minFilter]),anisotropicExt&&1<style.maxAnisotropy&&(wrapModeT=Math.min(style.maxAnisotropy,gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),gl[glFunctionName](firstParam,anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT,wrapModeT)),style.compare&&gl[glFunctionName](firstParam,gl.TEXTURE_COMPARE_FUNC,compareModeToGlCompare[style.compare])}function mapFormatToGlFormat(gl){return{r8unorm:gl.RED,r8snorm:gl.RED,r8uint:gl.RED,r8sint:gl.RED,r16uint:gl.RED,r16sint:gl.RED,r16float:gl.RED,rg8unorm:gl.RG,rg8snorm:gl.RG,rg8uint:gl.RG,rg8sint:gl.RG,r32uint:gl.RED,r32sint:gl.RED,r32float:gl.RED,rg16uint:gl.RG,rg16sint:gl.RG,rg16float:gl.RG,rgba8unorm:gl.RGBA,"rgba8unorm-srgb":gl.RGBA,rgba8snorm:gl.RGBA,rgba8uint:gl.RGBA,rgba8sint:gl.RGBA,bgra8unorm:gl.RGBA,"bgra8unorm-srgb":gl.RGBA,rgb9e5ufloat:gl.RGB,rgb10a2unorm:gl.RGBA,rg11b10ufloat:gl.RGB,rg32uint:gl.RG,rg32sint:gl.RG,rg32float:gl.RG,rgba16uint:gl.RGBA,rgba16sint:gl.RGBA,rgba16float:gl.RGBA,rgba32uint:gl.RGBA,rgba32sint:gl.RGBA,rgba32float:gl.RGBA,stencil8:gl.STENCIL_INDEX8,depth16unorm:gl.DEPTH_COMPONENT,depth24plus:gl.DEPTH_COMPONENT,"depth24plus-stencil8":gl.DEPTH_STENCIL,depth32float:gl.DEPTH_COMPONENT,"depth32float-stencil8":gl.DEPTH_STENCIL}}var __defProp$j=Object.defineProperty,__defProps$8=Object.defineProperties,__getOwnPropDescs$8=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$j=Object.getOwnPropertySymbols,__hasOwnProp$j=Object.prototype.hasOwnProperty,__propIsEnum$j=Object.prototype.propertyIsEnumerable,__defNormalProp$j=(obj,key,value)=>key in obj?__defProp$j(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$j=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$j.call(b,prop)&&__defNormalProp$j(a,prop,b[prop]);if(__getOwnPropSymbols$j)for(var prop of __getOwnPropSymbols$j(b))__propIsEnum$j.call(b,prop)&&__defNormalProp$j(a,prop,b[prop]);return a};function mapFormatToGlInternalFormat(gl,extensions){let srgb={},bgra8unorm=gl.RGBA;return gl instanceof DOMAdapter.get().getWebGLRenderingContext()?extensions.srgb&&(srgb={"rgba8unorm-srgb":extensions.srgb.SRGB8_ALPHA8_EXT,"bgra8unorm-srgb":extensions.srgb.SRGB8_ALPHA8_EXT}):(srgb={"rgba8unorm-srgb":gl.SRGB8_ALPHA8,"bgra8unorm-srgb":gl.SRGB8_ALPHA8},bgra8unorm=gl.RGBA8),__spreadValues$j(__spreadValues$j(__spreadValues$j(__spreadValues$j(__spreadValues$j(__spreadValues$j((a=__spreadValues$j({r8unorm:gl.R8,r8snorm:gl.R8_SNORM,r8uint:gl.R8UI,r8sint:gl.R8I,r16uint:gl.R16UI,r16sint:gl.R16I,r16float:gl.R16F,rg8unorm:gl.RG8,rg8snorm:gl.RG8_SNORM,rg8uint:gl.RG8UI,rg8sint:gl.RG8I,r32uint:gl.R32UI,r32sint:gl.R32I,r32float:gl.R32F,rg16uint:gl.RG16UI,rg16sint:gl.RG16I,rg16float:gl.RG16F,rgba8unorm:gl.RGBA},srgb),gl={rgba8snorm:gl.RGBA8_SNORM,rgba8uint:gl.RGBA8UI,rgba8sint:gl.RGBA8I,bgra8unorm:bgra8unorm,rgb9e5ufloat:gl.RGB9_E5,rgb10a2unorm:gl.RGB10_A2,rg11b10ufloat:gl.R11F_G11F_B10F,rg32uint:gl.RG32UI,rg32sint:gl.RG32I,rg32float:gl.RG32F,rgba16uint:gl.RGBA16UI,rgba16sint:gl.RGBA16I,rgba16float:gl.RGBA16F,rgba32uint:gl.RGBA32UI,rgba32sint:gl.RGBA32I,rgba32float:gl.RGBA32F,stencil8:gl.STENCIL_INDEX8,depth16unorm:gl.DEPTH_COMPONENT16,depth24plus:gl.DEPTH_COMPONENT24,"depth24plus-stencil8":gl.DEPTH24_STENCIL8,depth32float:gl.DEPTH_COMPONENT32F,"depth32float-stencil8":gl.DEPTH32F_STENCIL8},__defProps$8(a,__getOwnPropDescs$8(gl))),extensions.s3tc?{"bc1-rgba-unorm":extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,"bc2-rgba-unorm":extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,"bc3-rgba-unorm":extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT}:{}),extensions.s3tc_sRGB?{"bc1-rgba-unorm-srgb":extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,"bc2-rgba-unorm-srgb":extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,"bc3-rgba-unorm-srgb":extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}:{}),extensions.rgtc?{"bc4-r-unorm":extensions.rgtc.COMPRESSED_RED_RGTC1_EXT,"bc4-r-snorm":extensions.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,"bc5-rg-unorm":extensions.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,"bc5-rg-snorm":extensions.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}:{}),extensions.bptc?{"bc6h-rgb-float":extensions.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,"bc6h-rgb-ufloat":extensions.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,"bc7-rgba-unorm":extensions.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,"bc7-rgba-unorm-srgb":extensions.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT}:{}),extensions.etc?{"etc2-rgb8unorm":extensions.etc.COMPRESSED_RGB8_ETC2,"etc2-rgb8unorm-srgb":extensions.etc.COMPRESSED_SRGB8_ETC2,"etc2-rgb8a1unorm":extensions.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgb8a1unorm-srgb":extensions.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgba8unorm":extensions.etc.COMPRESSED_RGBA8_ETC2_EAC,"etc2-rgba8unorm-srgb":extensions.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,"eac-r11unorm":extensions.etc.COMPRESSED_R11_EAC,"eac-rg11unorm":extensions.etc.COMPRESSED_SIGNED_RG11_EAC}:{}),extensions.astc?{"astc-4x4-unorm":extensions.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,"astc-4x4-unorm-srgb":extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,"astc-5x4-unorm":extensions.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,"astc-5x4-unorm-srgb":extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,"astc-5x5-unorm":extensions.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,"astc-5x5-unorm-srgb":extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,"astc-6x5-unorm":extensions.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,"astc-6x5-unorm-srgb":extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,"astc-6x6-unorm":extensions.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,"astc-6x6-unorm-srgb":extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,"astc-8x5-unorm":extensions.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,"astc-8x5-unorm-srgb":extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,"astc-8x6-unorm":extensions.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,"astc-8x6-unorm-srgb":extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,"astc-8x8-unorm":extensions.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,"astc-8x8-unorm-srgb":extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,"astc-10x5-unorm":extensions.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,"astc-10x5-unorm-srgb":extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,"astc-10x6-unorm":extensions.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,"astc-10x6-unorm-srgb":extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,"astc-10x8-unorm":extensions.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,"astc-10x8-unorm-srgb":extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,"astc-10x10-unorm":extensions.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,"astc-10x10-unorm-srgb":extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,"astc-12x10-unorm":extensions.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,"astc-12x10-unorm-srgb":extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,"astc-12x12-unorm":extensions.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,"astc-12x12-unorm-srgb":extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR}:{});var a}function mapFormatToGlType(gl){return{r8unorm:gl.UNSIGNED_BYTE,r8snorm:gl.BYTE,r8uint:gl.UNSIGNED_BYTE,r8sint:gl.BYTE,r16uint:gl.UNSIGNED_SHORT,r16sint:gl.SHORT,r16float:gl.HALF_FLOAT,rg8unorm:gl.UNSIGNED_BYTE,rg8snorm:gl.BYTE,rg8uint:gl.UNSIGNED_BYTE,rg8sint:gl.BYTE,r32uint:gl.UNSIGNED_INT,r32sint:gl.INT,r32float:gl.FLOAT,rg16uint:gl.UNSIGNED_SHORT,rg16sint:gl.SHORT,rg16float:gl.HALF_FLOAT,rgba8unorm:gl.UNSIGNED_BYTE,"rgba8unorm-srgb":gl.UNSIGNED_BYTE,rgba8snorm:gl.BYTE,rgba8uint:gl.UNSIGNED_BYTE,rgba8sint:gl.BYTE,bgra8unorm:gl.UNSIGNED_BYTE,"bgra8unorm-srgb":gl.UNSIGNED_BYTE,rgb9e5ufloat:gl.UNSIGNED_INT_5_9_9_9_REV,rgb10a2unorm:gl.UNSIGNED_INT_2_10_10_10_REV,rg11b10ufloat:gl.UNSIGNED_INT_10F_11F_11F_REV,rg32uint:gl.UNSIGNED_INT,rg32sint:gl.INT,rg32float:gl.FLOAT,rgba16uint:gl.UNSIGNED_SHORT,rgba16sint:gl.SHORT,rgba16float:gl.HALF_FLOAT,rgba32uint:gl.UNSIGNED_INT,rgba32sint:gl.INT,rgba32float:gl.FLOAT,stencil8:gl.UNSIGNED_BYTE,depth16unorm:gl.UNSIGNED_SHORT,depth24plus:gl.UNSIGNED_INT,"depth24plus-stencil8":gl.UNSIGNED_INT_24_8,depth32float:gl.FLOAT,"depth32float-stencil8":gl.FLOAT_32_UNSIGNED_INT_24_8_REV}}class GlTextureSystem{constructor(renderer){this.managedTextures=[],this._glTextures=Object.create(null),this._glSamplers=Object.create(null),this._boundTextures=[],this._activeTextureLocation=-1,this._boundSamplers=Object.create(null),this._uploads={image:glUploadImageResource,buffer:glUploadBufferImageResource,video:glUploadVideoResource,compressed:glUploadCompressedTextureResource},this._premultiplyAlpha=!1,this._useSeparateSamplers=!1,this._renderer=renderer,this._renderer.renderableGC.addManagedHash(this,"_glTextures"),this._renderer.renderableGC.addManagedHash(this,"_glSamplers")}contextChange(gl){this._gl=gl,this._mapFormatToInternalFormat||(this._mapFormatToInternalFormat=mapFormatToGlInternalFormat(gl,this._renderer.context.extensions),this._mapFormatToType=mapFormatToGlType(gl),this._mapFormatToFormat=mapFormatToGlFormat(gl)),this._glTextures=Object.create(null),this._glSamplers=Object.create(null),this._boundSamplers=Object.create(null),this._premultiplyAlpha=!1;for(let i=0;i<16;i++)this.bind(Texture.EMPTY,i)}initSource(source){this.bind(source)}bind(texture,location=0){var source=texture.source;texture?(this.bindSource(source,location),this._useSeparateSamplers&&this._bindSampler(source.style,location)):(this.bindSource(null,location),this._useSeparateSamplers&&this._bindSampler(null,location))}bindSource(source,location=0){var gl=this._gl;source._touched=this._renderer.textureGC.count,this._boundTextures[location]!==source&&(this._boundTextures[location]=source,this._activateLocation(location),source=source||Texture.EMPTY.source,location=this.getGlSource(source),gl.bindTexture(location.target,location.texture))}_bindSampler(style,location=0){var gl=this._gl;style?(style=this._getGlSampler(style),this._boundSamplers[location]!==style&&(this._boundSamplers[location]=style,gl.bindSampler(location,style))):(this._boundSamplers[location]=null,gl.bindSampler(location,null))}unbind(texture){var glTexture,source=texture.source,boundTextures=this._boundTextures,gl=this._gl;for(let i=0;i<boundTextures.length;i++)boundTextures[i]===source&&(this._activateLocation(i),glTexture=this.getGlSource(source),gl.bindTexture(glTexture.target,null),boundTextures[i]=null)}_activateLocation(location){this._activeTextureLocation!==location&&(this._activeTextureLocation=location,this._gl.activeTexture(this._gl.TEXTURE0+location))}_initSource(source){var biggestDimension,gl=this._gl;return(gl=new GlTexture(gl.createTexture())).type=this._mapFormatToType[source.format],gl.internalFormat=this._mapFormatToInternalFormat[source.format],gl.format=this._mapFormatToFormat[source.format],source.autoGenerateMipmaps&&(this._renderer.context.supports.nonPowOf2mipmaps||source.isPowerOfTwo)&&(biggestDimension=Math.max(source.width,source.height),source.mipLevelCount=Math.floor(Math.log2(biggestDimension))+1),this._glTextures[source.uid]=gl,this.managedTextures.includes(source)||(source.on("update",this.onSourceUpdate,this),source.on("resize",this.onSourceUpdate,this),source.on("styleChange",this.onStyleChange,this),source.on("destroy",this.onSourceDestroy,this),source.on("unload",this.onSourceUnload,this),source.on("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.push(source)),this.onSourceUpdate(source),this.updateStyle(source,!1),gl}onStyleChange(source){this.updateStyle(source,!1)}updateStyle(source,firstCreation){var gl=this._gl,glTexture=this.getGlSource(source);gl.bindTexture(gl.TEXTURE_2D,glTexture.texture),applyStyleParams((this._boundTextures[this._activeTextureLocation]=source).style,gl,1<source.mipLevelCount,this._renderer.context.extensions.anisotropicFiltering,"texParameteri",gl.TEXTURE_2D,!this._renderer.context.supports.nonPowOf2wrapping&&!source.isPowerOfTwo,firstCreation)}onSourceUnload(source){var glTexture=this._glTextures[source.uid];glTexture&&(this.unbind(source),this._glTextures[source.uid]=null,this._gl.deleteTexture(glTexture.texture))}onSourceUpdate(source){var gl=this._gl,glTexture=this.getGlSource(source),premultipliedAlpha=(gl.bindTexture(gl.TEXTURE_2D,glTexture.texture),"premultiply-alpha-on-upload"===(this._boundTextures[this._activeTextureLocation]=source).alphaMode);this._premultiplyAlpha!==premultipliedAlpha&&(this._premultiplyAlpha=premultipliedAlpha,gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,premultipliedAlpha)),this._uploads[source.uploadMethodId]?this._uploads[source.uploadMethodId].upload(source,glTexture,gl,this._renderer.context.webGLVersion):gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,source.pixelWidth,source.pixelHeight,0,gl.RGBA,gl.UNSIGNED_BYTE,null),source.autoGenerateMipmaps&&1<source.mipLevelCount&&this.onUpdateMipmaps(source,!1)}onUpdateMipmaps(source,bind=!0){bind&&this.bindSource(source,0),bind=this.getGlSource(source),this._gl.generateMipmap(bind.target)}onSourceDestroy(source){source.off("destroy",this.onSourceDestroy,this),source.off("update",this.onSourceUpdate,this),source.off("resize",this.onSourceUpdate,this),source.off("unload",this.onSourceUnload,this),source.off("styleChange",this.onStyleChange,this),source.off("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.splice(this.managedTextures.indexOf(source),1),this.onSourceUnload(source)}_initSampler(style){var gl=this._gl,glSampler=this._gl.createSampler();return this._glSamplers[style._resourceId]=glSampler,applyStyleParams(style,gl,1<this._boundTextures[this._activeTextureLocation].mipLevelCount,this._renderer.context.extensions.anisotropicFiltering,"samplerParameteri",glSampler,!1,!0),this._glSamplers[style._resourceId]}_getGlSampler(sampler){return this._glSamplers[sampler._resourceId]||this._initSampler(sampler)}getGlSource(source){return this._glTextures[source.uid]||this._initSource(source)}generateCanvas(texture){var{pixels:texture,width,height}=this.getPixels(texture),canvas=DOMAdapter.get().createCanvas(),ctx=(canvas.width=width,canvas.height=height,canvas.getContext("2d"));return ctx&&((width=ctx.createImageData(width,height)).data.set(texture),ctx.putImageData(width,0,0)),canvas}getPixels(texture){var resolution=texture.source.resolution,frame=texture.frame,width=Math.max(Math.round(frame.width*resolution),1),height=Math.max(Math.round(frame.height*resolution),1),pixels=new Uint8Array(4*width*height),renderer=this._renderer,texture=renderer.renderTarget.getRenderTarget(texture),texture=renderer.renderTarget.getGpuRenderTarget(texture);return(renderer=renderer.gl).bindFramebuffer(renderer.FRAMEBUFFER,texture.resolveTargetFramebuffer),renderer.readPixels(Math.round(frame.x*resolution),Math.round(frame.y*resolution),width,height,renderer.RGBA,renderer.UNSIGNED_BYTE,pixels),{pixels:new Uint8ClampedArray(pixels.buffer),width:width,height:height}}destroy(){this.managedTextures.slice().forEach(source=>this.onSourceDestroy(source)),this.managedTextures=null,this._renderer=null}resetState(){this._activeTextureLocation=-1,this._boundTextures.fill(Texture.EMPTY.source),this._boundSamplers=Object.create(null);var gl=this._gl;this._premultiplyAlpha=!1,gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this._premultiplyAlpha)}}GlTextureSystem.extension={type:[ExtensionType2.WebGLSystem],name:"texture"};class GlGraphicsAdaptor{init(){var uniforms=new UniformGroup({uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uTransformMatrix:{value:new Matrix,type:"mat3x3<f32>"},uRound:{value:0,type:"f32"}}),maxTextures=getMaxTexturesPerBatch(),glProgram=compileHighShaderGlProgram({name:"graphics",bits:[colorBitGl,generateTextureBatchBitGl(maxTextures),localUniformBitGl,roundPixelsBitGl]});this.shader=new Shader({glProgram:glProgram,resources:{localUniforms:uniforms,batchSamplers:getBatchSamplersUniformGroup(maxTextures)}})}execute(graphicsPipe,renderable){var shader=(renderable=renderable.context).customShader||this.shader,renderer=graphicsPipe.renderer,{batcher:renderable,instructions}=renderer.graphicsContext.getContextRenderData(renderable),batches=(shader.groups[0]=renderer.globalUniforms.bindGroup,renderer.state.set(graphicsPipe.state),renderer.shader.bind(shader),renderer.geometry.bind(renderable.geometry,shader.glProgram),instructions.instructions);for(let i=0;i<instructions.instructionSize;i++){var batch=batches[i];if(batch.size){for(let j=0;j<batch.textures.count;j++)renderer.texture.bind(batch.textures.textures[j],j);renderer.geometry.draw(batch.topology,batch.size,batch.start)}}}destroy(){this.shader.destroy(!0),this.shader=null}}GlGraphicsAdaptor.extension={type:[ExtensionType2.WebGLPipesAdaptor],name:"graphics"};class GlMeshAdaptor{init(){var glProgram=compileHighShaderGlProgram({name:"mesh",bits:[localUniformBitGl,textureBitGl,roundPixelsBitGl]});this._shader=new Shader({glProgram:glProgram,resources:{uTexture:Texture.EMPTY.source,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new Matrix}}}})}execute(meshPipe,mesh){var renderer=meshPipe.renderer;let shader=mesh._shader;if(shader){if(!shader.glProgram)return void warn("Mesh shader has no glProgram",mesh.shader)}else{shader=this._shader;var texture=mesh.texture,source=texture.source;shader.resources.uTexture=source,shader.resources.uSampler=source.style,shader.resources.textureUniforms.uniforms.uTextureMatrix=texture.textureMatrix.mapCoord}shader.groups[100]=renderer.globalUniforms.bindGroup,shader.groups[101]=meshPipe.localUniformsBindGroup,renderer.encoder.draw({geometry:mesh._geometry,shader:shader,state:mesh.state})}destroy(){this._shader.destroy(!0),this._shader=null}}GlMeshAdaptor.extension={type:[ExtensionType2.WebGLPipesAdaptor],name:"mesh"};class CustomRenderPipe{constructor(renderer){this._renderer=renderer}updateRenderable(){}destroyRenderable(){}validateRenderable(){return!1}addRenderable(container,instructionSet){this._renderer.renderPipes.batch.break(instructionSet),instructionSet.add(container)}execute(container){container.isRenderable&&container.render(this._renderer)}destroy(){this._renderer=null}}function executeInstructions(renderGroup,renderer){var instructionSet=renderGroup.instructionSet,instructions=instructionSet.instructions;for(let i=0;i<instructionSet.instructionSize;i++){var instruction=instructions[i];renderer[instruction.renderPipeId].execute(instruction)}}CustomRenderPipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"customRender"};const tempMatrix$2=new Matrix;class RenderGroupPipe{constructor(renderer){this._renderer=renderer}addRenderGroup(renderGroup,instructionSet){renderGroup.isCachedAsTexture?this._addRenderableCacheAsTexture(renderGroup,instructionSet):this._addRenderableDirect(renderGroup,instructionSet)}execute(renderGroup){renderGroup.isRenderable&&(renderGroup.isCachedAsTexture?this._executeCacheAsTexture(renderGroup):this._executeDirect(renderGroup))}destroy(){this._renderer=null}_addRenderableDirect(renderGroup,instructionSet){this._renderer.renderPipes.batch.break(instructionSet),renderGroup._batchableRenderGroup&&(BigPool.return(renderGroup._batchableRenderGroup),renderGroup._batchableRenderGroup=null),instructionSet.add(renderGroup)}_addRenderableCacheAsTexture(renderGroup,instructionSet){var _a=null!=(_a=renderGroup._batchableRenderGroup)?_a:renderGroup._batchableRenderGroup=BigPool.get(BatchableSprite);_a.renderable=renderGroup.root,_a.transform=renderGroup.root.relativeGroupTransform,_a.texture=renderGroup.texture,_a.bounds=renderGroup._textureBounds,instructionSet.add(renderGroup),this._renderer.renderPipes.batch.addToBatch(_a,instructionSet)}_executeCacheAsTexture(renderGroup){var worldTransformMatrix;renderGroup.textureNeedsUpdate&&(renderGroup.textureNeedsUpdate=!1,worldTransformMatrix=tempMatrix$2.identity().translate(-renderGroup._textureBounds.x,-renderGroup._textureBounds.y),this._renderer.renderTarget.push(renderGroup.texture,!0,null,renderGroup.texture.frame),this._renderer.globalUniforms.push({worldTransformMatrix:worldTransformMatrix,worldColor:4294967295}),executeInstructions(renderGroup,this._renderer.renderPipes),this._renderer.renderTarget.finishRenderPass(),this._renderer.renderTarget.pop(),this._renderer.globalUniforms.pop()),renderGroup._batchableRenderGroup._batcher.updateElement(renderGroup._batchableRenderGroup),renderGroup._batchableRenderGroup._batcher.geometry.buffers[0].update()}_executeDirect(renderGroup){this._renderer.globalUniforms.push({worldTransformMatrix:renderGroup.inverseParentTextureTransform,worldColor:renderGroup.worldColorAlpha}),executeInstructions(renderGroup,this._renderer.renderPipes),this._renderer.globalUniforms.pop()}}function clearList(list,index){for(let j=index=index||0;j<list.length&&list[j];j++)list[j]=null}RenderGroupPipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"renderGroup"};const tempContainer=new Container,UPDATE_BLEND_COLOR_VISIBLE=UPDATE_VISIBLE|UPDATE_COLOR|UPDATE_BLEND;function updateRenderGroupTransforms(renderGroup,updateChildRenderGroups=!1){updateRenderGroupTransform(renderGroup);var childrenToUpdate=renderGroup.childrenToUpdate,updateTick=renderGroup.updateTick++;for(const j in childrenToUpdate){var renderGroupDepth=Number(j),childrenAtDepth=childrenToUpdate[j],list=childrenAtDepth.list,index=childrenAtDepth.index;for(let i=0;i<index;i++){var child=list[i];child.parentRenderGroup===renderGroup&&child.relativeRenderGroupDepth===renderGroupDepth&&updateTransformAndChildren(child,updateTick,0)}clearList(list,index),childrenAtDepth.index=0}if(updateChildRenderGroups)for(let i=0;i<renderGroup.renderGroupChildren.length;i++)updateRenderGroupTransforms(renderGroup.renderGroupChildren[i],updateChildRenderGroups)}function updateRenderGroupTransform(renderGroup){var root=renderGroup.root,renderGroupParent=(renderGroupParent=renderGroup.renderGroupParent?(renderGroupParent=renderGroup.renderGroupParent,renderGroup.worldTransform.appendFrom(root.relativeGroupTransform,renderGroupParent.worldTransform),renderGroup.worldColor=multiplyColors(root.groupColor,renderGroupParent.worldColor),root.groupAlpha*renderGroupParent.worldAlpha):(renderGroup.worldTransform.copyFrom(root.localTransform),renderGroup.worldColor=root.localColor,root.localAlpha))<0?0:1<renderGroupParent?1:renderGroupParent;renderGroup.worldAlpha=renderGroupParent,renderGroup.worldColorAlpha=renderGroup.worldColor+((255*renderGroupParent|0)<<24)}function updateTransformAndChildren(container,updateTick,updateFlags){if(updateTick!==container.updateTick){container.updateTick=updateTick,container.didChange=!1;var localTransform=container.localTransform,parent=(container.updateLocalTransform(),container.parent);if(parent&&!parent.renderGroup?(updateFlags|=container._updateFlags,container.relativeGroupTransform.appendFrom(localTransform,parent.relativeGroupTransform),updateFlags&UPDATE_BLEND_COLOR_VISIBLE&&updateColorBlendVisibility(container,parent,updateFlags)):(updateFlags=container._updateFlags,container.relativeGroupTransform.copyFrom(localTransform),updateFlags&UPDATE_BLEND_COLOR_VISIBLE&&updateColorBlendVisibility(container,tempContainer,updateFlags)),!container.renderGroup){var children=container.children,length=children.length;for(let i=0;i<length;i++)updateTransformAndChildren(children[i],updateTick,updateFlags);parent=container.parentRenderGroup,container.renderPipeId&&!parent.structureDidChange&&parent.updateRenderable(container)}}}function updateColorBlendVisibility(container,parent,updateFlags){var groupAlpha;updateFlags&UPDATE_COLOR&&(container.groupColor=multiplyColors(container.localColor,parent.groupColor),groupAlpha=container.localAlpha*parent.groupAlpha,container.groupAlpha=groupAlpha=groupAlpha<0?0:1<groupAlpha?1:groupAlpha,container.groupColorAlpha=container.groupColor+((255*groupAlpha|0)<<24)),updateFlags&UPDATE_BLEND&&(container.groupBlendMode="inherit"===container.localBlendMode?parent.groupBlendMode:container.localBlendMode),updateFlags&UPDATE_VISIBLE&&(container.globalDisplayStatus=container.localDisplayStatus&parent.globalDisplayStatus),container._updateFlags=0}function validateRenderables(renderGroup,renderPipes){var{list,index}=renderGroup.childrenRenderablesToUpdate;let rebuildRequired=!1;for(let i=0;i<index;i++){var container=list[i],pipe=renderPipes[container.renderPipeId];if(rebuildRequired=pipe.validateRenderable(container))break}return renderGroup.structureDidChange=rebuildRequired}const tempMatrix$1=new Matrix;class RenderGroupSystem{constructor(renderer){this._renderer=renderer}render({container,transform}){var parent=container.parent,renderGroupParent=container.renderGroup.renderGroupParent,renderer=(container.parent=null,container.renderGroup.renderGroupParent=null,this._renderer);let originalLocalTransform=tempMatrix$1;transform&&(originalLocalTransform=originalLocalTransform.copyFrom(container.renderGroup.localTransform),container.renderGroup.localTransform.copyFrom(transform));var renderPipes=renderer.renderPipes;this._updateCachedRenderGroups(container.renderGroup,null),this._updateRenderGroups(container.renderGroup),renderer.globalUniforms.start({worldTransformMatrix:transform?container.renderGroup.localTransform:container.renderGroup.worldTransform,worldColor:container.renderGroup.worldColorAlpha}),executeInstructions(container.renderGroup,renderPipes),renderPipes.uniformBatch&&renderPipes.uniformBatch.renderEnd(),transform&&container.renderGroup.localTransform.copyFrom(originalLocalTransform),container.parent=parent,container.renderGroup.renderGroupParent=renderGroupParent}destroy(){this._renderer=null}_updateCachedRenderGroups(renderGroup,closestCacheAsTexture){var bounds,lastTexture,renderer,resolution,_a;if(renderGroup.isCachedAsTexture){if(!renderGroup.updateCacheTexture)return;closestCacheAsTexture=renderGroup}renderGroup._parentCacheAsTextureRenderGroup=closestCacheAsTexture;for(let i=renderGroup.renderGroupChildren.length-1;0<=i;i--)this._updateCachedRenderGroups(renderGroup.renderGroupChildren[i],closestCacheAsTexture);renderGroup.invalidateMatrices(),renderGroup.isCachedAsTexture?renderGroup.textureNeedsUpdate&&((bounds=renderGroup.root.getLocalBounds()).ceil(),lastTexture=renderGroup.texture,renderGroup.texture&&TexturePool.returnTexture(renderGroup.texture),renderer=this._renderer,resolution=renderGroup.textureOptions.resolution||renderer.view.resolution,_a=null!=(_a=renderGroup.textureOptions.antialias)?_a:renderer.view.antialias,renderGroup.texture=TexturePool.getOptimalTexture(bounds.width,bounds.height,resolution,_a),renderGroup._textureBounds||(renderGroup._textureBounds=new Bounds),renderGroup._textureBounds.copyFrom(bounds),lastTexture!==renderGroup.texture)&&renderGroup.renderGroupParent&&(renderGroup.renderGroupParent.structureDidChange=!0):renderGroup.texture&&(TexturePool.returnTexture(renderGroup.texture),renderGroup.texture=null)}_updateRenderGroups(renderGroup){var renderer=this._renderer,renderPipes=renderer.renderPipes;if(renderGroup.runOnRender(renderer),renderGroup.instructionSet.renderPipes=renderPipes,renderGroup.structureDidChange?clearList(renderGroup.childrenRenderablesToUpdate.list,0):validateRenderables(renderGroup,renderPipes),updateRenderGroupTransforms(renderGroup),renderGroup.structureDidChange?(renderGroup.structureDidChange=!1,this._buildInstructions(renderGroup,renderer)):this._updateRenderables(renderGroup),renderGroup.childrenRenderablesToUpdate.index=0,renderer.renderPipes.batch.upload(renderGroup.instructionSet),!renderGroup.isCachedAsTexture||renderGroup.textureNeedsUpdate)for(let i=0;i<renderGroup.renderGroupChildren.length;i++)this._updateRenderGroups(renderGroup.renderGroupChildren[i])}_updateRenderables(renderGroup){var{list,index}=renderGroup.childrenRenderablesToUpdate;for(let i=0;i<index;i++){var container=list[i];container.didViewUpdate&&renderGroup.updateRenderable(container)}clearList(list,index)}_buildInstructions(renderGroup,rendererOrPipes){var root=renderGroup.root,renderPipes=((renderGroup=renderGroup.instructionSet).reset(),(rendererOrPipes=rendererOrPipes.renderPipes?rendererOrPipes:rendererOrPipes.batch.renderer).renderPipes);renderPipes.batch.buildStart(renderGroup),renderPipes.blendMode.buildStart(),renderPipes.colorMask.buildStart(),root.sortableChildren&&root.sortChildren(),root.collectRenderablesWithEffects(renderGroup,rendererOrPipes,null),renderPipes.batch.buildEnd(renderGroup),renderPipes.blendMode.buildEnd(renderGroup)}}RenderGroupSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem,ExtensionType2.CanvasSystem],name:"renderGroup"};class SpritePipe{constructor(renderer){this._gpuSpriteHash=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this._renderer=renderer,this._renderer.renderableGC.addManagedHash(this,"_gpuSpriteHash")}addRenderable(sprite,instructionSet){var gpuSprite=this._getGpuSprite(sprite);sprite.didViewUpdate&&this._updateBatchableSprite(sprite,gpuSprite),this._renderer.renderPipes.batch.addToBatch(gpuSprite,instructionSet)}updateRenderable(sprite){var gpuSprite=this._gpuSpriteHash[sprite.uid];sprite.didViewUpdate&&this._updateBatchableSprite(sprite,gpuSprite),gpuSprite._batcher.updateElement(gpuSprite)}validateRenderable(sprite){var gpuSprite=this._getGpuSprite(sprite);return!gpuSprite._batcher.checkAndUpdateTexture(gpuSprite,sprite._texture)}destroyRenderable(sprite){var batchableSprite=this._gpuSpriteHash[sprite.uid];BigPool.return(batchableSprite),this._gpuSpriteHash[sprite.uid]=null,sprite.off("destroyed",this._destroyRenderableBound)}_updateBatchableSprite(sprite,batchableSprite){batchableSprite.bounds=sprite.visualBounds,batchableSprite.texture=sprite._texture}_getGpuSprite(sprite){return this._gpuSpriteHash[sprite.uid]||this._initGPUSprite(sprite)}_initGPUSprite(sprite){var batchableSprite=BigPool.get(BatchableSprite);return batchableSprite.renderable=sprite,batchableSprite.transform=sprite.groupTransform,batchableSprite.texture=sprite._texture,batchableSprite.bounds=sprite.visualBounds,batchableSprite.roundPixels=this._renderer._roundPixels|sprite._roundPixels,this._gpuSpriteHash[sprite.uid]=batchableSprite,sprite.on("destroyed",this._destroyRenderableBound),batchableSprite}destroy(){for(const i in this._gpuSpriteHash)BigPool.return(this._gpuSpriteHash[i]);this._gpuSpriteHash=null,this._renderer=null}}SpritePipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"sprite"};var __defProp$i=Object.defineProperty,__getOwnPropSymbols$i=Object.getOwnPropertySymbols,__hasOwnProp$i=Object.prototype.hasOwnProperty,__propIsEnum$i=Object.prototype.propertyIsEnumerable,__defNormalProp$i=(obj,key,value)=>key in obj?__defProp$i(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$i=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$i.call(b,prop)&&__defNormalProp$i(a,prop,b[prop]);if(__getOwnPropSymbols$i)for(var prop of __getOwnPropSymbols$i(b))__propIsEnum$i.call(b,prop)&&__defNormalProp$i(a,prop,b[prop]);return a};const _BackgroundSystem=class _BackgroundSystem{constructor(){this.clearBeforeRender=!0,this._backgroundColor=new Color(0),this.color=this._backgroundColor,this.alpha=1}init(options){options=__spreadValues$i(__spreadValues$i({},_BackgroundSystem.defaultOptions),options),this.clearBeforeRender=options.clearBeforeRender,this.color=options.background||options.backgroundColor||this._backgroundColor,this.alpha=options.backgroundAlpha,this._backgroundColor.setAlpha(options.backgroundAlpha)}get color(){return this._backgroundColor}set color(value){this._backgroundColor.setValue(value)}get alpha(){return this._backgroundColor.alpha}set alpha(value){this._backgroundColor.setAlpha(value)}get colorRgba(){return this._backgroundColor.toArray()}destroy(){}};_BackgroundSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem,ExtensionType2.CanvasSystem],name:"background",priority:0},_BackgroundSystem.defaultOptions={backgroundAlpha:1,backgroundColor:0,clearBeforeRender:!0};var BackgroundSystem=_BackgroundSystem;const BLEND_MODE_FILTERS={};extensions.handle(ExtensionType2.BlendMode,value=>{if(!value.name)throw new Error("BlendMode extension must have a name property");BLEND_MODE_FILTERS[value.name]=value.ref},value=>{delete BLEND_MODE_FILTERS[value.name]});class BlendModePipe{constructor(renderer){this._isAdvanced=!1,this._filterHash=Object.create(null),this._renderer=renderer,this._renderer.runners.prerender.add(this)}prerender(){this._activeBlendMode="normal",this._isAdvanced=!1}setBlendMode(renderable,blendMode,instructionSet){this._activeBlendMode===blendMode?this._isAdvanced&&this._renderableList.push(renderable):(this._activeBlendMode=blendMode,this._isAdvanced&&this._endAdvancedBlendMode(instructionSet),this._isAdvanced=!!BLEND_MODE_FILTERS[blendMode],this._isAdvanced&&(this._beginAdvancedBlendMode(instructionSet),this._renderableList.push(renderable)))}_beginAdvancedBlendMode(instructionSet){this._renderer.renderPipes.batch.break(instructionSet);var blendMode=this._activeBlendMode;if(BLEND_MODE_FILTERS[blendMode]){let filterEffect=this._filterHash[blendMode];filterEffect||((filterEffect=this._filterHash[blendMode]=new FilterEffect).filters=[new BLEND_MODE_FILTERS[blendMode]]);var instruction={renderPipeId:"filter",action:"pushFilter",renderables:[],filterEffect:filterEffect,canBundle:!1};this._renderableList=instruction.renderables,instructionSet.add(instruction)}else warn(`Unable to assign BlendMode: '${blendMode}'. You may want to include: import 'pixi.js/advanced-blend-modes'`)}_endAdvancedBlendMode(instructionSet){this._renderableList=null,this._renderer.renderPipes.batch.break(instructionSet),instructionSet.add({renderPipeId:"filter",action:"popFilter",canBundle:!1})}buildStart(){this._isAdvanced=!1}buildEnd(instructionSet){this._isAdvanced&&this._endAdvancedBlendMode(instructionSet)}destroy(){this._renderer=null,this._renderableList=null;for(const i in this._filterHash)this._filterHash[i].destroy();this._filterHash=null}}BlendModePipe.extension={type:[ExtensionType2.WebGLPipes,ExtensionType2.WebGPUPipes,ExtensionType2.CanvasPipes],name:"blendMode"};var __defProp$h=Object.defineProperty,__getOwnPropSymbols$h=Object.getOwnPropertySymbols,__hasOwnProp$h=Object.prototype.hasOwnProperty,__propIsEnum$h=Object.prototype.propertyIsEnumerable,__defNormalProp$h=(obj,key,value)=>key in obj?__defProp$h(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$h=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$h.call(b,prop)&&__defNormalProp$h(a,prop,b[prop]);if(__getOwnPropSymbols$h)for(var prop of __getOwnPropSymbols$h(b))__propIsEnum$h.call(b,prop)&&__defNormalProp$h(a,prop,b[prop]);return a};const imageTypes={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},_ExtractSystem=class _ExtractSystem{constructor(renderer){this._renderer=renderer}_normalizeOptions(options,defaults={}){return options instanceof Container||options instanceof Texture?__spreadValues$h({target:options},defaults):__spreadValues$h(__spreadValues$h({},defaults),options)}async image(options){var image=new Image;return image.src=await this.base64(options),image}async base64(options){const{format,quality}=options=this._normalizeOptions(options,_ExtractSystem.defaultImageOptions),canvas=this.canvas(options);if(void 0!==canvas.toBlob)return new Promise((resolve,reject)=>{canvas.toBlob(blob=>{if(blob){const reader=new FileReader;reader.onload=()=>resolve(reader.result),reader.onerror=reject,reader.readAsDataURL(blob)}else reject(new Error("ICanvas.toBlob failed!"))},imageTypes[format],quality)});if(void 0!==canvas.toDataURL)return canvas.toDataURL(imageTypes[format],quality);if(void 0===canvas.convertToBlob)throw new Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented");{const blob=await canvas.convertToBlob({type:imageTypes[format],quality:quality});return new Promise((resolve,reject)=>{const reader=new FileReader;reader.onload=()=>resolve(reader.result),reader.onerror=reject,reader.readAsDataURL(blob)})}}canvas(options){var target=(options=this._normalizeOptions(options)).target,renderer=this._renderer;return target instanceof Texture?renderer.texture.generateCanvas(target):(target=renderer.textureGenerator.generateTexture(options),options=renderer.texture.generateCanvas(target),target.destroy(!0),options)}pixels(options){var target=(options=this._normalizeOptions(options)).target,renderer=this._renderer,options=target instanceof Texture?target:renderer.textureGenerator.generateTexture(options),renderer=renderer.texture.getPixels(options);return target instanceof Container&&options.destroy(!0),renderer}texture(options){return(options=this._normalizeOptions(options)).target instanceof Texture?options.target:this._renderer.textureGenerator.generateTexture(options)}download(options){options=this._normalizeOptions(options);var canvas=this.canvas(options),link=document.createElement("a");link.download=null!=(options=options.filename)?options:"image.png",link.href=canvas.toDataURL("image/png"),document.body.appendChild(link),link.click(),document.body.removeChild(link)}log(options){var _a=null!=(_a=options.width)?_a:200,base64=(options=this._normalizeOptions(options),(options=this.canvas(options)).toDataURL()),options=(console.log(`[Pixi Texture] ${options.width}px ${options.height}px`),["font-size: 1px;",`padding: ${_a}px 300px;`,`background: url(${base64}) no-repeat;`,"background-size: contain;"].join(" "));console.log("%c ",options)}destroy(){this._renderer=null}};_ExtractSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem],name:"extract"},_ExtractSystem.defaultImageOptions={format:"png",quality:1};var ExtractSystem=_ExtractSystem;class RenderTexture extends Texture{static create(options){return new RenderTexture({source:new TextureSource(options)})}resize(width,height,resolution){return this.source.resize(width,height,resolution),this}}var __defProp$g=Object.defineProperty,__defProps$7=Object.defineProperties,__getOwnPropDescs$7=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$g=Object.getOwnPropertySymbols,__hasOwnProp$g=Object.prototype.hasOwnProperty,__propIsEnum$g=Object.prototype.propertyIsEnumerable,__defNormalProp$g=(obj,key,value)=>key in obj?__defProp$g(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;const tempRect=new Rectangle,tempBounds=new Bounds,noColor=[0,0,0,0];class GenerateTextureSystem{constructor(renderer){this._renderer=renderer}generateTexture(options){var resolution=(options=options instanceof Container?{target:options,frame:void 0,textureSourceOptions:{},resolution:void 0}:options).resolution||this._renderer.resolution,antialias=options.antialias||this._renderer.view.antialias,container=options.target,clearColor=(clearColor=options.clearColor)?Array.isArray(clearColor)&&4===clearColor.length?clearColor:Color.shared.setValue(clearColor).toArray():noColor,_a=(null==(_a=options.frame)?void 0:_a.copyTo(tempRect))||getLocalBounds(container,tempBounds).rectangle,antialias=(_a.width=0|Math.max(_a.width,1/resolution),_a.height=0|Math.max(_a.height,1/resolution),RenderTexture.create((options=((a,b)=>{for(var prop in b=options.textureSourceOptions||{})__hasOwnProp$g.call(b,prop)&&__defNormalProp$g(a,prop,b[prop]);if(__getOwnPropSymbols$g)for(var prop of __getOwnPropSymbols$g(b))__propIsEnum$g.call(b,prop)&&__defNormalProp$g(a,prop,b[prop]);return a})({}),resolution={width:_a.width,height:_a.height,resolution:resolution,antialias:antialias},__defProps$7(options,__getOwnPropDescs$7(resolution))))),options=Matrix.shared.translate(-_a.x,-_a.y);return this._renderer.render({container:container,transform:options,target:antialias,clearColor:clearColor}),antialias.source.updateMipmaps(),antialias}destroy(){this._renderer=null}}GenerateTextureSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem],name:"textureGenerator"};class GlobalUniformSystem{constructor(renderer){this._stackIndex=0,this._globalUniformDataStack=[],this._uniformsPool=[],this._activeUniforms=[],this._bindGroupPool=[],this._activeBindGroups=[],this._renderer=renderer}reset(){for(let i=this._stackIndex=0;i<this._activeUniforms.length;i++)this._uniformsPool.push(this._activeUniforms[i]);for(let i=0;i<this._activeBindGroups.length;i++)this._bindGroupPool.push(this._activeBindGroups[i]);this._activeUniforms.length=0,this._activeBindGroups.length=0}start(options){this.reset(),this.push(options)}bind({size,projectionMatrix,worldTransformMatrix,worldColor,offset}){var renderTarget=this._renderer.renderTarget.renderTarget,currentGlobalUniformData=this._stackIndex?this._globalUniformDataStack[this._stackIndex-1]:{projectionData:renderTarget,worldTransformMatrix:new Matrix,worldColor:4294967295,offset:new Point},projectionMatrix={projectionMatrix:projectionMatrix||this._renderer.renderTarget.projectionMatrix,resolution:size||renderTarget.size,worldTransformMatrix:worldTransformMatrix||currentGlobalUniformData.worldTransformMatrix,worldColor:worldColor||currentGlobalUniformData.worldColor,offset:offset||currentGlobalUniformData.offset,bindGroup:null},size=this._uniformsPool.pop()||this._createUniforms();this._activeUniforms.push(size),(renderTarget=size.uniforms).uProjectionMatrix=projectionMatrix.projectionMatrix,renderTarget.uResolution=projectionMatrix.resolution,renderTarget.uWorldTransformMatrix.copyFrom(projectionMatrix.worldTransformMatrix),renderTarget.uWorldTransformMatrix.tx-=projectionMatrix.offset.x,renderTarget.uWorldTransformMatrix.ty-=projectionMatrix.offset.y,color32BitToUniform(projectionMatrix.worldColor,renderTarget.uWorldColorAlpha,0),size.update();let bindGroup;this._renderer.renderPipes.uniformBatch?bindGroup=this._renderer.renderPipes.uniformBatch.getUniformBindGroup(size,!1):(bindGroup=this._bindGroupPool.pop()||new BindGroup,this._activeBindGroups.push(bindGroup),bindGroup.setResource(size,0)),projectionMatrix.bindGroup=bindGroup,this._currentGlobalUniformData=projectionMatrix}push(options){this.bind(options),this._globalUniformDataStack[this._stackIndex++]=this._currentGlobalUniformData}pop(){this._currentGlobalUniformData=this._globalUniformDataStack[--this._stackIndex-1],this._renderer.type===RendererType.WEBGL&&this._currentGlobalUniformData.bindGroup.resources[0].update()}get bindGroup(){return this._currentGlobalUniformData.bindGroup}get globalUniformData(){return this._currentGlobalUniformData}get uniformGroup(){return this._currentGlobalUniformData.bindGroup.resources[0]}_createUniforms(){return new UniformGroup({uProjectionMatrix:{value:new Matrix,type:"mat3x3<f32>"},uWorldTransformMatrix:{value:new Matrix,type:"mat3x3<f32>"},uWorldColorAlpha:{value:new Float32Array(4),type:"vec4<f32>"},uResolution:{value:[0,0],type:"vec2<f32>"}},{isStatic:!0})}destroy(){this._renderer=null}}GlobalUniformSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem,ExtensionType2.CanvasSystem],name:"globalUniforms"};let uid=1;class SchedulerSystem{constructor(){this._tasks=[],this._offset=0}init(){Ticker.system.add(this._update,this)}repeat(func,duration,useOffset=!0){var id=uid++;let offset=0;return useOffset&&(this._offset+=1e3,offset=this._offset),this._tasks.push({func:func,duration:duration,start:performance.now(),offset:offset,last:performance.now(),repeat:!0,id:id}),id}cancel(id){for(let i=0;i<this._tasks.length;i++)if(this._tasks[i].id===id)return void this._tasks.splice(i,1)}_update(){var now=performance.now();for(let i=0;i<this._tasks.length;i++){var elapsed,task=this._tasks[i];now-task.offset-task.last>=task.duration&&(elapsed=now-task.start,task.func(elapsed),task.last=now)}}destroy(){Ticker.system.remove(this._update,this),this._tasks.length=0}}let saidHello=!(SchedulerSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem,ExtensionType2.CanvasSystem],name:"scheduler",priority:0});function sayHello(type){saidHello||(-1<DOMAdapter.get().getNavigator().userAgent.toLowerCase().indexOf("chrome")?globalThis.console.log(`%c %c %c %c %c PixiJS %c v8.9.1 (${type}) http://www.pixijs.com/
`,"background: #E72264; padding:5px 0;","background: #6CA2EA; padding:5px 0;","background: #B5D33D; padding:5px 0;","background: #FED23F; padding:5px 0;","color: #FFFFFF; background: #E72264; padding:5px 0;","color: #E72264; background: #FFFFFF; padding:5px 0;"):globalThis.console&&globalThis.console.log(`PixiJS 8.9.1 - ${type} - http://www.pixijs.com/`),saidHello=!0)}class HelloSystem{constructor(renderer){this._renderer=renderer}init(options){if(options.hello){let name=this._renderer.name;this._renderer.type===RendererType.WEBGL&&(name+=" "+this._renderer.context.webGLVersion),sayHello(name)}}}function cleanHash(hash){let clean=!1;for(const i in hash)if(null==hash[i]){clean=!0;break}if(!clean)return hash;var cleanHash2=Object.create(null);for(const i in hash){var value=hash[i];value&&(cleanHash2[i]=value)}return cleanHash2}function cleanArray(arr){let offset=0;for(let i=0;i<arr.length;i++)null==arr[i]?offset++:arr[i-offset]=arr[i];return arr.length-=offset,arr}HelloSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem,ExtensionType2.CanvasSystem],name:"hello",priority:-2},HelloSystem.defaultOptions={hello:!1};var __defProp$f=Object.defineProperty,__getOwnPropSymbols$f=Object.getOwnPropertySymbols,__hasOwnProp$f=Object.prototype.hasOwnProperty,__propIsEnum$f=Object.prototype.propertyIsEnumerable,__defNormalProp$f=(obj,key,value)=>key in obj?__defProp$f(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$f=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$f.call(b,prop)&&__defNormalProp$f(a,prop,b[prop]);if(__getOwnPropSymbols$f)for(var prop of __getOwnPropSymbols$f(b))__propIsEnum$f.call(b,prop)&&__defNormalProp$f(a,prop,b[prop]);return a};let renderableGCTick=0;const _RenderableGCSystem=class _RenderableGCSystem{constructor(renderer){this._managedRenderables=[],this._managedHashes=[],this._managedArrays=[],this._renderer=renderer}init(options){options=__spreadValues$f(__spreadValues$f({},_RenderableGCSystem.defaultOptions),options),this.maxUnusedTime=options.renderableGCMaxUnusedTime,this._frequency=options.renderableGCFrequency,this.enabled=options.renderableGCActive}get enabled(){return!!this._handler}set enabled(value){this.enabled!==value&&(value?(this._handler=this._renderer.scheduler.repeat(()=>this.run(),this._frequency,!1),this._hashHandler=this._renderer.scheduler.repeat(()=>{for(const hash of this._managedHashes)hash.context[hash.hash]=cleanHash(hash.context[hash.hash])},this._frequency),this._arrayHandler=this._renderer.scheduler.repeat(()=>{for(const array of this._managedArrays)cleanArray(array.context[array.hash])},this._frequency)):(this._renderer.scheduler.cancel(this._handler),this._renderer.scheduler.cancel(this._hashHandler),this._renderer.scheduler.cancel(this._arrayHandler)))}addManagedHash(context,hash){this._managedHashes.push({context:context,hash:hash})}addManagedArray(context,hash){this._managedArrays.push({context:context,hash:hash})}prerender({container}){this._now=performance.now(),container.renderGroup.gcTick=renderableGCTick++,this._updateInstructionGCTick(container.renderGroup,container.renderGroup.gcTick)}addRenderable(renderable){this.enabled&&(-1===renderable._lastUsed&&(this._managedRenderables.push(renderable),renderable.once("destroyed",this._removeRenderable,this)),renderable._lastUsed=this._now)}run(){var now=this._now,managedRenderables=this._managedRenderables,renderPipes=this._renderer.renderPipes;let offset=0;for(let i=0;i<managedRenderables.length;i++){var _a,_b,_d,renderable=managedRenderables[i];null===renderable?offset++:(_b=null!=(_b=null==(_b=null==(_a=null!=(_a=renderable.renderGroup)?_a:renderable.parentRenderGroup)?void 0:_a.instructionSet)?void 0:_b.gcTick)?_b:-1,(null!=(_d=null==_a?void 0:_a.gcTick)?_d:0)===_b&&(renderable._lastUsed=now),now-renderable._lastUsed>this.maxUnusedTime?(renderable.destroyed||(_d=renderPipes,_a&&(_a.structureDidChange=!0),_d[renderable.renderPipeId].destroyRenderable(renderable)),renderable._lastUsed=-1,offset++,renderable.off("destroyed",this._removeRenderable,this)):managedRenderables[i-offset]=renderable)}managedRenderables.length-=offset}destroy(){this.enabled=!1,this._renderer=null,this._managedRenderables.length=0,this._managedHashes.length=0,this._managedArrays.length=0}_removeRenderable(renderable){var index=this._managedRenderables.indexOf(renderable);0<=index&&(renderable.off("destroyed",this._removeRenderable,this),this._managedRenderables[index]=null)}_updateInstructionGCTick(renderGroup,gcTick){renderGroup.instructionSet.gcTick=gcTick;for(const child of renderGroup.renderGroupChildren)this._updateInstructionGCTick(child,gcTick)}};_RenderableGCSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem],name:"renderableGC",priority:0},_RenderableGCSystem.defaultOptions={renderableGCActive:!0,renderableGCMaxUnusedTime:6e4,renderableGCFrequency:3e4};var RenderableGCSystem=_RenderableGCSystem,__defProp$e=Object.defineProperty,__getOwnPropSymbols$e=Object.getOwnPropertySymbols,__hasOwnProp$e=Object.prototype.hasOwnProperty,__propIsEnum$e=Object.prototype.propertyIsEnumerable,__defNormalProp$e=(obj,key,value)=>key in obj?__defProp$e(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$e=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$e.call(b,prop)&&__defNormalProp$e(a,prop,b[prop]);if(__getOwnPropSymbols$e)for(var prop of __getOwnPropSymbols$e(b))__propIsEnum$e.call(b,prop)&&__defNormalProp$e(a,prop,b[prop]);return a};const _TextureGCSystem=class _TextureGCSystem{constructor(renderer){this._renderer=renderer,this.count=0,this.checkCount=0}init(options){var _a;options=__spreadValues$e(__spreadValues$e({},_TextureGCSystem.defaultOptions),options),this.checkCountMax=options.textureGCCheckCountMax,this.maxIdle=null!=(_a=options.textureGCAMaxIdle)?_a:options.textureGCMaxIdle,this.active=options.textureGCActive}postrender(){this._renderer.renderingToScreen&&(this.count++,this.active)&&(this.checkCount++,this.checkCount>this.checkCountMax)&&(this.checkCount=0,this.run())}run(){var managedTextures=this._renderer.texture.managedTextures;for(let i=0;i<managedTextures.length;i++){var texture=managedTextures[i];texture.autoGarbageCollect&&texture.resource&&-1<texture._touched&&this.count-texture._touched>this.maxIdle&&(texture._touched=-1,texture.unload())}}destroy(){this._renderer=null}};_TextureGCSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem],name:"textureGC"},_TextureGCSystem.defaultOptions={textureGCActive:!0,textureGCAMaxIdle:null,textureGCMaxIdle:3600,textureGCCheckCountMax:600};var TextureGCSystem=_TextureGCSystem,__defProp$d=Object.defineProperty,__getOwnPropSymbols$d=Object.getOwnPropertySymbols,__hasOwnProp$d=Object.prototype.hasOwnProperty,__propIsEnum$d=Object.prototype.propertyIsEnumerable,__defNormalProp$d=(obj,key,value)=>key in obj?__defProp$d(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$d=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$d.call(b,prop)&&__defNormalProp$d(a,prop,b[prop]);if(__getOwnPropSymbols$d)for(var prop of __getOwnPropSymbols$d(b))__propIsEnum$d.call(b,prop)&&__defNormalProp$d(a,prop,b[prop]);return a};const _ViewSystem=class _ViewSystem{get autoDensity(){return this.texture.source.autoDensity}set autoDensity(value){this.texture.source.autoDensity=value}get resolution(){return this.texture.source._resolution}set resolution(value){this.texture.source.resize(this.texture.source.width,this.texture.source.height,value)}init(options){(options=__spreadValues$d(__spreadValues$d({},_ViewSystem.defaultOptions),options)).view&&(deprecation(v8_0_0,"ViewSystem.view has been renamed to ViewSystem.canvas"),options.canvas=options.view),this.screen=new Rectangle(0,0,options.width,options.height),this.canvas=options.canvas||DOMAdapter.get().createCanvas(),this.antialias=!!options.antialias,this.texture=getCanvasTexture(this.canvas,options),this.renderTarget=new RenderTarget({colorTextures:[this.texture],depth:!!options.depth,isRoot:!0}),this.texture.source.transparent=options.backgroundAlpha<1,this.resolution=options.resolution}resize(desiredScreenWidth,desiredScreenHeight,resolution){this.texture.source.resize(desiredScreenWidth,desiredScreenHeight,resolution),this.screen.width=this.texture.frame.width,this.screen.height=this.texture.frame.height}destroy(options=!1){("boolean"==typeof options?options:null!=options&&options.removeView)&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas)}};_ViewSystem.extension={type:[ExtensionType2.WebGLSystem,ExtensionType2.WebGPUSystem,ExtensionType2.CanvasSystem],name:"view",priority:0},_ViewSystem.defaultOptions={width:800,height:600,autoDensity:!1,antialias:!1};var ViewSystem=_ViewSystem,SharedSystems=[BackgroundSystem,GlobalUniformSystem,HelloSystem,ViewSystem,RenderGroupSystem,TextureGCSystem,GenerateTextureSystem,ExtractSystem,RendererInitHook,RenderableGCSystem,SchedulerSystem],SharedRenderPipes=[BlendModePipe,BatcherPipe,SpritePipe,RenderGroupPipe,AlphaMaskPipe,StencilMaskPipe,ColorMaskPipe,CustomRenderPipe],DefaultWebGLSystems=[...SharedSystems,GlUboSystem,GL_TYPES2,BUFFER_TYPE2,GlBufferSystem,GlTextureSystem,GlRenderTargetSystem,GlGeometrySystem,GlUniformGroupSystem,GlShaderSystem,GlEncoderSystem,GlStateSystem,GlStencilSystem,GlColorMaskSystem],DefaultWebGLPipes=[...SharedRenderPipes],DefaultWebGLAdapters=[GlBatchAdaptor,GlMeshAdaptor,GlGraphicsAdaptor];const systems$1=[],renderPipes$1=[],renderPipeAdaptors$1=[];extensions.handleByNamedList(ExtensionType2.WebGLSystem,systems$1),extensions.handleByNamedList(ExtensionType2.WebGLPipes,renderPipes$1),extensions.handleByNamedList(ExtensionType2.WebGLPipesAdaptor,renderPipeAdaptors$1),extensions.add(...DefaultWebGLSystems,...DefaultWebGLPipes,...DefaultWebGLAdapters);class WebGLRenderer extends AbstractRenderer{constructor(){super({name:"webgl",type:RendererType.WEBGL,systems:systems$1,renderPipes:renderPipes$1,renderPipeAdaptors:renderPipeAdaptors$1})}}var WebGLRenderer$1={__proto__:null,WebGLRenderer:WebGLRenderer};class BindGroupSystem{constructor(renderer){this._hash=Object.create(null),this._renderer=renderer,this._renderer.renderableGC.addManagedHash(this,"_hash")}contextChange(gpu){this._gpu=gpu}getBindGroup(bindGroup,program,groupIndex){return bindGroup._updateKey(),this._hash[bindGroup._key]||this._createBindGroup(bindGroup,program,groupIndex)}_createBindGroup(group,program,groupIndex){var device=this._gpu.device,groupLayout=program.layout[groupIndex],entries=[],renderer=this._renderer;for(const j in groupLayout){var uniformGroup,buffer,_a=null!=(_a=group.resources[j])?_a:group.resources[groupLayout[j]];let gpuResource;"uniformGroup"===_a._resourceType?(renderer.ubo.updateUniformGroup(uniformGroup=_a),uniformGroup=uniformGroup.buffer,gpuResource={buffer:renderer.buffer.getGPUBuffer(uniformGroup),offset:0,size:uniformGroup.descriptor.size}):"buffer"===_a._resourceType?(buffer=_a,gpuResource={buffer:renderer.buffer.getGPUBuffer(buffer),offset:0,size:buffer.descriptor.size}):"bufferResource"===_a._resourceType?(uniformGroup=_a,gpuResource={buffer:renderer.buffer.getGPUBuffer(uniformGroup.buffer),offset:uniformGroup.offset,size:uniformGroup.size}):"textureSampler"===_a._resourceType?gpuResource=renderer.texture.getGpuSampler(_a):"textureSource"===_a._resourceType&&(gpuResource=renderer.texture.getGpuSource(_a).createView({})),entries.push({binding:groupLayout[j],resource:gpuResource})}return program=renderer.shader.getProgramData(program).bindGroups[groupIndex],groupIndex=device.createBindGroup({layout:program,entries:entries}),this._hash[group._key]=groupIndex}destroy(){for(const key of Object.keys(this._hash))this._hash[key]=null;this._hash=null,this._renderer=null}}BindGroupSystem.extension={type:[ExtensionType2.WebGPUSystem],name:"bindGroup"};class GpuBufferSystem{constructor(renderer){this._gpuBuffers=Object.create(null),this._managedBuffers=[],renderer.renderableGC.addManagedHash(this,"_gpuBuffers")}contextChange(gpu){this._gpu=gpu}getGPUBuffer(buffer){return this._gpuBuffers[buffer.uid]||this.createGPUBuffer(buffer)}updateBuffer(buffer){var gpuBuffer=this._gpuBuffers[buffer.uid]||this.createGPUBuffer(buffer),data=buffer.data;return buffer._updateID&&data&&(buffer._updateID=0,this._gpu.device.queue.writeBuffer(gpuBuffer,0,data.buffer,0,(buffer._updateSize||data.byteLength)+3&-4)),gpuBuffer}destroyAll(){for(const id in this._gpuBuffers)this._gpuBuffers[id].destroy();this._gpuBuffers={}}createGPUBuffer(buffer){this._gpuBuffers[buffer.uid]||(buffer.on("update",this.updateBuffer,this),buffer.on("change",this.onBufferChange,this),buffer.on("destroy",this.onBufferDestroy,this),this._managedBuffers.push(buffer));var gpuBuffer=this._gpu.device.createBuffer(buffer.descriptor);return buffer._updateID=0,buffer.data&&(fastCopy(buffer.data.buffer,gpuBuffer.getMappedRange()),gpuBuffer.unmap()),this._gpuBuffers[buffer.uid]=gpuBuffer}onBufferChange(buffer){this._gpuBuffers[buffer.uid].destroy(),buffer._updateID=0,this._gpuBuffers[buffer.uid]=this.createGPUBuffer(buffer)}onBufferDestroy(buffer){this._managedBuffers.splice(this._managedBuffers.indexOf(buffer),1),this._destroyBuffer(buffer)}destroy(){this._managedBuffers.forEach(buffer=>this._destroyBuffer(buffer)),this._managedBuffers=null,this._gpuBuffers=null}_destroyBuffer(buffer){this._gpuBuffers[buffer.uid].destroy(),buffer.off("update",this.updateBuffer,this),buffer.off("change",this.onBufferChange,this),buffer.off("destroy",this.onBufferDestroy,this),this._gpuBuffers[buffer.uid]=null}}GpuBufferSystem.extension={type:[ExtensionType2.WebGPUSystem],name:"buffer"};class UboBatch{constructor({minUniformOffsetAlignment}){this._minUniformOffsetAlignment=256,this.byteIndex=0,this._minUniformOffsetAlignment=minUniformOffsetAlignment,this.data=new Float32Array(65535)}clear(){this.byteIndex=0}addEmptyGroup(size){if(size>this._minUniformOffsetAlignment/4)throw new Error("UniformBufferBatch: array is too large: "+4*size);var start=this.byteIndex,size=start+4*size;if((size=Math.ceil(size/this._minUniformOffsetAlignment)*this._minUniformOffsetAlignment)>4*this.data.length)throw new Error("UniformBufferBatch: ubo batch got too big");return this.byteIndex=size,start}addGroup(array){var offset=this.addEmptyGroup(array.length);for(let i=0;i<array.length;i++)this.data[offset/4+i]=array[i];return offset}destroy(){this.data=null}}class GpuColorMaskSystem{constructor(renderer){this._colorMaskCache=15,this._renderer=renderer}setMask(colorMask){this._colorMaskCache!==colorMask&&(this._colorMaskCache=colorMask,this._renderer.pipeline.setColorMask(colorMask))}destroy(){this._renderer=null,this._colorMaskCache=null}}GpuColorMaskSystem.extension={type:[ExtensionType2.WebGPUSystem],name:"colorMask"};class GpuDeviceSystem{constructor(renderer){this._renderer=renderer}async init(options){return this._initPromise||(this._initPromise=this._createDeviceAndAdaptor(options).then(gpu=>{this.gpu=gpu,this._renderer.runners.contextChange.emit(this.gpu)})),this._initPromise}contextChange(gpu){this._renderer.gpu=gpu}async _createDeviceAndAdaptor(options){const adapter=await DOMAdapter.get().getNavigator().gpu.requestAdapter({powerPreference:options.powerPreference,forceFallbackAdapter:options.forceFallbackAdapter});return options=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(feature=>adapter.features.has(feature)),options=await adapter.requestDevice({requiredFeatures:options}),{adapter:adapter,device:options}}destroy(){this.gpu=null,this._renderer=null}}GpuDeviceSystem.extension={type:[ExtensionType2.WebGPUSystem],name:"device"},GpuDeviceSystem.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};var __defProp$c=Object.defineProperty,__getOwnPropSymbols$c=Object.getOwnPropertySymbols,__hasOwnProp$c=Object.prototype.hasOwnProperty,__propIsEnum$c=Object.prototype.propertyIsEnumerable,__defNormalProp$c=(obj,key,value)=>key in obj?__defProp$c(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$c=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$c.call(b,prop)&&__defNormalProp$c(a,prop,b[prop]);if(__getOwnPropSymbols$c)for(var prop of __getOwnPropSymbols$c(b))__propIsEnum$c.call(b,prop)&&__defNormalProp$c(a,prop,b[prop]);return a};class GpuEncoderSystem{constructor(renderer){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=renderer}renderStart(){this.commandFinished=new Promise(resolve=>{this._resolveCommandFinished=resolve}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(gpuRenderTarget){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(gpuRenderTarget.descriptor)}endRenderPass(){this.renderPassEncoder&&this.renderPassEncoder.end(),this.renderPassEncoder=null}setViewport(viewport){this.renderPassEncoder.setViewport(viewport.x,viewport.y,viewport.width,viewport.height,0,1)}setPipelineFromGeometryProgramAndState(geometry,program,state,topology){geometry=this._renderer.pipeline.getPipeline(geometry,program,state,topology),this.setPipeline(geometry)}setPipeline(pipeline){this._boundPipeline!==pipeline&&(this._boundPipeline=pipeline,this.renderPassEncoder.setPipeline(pipeline))}_setVertexBuffer(index,buffer){this._boundVertexBuffer[index]!==buffer&&(this._boundVertexBuffer[index]=buffer,this.renderPassEncoder.setVertexBuffer(index,this._renderer.buffer.updateBuffer(buffer)))}_setIndexBuffer(buffer){var indexFormat;this._boundIndexBuffer!==buffer&&(indexFormat=2===(this._boundIndexBuffer=buffer).data.BYTES_PER_ELEMENT?"uint16":"uint32",this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(buffer),indexFormat))}resetBindGroup(index){this._boundBindGroup[index]=null}setBindGroup(index,bindGroup,program){this._boundBindGroup[index]!==bindGroup&&((this._boundBindGroup[index]=bindGroup)._touch(this._renderer.textureGC.count),bindGroup=this._renderer.bindGroup.getBindGroup(bindGroup,program,index),this.renderPassEncoder.setBindGroup(index,bindGroup))}setGeometry(geometry,program){var buffersToBind=this._renderer.pipeline.getBufferNamesToBind(geometry,program);for(const i in buffersToBind)this._setVertexBuffer(i,geometry.attributes[buffersToBind[i]].buffer);geometry.indexBuffer&&this._setIndexBuffer(geometry.indexBuffer)}_setShaderBindGroups(shader,skipSync){for(const i in shader.groups){var bindGroup=shader.groups[i];skipSync||this._syncBindGroup(bindGroup),this.setBindGroup(i,bindGroup,shader.gpuProgram)}}_syncBindGroup(bindGroup){for(const j in bindGroup.resources){var resource=bindGroup.resources[j];resource.isUniformGroup&&this._renderer.ubo.updateUniformGroup(resource)}}draw(options){var{geometry:options,shader,state,topology,size,start,instanceCount,skipSync}=options;this.setPipelineFromGeometryProgramAndState(options,shader.gpuProgram,state,topology),this.setGeometry(options,shader.gpuProgram),this._setShaderBindGroups(shader,skipSync),options.indexBuffer?this.renderPassEncoder.drawIndexed(size||options.indexBuffer.data.length,null!=instanceCount?instanceCount:options.instanceCount,start||0):this.renderPassEncoder.draw(size||options.getSize(),null!=instanceCount?instanceCount:options.instanceCount,start||0)}finishRenderPass(){this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null)}postrender(){this.finishRenderPass(),this._gpu.device.queue.submit([this.commandEncoder.finish()]),this._resolveCommandFinished(),this.commandEncoder=null}restoreRenderPass(){var descriptor=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1]),descriptor=(this.renderPassEncoder=this.commandEncoder.beginRenderPass(descriptor),this._boundPipeline),boundVertexBuffer=__spreadValues$c({},this._boundVertexBuffer),boundIndexBuffer=this._boundIndexBuffer,boundBindGroup=__spreadValues$c({},this._boundBindGroup),viewport=(this._clearCache(),this._renderer.renderTarget.viewport);this.renderPassEncoder.setViewport(viewport.x,viewport.y,viewport.width,viewport.height,0,1),this.setPipeline(descriptor);for(const i in boundVertexBuffer)this._setVertexBuffer(i,boundVertexBuffer[i]);for(const i in boundBindGroup)this.setBindGroup(i,boundBindGroup[i],null);this._setIndexBuffer(boundIndexBuffer)}_clearCache(){for(let i=0;i<16;i++)this._boundBindGroup[i]=null,this._boundVertexBuffer[i]=null;this._boundIndexBuffer=null,this._boundPipeline=null}destroy(){this._renderer=null,this._gpu=null,this._boundBindGroup=null,this._boundVertexBuffer=null,this._boundIndexBuffer=null,this._boundPipeline=null}contextChange(gpu){this._gpu=gpu}}GpuEncoderSystem.extension={type:[ExtensionType2.WebGPUSystem],name:"encoder",priority:1};class GpuStencilSystem{constructor(renderer){this._renderTargetStencilState=Object.create(null),(this._renderer=renderer).renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(renderTarget){var stencilState=this._renderTargetStencilState[renderTarget.uid]||(this._renderTargetStencilState[renderTarget.uid]={stencilMode:STENCIL_MODES.DISABLED,stencilReference:0});this._activeRenderTarget=renderTarget,this.setStencilMode(stencilState.stencilMode,stencilState.stencilReference)}setStencilMode(stencilMode,stencilReference){var stencilState=this._renderTargetStencilState[this._activeRenderTarget.uid];stencilState.stencilMode=stencilMode,stencilState.stencilReference=stencilReference,(stencilState=this._renderer).pipeline.setStencilMode(stencilMode),stencilState.encoder.renderPassEncoder.setStencilReference(stencilReference)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}}GpuStencilSystem.extension={type:[ExtensionType2.WebGPUSystem],name:"stencil"};const WGSL_ALIGN_SIZE_DATA={i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},f16:{align:2,size:2},"vec2<i32>":{align:8,size:8},"vec2<u32>":{align:8,size:8},"vec2<f32>":{align:8,size:8},"vec2<f16>":{align:4,size:4},"vec3<i32>":{align:16,size:12},"vec3<u32>":{align:16,size:12},"vec3<f32>":{align:16,size:12},"vec3<f16>":{align:8,size:6},"vec4<i32>":{align:16,size:16},"vec4<u32>":{align:16,size:16},"vec4<f32>":{align:16,size:16},"vec4<f16>":{align:8,size:8},"mat2x2<f32>":{align:8,size:16},"mat2x2<f16>":{align:4,size:8},"mat3x2<f32>":{align:8,size:24},"mat3x2<f16>":{align:4,size:12},"mat4x2<f32>":{align:8,size:32},"mat4x2<f16>":{align:4,size:16},"mat2x3<f32>":{align:16,size:32},"mat2x3<f16>":{align:8,size:16},"mat3x3<f32>":{align:16,size:48},"mat3x3<f16>":{align:8,size:24},"mat4x3<f32>":{align:16,size:64},"mat4x3<f16>":{align:8,size:32},"mat2x4<f32>":{align:16,size:32},"mat2x4<f16>":{align:8,size:16},"mat3x4<f32>":{align:16,size:48},"mat3x4<f16>":{align:8,size:24},"mat4x4<f32>":{align:16,size:64},"mat4x4<f16>":{align:8,size:32}};function createUboElementsWGSL(uniformData){var uboElements=uniformData.map(data=>({data:data,offset:0,size:0}));let offset=0;for(let i=0;i<uboElements.length;i++){var uboElement=uboElements[i];let size=WGSL_ALIGN_SIZE_DATA[uboElement.data.type].size;var align=WGSL_ALIGN_SIZE_DATA[uboElement.data.type].align;if(!WGSL_ALIGN_SIZE_DATA[uboElement.data.type])throw new Error("[Pixi.js] WebGPU UniformBuffer: Unknown type "+uboElement.data.type);1<uboElement.data.size&&(size=Math.max(size,align)*uboElement.data.size),offset=Math.ceil(offset/align)*align,uboElement.size=size,uboElement.offset=offset,offset+=size}return{uboElements:uboElements,size:offset=16*Math.ceil(offset/16)}}function generateArraySyncWGSL(uboElement,offsetToAdd){var{size,align}=WGSL_ALIGN_SIZE_DATA[uboElement.data.type],align=(align-size)/4,data=0<=uboElement.data.type.indexOf("i32")?"dataInt32":"data";return`
v = uv.${uboElement.data.name};
${0!==offsetToAdd?`offset += ${offsetToAdd};`:""}
arrayOffset = offset;
t = 0;
for(var i=0; i < ${uboElement.data.size*(size/4)}; i++)
{
for(var j = 0; j < ${size/4}; j++)
{
${data}[arrayOffset++] = v[t++];
}
${0!=align?`arrayOffset += ${align};`:""}
}
`}function createUboSyncFunctionWGSL(uboElements){return createUboSyncFunction(uboElements,"uboWgsl",generateArraySyncWGSL,uboSyncFunctionsWGSL)}class GpuUboSystem extends UboSystem{constructor(){super({createUboElements:createUboElementsWGSL,generateUboSync:createUboSyncFunctionWGSL})}}GpuUboSystem.extension={type:[ExtensionType2.WebGPUSystem],name:"ubo"};class GpuUniformBatchPipe{constructor(renderer){this._bindGroupHash=Object.create(null),this._buffers=[],this._bindGroups=[],this._bufferResources=[],this._renderer=renderer,this._renderer.renderableGC.addManagedHash(this,"_bindGroupHash"),this._batchBuffer=new UboBatch({minUniformOffsetAlignment:128});for(let i=0;i<2;i++){let usage=BufferUsage.UNIFORM|BufferUsage.COPY_DST;0===i&&(usage|=BufferUsage.COPY_SRC),this._buffers.push(new Buffer({data:this._batchBuffer.data,usage:usage}))}}renderEnd(){this._uploadBindGroups(),this._resetBindGroups()}_resetBindGroups(){for(const i in this._bindGroupHash)this._bindGroupHash[i]=null;this._batchBuffer.clear()}getUniformBindGroup(group,duplicate){return!duplicate&&this._bindGroupHash[group.uid]||(this._renderer.ubo.ensureUniformGroup(group),duplicate=group.buffer.data,duplicate=this._batchBuffer.addEmptyGroup(duplicate.length),this._renderer.ubo.syncUniformGroup(group,this._batchBuffer.data,duplicate/4),this._bindGroupHash[group.uid]=this._getBindGroup(duplicate/128)),this._bindGroupHash[group.uid]}getUboResource(group){return this._renderer.ubo.updateUniformGroup(group),group=group.buffer.data,group=this._batchBuffer.addGroup(group),this._getBufferResource(group/128)}getArrayBindGroup(data){return data=this._batchBuffer.addGroup(data),this._getBindGroup(data/128)}getArrayBufferResource(data){return data=this._batchBuffer.addGroup(data),this._getBufferResource(data/128)}_getBufferResource(index){var buffer;return this._bufferResources[index]||(buffer=this._buffers[index%2],this._bufferResources[index]=new BufferResource({buffer:buffer,offset:256*(index/2|0),size:128})),this._bufferResources[index]}_getBindGroup(index){var bindGroup;return this._bindGroups[index]||(bindGroup=new BindGroup({0:this._getBufferResource(index)}),this._bindGroups[index]=bindGroup),this._bindGroups[index]}_uploadBindGroups(){var bufferSystem=this._renderer.buffer,firstBuffer=this._buffers[0],commandEncoder=(firstBuffer.update(this._batchBuffer.byteIndex),bufferSystem.updateBuffer(firstBuffer),this._renderer.gpu.device.createCommandEncoder());for(let i=1;i<this._buffers.length;i++){var buffer=this._buffers[i];commandEncoder.copyBufferToBuffer(bufferSystem.getGPUBuffer(firstBuffer),128,bufferSystem.getGPUBuffer(buffer),0,this._batchBuffer.byteIndex)}this._renderer.gpu.device.queue.submit([commandEncoder.finish()])}destroy(){for(let i=0;i<this._bindGroups.length;i++)this._bindGroups[i].destroy();this._bindGroups=null,this._bindGroupHash=null;for(let i=0;i<this._buffers.length;i++)this._buffers[i].destroy();this._buffers=null;for(let i=0;i<this._bufferResources.length;i++)this._bufferResources[i].destroy();this._bufferResources=null,this._batchBuffer.destroy(),this._bindGroupHash=null,this._renderer=null}}GpuUniformBatchPipe.extension={type:[ExtensionType2.WebGPUPipes],name:"uniformBatch"};var __defProp$b=Object.defineProperty,__defProps$6=Object.defineProperties,__getOwnPropDescs$6=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$b=Object.getOwnPropertySymbols,__hasOwnProp$b=Object.prototype.hasOwnProperty,__propIsEnum$b=Object.prototype.propertyIsEnumerable,__defNormalProp$b=(obj,key,value)=>key in obj?__defProp$b(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;const topologyStringToId={"point-list":0,"line-list":1,"line-strip":2,"triangle-list":3,"triangle-strip":4};class PipelineSystem{constructor(renderer){this._moduleCache=Object.create(null),this._bufferLayoutsCache=Object.create(null),this._bindingNamesCache=Object.create(null),this._pipeCache=Object.create(null),this._pipeStateCaches=Object.create(null),this._colorMask=15,this._multisampleCount=1,this._renderer=renderer}contextChange(gpu){this._gpu=gpu,this.setStencilMode(STENCIL_MODES.DISABLED),this._updatePipeHash()}setMultisampleCount(multisampleCount){this._multisampleCount!==multisampleCount&&(this._multisampleCount=multisampleCount,this._updatePipeHash())}setRenderTarget(renderTarget){this._multisampleCount=renderTarget.msaaSamples,this._depthStencilAttachment=renderTarget.descriptor.depthStencilAttachment?1:0,this._updatePipeHash()}setColorMask(colorMask){this._colorMask!==colorMask&&(this._colorMask=colorMask,this._updatePipeHash())}setStencilMode(stencilMode){this._stencilMode!==stencilMode&&(this._stencilMode=stencilMode,this._stencilState=GpuStencilModesToPixi[stencilMode],this._updatePipeHash())}setPipeline(geometry,program,state,passEncoder){geometry=this.getPipeline(geometry,program,state),passEncoder.setPipeline(geometry)}getPipeline(geometry,program,state,topology){geometry._layoutKey||(ensureAttributes(geometry,program.attributeData),this._generateBufferKey(geometry)),topology=topology||geometry.topology;var key=geometry._layoutKey<<24|program._layoutKey<<16|state.data<<10|state._blendModeId<<5|topologyStringToId[topology];return this._pipeCache[key]||(this._pipeCache[key]=this._createPipeline(geometry,program,state,topology)),this._pipeCache[key]}_createPipeline(geometry,program,state,topology){var device=this._gpu.device,geometry=this._createVertexBufferLayouts(geometry,program),blendModes=this._renderer.state.getColorTargets(state),layout=(blendModes[0].writeMask=this._stencilMode===STENCIL_MODES.RENDERING_MASK_ADD?0:this._colorMask,this._renderer.shader.getProgramData(program).pipeline),geometry={vertex:{module:this._getModule(program.vertex.source),entryPoint:program.vertex.entryPoint,buffers:geometry},fragment:{module:this._getModule(program.fragment.source),entryPoint:program.fragment.entryPoint,targets:blendModes},primitive:{topology:topology,cullMode:state.cullMode},layout:layout,multisample:{count:this._multisampleCount},label:"PIXI Pipeline"};return this._depthStencilAttachment&&(geometry.depthStencil=(program=((a,b)=>{for(var prop in b=b||{})__hasOwnProp$b.call(b,prop)&&__defNormalProp$b(a,prop,b[prop]);if(__getOwnPropSymbols$b)for(var prop of __getOwnPropSymbols$b(b))__propIsEnum$b.call(b,prop)&&__defNormalProp$b(a,prop,b[prop]);return a})({},this._stencilState),blendModes={format:"depth24plus-stencil8",depthWriteEnabled:state.depthTest,depthCompare:state.depthTest?"less":"always"},__defProps$6(program,__getOwnPropDescs$6(blendModes)))),device.createRenderPipeline(geometry)}_getModule(code){return this._moduleCache[code]||this._createModule(code)}_createModule(code){var device=this._gpu.device;return this._moduleCache[code]=device.createShaderModule({code:code}),this._moduleCache[code]}_generateBufferKey(geometry){var keyGen=[];let index=0;var attributeKeys=Object.keys(geometry.attributes).sort();for(let i=0;i<attributeKeys.length;i++){var attribute=geometry.attributes[attributeKeys[i]];keyGen[index++]=attribute.offset,keyGen[index++]=attribute.format,keyGen[index++]=attribute.stride,keyGen[index++]=attribute.instance}var stringKey=keyGen.join("|");return geometry._layoutKey=createIdFromString(stringKey,"geometry"),geometry._layoutKey}_generateAttributeLocationsKey(program){var keyGen=[];let index=0;var attributeKeys=Object.keys(program.attributeData).sort();for(let i=0;i<attributeKeys.length;i++){var attribute=program.attributeData[attributeKeys[i]];keyGen[index++]=attribute.location}var stringKey=keyGen.join("|");return program._attributeLocationsKey=createIdFromString(stringKey,"programAttributes"),program._attributeLocationsKey}getBufferNamesToBind(geometry,program){var key=geometry._layoutKey<<16|program._attributeLocationsKey;if(this._bindingNamesCache[key])return this._bindingNamesCache[key];var data=this._createVertexBufferLayouts(geometry,program),bufferNamesToBind=Object.create(null),attributeData=program.attributeData;for(let i=0;i<data.length;i++){var shaderLocation=Object.values(data[i].attributes)[0].shaderLocation;for(const j in attributeData)if(attributeData[j].location===shaderLocation){bufferNamesToBind[i]=j;break}}return this._bindingNamesCache[key]=bufferNamesToBind}_createVertexBufferLayouts(geometry,program){program._attributeLocationsKey||this._generateAttributeLocationsKey(program);var key=geometry._layoutKey<<16|program._attributeLocationsKey;if(this._bufferLayoutsCache[key])return this._bufferLayoutsCache[key];const vertexBuffersLayout=[];return geometry.buffers.forEach(buffer=>{var _a,bufferEntry={arrayStride:0,stepMode:"vertex",attributes:[]},bufferEntryAttributes=bufferEntry.attributes;for(const i in program.attributeData){var attribute=geometry.attributes[i];1!==(null!=(_a=attribute.divisor)?_a:1)&&warn(`Attribute ${i} has an invalid divisor value of '${attribute.divisor}'. WebGPU only supports a divisor value of 1`),attribute.buffer===buffer&&(bufferEntry.arrayStride=attribute.stride,bufferEntry.stepMode=attribute.instance?"instance":"vertex",bufferEntryAttributes.push({shaderLocation:program.attributeData[i].location,offset:attribute.offset,format:attribute.format}))}bufferEntryAttributes.length&&vertexBuffersLayout.push(bufferEntry)}),this._bufferLayoutsCache[key]=vertexBuffersLayout}_updatePipeHash(){var stencilStateId=this._stencilMode,multiSampleCount=this._multisampleCount,colorMask=this._colorMask,renderTarget=this._depthStencilAttachment;this._pipeStateCaches[colorMask=colorMask<<6|stencilStateId<<3|renderTarget<<1|multiSampleCount]||(this._pipeStateCaches[colorMask]=Object.create(null)),this._pipeCache=this._pipeStateCaches[colorMask]}destroy(){this._renderer=null,this._bufferLayoutsCache=null}}PipelineSystem.extension={type:[ExtensionType2.WebGPUSystem],name:"pipeline"};class GpuRenderTarget{constructor(){this.contexts=[],this.msaaTextures=[],this.msaaSamples=1}}class GpuRenderTargetAdaptor{init(renderer,renderTargetSystem){this._renderer=renderer,this._renderTargetSystem=renderTargetSystem}copyToTexture(sourceRenderSurfaceTexture,destinationTexture,originSrc,size,originDest){var renderer=this._renderer,sourceRenderSurfaceTexture=this._getGpuColorTexture(sourceRenderSurfaceTexture),backGpuTexture=renderer.texture.getGpuSource(destinationTexture.source);return renderer.encoder.commandEncoder.copyTextureToTexture({texture:sourceRenderSurfaceTexture,origin:originSrc},{texture:backGpuTexture,origin:originDest},size),destinationTexture}startRenderPass(renderTarget,clear=!0,clearColor,viewport){var gpuRenderTarget=this._renderTargetSystem.getGpuRenderTarget(renderTarget),renderTarget=this.getDescriptor(renderTarget,clear,clearColor);gpuRenderTarget.descriptor=renderTarget,this._renderer.pipeline.setRenderTarget(gpuRenderTarget),this._renderer.encoder.beginRenderPass(gpuRenderTarget),this._renderer.encoder.setViewport(viewport)}finishRenderPass(){this._renderer.encoder.endRenderPass()}_getGpuColorTexture(renderTarget){var gpuRenderTarget=this._renderTargetSystem.getGpuRenderTarget(renderTarget);return gpuRenderTarget.contexts[0]?gpuRenderTarget.contexts[0].getCurrentTexture():this._renderer.texture.getGpuSource(renderTarget.colorTextures[0].source)}getDescriptor(renderTarget,clear,clearValue){"boolean"==typeof clear&&(clear=clear?CLEAR.ALL:CLEAR.NONE);const renderTargetSystem=this._renderTargetSystem,gpuRenderTarget=renderTargetSystem.getGpuRenderTarget(renderTarget);var stencilLoadOp,depthLoadOp,colorAttachments=renderTarget.colorTextures.map((texture,i)=>{var context=gpuRenderTarget.contexts[i];let view,resolveTarget;return view=context?context.getCurrentTexture().createView():this._renderer.texture.getGpuSource(texture).createView({mipLevelCount:1}),gpuRenderTarget.msaaTextures[i]&&(resolveTarget=view,view=this._renderer.texture.getTextureView(gpuRenderTarget.msaaTextures[i])),context=clear&CLEAR.COLOR?"clear":"load",null==clearValue&&(clearValue=renderTargetSystem.defaultClearColor),{view:view,resolveTarget:resolveTarget,clearValue:clearValue,storeOp:"store",loadOp:context}});let depthStencilAttachment;return!renderTarget.stencil&&!renderTarget.depth||renderTarget.depthStencilTexture||(renderTarget.ensureDepthStencilTexture(),renderTarget.depthStencilTexture.source.sampleCount=gpuRenderTarget.msaa?4:1),renderTarget.depthStencilTexture&&(stencilLoadOp=clear&CLEAR.STENCIL?"clear":"load",depthLoadOp=clear&CLEAR.DEPTH?"clear":"load",depthStencilAttachment={view:this._renderer.texture.getGpuSource(renderTarget.depthStencilTexture.source).createView(),stencilStoreOp:"store",stencilLoadOp:stencilLoadOp,depthClearValue:1,depthLoadOp:depthLoadOp,depthStoreOp:"store"}),{colorAttachments:colorAttachments,depthStencilAttachment:depthStencilAttachment}}clear(renderTarget,clear=!0,clearColor,viewport){var gpu,encoder,renderPassDescriptor;clear&&({gpu,encoder}=this._renderer,gpu=gpu.device,null===encoder.commandEncoder?(encoder=gpu.createCommandEncoder(),renderPassDescriptor=this.getDescriptor(renderTarget,clear,clearColor),(renderPassDescriptor=encoder.beginRenderPass(renderPassDescriptor)).setViewport(viewport.x,viewport.y,viewport.width,viewport.height,0,1),renderPassDescriptor.end(),renderPassDescriptor=encoder.finish(),gpu.queue.submit([renderPassDescriptor])):this.startRenderPass(renderTarget,clear,clearColor,viewport))}initGpuRenderTarget(renderTarget){renderTarget.isRoot=!0;const gpuRenderTarget=new GpuRenderTarget;return renderTarget.colorTextures.forEach((colorTexture,i)=>{if(CanvasSource.test(colorTexture.resource)){var context=colorTexture.resource.getContext("webgpu"),alphaMode=colorTexture.transparent?"premultiplied":"opaque";try{context.configure({device:this._renderer.gpu.device,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,format:"bgra8unorm",alphaMode:alphaMode})}catch(e){console.error(e)}gpuRenderTarget.contexts[i]=context}gpuRenderTarget.msaa=colorTexture.source.antialias,colorTexture.source.antialias&&(alphaMode=new TextureSource({width:0,height:0,sampleCount:4}),gpuRenderTarget.msaaTextures[i]=alphaMode)}),gpuRenderTarget.msaa&&(gpuRenderTarget.msaaSamples=4,renderTarget.depthStencilTexture)&&(renderTarget.depthStencilTexture.source.sampleCount=4),gpuRenderTarget}destroyGpuRenderTarget(gpuRenderTarget){gpuRenderTarget.contexts.forEach(context=>{context.unconfigure()}),gpuRenderTarget.msaaTextures.forEach(texture=>{texture.destroy()}),gpuRenderTarget.msaaTextures.length=0,gpuRenderTarget.contexts.length=0}ensureDepthStencilTexture(renderTarget){var gpuRenderTarget=this._renderTargetSystem.getGpuRenderTarget(renderTarget);renderTarget.depthStencilTexture&&gpuRenderTarget.msaa&&(renderTarget.depthStencilTexture.source.sampleCount=4)}resizeGpuRenderTarget(renderTarget){const gpuRenderTarget=this._renderTargetSystem.getGpuRenderTarget(renderTarget);gpuRenderTarget.width=renderTarget.width,gpuRenderTarget.height=renderTarget.height,gpuRenderTarget.msaa&&renderTarget.colorTextures.forEach((colorTexture,i)=>{null!=(i=gpuRenderTarget.msaaTextures[i])&&i.resize(colorTexture.source.width,colorTexture.source.height,colorTexture.source._resolution)})}}class GpuRenderTargetSystem extends RenderTargetSystem{constructor(renderer){super(renderer),this.adaptor=new GpuRenderTargetAdaptor,this.adaptor.init(renderer,this)}}GpuRenderTargetSystem.extension={type:[ExtensionType2.WebGPUSystem],name:"renderTarget"};class GpuShaderSystem{constructor(){this._gpuProgramData=Object.create(null)}contextChange(gpu){this._gpu=gpu,this.maxTextures=gpu.device.limits.maxSampledTexturesPerShaderStage}getProgramData(program){return this._gpuProgramData[program._layoutKey]||this._createGPUProgramData(program)}_createGPUProgramData(program){const device=this._gpu.device;var bindGroups=program.gpuLayout.map(group=>device.createBindGroupLayout({entries:group}));return this._gpuProgramData[program._layoutKey]={bindGroups:bindGroups,pipeline:device.createPipelineLayout({bindGroupLayouts:bindGroups})},this._gpuProgramData[program._layoutKey]}destroy(){this._gpu=null,this._gpuProgramData=null}}GpuShaderSystem.extension={type:[ExtensionType2.WebGPUSystem],name:"shader"};const GpuBlendModesToPixi={normal:{alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}},add:{alpha:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one",operation:"add"}},multiply:{alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"dst",dstFactor:"one-minus-src-alpha",operation:"add"}},screen:{alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},overlay:{alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},none:{alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"zero",operation:"add"}},"normal-npm":{alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"}},"add-npm":{alpha:{srcFactor:"one",dstFactor:"one",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one",operation:"add"}},"screen-npm":{alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src",operation:"add"}},erase:{alpha:{srcFactor:"zero",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"one-minus-src",operation:"add"}},min:{alpha:{srcFactor:"one",dstFactor:"one",operation:"min"},color:{srcFactor:"one",dstFactor:"one",operation:"min"}},max:{alpha:{srcFactor:"one",dstFactor:"one",operation:"max"},color:{srcFactor:"one",dstFactor:"one",operation:"max"}}};class GpuStateSystem{constructor(){this.defaultState=new State,this.defaultState.blend=!0}contextChange(gpu){this.gpu=gpu}getColorTargets(state){return[{format:"bgra8unorm",writeMask:0,blend:GpuBlendModesToPixi[state.blendMode]||GpuBlendModesToPixi.normal}]}destroy(){this.gpu=null}}GpuStateSystem.extension={type:[ExtensionType2.WebGPUSystem],name:"state"};const gpuUploadBufferImageResource={type:"image",upload(source,gpuTexture,gpu){var resource=source.resource,total=(0|source.pixelWidth)*(0|source.pixelHeight),total=resource.byteLength/total;gpu.device.queue.writeTexture({texture:gpuTexture},resource,{offset:0,rowsPerImage:source.pixelHeight,bytesPerRow:source.pixelHeight*total},{width:source.pixelWidth,height:source.pixelHeight,depthOrArrayLayers:1})}},blockDataMap={"bc1-rgba-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"bc2-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc3-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc7-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"etc1-rgb-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"etc2-rgba8unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"astc-4x4-unorm":{blockBytes:16,blockWidth:4,blockHeight:4}},defaultBlockData={blockBytes:4,blockWidth:1,blockHeight:1},gpuUploadCompressedTextureResource={type:"compressed",upload(source,gpuTexture,gpu){let mipWidth=source.pixelWidth,mipHeight=source.pixelHeight;var blockData=blockDataMap[source.format]||defaultBlockData;for(let i=0;i<source.resource.length;i++){var levelBuffer=source.resource[i],bytesPerRow=Math.ceil(mipWidth/blockData.blockWidth)*blockData.blockBytes;gpu.device.queue.writeTexture({texture:gpuTexture,mipLevel:i},levelBuffer,{offset:0,bytesPerRow:bytesPerRow},{width:Math.ceil(mipWidth/blockData.blockWidth)*blockData.blockWidth,height:Math.ceil(mipHeight/blockData.blockHeight)*blockData.blockHeight,depthOrArrayLayers:1}),mipWidth=Math.max(mipWidth>>1,1),mipHeight=Math.max(mipHeight>>1,1)}}},gpuUploadImageResource={type:"image",upload(source,gpuTexture,gpu){var width,height,resource=source.resource;resource&&(width=Math.min(gpuTexture.width,source.resourceWidth||source.pixelWidth),height=Math.min(gpuTexture.height,source.resourceHeight||source.pixelHeight),source="premultiply-alpha-on-upload"===source.alphaMode,gpu.device.queue.copyExternalImageToTexture({source:resource},{texture:gpuTexture,premultipliedAlpha:source},{width:width,height:height}))}},gpuUploadVideoResource={type:"video",upload(source,gpuTexture,gpu){gpuUploadImageResource.upload(source,gpuTexture,gpu)}};class GpuMipmapGenerator{constructor(device){this.device=device,this.sampler=device.createSampler({minFilter:"linear"}),this.pipelines={}}_getMipmapPipeline(format){let pipeline=this.pipelines[format];return pipeline||(this.mipmapShaderModule||(this.mipmapShaderModule=this.device.createShaderModule({code:`
var<private> pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(
vec2<f32>(-1.0, -1.0), vec2<f32>(-1.0, 3.0), vec2<f32>(3.0, -1.0));
struct VertexOutput {
@builtin(position) position : vec4<f32>,
@location(0) texCoord : vec2<f32>,
};
@vertex
fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {
var output : VertexOutput;
output.texCoord = pos[vertexIndex] * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5);
output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0);
return output;
}
@group(0) @binding(0) var imgSampler : sampler;
@group(0) @binding(1) var img : texture_2d<f32>;
@fragment
fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {
return textureSample(img, imgSampler, texCoord);
}
`})),pipeline=this.device.createRenderPipeline({layout:"auto",vertex:{module:this.mipmapShaderModule,entryPoint:"vertexMain"},fragment:{module:this.mipmapShaderModule,entryPoint:"fragmentMain",targets:[{format:format}]}}),this.pipelines[format]=pipeline),pipeline}generateMipmap(texture){var pipeline=this._getMipmapPipeline(texture.format);if("3d"===texture.dimension||"1d"===texture.dimension)throw new Error("Generating mipmaps for non-2d textures is currently unsupported!");let mipTexture=texture;var mipTextureDescriptor,arrayLayerCount=texture.depthOrArrayLayers||1,renderToSource=texture.usage&GPUTextureUsage.RENDER_ATTACHMENT,commandEncoder=(renderToSource||(mipTextureDescriptor={size:{width:Math.ceil(texture.width/2),height:Math.ceil(texture.height/2),depthOrArrayLayers:arrayLayerCount},format:texture.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT,mipLevelCount:texture.mipLevelCount-1},mipTexture=this.device.createTexture(mipTextureDescriptor)),this.device.createCommandEncoder({})),bindGroupLayout=pipeline.getBindGroupLayout(0);for(let arrayLayer=0;arrayLayer<arrayLayerCount;++arrayLayer){let srcView=texture.createView({baseMipLevel:0,mipLevelCount:1,dimension:"2d",baseArrayLayer:arrayLayer,arrayLayerCount:1}),dstMipLevel=renderToSource?1:0;for(let i=1;i<texture.mipLevelCount;++i){var dstView=mipTexture.createView({baseMipLevel:dstMipLevel++,mipLevelCount:1,dimension:"2d",baseArrayLayer:arrayLayer,arrayLayerCount:1}),passEncoder=commandEncoder.beginRenderPass({colorAttachments:[{view:dstView,storeOp:"store",loadOp:"clear",clearValue:{r:0,g:0,b:0,a:0}}]}),bindGroup=this.device.createBindGroup({layout:bindGroupLayout,entries:[{binding:0,resource:this.sampler},{binding:1,resource:srcView}]});passEncoder.setPipeline(pipeline),passEncoder.setBindGroup(0,bindGroup),passEncoder.draw(3,1,0,0),passEncoder.end(),srcView=dstView}}if(!renderToSource){var mipLevelSize={width:Math.ceil(texture.width/2),height:Math.ceil(texture.height/2),depthOrArrayLayers:arrayLayerCount};for(let i=1;i<texture.mipLevelCount;++i)commandEncoder.copyTextureToTexture({texture:mipTexture,mipLevel:i-1},{texture:texture,mipLevel:i},mipLevelSize),mipLevelSize.width=Math.ceil(mipLevelSize.width/2),mipLevelSize.height=Math.ceil(mipLevelSize.height/2)}return this.device.queue.submit([commandEncoder.finish()]),renderToSource||mipTexture.destroy(),texture}}class GpuTextureSystem{constructor(renderer){this.managedTextures=[],this._gpuSources=Object.create(null),this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._textureViewHash=Object.create(null),this._uploads={image:gpuUploadImageResource,buffer:gpuUploadBufferImageResource,video:gpuUploadVideoResource,compressed:gpuUploadCompressedTextureResource},(this._renderer=renderer).renderableGC.addManagedHash(this,"_gpuSources"),renderer.renderableGC.addManagedHash(this,"_gpuSamplers"),renderer.renderableGC.addManagedHash(this,"_bindGroupHash"),renderer.renderableGC.addManagedHash(this,"_textureViewHash")}contextChange(gpu){this._gpu=gpu}initSource(source){source.autoGenerateMipmaps&&(biggestDimension=Math.max(source.pixelWidth,source.pixelHeight),source.mipLevelCount=Math.floor(Math.log2(biggestDimension))+1);let usage=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST;"compressed"!==source.uploadMethodId&&(usage=(usage|=GPUTextureUsage.RENDER_ATTACHMENT)|GPUTextureUsage.COPY_SRC);var biggestDimension=blockDataMap[source.format]||{blockBytes:4,blockWidth:1,blockHeight:1},width=Math.ceil(source.pixelWidth/biggestDimension.blockWidth)*biggestDimension.blockWidth,biggestDimension=Math.ceil(source.pixelHeight/biggestDimension.blockHeight)*biggestDimension.blockHeight,width={label:source.label,size:{width:width,height:biggestDimension},format:source.format,sampleCount:source.sampleCount,mipLevelCount:source.mipLevelCount,dimension:source.dimension,usage:usage},biggestDimension=this._gpu.device.createTexture(width);return this._gpuSources[source.uid]=biggestDimension,this.managedTextures.includes(source)||(source.on("update",this.onSourceUpdate,this),source.on("resize",this.onSourceResize,this),source.on("destroy",this.onSourceDestroy,this),source.on("unload",this.onSourceUnload,this),source.on("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.push(source)),this.onSourceUpdate(source),biggestDimension}onSourceUpdate(source){var gpuTexture=this.getGpuSource(source);gpuTexture&&(this._uploads[source.uploadMethodId]&&this._uploads[source.uploadMethodId].upload(source,gpuTexture,this._gpu),source.autoGenerateMipmaps)&&1<source.mipLevelCount&&this.onUpdateMipmaps(source)}onSourceUnload(source){var gpuTexture=this._gpuSources[source.uid];gpuTexture&&(this._gpuSources[source.uid]=null,gpuTexture.destroy())}onUpdateMipmaps(source){this._mipmapGenerator||(this._mipmapGenerator=new GpuMipmapGenerator(this._gpu.device)),source=this.getGpuSource(source),this._mipmapGenerator.generateMipmap(source)}onSourceDestroy(source){source.off("update",this.onSourceUpdate,this),source.off("unload",this.onSourceUnload,this),source.off("destroy",this.onSourceDestroy,this),source.off("resize",this.onSourceResize,this),source.off("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.splice(this.managedTextures.indexOf(source),1),this.onSourceUnload(source)}onSourceResize(source){var gpuTexture=this._gpuSources[source.uid];gpuTexture?gpuTexture.width===source.pixelWidth&&gpuTexture.height===source.pixelHeight||(this._textureViewHash[source.uid]=null,this._bindGroupHash[source.uid]=null,this.onSourceUnload(source),this.initSource(source)):this.initSource(source)}_initSampler(sampler){return this._gpuSamplers[sampler._resourceId]=this._gpu.device.createSampler(sampler),this._gpuSamplers[sampler._resourceId]}getGpuSampler(sampler){return this._gpuSamplers[sampler._resourceId]||this._initSampler(sampler)}getGpuSource(source){return this._gpuSources[source.uid]||this.initSource(source)}getTextureBindGroup(texture){var _a;return null!=(_a=this._bindGroupHash[texture.uid])?_a:this._createTextureBindGroup(texture)}_createTextureBindGroup(texture){var source=texture.source;return this._bindGroupHash[texture.uid]=new BindGroup({0:source,1:source.style,2:new UniformGroup({uTextureMatrix:{type:"mat3x3<f32>",value:texture.textureMatrix.mapCoord}})}),this._bindGroupHash[texture.uid]}getTextureView(texture){var _a,texture=texture.source;return null!=(_a=this._textureViewHash[texture.uid])?_a:this._createTextureView(texture)}_createTextureView(texture){return this._textureViewHash[texture.uid]=this.getGpuSource(texture).createView(),this._textureViewHash[texture.uid]}generateCanvas(texture){var renderer=this._renderer,commandEncoder=renderer.gpu.device.createCommandEncoder(),canvas=DOMAdapter.get().createCanvas(),context=(canvas.width=texture.source.pixelWidth,canvas.height=texture.source.pixelHeight,canvas.getContext("webgpu"));return context.configure({device:renderer.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:DOMAdapter.get().getNavigator().gpu.getPreferredCanvasFormat(),alphaMode:"premultiplied"}),commandEncoder.copyTextureToTexture({texture:renderer.texture.getGpuSource(texture.source),origin:{x:0,y:0}},{texture:context.getCurrentTexture()},{width:canvas.width,height:canvas.height}),renderer.gpu.device.queue.submit([commandEncoder.finish()]),canvas}getPixels(texture){var texture=this.generateCanvas(texture),canvasAndContext=CanvasPool.getOptimalCanvasAndContext(texture.width,texture.height),{width:texture,height}=((context=canvasAndContext.context).drawImage(texture,0,0),texture),context=context.getImageData(0,0,texture,height),context=new Uint8ClampedArray(context.data.buffer);return CanvasPool.returnCanvasAndContext(canvasAndContext),{pixels:context,width:texture,height:height}}destroy(){this.managedTextures.slice().forEach(source=>this.onSourceDestroy(source)),this.managedTextures=null;for(const k of Object.keys(this._bindGroupHash)){var key=Number(k),bindGroup=this._bindGroupHash[key];null!=bindGroup&&bindGroup.destroy(),this._bindGroupHash[key]=null}this._gpu=null,this._mipmapGenerator=null,this._gpuSources=null,this._bindGroupHash=null,this._textureViewHash=null,this._gpuSamplers=null}}GpuTextureSystem.extension={type:[ExtensionType2.WebGPUSystem],name:"texture"};class GpuGraphicsAdaptor{init(){var localUniforms=new UniformGroup({uTransformMatrix:{value:new Matrix,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}}),gpuProgram=compileHighShaderGpuProgram({name:"graphics",bits:[colorBit,generateTextureBatchBit(getMaxTexturesPerBatch()),localUniformBitGroup2,roundPixelsBit]});this.shader=new Shader({gpuProgram:gpuProgram,resources:{localUniforms:localUniforms}})}execute(graphicsPipe,renderable){var shader=(renderable=renderable.context).customShader||this.shader,renderer=graphicsPipe.renderer,{batcher,instructions}=renderer.graphicsContext.getContextRenderData(renderable),encoder=renderer.encoder,renderable=(encoder.setGeometry(batcher.geometry,shader.gpuProgram),renderer.globalUniforms.bindGroup),renderable=(encoder.setBindGroup(0,renderable,shader.gpuProgram),renderer.renderPipes.uniformBatch.getUniformBindGroup(shader.resources.localUniforms,!0)),batches=(encoder.setBindGroup(2,renderable,shader.gpuProgram),instructions.instructions);let topology=null;for(let i=0;i<instructions.instructionSize;i++){var textureBatch,batch=batches[i];batch.topology!==topology&&(topology=batch.topology,encoder.setPipelineFromGeometryProgramAndState(batcher.geometry,shader.gpuProgram,graphicsPipe.state,batch.topology)),shader.groups[1]=batch.bindGroup,batch.gpuBindGroup||(textureBatch=batch.textures,batch.bindGroup=getTextureBatchBindGroup(textureBatch.textures,textureBatch.count),batch.gpuBindGroup=renderer.bindGroup.getBindGroup(batch.bindGroup,shader.gpuProgram,1)),encoder.setBindGroup(1,batch.bindGroup,shader.gpuProgram),encoder.renderPassEncoder.drawIndexed(batch.size,1,batch.start)}}destroy(){this.shader.destroy(!0),this.shader=null}}GpuGraphicsAdaptor.extension={type:[ExtensionType2.WebGPUPipesAdaptor],name:"graphics"};class GpuMeshAdapter{init(){var gpuProgram=compileHighShaderGpuProgram({name:"mesh",bits:[localUniformBit,textureBit,roundPixelsBit]});this._shader=new Shader({gpuProgram:gpuProgram,resources:{uTexture:Texture.EMPTY._source,uSampler:Texture.EMPTY._source.style,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new Matrix}}}})}execute(meshPipe,mesh){var renderer=meshPipe.renderer;let shader=mesh._shader;if(shader){if(!shader.gpuProgram)return void warn("Mesh shader has no gpuProgram",mesh.shader)}else(shader=this._shader).groups[2]=renderer.texture.getTextureBindGroup(mesh.texture);var gpuProgram=shader.gpuProgram;gpuProgram.autoAssignGlobalUniforms&&(shader.groups[0]=renderer.globalUniforms.bindGroup),gpuProgram.autoAssignLocalUniforms&&(gpuProgram=meshPipe.localUniforms,shader.groups[1]=renderer.renderPipes.uniformBatch.getUniformBindGroup(gpuProgram,!0)),renderer.encoder.draw({geometry:mesh._geometry,shader:shader,state:mesh.state})}destroy(){this._shader.destroy(!0),this._shader=null}}GpuMeshAdapter.extension={type:[ExtensionType2.WebGPUPipesAdaptor],name:"mesh"},DefaultWebGLSystems=[...SharedSystems,GpuUboSystem,GpuEncoderSystem,GpuDeviceSystem,GpuBufferSystem,GpuTextureSystem,GpuRenderTargetSystem,GpuShaderSystem,GpuStateSystem,PipelineSystem,GpuColorMaskSystem,GpuStencilSystem,BindGroupSystem],DefaultWebGLPipes=[...SharedRenderPipes,GpuUniformBatchPipe],DefaultWebGLAdapters=[GpuBatchAdaptor,GpuMeshAdapter,GpuGraphicsAdaptor];const systems=[],renderPipes=[],renderPipeAdaptors=[];extensions.handleByNamedList(ExtensionType2.WebGPUSystem,systems),extensions.handleByNamedList(ExtensionType2.WebGPUPipes,renderPipes),extensions.handleByNamedList(ExtensionType2.WebGPUPipesAdaptor,renderPipeAdaptors),extensions.add(...DefaultWebGLSystems,...DefaultWebGLPipes,...DefaultWebGLAdapters);class WebGPURenderer extends AbstractRenderer{constructor(){super({name:"webgpu",type:RendererType.WEBGPU,systems:systems,renderPipes:renderPipes,renderPipeAdaptors:renderPipeAdaptors})}}var WebGPURenderer$1={__proto__:null,WebGPURenderer:WebGPURenderer};const DEPRECATED_DRAW_MODES={POINTS:"point-list",LINES:"line-list",LINE_STRIP:"line-strip",TRIANGLES:"triangle-list",TRIANGLE_STRIP:"triangle-strip"},fullFrame=(DefaultWebGLSystems=new Proxy(DEPRECATED_DRAW_MODES,{get(target,prop){return deprecation(v8_0_0,`DRAW_MODES.${prop} is deprecated, use '${DEPRECATED_DRAW_MODES[prop]}' instead`),target[prop]}}),new Rectangle(0,0,1,1));var DefaultWebGLPipes=MSAA_QUALITY2={NONE:0,0:"NONE",LOW:2,2:"LOW",MEDIUM:4,4:"MEDIUM",HIGH:8,8:"HIGH"},DEPRECATED_WRAP_MODES=((MSAA_QUALITY2={}).CLAMP="clamp-to-edge",MSAA_QUALITY2.REPEAT="repeat",MSAA_QUALITY2.MIRRORED_REPEAT="mirror-repeat",MSAA_QUALITY2),DefaultWebGLAdapters=new Proxy(DEPRECATED_WRAP_MODES,{get(target,prop){return deprecation(v8_0_0,`DRAW_MODES.${prop} is deprecated, use '${DEPRECATED_WRAP_MODES[prop]}' instead`),target[prop]}}),DEPRECATED_SCALE_MODES=((MSAA_QUALITY2={}).NEAREST="nearest",MSAA_QUALITY2.LINEAR="linear",MSAA_QUALITY2),MSAA_QUALITY2=new Proxy(DEPRECATED_SCALE_MODES,{get(target,prop){return deprecation(v8_0_0,`DRAW_MODES.${prop} is deprecated, use '${DEPRECATED_SCALE_MODES[prop]}' instead`),target[prop]}});let uidCount=0;var __defProp$a=Object.defineProperty,__getOwnPropSymbols$a=Object.getOwnPropertySymbols,__hasOwnProp$a=Object.prototype.hasOwnProperty,__propIsEnum$a=Object.prototype.propertyIsEnumerable,__defNormalProp$a=(obj,key,value)=>key in obj?__defProp$a(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class RenderContainer extends ViewContainer{constructor(options){var _a=options="function"==typeof options?{render:options}:options,render=_a.render;super(((a,b)=>{for(var prop in b=b||{})__hasOwnProp$a.call(b,prop)&&__defNormalProp$a(a,prop,b[prop]);if(__getOwnPropSymbols$a)for(var prop of __getOwnPropSymbols$a(b))__propIsEnum$a.call(b,prop)&&__defNormalProp$a(a,prop,b[prop]);return a})({label:"RenderContainer"},((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$a.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$a)for(var prop of __getOwnPropSymbols$a(source))exclude.indexOf(prop)<0&&__propIsEnum$a.call(source,prop)&&(target[prop]=source[prop]);return target})(_a,["render"]))),this.renderPipeId="customRender",this.batched=!1,render&&(this.render=render),this.containsPoint=null!=(_a=options.containsPoint)?_a:()=>!1,this.addBounds=null!=(render=options.addBounds)?render:()=>!1}updateBounds(){this._bounds.clear(),this.addBounds(this._bounds)}render(_renderer){}}const buildMap={rectangle:buildRectangle,polygon:RendererType2,triangle:buildTriangle,circle:buildCircle,ellipse:buildCircle,roundedRectangle:buildCircle};var __defProp$9=Object.defineProperty,__getOwnPropSymbols$9=Object.getOwnPropertySymbols,__hasOwnProp$9=Object.prototype.hasOwnProperty,__propIsEnum$9=Object.prototype.propertyIsEnumerable,__defNormalProp$9=(obj,key,value)=>key in obj?__defProp$9(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$9=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$9.call(b,prop)&&__defNormalProp$9(a,prop,b[prop]);if(__getOwnPropSymbols$9)for(var prop of __getOwnPropSymbols$9(b))__propIsEnum$9.call(b,prop)&&__defNormalProp$9(a,prop,b[prop]);return a};const _RenderLayerClass=class _RenderLayerClass extends Container{constructor(options={}){options=__spreadValues$9(__spreadValues$9({},_RenderLayerClass.defaultOptions),options),super(),this.renderLayerChildren=[],this.sortableChildren=options.sortableChildren,this.sortFunction=options.sortFunction}attach(...children){for(let i=0;i<children.length;i++){var child=children[i];if(child.parentRenderLayer){if(child.parentRenderLayer===this)continue;child.parentRenderLayer.detach(child)}this.renderLayerChildren.push(child),(child=(child.parentRenderLayer=this).renderGroup||this.parentRenderGroup)&&(child.structureDidChange=!0)}return children[0]}detach(...children){for(let i=0;i<children.length;i++){var child=children[i],index=this.renderLayerChildren.indexOf(child);-1!==index&&this.renderLayerChildren.splice(index,1),child.parentRenderLayer=null,(index=this.renderGroup||this.parentRenderGroup)&&(index.structureDidChange=!0)}return children[0]}detachAll(){var layerChildren=this.renderLayerChildren;for(let i=0;i<layerChildren.length;i++)layerChildren[i].parentRenderLayer=null;this.renderLayerChildren.length=0}collectRenderables(instructionSet,renderer,_currentLayer){var layerChildren=this.renderLayerChildren,length=layerChildren.length;this.sortableChildren&&this.sortRenderLayerChildren();for(let i=0;i<length;i++)layerChildren[i].parent||warn("Container must be added to both layer and scene graph. Layers only handle render order - the scene graph is required for transforms (addChild)",layerChildren[i]),layerChildren[i].collectRenderables(instructionSet,renderer,this)}sortRenderLayerChildren(){this.renderLayerChildren.sort(this.sortFunction)}_getGlobalBoundsRecursive(factorRenderLayers,bounds,_currentLayer){if(factorRenderLayers){var children=this.renderLayerChildren;for(let i=0;i<children.length;i++)children[i]._getGlobalBoundsRecursive(!0,bounds,this)}}};_RenderLayerClass.defaultOptions={sortableChildren:!1,sortFunction:(a,b)=>a.zIndex-b.zIndex};var RenderLayerClass=_RenderLayerClass,RenderLayer=RenderLayerClass;function applyProjectiveTransformationToPlane(width,height,geometry,transformationMatrix){var buffer=geometry.buffers[0],vertices=buffer.data,{verticesX,verticesY:geometry}=geometry,sizeX=width/(verticesX-1),sizeY=height/(geometry-1);let index=0;var a00=transformationMatrix[0],a01=transformationMatrix[1],a02=transformationMatrix[2],a10=transformationMatrix[3],a11=transformationMatrix[4],a12=transformationMatrix[5],a20=transformationMatrix[6],a21=transformationMatrix[7],a22=transformationMatrix[8];for(let i=0;i<vertices.length;i+=2){var x=index%verticesX*sizeX,y=(index/verticesX|0)*sizeY,newY=a10*x+a11*y+a12,w=a20*x+a21*y+a22;vertices[i]=(a00*x+a01*y+a02)/w,vertices[i+1]=newY/w,index++}buffer.update()}function computeAdjugate(out,matrix){var a00=matrix[0],a01=matrix[1],a02=matrix[2],a10=matrix[3],a11=matrix[4],a12=matrix[5],a20=matrix[6],a21=matrix[7],matrix=matrix[8];return out[0]=a11*matrix-a12*a21,out[1]=a02*a21-a01*matrix,out[2]=a01*a12-a02*a11,out[3]=a12*a20-a10*matrix,out[4]=a00*matrix-a02*a20,out[5]=a02*a10-a00*a12,out[6]=a10*a21-a11*a20,out[7]=a01*a20-a00*a21,out[8]=a00*a11-a01*a10,out}function multiplyMatrix3x3(out,a,b){var a00=a[0],a01=a[1],a02=a[2],a10=a[3],a11=a[4],a12=a[5],a20=a[6],a21=a[7],a=a[8],b00=b[0],b01=b[1],b02=b[2],b10=b[3],b11=b[4],b12=b[5],b20=b[6],b21=b[7],b=b[8];return out[0]=b00*a00+b01*a10+b02*a20,out[1]=b00*a01+b01*a11+b02*a21,out[2]=b00*a02+b01*a12+b02*a,out[3]=b10*a00+b11*a10+b12*a20,out[4]=b10*a01+b11*a11+b12*a21,out[5]=b10*a02+b11*a12+b12*a,out[6]=b20*a00+b21*a10+b*a20,out[7]=b20*a01+b21*a11+b*a21,out[8]=b20*a02+b21*a12+b*a,out}const tempMatrix=[0,0,0,0,0,0,0,0,0],tempVec=[0,0,0],tempVec2=[0,0,0];function generateBasisToPointsMatrix(out,x1,y1,x2,y2,x3,y3,x4,y4){var m=tempMatrix,x1=(m[0]=x1,m[1]=x2,m[2]=x3,m[3]=y1,m[4]=y2,m[5]=y3,m[6]=1,m[7]=1,m[8]=1,computeAdjugate(out,m)),x2=(tempVec2[0]=x4,tempVec2[1]=y4,tempVec2[2]=1,function(out,m,v){var x=v[0],y=v[1],v=v[2];return out[0]=m[0]*x+m[1]*y+m[2]*v,out[1]=m[3]*x+m[4]*y+m[5]*v,out[2]=m[6]*x+m[7]*y+m[8]*v,out}(tempVec,x1,tempVec2)),x3=out;return out[0]=x2[0],out[1]=0,out[2]=0,out[3]=0,out[4]=x2[1],out[5]=0,out[6]=0,out[7]=0,out[8]=x2[2],multiplyMatrix3x3(out,x3,m)}const tempSourceMatrix=[0,0,0,0,0,0,0,0,0],tempDestinationMatrix=[0,0,0,0,0,0,0,0,0];function compute2DProjection(out,x1s,y1s,x1d,y1d,x2s,y2s,x2d,y2d,x3s,y3s,x3d,y3d,x4s,y4s,x4d,y4d){return x1s=generateBasisToPointsMatrix(tempSourceMatrix,x1s,y1s,x2s,y2s,x3s,y3s,x4s,y4s),y1s=generateBasisToPointsMatrix(tempDestinationMatrix,x1d,y1d,x2d,y2d,x3d,y3d,x4d,y4d),multiplyMatrix3x3(out,computeAdjugate(x1s,x1s),y1s)}class PerspectivePlaneGeometry extends PlaneGeometry{constructor(options){super(options),this._projectionMatrix=[0,0,0,0,0,0,0,0,0];var{width:options,height}=options;this.corners=[0,0,options,0,options,height,0,height]}setCorners(x0,y0,x1,y1,x2,y2,x3,y3){var corners=this.corners;corners[0]=x0,corners[1]=y0,corners[2]=x1,corners[3]=y1,corners[4]=x2,corners[5]=y2,corners[6]=x3,corners[7]=y3,this.updateProjection()}updateProjection(){var{width,height}=this,corners=this.corners;applyProjectiveTransformationToPlane(width,height,this,compute2DProjection(this._projectionMatrix,0,0,corners[0],corners[1],width,0,corners[2],corners[3],width,height,corners[4],corners[5],0,height,corners[6],corners[7]))}}var __defProp$8=Object.defineProperty,__defProps$5=Object.defineProperties,__getOwnPropDescs$5=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$8=Object.getOwnPropertySymbols,__hasOwnProp$8=Object.prototype.hasOwnProperty,__propIsEnum$8=Object.prototype.propertyIsEnumerable,__defNormalProp$8=(obj,key,value)=>key in obj?__defProp$8(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$8=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$8.call(b,prop)&&__defNormalProp$8(a,prop,b[prop]);if(__getOwnPropSymbols$8)for(var prop of __getOwnPropSymbols$8(b))__propIsEnum$8.call(b,prop)&&__defNormalProp$8(a,prop,b[prop]);return a};const _PerspectiveMesh=class _PerspectiveMesh extends Mesh{constructor(options){var{texture,verticesX,verticesY}=options=__spreadValues$8(__spreadValues$8({},_PerspectiveMesh.defaultOptions),options),rest=((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$8.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$8)for(var prop of __getOwnPropSymbols$8(source))exclude.indexOf(prop)<0&&__propIsEnum$8.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["texture","verticesX","verticesY"]),verticesX=new PerspectivePlaneGeometry(definedProps({width:texture.width,height:texture.height,verticesX:verticesX,verticesY:verticesY}));super(definedProps((verticesY=__spreadValues$8({},rest),__defProps$5(verticesY,__getOwnPropDescs$5({geometry:verticesX}))))),this._texture=texture,this.geometry.setCorners(options.x0,options.y0,options.x1,options.y1,options.x2,options.y2,options.x3,options.y3)}textureUpdated(){var width,height,geometry=this.geometry;geometry&&({width,height}=this.texture,geometry.width===width&&geometry.height===height||(geometry.width=width,geometry.height=height,geometry.updateProjection()))}set texture(value){this._texture!==value&&(super.texture=value,this.textureUpdated())}get texture(){return this._texture}setCorners(x0,y0,x1,y1,x2,y2,x3,y3){this.geometry.setCorners(x0,y0,x1,y1,x2,y2,x3,y3)}};_PerspectiveMesh.defaultOptions={texture:Texture.WHITE,verticesX:10,verticesY:10,x0:0,y0:0,x1:100,y1:0,x2:100,y2:100,x3:0,y3:100};var PerspectiveMesh=_PerspectiveMesh,__defProp$7=Object.defineProperty,__defProps$4=Object.defineProperties,__getOwnPropDescs$4=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$7=Object.getOwnPropertySymbols,__hasOwnProp$7=Object.prototype.hasOwnProperty,__propIsEnum$7=Object.prototype.propertyIsEnumerable,__defNormalProp$7=(obj,key,value)=>key in obj?__defProp$7(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class MeshPlane extends Mesh{constructor(options){var{texture,verticesX,verticesY}=options,options=((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$7.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$7)for(var prop of __getOwnPropSymbols$7(source))exclude.indexOf(prop)<0&&__propIsEnum$7.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["texture","verticesX","verticesY"]),verticesX=new PlaneGeometry(definedProps({width:texture.width,height:texture.height,verticesX:verticesX,verticesY:verticesY}));super(definedProps((verticesY=((a,b)=>{for(var prop in b=options||{})__hasOwnProp$7.call(b,prop)&&__defNormalProp$7(a,prop,b[prop]);if(__getOwnPropSymbols$7)for(var prop of __getOwnPropSymbols$7(b))__propIsEnum$7.call(b,prop)&&__defNormalProp$7(a,prop,b[prop]);return a})({}),__defProps$4(verticesY,__getOwnPropDescs$4({geometry:verticesX,texture:texture}))))),this.texture=texture,this.autoResize=!0}textureUpdated(){var geometry=this.geometry,{width,height}=this.texture;!this.autoResize||geometry.width===width&&geometry.height===height||(geometry.width=width,geometry.height=height,geometry.build({}))}set texture(value){var _a;null!=(_a=this._texture)&&_a.off("update",this.textureUpdated,this),(super.texture=value).on("update",this.textureUpdated,this),this.textureUpdated()}get texture(){return this._texture}destroy(options){this.texture.off("update",this.textureUpdated,this),super.destroy(options)}}var __defProp$6=Object.defineProperty,__getOwnPropSymbols$6=Object.getOwnPropertySymbols,__hasOwnProp$6=Object.prototype.hasOwnProperty,__propIsEnum$6=Object.prototype.propertyIsEnumerable,__defNormalProp$6=(obj,key,value)=>key in obj?__defProp$6(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$6=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$6.call(b,prop)&&__defNormalProp$6(a,prop,b[prop]);if(__getOwnPropSymbols$6)for(var prop of __getOwnPropSymbols$6(b))__propIsEnum$6.call(b,prop)&&__defNormalProp$6(a,prop,b[prop]);return a};const _RopeGeometry=class _RopeGeometry extends MeshGeometry{constructor(options){var{width:options,points,textureScale}=__spreadValues$6(__spreadValues$6({},_RopeGeometry.defaultOptions),options);super({positions:new Float32Array(4*points.length),uvs:new Float32Array(4*points.length),indices:new Uint32Array(6*(points.length-1))}),this.points=points,this._width=options,this.textureScale=textureScale,this._build()}get width(){return this._width}_build(){var points=this.points;if(points){var vertexBuffer=this.getBuffer("aPosition"),uvBuffer=this.getBuffer("aUV"),indexBuffer=this.getIndex();if(!(points.length<1)){vertexBuffer.data.length/4!==points.length&&(vertexBuffer.data=new Float32Array(4*points.length),uvBuffer.data=new Float32Array(4*points.length),indexBuffer.data=new Uint16Array(6*(points.length-1)));var uvs=uvBuffer.data,indices=indexBuffer.data;uvs[0]=0,uvs[1]=0,uvs[2]=0,uvs[3]=1;let amount=0,prev=points[0];var textureWidth=this._width*this.textureScale,total=points.length;for(let i=0;i<total;i++){var dy,dx,index=4*i;0<this.textureScale?(dx=prev.x-points[i].x,dy=prev.y-points[i].y,dx=Math.sqrt(dx*dx+dy*dy),prev=points[i],amount+=dx/textureWidth):amount=i/(total-1),uvs[index]=amount,uvs[1+index]=0,uvs[2+index]=amount,uvs[3+index]=1}let indexCount=0;for(let i=0;i<total-1;i++){const index=2*i;indices[indexCount++]=index,indices[indexCount++]=1+index,indices[indexCount++]=2+index,indices[indexCount++]=2+index,indices[indexCount++]=1+index,indices[indexCount++]=3+index}uvBuffer.update(),indexBuffer.update(),this.updateVertices()}}}updateVertices(){var points=this.points;if(!(points.length<1)){let lastPoint=points[0],nextPoint,perpX=0,perpY=0;var vertices=this.buffers[0].data,total=points.length,halfWidth=0<this.textureScale?this.textureScale*this._width/2:this._width/2;for(let i=0;i<total;i++){var point=points[i],index=4*i,perpLength=(nextPoint=i<points.length-1?points[i+1]:point,perpY=-(nextPoint.x-lastPoint.x),perpX=nextPoint.y-lastPoint.y,i,Math.sqrt(perpX*perpX+perpY*perpY));perpLength<1e-6?(perpX=0,perpY=0):(perpX/=perpLength,perpY/=perpLength,perpX*=halfWidth,perpY*=halfWidth),vertices[index]=point.x+perpX,vertices[1+index]=point.y+perpY,vertices[2+index]=point.x-perpX,vertices[3+index]=point.y-perpY,lastPoint=point}this.buffers[0].update()}}update(){0<this.textureScale?this._build():this.updateVertices()}};_RopeGeometry.defaultOptions={width:200,points:[],textureScale:0};let RopeGeometry=_RopeGeometry;var __defProp$5=Object.defineProperty,__defProps$3=Object.defineProperties,__getOwnPropDescs$3=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$5=Object.getOwnPropertySymbols,__hasOwnProp$5=Object.prototype.hasOwnProperty,__propIsEnum$5=Object.prototype.propertyIsEnumerable,__defNormalProp$5=(obj,key,value)=>key in obj?__defProp$5(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$5=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$5.call(b,prop)&&__defNormalProp$5(a,prop,b[prop]);if(__getOwnPropSymbols$5)for(var prop of __getOwnPropSymbols$5(b))__propIsEnum$5.call(b,prop)&&__defNormalProp$5(a,prop,b[prop]);return a};const _MeshRope=class _MeshRope extends Mesh{constructor(options){var{texture,points,textureScale}=options=__spreadValues$5(__spreadValues$5({},_MeshRope.defaultOptions),options),options=((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$5.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$5)for(var prop of __getOwnPropSymbols$5(source))exclude.indexOf(prop)<0&&__propIsEnum$5.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["texture","points","textureScale"]),points=new RopeGeometry(definedProps({width:texture.height,points:points,textureScale:textureScale}));0<textureScale&&(texture.source.style.addressMode="repeat"),super(definedProps((textureScale=__spreadValues$5({},options),__defProps$3(textureScale,__getOwnPropDescs$3({texture:texture,geometry:points}))))),this.autoUpdate=!0,this.onRender=this._render}_render(){var geometry=this.geometry;!this.autoUpdate&&geometry._width===this.texture.height||(geometry._width=this.texture.height,geometry.update())}};_MeshRope.defaultOptions={textureScale:0};var MeshRope=_MeshRope,__defProp$4=Object.defineProperty,__defProps$2=Object.defineProperties,__getOwnPropDescs$2=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$4=Object.getOwnPropertySymbols,__hasOwnProp$4=Object.prototype.hasOwnProperty,__propIsEnum$4=Object.prototype.propertyIsEnumerable,__defNormalProp$4=(obj,key,value)=>key in obj?__defProp$4(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;class MeshSimple extends Mesh{constructor(options){var{texture,vertices,uvs,indices,topology}=options,options=((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$4.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$4)for(var prop of __getOwnPropSymbols$4(source))exclude.indexOf(prop)<0&&__propIsEnum$4.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["texture","vertices","uvs","indices","topology"]),vertices=new MeshGeometry(definedProps({positions:vertices,uvs:uvs,indices:indices,topology:topology}));super(definedProps((uvs=((a,b)=>{for(var prop in b=options||{})__hasOwnProp$4.call(b,prop)&&__defNormalProp$4(a,prop,b[prop]);if(__getOwnPropSymbols$4)for(var prop of __getOwnPropSymbols$4(b))__propIsEnum$4.call(b,prop)&&__defNormalProp$4(a,prop,b[prop]);return a})({}),__defProps$2(uvs,__getOwnPropDescs$2({texture:texture,geometry:vertices}))))),this.autoUpdate=!0,this.onRender=this._render}get vertices(){return this.geometry.getBuffer("aPosition").data}set vertices(value){this.geometry.getBuffer("aPosition").data=value}_render(){this.autoUpdate&&this.geometry.getBuffer("aPosition").update()}}var __defProp$3=Object.defineProperty,__getOwnPropSymbols$3=Object.getOwnPropertySymbols,__hasOwnProp$3=Object.prototype.hasOwnProperty,__propIsEnum$3=Object.prototype.propertyIsEnumerable,__defNormalProp$3=(obj,key,value)=>key in obj?__defProp$3(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$3=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$3.call(b,prop)&&__defNormalProp$3(a,prop,b[prop]);if(__getOwnPropSymbols$3)for(var prop of __getOwnPropSymbols$3(b))__propIsEnum$3.call(b,prop)&&__defNormalProp$3(a,prop,b[prop]);return a};const _Particle=class _Particle{constructor(options){options instanceof Texture?(this.texture=options,assignWithIgnore(this,_Particle.defaultOptions,{})):assignWithIgnore(this,__spreadValues$3(__spreadValues$3({},_Particle.defaultOptions),options),{})}get alpha(){return this._alpha}set alpha(value){this._alpha=Math.min(Math.max(value,0),1),this._updateColor()}get tint(){return bgr2rgb(this._tint)}set tint(value){this._tint="number"==typeof value?value:Color.shared.setValue(null!=value?value:16777215).toBgrNumber(),this._updateColor()}_updateColor(){this.color=this._tint+((255*this._alpha|0)<<24)}};_Particle.defaultOptions={anchorX:0,anchorY:0,x:0,y:0,scaleX:1,scaleY:1,rotation:0,tint:16777215,alpha:1};var Particle=_Particle;const particleData={vertex:{attributeName:"aVertex",format:"float32x2",code:`
const texture = p.texture;
const sx = p.scaleX;
const sy = p.scaleY;
const ax = p.anchorX;
const ay = p.anchorY;
const trim = texture.trim;
const orig = texture.orig;
if (trim)
{
w1 = trim.x - (ax * orig.width);
w0 = w1 + trim.width;
h1 = trim.y - (ay * orig.height);
h0 = h1 + trim.height;
}
else
{
w1 = -ax * (orig.width);
w0 = w1 + orig.width;
h1 = -ay * (orig.height);
h0 = h1 + orig.height;
}
f32v[offset] = w1 * sx;
f32v[offset + 1] = h1 * sy;
f32v[offset + stride] = w0 * sx;
f32v[offset + stride + 1] = h1 * sy;
f32v[offset + (stride * 2)] = w0 * sx;
f32v[offset + (stride * 2) + 1] = h0 * sy;
f32v[offset + (stride * 3)] = w1 * sx;
f32v[offset + (stride * 3) + 1] = h0 * sy;
`,dynamic:!1},position:{attributeName:"aPosition",format:"float32x2",code:`
var x = p.x;
var y = p.y;
f32v[offset] = x;
f32v[offset + 1] = y;
f32v[offset + stride] = x;
f32v[offset + stride + 1] = y;
f32v[offset + (stride * 2)] = x;
f32v[offset + (stride * 2) + 1] = y;
f32v[offset + (stride * 3)] = x;
f32v[offset + (stride * 3) + 1] = y;
`,dynamic:!0},rotation:{attributeName:"aRotation",format:"float32",code:`
var rotation = p.rotation;
f32v[offset] = rotation;
f32v[offset + stride] = rotation;
f32v[offset + (stride * 2)] = rotation;
f32v[offset + (stride * 3)] = rotation;
`,dynamic:!1},uvs:{attributeName:"aUV",format:"float32x2",code:`
var uvs = p.texture.uvs;
f32v[offset] = uvs.x0;
f32v[offset + 1] = uvs.y0;
f32v[offset + stride] = uvs.x1;
f32v[offset + stride + 1] = uvs.y1;
f32v[offset + (stride * 2)] = uvs.x2;
f32v[offset + (stride * 2) + 1] = uvs.y2;
f32v[offset + (stride * 3)] = uvs.x3;
f32v[offset + (stride * 3) + 1] = uvs.y3;
`,dynamic:!1},color:{attributeName:"aColor",format:"unorm8x4",code:`
const c = p.color;
u32v[offset] = c;
u32v[offset + stride] = c;
u32v[offset + (stride * 2)] = c;
u32v[offset + (stride * 3)] = c;
`,dynamic:!1}};var __defProp$2=Object.defineProperty,__defProps$1=Object.defineProperties,__getOwnPropDescs$1=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$2=Object.getOwnPropertySymbols,__hasOwnProp$2=Object.prototype.hasOwnProperty,__propIsEnum$2=Object.prototype.propertyIsEnumerable,__defNormalProp$2=(obj,key,value)=>key in obj?__defProp$2(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues$2=(a,b)=>{for(var prop in b=b||{})__hasOwnProp$2.call(b,prop)&&__defNormalProp$2(a,prop,b[prop]);if(__getOwnPropSymbols$2)for(var prop of __getOwnPropSymbols$2(b))__propIsEnum$2.call(b,prop)&&__defNormalProp$2(a,prop,b[prop]);return a},__spreadProps$1=(a,b)=>__defProps$1(a,__getOwnPropDescs$1(b));const emptyBounds=new Bounds(0,0,0,0),_ParticleContainer=class _ParticleContainer extends ViewContainer{constructor(options={}){var{dynamicProperties,shader,roundPixels,texture,particles}=options=__spreadProps$1(__spreadValues$2(__spreadValues$2({},_ParticleContainer.defaultOptions),options),{dynamicProperties:__spreadValues$2(__spreadValues$2({},_ParticleContainer.defaultOptions.dynamicProperties),null==options?void 0:options.dynamicProperties)}),options=((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$2.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$2)for(var prop of __getOwnPropSymbols$2(source))exclude.indexOf(prop)<0&&__propIsEnum$2.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["dynamicProperties","shader","roundPixels","texture","particles"]);super(__spreadValues$2({label:"ParticleContainer"},options)),this.renderPipeId="particle",this.batched=!1,this._childrenDirty=!1,this.texture=texture||null,this.shader=shader,this._properties={};for(const key in particleData){var property=particleData[key],dynamic=dynamicProperties[key];this._properties[key]=__spreadProps$1(__spreadValues$2({},property),{dynamic:dynamic})}this.allowChildren=!0,this.roundPixels=null!=roundPixels&&roundPixels,this.particleChildren=null!=particles?particles:[]}addParticle(...children){for(let i=0;i<children.length;i++)this.particleChildren.push(children[i]);return this.onViewUpdate(),children[0]}removeParticle(...children){let didRemove=!1;for(let i=0;i<children.length;i++){var index=this.particleChildren.indexOf(children[i]);-1<index&&(this.particleChildren.splice(index,1),didRemove=!0)}return didRemove&&this.onViewUpdate(),children[0]}update(){this._childrenDirty=!0}onViewUpdate(){this._childrenDirty=!0,super.onViewUpdate()}get bounds(){return emptyBounds}updateBounds(){}destroy(options=!1){super.destroy(options);var destroyTexture="boolean"==typeof options?options:null==options?void 0:options.texture;destroyTexture&&(destroyTexture="boolean"==typeof options?options:null==options?void 0:options.textureSource,options=null!=(options=this.texture)?options:null==(options=this.particleChildren[0])?void 0:options.texture)&&options.destroy(destroyTexture),(this.texture=null)!=(options=this.shader)&&options.destroy()}removeParticles(beginIndex,endIndex){return beginIndex=this.particleChildren.splice(beginIndex,endIndex),this.onViewUpdate(),beginIndex}removeParticleAt(index){return index=this.particleChildren.splice(index,1),this.onViewUpdate(),index[0]}addParticleAt(child,index){return this.particleChildren.splice(index,0,child),this.onViewUpdate(),child}addChild(){throw new Error("ParticleContainer.addChild() is not available. Please use ParticleContainer.addParticle()")}removeChild(){throw new Error("ParticleContainer.removeChild() is not available. Please use ParticleContainer.removeParticle()")}removeChildren(_beginIndex,_endIndex){throw new Error("ParticleContainer.removeChildren() is not available. Please use ParticleContainer.removeParticles()")}removeChildAt(_index){throw new Error("ParticleContainer.removeChildAt() is not available. Please use ParticleContainer.removeParticleAt()")}getChildAt(_index){throw new Error("ParticleContainer.getChildAt() is not available. Please use ParticleContainer.getParticleAt()")}setChildIndex(_child,_index){throw new Error("ParticleContainer.setChildIndex() is not available. Please use ParticleContainer.setParticleIndex()")}getChildIndex(_child){throw new Error("ParticleContainer.getChildIndex() is not available. Please use ParticleContainer.getParticleIndex()")}addChildAt(_child,_index){throw new Error("ParticleContainer.addChildAt() is not available. Please use ParticleContainer.addParticleAt()")}swapChildren(_child,_child2){throw new Error("ParticleContainer.swapChildren() is not available. Please use ParticleContainer.swapParticles()")}reparentChild(){throw new Error("ParticleContainer.reparentChild() is not available with the particle container")}reparentChildAt(_child,_index){throw new Error("ParticleContainer.reparentChildAt() is not available with the particle container")}};_ParticleContainer.defaultOptions={dynamicProperties:{vertex:!1,position:!0,rotation:!1,uvs:!1,color:!1},roundPixels:!1};var ParticleContainer=_ParticleContainer,__defProp$1=Object.defineProperty,__getOwnPropSymbols$1=Object.getOwnPropertySymbols,__hasOwnProp$1=Object.prototype.hasOwnProperty,__propIsEnum$1=Object.prototype.propertyIsEnumerable,__defNormalProp$1=(obj,key,value)=>key in obj?__defProp$1(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value;const _NineSliceSprite=class _NineSliceSprite extends ViewContainer{constructor(options){var{width,height,anchor,leftWidth,rightWidth,topHeight,bottomHeight,texture,roundPixels}=options=options instanceof Texture?{texture:options}:options;super(((a,b)=>{for(var prop in b=b||{})__hasOwnProp$1.call(b,prop)&&__defNormalProp$1(a,prop,b[prop]);if(__getOwnPropSymbols$1)for(var prop of __getOwnPropSymbols$1(b))__propIsEnum$1.call(b,prop)&&__defNormalProp$1(a,prop,b[prop]);return a})({label:"NineSliceSprite"},((source,exclude)=>{var target={};for(prop in source)__hasOwnProp$1.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(null!=source&&__getOwnPropSymbols$1)for(var prop of __getOwnPropSymbols$1(source))exclude.indexOf(prop)<0&&__propIsEnum$1.call(source,prop)&&(target[prop]=source[prop]);return target})(options,["width","height","anchor","leftWidth","rightWidth","topHeight","bottomHeight","texture","roundPixels"]))),this.renderPipeId="nineSliceSprite",this.batched=!0,this._leftWidth=null!=(leftWidth=null!=leftWidth?leftWidth:null==(options=null==texture?void 0:texture.defaultBorders)?void 0:options.left)?leftWidth:NineSliceGeometry.defaultOptions.leftWidth,this._topHeight=null!=(leftWidth=null!=topHeight?topHeight:null==(options=null==texture?void 0:texture.defaultBorders)?void 0:options.top)?leftWidth:NineSliceGeometry.defaultOptions.topHeight,this._rightWidth=null!=(options=null!=rightWidth?rightWidth:null==(topHeight=null==texture?void 0:texture.defaultBorders)?void 0:topHeight.right)?options:NineSliceGeometry.defaultOptions.rightWidth,this._bottomHeight=null!=(rightWidth=null!=bottomHeight?bottomHeight:null==(leftWidth=null==texture?void 0:texture.defaultBorders)?void 0:leftWidth.bottom)?rightWidth:NineSliceGeometry.defaultOptions.bottomHeight,this._width=null!=(topHeight=null!=width?width:texture.width)?topHeight:NineSliceGeometry.defaultOptions.width,this._height=null!=(options=null!=height?height:texture.height)?options:NineSliceGeometry.defaultOptions.height,this.allowChildren=!1,this.texture=null!=texture?texture:_NineSliceSprite.defaultOptions.texture,this.roundPixels=null!=roundPixels&&roundPixels,this._anchor=new ObservablePoint({_onUpdate:()=>{this.onViewUpdate()}}),anchor?this.anchor=anchor:this.texture.defaultAnchor&&(this.anchor=this.texture.defaultAnchor)}get anchor(){return this._anchor}set anchor(value){"number"==typeof value?this._anchor.set(value):this._anchor.copyFrom(value)}get width(){return this._width}set width(value){this._width=value,this.onViewUpdate()}get height(){return this._height}set height(value){this._height=value,this.onViewUpdate()}setSize(value,height){var _a;"object"==typeof value&&(height=null!=(_a=value.height)?_a:value.width,value=value.width),this._width=value,this._height=null!=height?height:value,this.onViewUpdate()}getSize(out){return(out=out||{}).width=this._width,out.height=this._height,out}get leftWidth(){return this._leftWidth}set leftWidth(value){this._leftWidth=value,this.onViewUpdate()}get topHeight(){return this._topHeight}set topHeight(value){this._topHeight=value,this.onViewUpdate()}get rightWidth(){return this._rightWidth}set rightWidth(value){this._rightWidth=value,this.onViewUpdate()}get bottomHeight(){return this._bottomHeight}set bottomHeight(value){this._bottomHeight=value,this.onViewUpdate()}get texture(){return this._texture}set texture(value){value=value||Texture.EMPTY;var currentTexture=this._texture;currentTexture!==value&&(currentTexture&&currentTexture.dynamic&&currentTexture.off("update",this.onViewUpdate,this),value.dynamic&&value.on("update",this.onViewUpdate,this),this._texture=value,this.onViewUpdate())}get originalWidth(){return this._texture.width}get originalHeight(){return this._texture.height}destroy(options){super.destroy(options),("boolean"==typeof options?options:null!=options&&options.texture)&&(options="boolean"==typeof options?options:null==options?void 0:options.textureSource,this._texture.destroy(options)),this._texture=null}updateBounds(){var bounds=this._bounds,anchor=this._anchor,width=this._width,height=this._height;bounds.minX=-anchor._x*width,bounds.maxX=bounds.minX+width,bounds.minY=-anchor._y*height,bounds.maxY=bounds.minY+height}};_NineSliceSprite.defaultOptions={texture:Texture.EMPTY};var NineSliceSprite=_NineSliceSprite;class NineSlicePlane extends NineSliceSprite{constructor(...args){let options=args[0];options instanceof Texture&&(deprecation(v8_0_0,"NineSlicePlane now uses the options object {texture, leftWidth, rightWidth, topHeight, bottomHeight}"),options={texture:options,leftWidth:args[1],topHeight:args[2],rightWidth:args[3],bottomHeight:args[4]}),deprecation(v8_0_0,"NineSlicePlane is deprecated. Use NineSliceSprite instead."),super(options)}}var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value,__spreadValues=(a,b)=>{for(var prop in b=b||{})__hasOwnProp.call(b,prop)&&__defNormalProp(a,prop,b[prop]);if(__getOwnPropSymbols)for(var prop of __getOwnPropSymbols(b))__propIsEnum.call(b,prop)&&__defNormalProp(a,prop,b[prop]);return a};const colors=["#000080","#228B22","#8B0000","#4169E1","#008080","#800000","#9400D3","#FF8C00","#556B2F","#8B008B"];let colorTick=0;return exports.AbstractBitmapFont=AbstractBitmapFont,exports.AbstractRenderer=AbstractRenderer,exports.AbstractText=AbstractText,exports.AccessibilitySystem=_a,exports.AlphaFilter=AlphaFilter,exports.AlphaMask=AlphaMask,exports.AlphaMaskPipe=AlphaMaskPipe,exports.AnimatedSprite=AnimatedSprite,exports.Application=__spreadProps$l,exports.ApplicationInitHook=ApplicationInitHook,exports.Assets=Assets,exports.AssetsClass=AssetsClass,exports.BLEND_TO_NPM=BLEND_TO_NPM,exports.BUFFER_TYPE=BUFFER_TYPE,exports.BackgroundLoader=BackgroundLoader,exports.BackgroundSystem=BackgroundSystem,exports.Batch=Batch,exports.BatchGeometry=BatchGeometry,exports.BatchTextureArray=BatchTextureArray,exports.BatchableGraphics=BatchableGraphics,exports.BatchableMesh=BatchableMesh,exports.BatchableSprite=BatchableSprite,exports.Batcher=STENCIL_MODES2,exports.BatcherPipe=BatcherPipe,exports.BigPool=BigPool,exports.BindGroup=BindGroup,exports.BindGroupSystem=BindGroupSystem,exports.BitmapFont=BitmapFont,exports.BitmapFontManager=BitmapFontManager,exports.BitmapText=BitmapText,exports.BitmapTextPipe=BitmapTextPipe,exports.BlendModeFilter=BlendModeFilter,exports.BlendModePipe=BlendModePipe,exports.BlurFilter=BlurFilter,exports.BlurFilterPass=BlurFilterPass,exports.Bounds=Bounds,exports.BrowserAdapter=BrowserAdapter,exports.Buffer=Buffer,exports.BufferImageSource=BufferImageSource,exports.BufferResource=BufferResource,exports.BufferUsage=BufferUsage,exports.CLEAR=CLEAR,exports.Cache=Cache,exports.CanvasPool=CanvasPool,exports.CanvasPoolClass=CanvasPoolClass,exports.CanvasSource=CanvasSource,exports.CanvasTextMetrics=CanvasTextMetrics,exports.CanvasTextPipe=CanvasTextPipe,exports.CanvasTextSystem=CanvasTextSystem,exports.Circle=Circle,exports.Color=Color,exports.ColorMask=ColorMask,exports.ColorMaskPipe=ColorMaskPipe,exports.ColorMatrixFilter=ColorMatrixFilter,exports.CompressedSource=CompressedSource,exports.Container=Container,exports.Culler=Culler,exports.CullerPlugin=CullerPlugin,exports.CustomRenderPipe=CustomRenderPipe,exports.D3D10_RESOURCE_DIMENSION=D3D10_RESOURCE_DIMENSION2,exports.D3DFMT=D3DFMT2,exports.DATA_URI=/^\s*data:(?:([\w-]+)\/([\w+.-]+))?(?:;charset=([\w-]+))?(?:;(base64))?,(.*)/i,exports.DDS=DDS,exports.DEG_TO_RAD=DEG_TO_RAD,exports.DEPRECATED_SCALE_MODES=DEPRECATED_SCALE_MODES,exports.DEPRECATED_WRAP_MODES=DEPRECATED_WRAP_MODES,exports.DOMAdapter=DOMAdapter,exports.DOMContainer=DOMContainer,exports.DOMPipe=DOMPipe,exports.DRAW_MODES=DefaultWebGLSystems,exports.DXGI_FORMAT=DXGI_FORMAT2,exports.DXGI_TO_TEXTURE_FORMAT=DXGI_TO_TEXTURE_FORMAT,exports.DefaultBatcher=DefaultBatcher,exports.DefaultShader=DefaultShader,exports.DisplacementFilter=DisplacementFilter,exports.DynamicBitmapFont=DynamicBitmapFont,exports.Ellipse=Ellipse,exports.EventBoundary=EventBoundary,exports.EventEmitter=EventEmitter,exports.EventSystem=EventSystem,exports.EventsTicker=EventsTicker,exports.ExtensionType=ExtensionType2,exports.ExtractSystem=ExtractSystem,exports.FOURCC_TO_TEXTURE_FORMAT=FOURCC_TO_TEXTURE_FORMAT,exports.FederatedContainer=UPDATE_PRIORITY2,exports.FederatedEvent=FederatedEvent,exports.FederatedMouseEvent=FederatedMouseEvent,exports.FederatedPointerEvent=FederatedPointerEvent,exports.FederatedWheelEvent=FederatedWheelEvent,exports.FillGradient=FillGradient,exports.FillPattern=FillPattern,exports.Filter=Filter,exports.FilterEffect=FilterEffect,exports.FilterPipe=FilterPipe,exports.FilterSystem=FilterSystem,exports.FontStylePromiseCache=FontStylePromiseCache,exports.GAUSSIAN_VALUES=GAUSSIAN_VALUES,exports.GL_FORMATS=GL_FORMATS,exports.GL_INTERNAL_FORMAT={RGBA8_SNORM:36759,36759:"RGBA8_SNORM",RGBA:6408,6408:"RGBA",RGBA8UI:36220,36220:"RGBA8UI",SRGB8_ALPHA8:35907,35907:"SRGB8_ALPHA8",RGBA8I:36238,36238:"RGBA8I",RGBA8:32856,32856:"RGBA8",COMPRESSED_RGB_S3TC_DXT1_EXT:33776,33776:"COMPRESSED_RGB_S3TC_DXT1_EXT",COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,33777:"COMPRESSED_RGBA_S3TC_DXT1_EXT",COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,33778:"COMPRESSED_RGBA_S3TC_DXT3_EXT",COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,33779:"COMPRESSED_RGBA_S3TC_DXT5_EXT",COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:35917,35917:"COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:35918,35918:"COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:35919,35919:"COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",COMPRESSED_SRGB_S3TC_DXT1_EXT:35916,35916:"COMPRESSED_SRGB_S3TC_DXT1_EXT",COMPRESSED_RED_RGTC1_EXT:36283,36283:"COMPRESSED_RED_RGTC1_EXT",COMPRESSED_SIGNED_RED_RGTC1_EXT:36284,36284:"COMPRESSED_SIGNED_RED_RGTC1_EXT",COMPRESSED_RED_GREEN_RGTC2_EXT:36285,36285:"COMPRESSED_RED_GREEN_RGTC2_EXT",COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:36286,36286:"COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT",COMPRESSED_R11_EAC:37488,37488:"COMPRESSED_R11_EAC",COMPRESSED_SIGNED_R11_EAC:37489,37489:"COMPRESSED_SIGNED_R11_EAC",COMPRESSED_RG11_EAC:37490,37490:"COMPRESSED_RG11_EAC",COMPRESSED_SIGNED_RG11_EAC:37491,37491:"COMPRESSED_SIGNED_RG11_EAC",COMPRESSED_RGB8_ETC2:37492,37492:"COMPRESSED_RGB8_ETC2",COMPRESSED_RGBA8_ETC2_EAC:37496,37496:"COMPRESSED_RGBA8_ETC2_EAC",COMPRESSED_SRGB8_ETC2:37493,37493:"COMPRESSED_SRGB8_ETC2",COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,37497:"COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,37494:"COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,37495:"COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",COMPRESSED_RGBA_ASTC_4x4_KHR:37808,37808:"COMPRESSED_RGBA_ASTC_4x4_KHR",COMPRESSED_RGBA_ASTC_5x4_KHR:37809,37809:"COMPRESSED_RGBA_ASTC_5x4_KHR",COMPRESSED_RGBA_ASTC_5x5_KHR:37810,37810:"COMPRESSED_RGBA_ASTC_5x5_KHR",COMPRESSED_RGBA_ASTC_6x5_KHR:37811,37811:"COMPRESSED_RGBA_ASTC_6x5_KHR",COMPRESSED_RGBA_ASTC_6x6_KHR:37812,37812:"COMPRESSED_RGBA_ASTC_6x6_KHR",COMPRESSED_RGBA_ASTC_8x5_KHR:37813,37813:"COMPRESSED_RGBA_ASTC_8x5_KHR",COMPRESSED_RGBA_ASTC_8x6_KHR:37814,37814:"COMPRESSED_RGBA_ASTC_8x6_KHR",COMPRESSED_RGBA_ASTC_8x8_KHR:37815,37815:"COMPRESSED_RGBA_ASTC_8x8_KHR",COMPRESSED_RGBA_ASTC_10x5_KHR:37816,37816:"COMPRESSED_RGBA_ASTC_10x5_KHR",COMPRESSED_RGBA_ASTC_10x6_KHR:37817,37817:"COMPRESSED_RGBA_ASTC_10x6_KHR",COMPRESSED_RGBA_ASTC_10x8_KHR:37818,37818:"COMPRESSED_RGBA_ASTC_10x8_KHR",COMPRESSED_RGBA_ASTC_10x10_KHR:37819,37819:"COMPRESSED_RGBA_ASTC_10x10_KHR",COMPRESSED_RGBA_ASTC_12x10_KHR:37820,37820:"COMPRESSED_RGBA_ASTC_12x10_KHR",COMPRESSED_RGBA_ASTC_12x12_KHR:37821,37821:"COMPRESSED_RGBA_ASTC_12x12_KHR",COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:37840,37840:"COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR",COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:37841,37841:"COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR",COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:37842,37842:"COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR",COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:37843,37843:"COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR",COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:37844,37844:"COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR",COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:37845,37845:"COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR",COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:37846,37846:"COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR",COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:37847,37847:"COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR",COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:37848,37848:"COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR",COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:37849,37849:"COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR",COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:37850,37850:"COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR",COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:37851,37851:"COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR",COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:37852,37852:"COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR",COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:37853,37853:"COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR",COMPRESSED_RGBA_BPTC_UNORM_EXT:36492,36492:"COMPRESSED_RGBA_BPTC_UNORM_EXT",COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:36493,36493:"COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT:36494,36494:"COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT:36495,36495:"COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT"},exports.GL_TARGETS=GL_TARGETS,exports.GL_TYPES=GL_TYPES,exports.GL_WRAP_MODES=GL_FORMATS2,exports.GenerateTextureSystem=GenerateTextureSystem,exports.Geometry=Geometry,exports.GlBackBufferSystem=GL_TYPES2,exports.GlBatchAdaptor=GlBatchAdaptor,exports.GlBuffer=GlBuffer,exports.GlBufferSystem=GlBufferSystem,exports.GlColorMaskSystem=GlColorMaskSystem,exports.GlContextSystem=BUFFER_TYPE2,exports.GlEncoderSystem=GlEncoderSystem,exports.GlGeometrySystem=GlGeometrySystem,exports.GlGraphicsAdaptor=GlGraphicsAdaptor,exports.GlMeshAdaptor=GlMeshAdaptor,exports.GlParticleContainerAdaptor=GlParticleContainerAdaptor,exports.GlParticleContainerPipe=GlParticleContainerPipe,exports.GlProgram=GlProgram,exports.GlProgramData=GlProgramData,exports.GlRenderTarget=GlRenderTarget,exports.GlRenderTargetAdaptor=GlRenderTargetAdaptor,exports.GlRenderTargetSystem=GlRenderTargetSystem,exports.GlShaderSystem=GlShaderSystem,exports.GlStateSystem=GlStateSystem,exports.GlStencilSystem=GlStencilSystem,exports.GlTexture=GlTexture,exports.GlTextureSystem=GlTextureSystem,exports.GlUboSystem=GlUboSystem,exports.GlUniformGroupSystem=GlUniformGroupSystem,exports.GlobalUniformSystem=GlobalUniformSystem,exports.GpuBatchAdaptor=GpuBatchAdaptor,exports.GpuBlendModesToPixi=GpuBlendModesToPixi,exports.GpuBufferSystem=GpuBufferSystem,exports.GpuColorMaskSystem=GpuColorMaskSystem,exports.GpuDeviceSystem=GpuDeviceSystem,exports.GpuEncoderSystem=GpuEncoderSystem,exports.GpuGraphicsAdaptor=GpuGraphicsAdaptor,exports.GpuGraphicsContext=GpuGraphicsContext,exports.GpuMeshAdapter=GpuMeshAdapter,exports.GpuMipmapGenerator=GpuMipmapGenerator,exports.GpuParticleContainerAdaptor=GpuParticleContainerAdaptor,exports.GpuParticleContainerPipe=GpuParticleContainerPipe,exports.GpuProgram=GpuProgram,exports.GpuReadBuffer=function(buffer,renderer){const bufferSize=buffer.descriptor.size;var device=renderer.gpu.device,stagingBuffer=new Buffer({data:new Float32Array(24e5),usage:BufferUsage.MAP_READ|BufferUsage.COPY_DST});const stagingGPUBuffer=renderer.buffer.createGPUBuffer(stagingBuffer);(stagingBuffer=device.createCommandEncoder()).copyBufferToBuffer(renderer.buffer.getGPUBuffer(buffer),0,stagingGPUBuffer,0,bufferSize),device.queue.submit([stagingBuffer.finish()]),stagingGPUBuffer.mapAsync(GPUMapMode.READ,0,bufferSize).then(()=>{stagingGPUBuffer.getMappedRange(0,bufferSize),stagingGPUBuffer.unmap()})},exports.GpuRenderTarget=GpuRenderTarget,exports.GpuRenderTargetAdaptor=GpuRenderTargetAdaptor,exports.GpuRenderTargetSystem=GpuRenderTargetSystem,exports.GpuShaderSystem=GpuShaderSystem,exports.GpuStateSystem=GpuStateSystem,exports.GpuStencilModesToPixi=GpuStencilModesToPixi,exports.GpuStencilSystem=GpuStencilSystem,exports.GpuTextureSystem=GpuTextureSystem,exports.GpuUboSystem=GpuUboSystem,exports.GpuUniformBatchPipe=GpuUniformBatchPipe,exports.Graphics=Graphics,exports.GraphicsContext=GraphicsContext,exports.GraphicsContextRenderData=GraphicsContextRenderData,exports.GraphicsContextSystem=GraphicsContextSystem,exports.GraphicsPath=GraphicsPath,exports.GraphicsPipe=GraphicsPipe,exports.HTMLText=HTMLText,exports.HTMLTextPipe=HTMLTextPipe,exports.HTMLTextRenderData=HTMLTextRenderData,exports.HTMLTextStyle=HTMLTextStyle,exports.HTMLTextSystem=HTMLTextSystem,exports.HelloSystem=HelloSystem,exports.IGLUniformData=class{},exports.ImageSource=ImageSource,exports.InstructionSet=InstructionSet,exports.KTX=KTX,exports.Loader=Loader,exports.LoaderParserPriority=LoaderParserPriority2,exports.MSAA_QUALITY=DefaultWebGLPipes,exports.MaskEffectManager=MaskEffectManager,exports.MaskEffectManagerClass=MaskEffectManagerClass,exports.MaskFilter=MaskFilter,exports.Matrix=Matrix,exports.Mesh=Mesh,exports.MeshGeometry=MeshGeometry,exports.MeshPipe=MeshPipe,exports.MeshPlane=MeshPlane,exports.MeshRope=MeshRope,exports.MeshSimple=MeshSimple,exports.NOOP=NOOP,exports.NineSliceGeometry=NineSliceGeometry,exports.NineSlicePlane=NineSlicePlane,exports.NineSliceSprite=NineSliceSprite,exports.NineSliceSpritePipe=NineSliceSpritePipe,exports.NoiseFilter=NoiseFilter,exports.ObservablePoint=ObservablePoint,exports.PI_2=PI_2,exports.Particle=Particle,exports.ParticleBuffer=ParticleBuffer,exports.ParticleContainer=ParticleContainer,exports.ParticleContainerPipe=ParticleContainerPipe,exports.ParticleShader=ParticleShader,exports.PerspectiveMesh=PerspectiveMesh,exports.PerspectivePlaneGeometry=PerspectivePlaneGeometry,exports.PipelineSystem=PipelineSystem,exports.PlaneGeometry=PlaneGeometry,exports.Point=Point,exports.Polygon=Polygon,exports.Pool=Pool,exports.PoolGroupClass=PoolGroupClass,exports.PrepareBase=PrepareBase,exports.PrepareQueue=PrepareQueue,exports.PrepareSystem=PrepareSystem,exports.PrepareUpload=PrepareUpload,exports.QuadGeometry=QuadGeometry,exports.RAD_TO_DEG=RAD_TO_DEG,exports.Rectangle=Rectangle,exports.RenderContainer=RenderContainer,exports.RenderGroup=RenderGroup,exports.RenderGroupPipe=RenderGroupPipe,exports.RenderGroupSystem=RenderGroupSystem,exports.RenderLayer=RenderLayer,exports.RenderLayerClass=RenderLayerClass,exports.RenderTarget=RenderTarget,exports.RenderTargetSystem=RenderTargetSystem,exports.RenderTexture=RenderTexture,exports.RenderableGCSystem=RenderableGCSystem,exports.RendererInitHook=RendererInitHook,exports.RendererType=RendererType,exports.ResizePlugin=ResizePlugin,exports.Resolver=Resolver,exports.RopeGeometry=RopeGeometry,exports.RoundedRectangle=RoundedRectangle,exports.SCALE_MODES=MSAA_QUALITY2,exports.STENCIL_MODES=STENCIL_MODES,exports.SVGParser=SVGParser,exports.SchedulerSystem=SchedulerSystem,exports.ScissorMask=class{constructor(mask){this.priority=0,this.pipe="scissorMask",this.mask=mask,this.mask.renderable=!1,this.mask.measurable=!1}addBounds(bounds,skipUpdateTransform){addMaskBounds(this.mask,bounds,skipUpdateTransform)}addLocalBounds(bounds,localRoot){addMaskLocalBounds(this.mask,bounds,localRoot)}containsPoint(point,hitTestFn){return hitTestFn(this.mask,point)}reset(){this.mask.measurable=!0,this.mask=null}destroy(){this.reset()}},exports.SdfShader=SdfShader,exports.Shader=Shader,exports.ShaderStage=ShaderStage,exports.ShapePath=ShapePath,exports.SharedRenderPipes=SharedRenderPipes,exports.SharedSystems=SharedSystems,exports.Sprite=Sprite,exports.SpritePipe=SpritePipe,exports.Spritesheet=Spritesheet,exports.State=State,exports.StencilMask=StencilMask,exports.StencilMaskPipe=StencilMaskPipe,exports.SystemRunner=SystemRunner,exports.TEXTURE_FORMAT_BLOCK_SIZE=TEXTURE_FORMAT_BLOCK_SIZE,exports.Text=Text,exports.TextStyle=TextStyle,exports.Texture=Texture,exports.TextureGCSystem=TextureGCSystem,exports.TextureMatrix=TextureMatrix,exports.TexturePool=TexturePool,exports.TexturePoolClass=TexturePoolClass,exports.TextureSource=TextureSource,exports.TextureStyle=TextureStyle,exports.TextureUvs=class{constructor(){this.x0=0,this.y0=0,this.x1=1,this.y1=0,this.x2=1,this.y2=1,this.x3=0,this.y3=1,this.uvsFloat32=new Float32Array(8)}set(frame,baseFrame,rotate){var w2,h2,cX,cY,tw=baseFrame.width,baseFrame=baseFrame.height;rotate?(w2=frame.width/2/tw,h2=frame.height/2/baseFrame,cX=frame.x/tw+w2,cY=frame.y/baseFrame+h2,rotate=groupD8.add(rotate,groupD8.NW),this.x0=cX+w2*groupD8.uX(rotate),this.y0=cY+h2*groupD8.uY(rotate),rotate=groupD8.add(rotate,2),this.x1=cX+w2*groupD8.uX(rotate),this.y1=cY+h2*groupD8.uY(rotate),rotate=groupD8.add(rotate,2),this.x2=cX+w2*groupD8.uX(rotate),this.y2=cY+h2*groupD8.uY(rotate),rotate=groupD8.add(rotate,2),this.x3=cX+w2*groupD8.uX(rotate),this.y3=cY+h2*groupD8.uY(rotate)):(this.x0=frame.x/tw,this.y0=frame.y/baseFrame,this.x1=(frame.x+frame.width)/tw,this.y1=frame.y/baseFrame,this.x2=(frame.x+frame.width)/tw,this.y2=(frame.y+frame.height)/baseFrame,this.x3=frame.x/tw,this.y3=(frame.y+frame.height)/baseFrame),this.uvsFloat32[0]=this.x0,this.uvsFloat32[1]=this.y0,this.uvsFloat32[2]=this.x1,this.uvsFloat32[3]=this.y1,this.uvsFloat32[4]=this.x2,this.uvsFloat32[5]=this.y2,this.uvsFloat32[6]=this.x3,this.uvsFloat32[7]=this.y3}toString(){return`[pixi.js/core:TextureUvs x0=${this.x0} y0=${this.y0} x1=${this.x1} y1=${this.y1} x2=${this.x2} y2=${this.y2} x3=${this.x3} y3=${this.y3}]`}},exports.Ticker=Ticker,exports.TickerListener=TickerListener,exports.TickerPlugin=TickerPlugin,exports.TilingSprite=TilingSprite,exports.TilingSpritePipe=TilingSpritePipe,exports.TilingSpriteShader=TilingSpriteShader,exports.Transform=Transform,exports.Triangle=class Triangle{constructor(x=0,y=0,x2=0,y2=0,x3=0,y3=0){this.type="triangle",this.x=x,this.y=y,this.x2=x2,this.y2=y2,this.x3=x3,this.y3=y3}contains(x,y){var s=(this.x-this.x3)*(y-this.y3)-(this.y-this.y3)*(x-this.x3),t=(this.x2-this.x)*(y-this.y)-(this.y2-this.y)*(x-this.x);return!(s<0!=t<0&&0!=s&&0!=t||0!=(y=(this.x3-this.x2)*(y-this.y2)-(this.y3-this.y2)*(x-this.x2))&&y<0!=s+t<=0)}strokeContains(pointX,pointY,strokeWidth,_alignment=0){var strokeWidth=(strokeWidth/=2)*strokeWidth,{x,x2,x3,y,y2,y3}=this;return squaredDistanceToLineSegment(pointX,pointY,x,y,x2,y3)<=strokeWidth||squaredDistanceToLineSegment(pointX,pointY,x2,y2,x3,y3)<=strokeWidth||squaredDistanceToLineSegment(pointX,pointY,x3,y3,x,y)<=strokeWidth}clone(){return new Triangle(this.x,this.y,this.x2,this.y2,this.x3,this.y3)}copyFrom(triangle){return this.x=triangle.x,this.y=triangle.y,this.x2=triangle.x2,this.y2=triangle.y2,this.x3=triangle.x3,this.y3=triangle.y3,this}copyTo(triangle){return triangle.copyFrom(this),triangle}getBounds(out){out=out||new Rectangle;var minX=Math.min(this.x,this.x2,this.x3),maxX=Math.max(this.x,this.x2,this.x3),minY=Math.min(this.y,this.y2,this.y3),maxY=Math.max(this.y,this.y2,this.y3);return out.x=minX,out.y=minY,out.width=maxX-minX,out.height=maxY-minY,out}},exports.UNIFORM_TO_ARRAY_SETTERS=UNIFORM_TO_ARRAY_SETTERS,exports.UNIFORM_TO_SINGLE_SETTERS=UNIFORM_TO_SINGLE_SETTERS,exports.UNIFORM_TYPES_MAP=UNIFORM_TYPES_MAP,exports.UNIFORM_TYPES_VALUES=UNIFORM_TYPES_VALUES,exports.UPDATE_BLEND=UPDATE_BLEND,exports.UPDATE_COLOR=UPDATE_COLOR,exports.UPDATE_PRIORITY=UPDATE_PRIORITY,exports.UPDATE_TRANSFORM=8,exports.UPDATE_VISIBLE=UPDATE_VISIBLE,exports.UboBatch=UboBatch,exports.UboSystem=UboSystem,exports.UniformGroup=UniformGroup,exports.VERSION="8.9.1",exports.VideoSource=VideoSource,exports.ViewContainer=ViewContainer,exports.ViewSystem=ViewSystem,exports.ViewableBuffer=ViewableBuffer,exports.WGSL_ALIGN_SIZE_DATA=WGSL_ALIGN_SIZE_DATA,exports.WGSL_TO_STD40_SIZE=WGSL_TO_STD40_SIZE,exports.WRAP_MODES=DefaultWebGLAdapters,exports.WebGLRenderer=WebGLRenderer,exports.WebGPURenderer=WebGPURenderer,exports.WorkerManager=WorkerManager,exports._getGlobalBounds=_getGlobalBounds,exports.accessibilityTarget=accessibilityTarget,exports.addBits=addBits,exports.addMaskBounds=addMaskBounds,exports.addMaskLocalBounds=addMaskLocalBounds,exports.addProgramDefines=addProgramDefines,exports.alphaFrag=fragment$4,exports.alphaWgsl=source$5,exports.applyMatrix=applyMatrix,exports.applyProjectiveTransformationToPlane=applyProjectiveTransformationToPlane,exports.applyStyleParams=applyStyleParams,exports.assignWithIgnore=assignWithIgnore,exports.autoDetectEnvironment=async function(add){return loadEnvironmentExtensions(!add)},exports.autoDetectRenderer=autoDetectRenderer,exports.autoDetectSource=function(options={}){return textureSourceFrom(options)},exports.basisTranscoderUrls=basisTranscoderUrls,exports.bgr2rgb=bgr2rgb,exports.bitmapFontCachePlugin=__spreadValues$M,exports.bitmapFontTextParser=bitmapFontTextParser,exports.bitmapFontXMLParser=bitmapFontXMLParser,exports.bitmapFontXMLStringParser=bitmapFontXMLStringParser,exports.blendTemplateFrag=blendTemplateFrag,exports.blendTemplateVert=blendTemplateVert,exports.blendTemplateWgsl=blendTemplate,exports.blockDataMap=blockDataMap,exports.blurTemplateWgsl=source$4,exports.boundsPool=boundsPool,exports.browserExt=browserExt,exports.buildAdaptiveBezier=buildAdaptiveBezier,exports.buildAdaptiveQuadratic=buildAdaptiveQuadratic,exports.buildArc=buildArc,exports.buildArcTo=buildArcTo,exports.buildArcToSvg=buildArcToSvg,exports.buildCircle=buildCircle,exports.buildContextBatches=buildContextBatches,exports.buildEllipse=buildEllipse,exports.buildGeometryFromPath=function(options){options instanceof GraphicsPath&&(options={path:options,textureMatrix:null,out:null});const vertices=[],uvs=[],indices=[];var shapePath=options.path.shapePath;const textureMatrix=options.textureMatrix;return shapePath.shapePrimitives.forEach(({shape,transform:matrix})=>{var indexOffset=indices.length,vertOffset=vertices.length/2,points=[],build=buildMap[shape.type],shape=(build.build(shape,points),matrix&&transformVertices(points,matrix),build.triangulate(points,vertices,2,vertOffset,indices,indexOffset),uvs.length/2);textureMatrix?(matrix&&textureMatrix.append(matrix.clone().invert()),buildUvs(vertices,2,vertOffset,uvs,shape,2,vertices.length/2-vertOffset,textureMatrix)):buildSimpleUvs(uvs,shape,2,vertices.length/2-vertOffset)}),(shapePath=options.out)?(shapePath.positions=new Float32Array(vertices),shapePath.uvs=new Float32Array(uvs),shapePath.indices=new Uint32Array(indices),shapePath):new MeshGeometry({positions:new Float32Array(vertices),uvs:new Float32Array(uvs),indices:new Uint32Array(indices)})},exports.buildLine=buildLine,exports.buildPixelLine=buildPixelLine,exports.buildPolygon=RendererType2,exports.buildRectangle=buildRectangle,exports.buildRoundedRectangle=__spreadProps$n,exports.buildSimpleUvs=buildSimpleUvs,exports.buildTriangle=buildTriangle,exports.buildUvs=buildUvs,exports.cacheAsTextureMixin=cacheAsTextureMixin,exports.cacheTextureArray=cacheTextureArray,exports.calculateProjection=calculateProjection,exports.checkChildrenDidChange=checkChildrenDidChange,exports.checkDataUrl=checkDataUrl,exports.checkExtension=checkExtension,exports.checkMaxIfStatementsInShader=checkMaxIfStatementsInShader,exports.childrenHelperMixin=childrenHelperMixin,exports.cleanArray=cleanArray,exports.cleanHash=cleanHash,exports.clearList=clearList,exports.closePointEps=closePointEps,exports.collectAllRenderables=function(container,instructionSet,rendererOrPipes){return deprecation("8.7.0","Please use container.collectRenderables instead."),rendererOrPipes=rendererOrPipes.renderPipes?rendererOrPipes:rendererOrPipes.batch.renderer,container.collectRenderables(instructionSet,rendererOrPipes,null)},exports.collectRenderablesMixin=collectRenderablesMixin,exports.color32BitToUniform=color32BitToUniform,exports.colorBit=colorBit,exports.colorBitGl=colorBitGl,exports.colorMatrixFilterFrag=fragment$3,exports.colorMatrixFilterWgsl=source$3,exports.colorToUniform=function(rgb,alpha,out,offset){out[offset++]=(rgb>>16&255)/255,out[offset++]=(rgb>>8&255)/255,out[offset++]=(255&rgb)/255,out[offset++]=alpha},exports.compareModeToGlCompare=compareModeToGlCompare,exports.compileHighShader=compileHighShader,exports.compileHighShaderGl=compileHighShaderGl,exports.compileHighShaderGlProgram=compileHighShaderGlProgram,exports.compileHighShaderGpuProgram=compileHighShaderGpuProgram,exports.compileHooks=compileHooks,exports.compileInputs=compileInputs,exports.compileOutputs=compileOutputs,exports.compileShader=compileShader,exports.compute2DProjection=compute2DProjection,exports.convertFormatIfRequired=function(textureOptions){var format=textureOptions.format;if(converters[format]){var convertFunction=converters[format].convertFunction,levelBuffers=textureOptions.resource;for(let i=0;i<levelBuffers.length;i++)levelBuffers[i]=convertFunction(levelBuffers[i]);textureOptions.format=converters[format].convertedFormat}},exports.convertToList=convertToList,exports.copySearchParams=copySearchParams,exports.createIdFromString=createIdFromString,exports.createIndicesForQuads=createIndicesForQuads,exports.createLevelBuffers=function(basisTexture,basisTranscoderFormat){var images=basisTexture.getNumImages(),levels=basisTexture.getNumLevels(0);if(!basisTexture.startTranscoding())throw new Error("startTranscoding failed");var levelBuffers=[];for(let levelIndex=0;levelIndex<levels;++levelIndex)for(let sliceIndex=0;sliceIndex<images;++sliceIndex){var transcodeSize=basisTexture.getImageTranscodedSizeInBytes(sliceIndex,levelIndex,basisTranscoderFormat),transcodeSize=new Uint8Array(transcodeSize);if(!basisTexture.transcodeImage(transcodeSize,sliceIndex,levelIndex,basisTranscoderFormat,1,0))throw new Error("transcodeImage failed");levelBuffers.push(transcodeSize)}return levelBuffers},exports.createLevelBuffersFromKTX=function(ktxTexture){var levelBuffers=[];for(let i=0;i<ktxTexture.numLevels;i++){var imageData=ktxTexture.getImageData(i,0,0),levelBuffer=new Uint8Array(imageData.byteLength);levelBuffer.set(imageData),levelBuffers.push(levelBuffer)}return levelBuffers},exports.createStringVariations=createStringVariations,exports.createTexture=createTexture,exports.createUboElementsSTD40=createUboElementsSTD40,exports.createUboElementsWGSL=createUboElementsWGSL,exports.createUboSyncFunction=createUboSyncFunction,exports.createUboSyncFunctionSTD40=createUboSyncFunctionSTD40,exports.createUboSyncFunctionWGSL=createUboSyncFunctionWGSL,exports.crossOrigin=crossOrigin,exports.cullingMixin=eventemitter3$1,exports.curveEps=curveEps,exports.defaultFilterVert=vertex$2,exports.defaultValue=defaultValue,exports.definedProps=definedProps,exports.deprecation=deprecation,exports.detectAvif=detectAvif,exports.detectBasis=detectBasis,exports.detectCompressed=detectCompressed,exports.detectDefaults=detectDefaults,exports.detectMp4=detectMp4,exports.detectOgv=detectOgv,exports.detectVideoAlphaMode=detectVideoAlphaMode,exports.detectWebm=detectWebm,exports.detectWebp=detectWebp,exports.determineCrossOrigin=determineCrossOrigin,exports.displacementFrag=fragment$2,exports.displacementVert=vertex$1,exports.displacementWgsl=source$2,exports.earcut=earcut$1,exports.effectsMixin=effectsMixin,exports.ensureAttributes=ensureAttributes,exports.ensureIsBuffer=ensureIsBuffer,exports.ensurePrecision=ensurePrecision,exports.ensureTextOptions=ensureTextOptions,exports.ensureTextStyle=function(renderMode,style){return style instanceof TextStyle||style instanceof HTMLTextStyle?style:new("html"===renderMode?HTMLTextStyle:TextStyle)(style)},exports.executeInstructions=executeInstructions,exports.extensions=extensions,exports.extractAttributesFromGlProgram=extractAttributesFromGlProgram,exports.extractAttributesFromGpuProgram=extractAttributesFromGpuProgram,exports.extractFontFamilies=extractFontFamilies,exports.extractStructAndGroups=extractStructAndGroups,exports.extractSvgUrlId=extractSvgUrlId,exports.fastCopy=fastCopy,exports.findHooksRx=findHooksRx,exports.findMixin=findMixin,exports.fontStringFromTextStyle=fontStringFromTextStyle,exports.formatShader=function(shader){shader=shader.split(/([\n{}])/g).map(a=>a.trim()).filter(a=>a.length);let indent="";return shader.map(a=>{let indentedLine=indent+a;return"{"===a?indent+=" ":"}"===a&&(indent=indent.substr(0,indent.length-4),indentedLine=indent+a),indentedLine}).join("\n")},exports.fragmentGPUTemplate=fragmentGPUTemplate,exports.fragmentGlTemplate=fragmentGlTemplate,exports.generateArraySyncSTD40=generateArraySyncSTD40,exports.generateArraySyncWGSL=generateArraySyncWGSL,exports.generateBlurFragSource=generateBlurFragSource,exports.generateBlurGlProgram=generateBlurGlProgram,exports.generateBlurProgram=generateBlurProgram,exports.generateBlurVertSource=generateBlurVertSource,exports.generateGPULayout=function(maxTextures){var gpuLayout=[];let bindIndex=0;for(let i=0;i<maxTextures;i++)gpuLayout[bindIndex]={texture:{sampleType:"float",viewDimension:"2d",multisampled:!1},binding:bindIndex,visibility:GPUShaderStage.FRAGMENT},gpuLayout[++bindIndex]={sampler:{type:"filtering"},binding:bindIndex,visibility:GPUShaderStage.FRAGMENT},bindIndex++;return gpuLayout},exports.generateGpuLayoutGroups=generateGpuLayoutGroups,exports.generateLayout=function(maxTextures){var layout={};let bindIndex=0;for(let i=0;i<maxTextures;i++)layout["textureSource"+(i+1)]=bindIndex++,layout["textureSampler"+(i+1)]=bindIndex++;return layout},exports.generateLayoutHash=generateLayoutHash,exports.generateParticleUpdateFunction=generateParticleUpdateFunction,exports.generateProgram=generateProgram,exports.generateShaderSyncCode=generateShaderSyncCode,exports.generateTextStyleKey=generateTextStyleKey,exports.generateTextureBatchBit=generateTextureBatchBit,exports.generateTextureBatchBitGl=generateTextureBatchBitGl,exports.generateTextureMatrix=generateTextureMatrix,exports.generateUID=function(){return uidCount++},exports.generateUniformsSync=generateUniformsSync,exports.getAdjustedBlendModeBlend=getAdjustedBlendModeBlend,exports.getAttributeInfoFromFormat=getAttributeInfoFromFormat,exports.getBatchSamplersUniformGroup=getBatchSamplersUniformGroup,exports.getBitmapTextLayout=getBitmapTextLayout,exports.getCanvasBoundingBox=getCanvasBoundingBox,exports.getCanvasFillStyle=getCanvasFillStyle,exports.getCanvasTexture=getCanvasTexture,exports.getDefaultUniformValue=getDefaultUniformValue,exports.getFastGlobalBounds=function(target,bounds){return deprecation("8.7.0","Use container.getFastGlobalBounds() instead"),target.getFastGlobalBounds(!0,bounds)},exports.getFastGlobalBoundsMixin=getFastGlobalBoundsMixin,exports.getFontCss=getFontCss,exports.getFontFamilyName=getFontFamilyName,exports.getGeometryBounds=getGeometryBounds,exports.getGlTypeFromFormat=getGlTypeFromFormat,exports.getGlobalBounds=getGlobalBounds,exports.getGlobalMixin=getGlobalMixin,exports.getGlobalRenderableBounds=getGlobalRenderableBounds,exports.getLocalBounds=getLocalBounds,exports.getMatrixRelativeToParent=getMatrixRelativeToParent,exports.getMaxFragmentPrecision=getMaxFragmentPrecision,exports.getMaxTexturesPerBatch=getMaxTexturesPerBatch,exports.getOrientationOfPoints=getOrientationOfPoints,exports.getParent=function getParent(target,root,matrix){(target=target.parent)?target!==root&&(getParent(target,root,matrix),target.updateLocalTransform(),matrix.append(target.localTransform)):warn("Item is not inside the root container")},exports.getPo2TextureFromSource=getPo2TextureFromSource,exports.getResolutionOfUrl=getResolutionOfUrl,exports.getSVGUrl=getSVGUrl,exports.getSupportedCompressedTextureFormats=getSupportedCompressedTextureFormats,exports.getSupportedGPUCompressedTextureFormats=getSupportedGPUCompressedTextureFormats,exports.getSupportedGlCompressedTextureFormats=getSupportedGlCompressedTextureFormats,exports.getSupportedTextureFormats=getSupportedTextureFormats,exports.getTemporaryCanvasFromImage=getTemporaryCanvasFromImage,exports.getTestContext=getTestContext,exports.getTextureBatchBindGroup=getTextureBatchBindGroup,exports.getTextureDefaultMatrix=function(texture,out){var{width:texture,height}=texture.frame;return out.scale(1/texture,1/height),out},exports.getTextureFormatFromKTXTexture=function(ktxTexture){return 2===ktxTexture.classId?vkFormatToGPUFormat(ktxTexture.vkFormat):glFormatToGPUFormat(ktxTexture.glInternalformat)},exports.getUboData=getUboData,exports.getUniformData=getUniformData,exports.getUrlExtension=getUrlExtension,exports.glFormatToGPUFormat=glFormatToGPUFormat,exports.glUploadBufferImageResource=glUploadBufferImageResource,exports.glUploadCompressedTextureResource=glUploadCompressedTextureResource,exports.glUploadImageResource=glUploadImageResource,exports.glUploadVideoResource=glUploadVideoResource,exports.globalUniformsBit=globalUniformsBit,exports.globalUniformsBitGl=globalUniformsBitGl,exports.globalUniformsUBOBitGl=BufferUsage2,exports.gpuFormatToBasisTranscoderFormat=function(transcoderFormat){var format=gpuFormatToBasisTranscoderFormatMap$1[transcoderFormat];if(format)return format;throw new Error("Unsupported transcoderFormat: "+transcoderFormat)},exports.gpuFormatToKTXBasisTranscoderFormat=function(transcoderFormat){var format=gpuFormatToBasisTranscoderFormatMap[transcoderFormat];if(format)return format;throw new Error("Unsupported transcoderFormat: "+transcoderFormat)},exports.gpuUploadBufferImageResource=gpuUploadBufferImageResource,exports.gpuUploadCompressedTextureResource=gpuUploadCompressedTextureResource,exports.gpuUploadImageResource=gpuUploadImageResource,exports.gpuUploadVideoResource=gpuUploadVideoResource,exports.groupD8=groupD8,exports.hasCachedCanvasTexture=function(canvas){return canvasCache.has(canvas)},exports.hslWgsl="fn getLuminosity(c: vec3<f32>) -> f32 {\n return 0.3 * c.r + 0.59 * c.g + 0.11 * c.b;\n}\n\nfn setLuminosity(c: vec3<f32>, lum: f32) -> vec3<f32> {\n let d: f32 = lum - getLuminosity(c);\n let newColor: vec3<f32> = c.rgb + vec3<f32>(d, d, d);\n\n // clip back into legal range\n let newLum: f32 = getLuminosity(newColor);\n let cMin: f32 = min(newColor.r, min(newColor.g, newColor.b));\n let cMax: f32 = max(newColor.r, max(newColor.g, newColor.b));\n\n let t1: f32 = newLum / (newLum - cMin);\n let t2: f32 = (1.0 - newLum) / (cMax - newLum);\n\n let finalColor = mix(vec3<f32>(newLum, newLum, newLum), newColor, select(select(1.0, t2, cMax > 1.0), t1, cMin < 0.0));\n\n return finalColor;\n}\n\nfn getSaturation(c: vec3<f32>) -> f32 {\n return max(c.r, max(c.g, c.b)) - min(c.r, min(c.g, c.b));\n}\n\n// Set saturation if color components are sorted in ascending order.\nfn setSaturationMinMidMax(cSorted: vec3<f32>, s: f32) -> vec3<f32> {\n var result: vec3<f32>;\n if (cSorted.z > cSorted.x) {\n let newY = (((cSorted.y - cSorted.x) * s) / (cSorted.z - cSorted.x));\n result = vec3<f32>(0.0, newY, s);\n } else {\n result = vec3<f32>(0.0, 0.0, 0.0);\n }\n return vec3<f32>(result.x, result.y, result.z);\n}\n\nfn setSaturation(c: vec3<f32>, s: f32) -> vec3<f32> {\n var result: vec3<f32> = c;\n\n if (c.r <= c.g && c.r <= c.b) {\n if (c.g <= c.b) {\n result = setSaturationMinMidMax(result, s);\n } else {\n var temp: vec3<f32> = vec3<f32>(result.r, result.b, result.g);\n temp = setSaturationMinMidMax(temp, s);\n result = vec3<f32>(temp.r, temp.b, temp.g);\n }\n } else if (c.g <= c.r && c.g <= c.b) {\n if (c.r <= c.b) {\n var temp: vec3<f32> = vec3<f32>(result.g, result.r, result.b);\n temp = setSaturationMinMidMax(temp, s);\n result = vec3<f32>(temp.g, temp.r, temp.b);\n } else {\n var temp: vec3<f32> = vec3<f32>(result.g, result.b, result.r);\n temp = setSaturationMinMidMax(temp, s);\n result = vec3<f32>(temp.g, temp.b, temp.r);\n }\n } else {\n if (c.r <= c.g) {\n var temp: vec3<f32> = vec3<f32>(result.b, result.r, result.g);\n temp = setSaturationMinMidMax(temp, s);\n result = vec3<f32>(temp.b, temp.r, temp.g);\n } else {\n var temp: vec3<f32> = vec3<f32>(result.b, result.g, result.r);\n temp = setSaturationMinMidMax(temp, s);\n result = vec3<f32>(temp.b, temp.g, temp.r);\n }\n }\n\n return result;\n}",exports.hslgl=`
float getLuminosity(vec3 c) {
return 0.3 * c.r + 0.59 * c.g + 0.11 * c.b;
}
vec3 setLuminosity(vec3 c, float lum) {
float modLum = lum - getLuminosity(c);
vec3 color = c.rgb + vec3(modLum);
// clip back into legal range
modLum = getLuminosity(color);
vec3 modLumVec = vec3(modLum);
float cMin = min(color.r, min(color.g, color.b));
float cMax = max(color.r, max(color.g, color.b));
if(cMin < 0.0) {
color = mix(modLumVec, color, modLum / (modLum - cMin));
}
if(cMax > 1.0) {
color = mix(modLumVec, color, (1.0 - modLum) / (cMax - modLum));
}
return color;
}
float getSaturation(vec3 c) {
return max(c.r, max(c.g, c.b)) - min(c.r, min(c.g, c.b));
}
vec3 setSaturationMinMidMax(vec3 cSorted, float s) {
vec3 colorSorted = cSorted;
if(colorSorted.z > colorSorted.x) {
colorSorted.y = (((colorSorted.y - colorSorted.x) * s) / (colorSorted.z - colorSorted.x));
colorSorted.z = s;
}
else {
colorSorted.y = 0.0;
colorSorted.z = 0.0;
}
colorSorted.x = 0.0;
return colorSorted;
}
vec3 setSaturation(vec3 c, float s) {
vec3 color = c;
if(color.r <= color.g && color.r <= color.b) {
if(color.g <= color.b) {
color = setSaturationMinMidMax(color.rgb, s).rgb;
}
else {
color = setSaturationMinMidMax(color.rbg, s).rbg;
}
}
else if(color.g <= color.r && color.g <= color.b) {
if(color.r <= color.b) {
color = setSaturationMinMidMax(color.grb, s).grb;
}
else {
color = setSaturationMinMidMax(color.gbr, s).gbr;
}
}
else {
// Using bgr for both fixes part of hue
if(color.r <= color.g) {
color = setSaturationMinMidMax(color.brg, s).brg;
}
else {
color = setSaturationMinMidMax(color.bgr, s).bgr;
}
}
return color;
}
`,exports.hslgpu=`
fn getLuminosity(c: vec3<f32>) -> f32
{
return 0.3*c.r + 0.59*c.g + 0.11*c.b;
}
fn setLuminosity(c: vec3<f32>, lum: f32) -> vec3<f32>
{
var modLum: f32 = lum - getLuminosity(c);
var color: vec3<f32> = c.rgb + modLum;
// clip back into legal range
modLum = getLuminosity(color);
let modLumVec = vec3<f32>(modLum);
let cMin: f32 = min(color.r, min(color.g, color.b));
let cMax: f32 = max(color.r, max(color.g, color.b));
if(cMin < 0.0)
{
color = mix(modLumVec, color, modLum / (modLum - cMin));
}
if(cMax > 1.0)
{
color = mix(modLumVec, color, (1 - modLum) / (cMax - modLum));
}
return color;
}
fn getSaturation(c: vec3<f32>) -> f32
{
return max(c.r, max(c.g, c.b)) - min(c.r, min(c.g, c.b));
}
fn setSaturationMinMidMax(cSorted: vec3<f32>, s: f32) -> vec3<f32>
{
var colorSorted = cSorted;
if(colorSorted.z > colorSorted.x)
{
colorSorted.y = (((colorSorted.y - colorSorted.x) * s) / (colorSorted.z - colorSorted.x));
colorSorted.z = s;
}
else
{
colorSorted.y = 0;
colorSorted.z = 0;
}
colorSorted.x = 0;
return colorSorted;
}
fn setSaturation(c: vec3<f32>, s: f32) -> vec3<f32>
{
var color = c;
if (color.r <= color.g && color.r <= color.b)
{
if (color.g <= color.b)
{
color = vec3<f32>(setSaturationMinMidMax(color.rgb, s)).rgb;
}
else
{
color = vec3<f32>(setSaturationMinMidMax(color.rbg, s)).rbg;
}
}
else if (color.g <= color.r && color.g <= color.b)
{
if (color.r <= color.b)
{
color = vec3<f32>(setSaturationMinMidMax(color.grb, s)).grb;
}
else
{
color = vec3<f32>(setSaturationMinMidMax(color.gbr, s)).gbr;
}
}
else
{
// Using bgr for both fixes part of hue
if (color.r <= color.g)
{
color = vec3<f32>(setSaturationMinMidMax(color.brg, s)).brg;
}
else
{
color = vec3<f32>(setSaturationMinMidMax(color.bgr, s)).bgr;
}
}
return color;
}
`,exports.injectBits=injectBits,exports.insertVersion=insertVersion,exports.isMobile=isMobile,exports.isPow2=isPow2,exports.isRenderingToScreen=isRenderingToScreen,exports.isSafari=isSafari,exports.isSingleItem=isSingleItem,exports.isWebGLSupported=isWebGLSupported,exports.isWebGPUSupported=isWebGPUSupported,exports.ktxTranscoderUrls=ktxTranscoderUrls,exports.loadBasis=loadBasis,exports.loadBasisOnWorker=loadBasisOnWorker,exports.loadBitmapFont=CLEAR2,exports.loadDDS=loadDDS,exports.loadEnvironmentExtensions=loadEnvironmentExtensions,exports.loadFontAsBase64=loadFontAsBase64,exports.loadFontCSS=loadFontCSS,exports.loadImageBitmap=loadImageBitmap,exports.loadJson=loadJson,exports.loadKTX=loadKTX,exports.loadKTX2=loadKTX2,exports.loadKTX2onWorker=loadKTX2onWorker,exports.loadSVGImage=loadSVGImage,exports.loadSvg=loadSvg,exports.loadTextures=loadTextures,exports.loadTxt=loadTxt,exports.loadVideoTextures=loadVideoTextures,exports.loadWebFont=loadWebFont,exports.localUniformBit=localUniformBit,exports.localUniformBitGl=localUniformBitGl,exports.localUniformBitGroup2=localUniformBitGroup2,exports.localUniformMSDFBit=localUniformMSDFBit,exports.localUniformMSDFBitGl=localUniformMSDFBitGl,exports.log2=function(v){var r=(65535<v?1:0)<<4,shift=(255<(v>>>=r)?1:0)<<3;return(r|=shift)|(shift=(15<(v>>>=shift)?1:0)<<2)|(shift=(3<(v>>>=shift)?1:0)<<1)|v>>>shift>>1},exports.logDebugTexture=async function(texture,renderer,size=200){var base64=await renderer.extract.base64(texture),renderer=(await renderer.encoder.commandFinished,size),size=(console.log(`logging texture ${texture.source.width}px ${texture.source.height}px`),["font-size: 1px;",`padding: ${renderer}px 300px;`,`background: url(${base64}) no-repeat;`,"background-size: contain;"].join(" "));console.log("%c ",size)},exports.logProgramError=logProgramError,exports.logRenderGroupScene=function logRenderGroupScene(renderGroup,depth=0,data={index:0,color:"#000000"}){let spaces="";for(let i=0;i<depth;i++)spaces+=" ";var a,b,output=`%c ${spaces}- ${data.index}: ${renderGroup.root.label} worldX:`+renderGroup.worldTransform.tx;console.log(output,`color:${data.color}; font-weight:bold;`),depth++;for(let i=0;i<renderGroup.renderGroupChildren.length;i++)logRenderGroupScene(renderGroup.renderGroupChildren[i],depth,(a=__spreadValues({},data),b={index:i},__defProps(a,__getOwnPropDescs(b))))},exports.logScene=function logScene(container,depth=0,data={color:"#000000"}){container.renderGroup&&(data.color=colors[colorTick++]);let spaces="";for(let i=0;i<depth;i++)spaces+=" ";let label=container.label,output=(!label&&container instanceof Sprite&&(label="sprite:"+container.texture.label),`%c ${spaces}|- ${label} (worldX:${container.worldTransform.tx}, relativeRenderX:${container.relativeGroupTransform.tx}, renderX:${container.groupTransform.tx}, localX:${container.x})`);container.renderGroup&&(output+=" (RenderGroup)"),container.filters&&(output+="(*filters)"),console.log(output,`color:${data.color}; font-weight:bold;`),depth++;for(let i=0;i<container.children.length;i++)logScene(container.children[i],depth,__spreadValues({},data))},exports.mSDFBit=mSDFBit,exports.mSDFBitGl=mSDFBitGl,exports.mapFormatToGlFormat=mapFormatToGlFormat,exports.mapFormatToGlInternalFormat=mapFormatToGlInternalFormat,exports.mapFormatToGlType=mapFormatToGlType,exports.mapGlToVertexFormat=mapGlToVertexFormat,exports.mapSize=function(type){return GLSL_TO_SIZE[type]},exports.mapType=mapType,exports.mapWebGLBlendModesToPixi=mapWebGLBlendModesToPixi,exports.maskFrag=fragment,exports.maskVert=vertex,exports.maskWgsl=source,exports.matrixPool=matrixPool,exports.measureHtmlText=measureHtmlText,exports.measureMixin=measureMixin,exports.migrateFragmentFromV7toV8=function(fragmentShader){return`
out vec4 finalColor;
${fragmentShader=fragmentShader.replaceAll("texture2D","texture").replaceAll("gl_FragColor","finalColor").replaceAll("varying","in")}
`},exports.mipmapScaleModeToGlFilter=mipmapScaleModeToGlFilter,exports.mixHexColors=function(color1,color2,ratio){var r1=color1>>16&255,g1=color1>>8&255;return(r1+((color2>>16&255)-r1)*ratio<<16)+(g1+((color2>>8&255)-g1)*ratio<<8)+((color1&=255)+((255&color2)-color1)*ratio)},exports.multiplyColors=multiplyColors,exports.multiplyHexColors=multiplyHexColors,exports.nextPow2=nextPow2,exports.noiseFrag=fragment$1,exports.noiseWgsl=source$1,exports.nonCompressedFormats=nonCompressedFormats,exports.normalizeExtensionPriority=normalizeExtensionPriority,exports.nssvg=nssvg,exports.nsxhtml=nsxhtml,exports.onRenderMixin=onRenderMixin,exports.parseAttribute=parseAttribute,exports.parseDDS=parseDDS,exports.parseFunctionBody=function(fn){var bodyStart=(fn=fn.toString()).indexOf("{"),bodyEnd=fn.lastIndexOf("}");if(-1===bodyStart||-1===bodyEnd)throw new Error("getFunctionBody: No body found in function definition");return fn.slice(bodyStart+1,bodyEnd).trim()},exports.parseKTX=parseKTX,exports.parseSVGDefinitions=parseSVGDefinitions,exports.parseSVGFloatAttribute=parseSVGFloatAttribute,exports.parseSVGPath=parseSVGPath,exports.parseSVGStyle=parseSVGStyle,exports.particleData=particleData,exports.particlesFrag=fragment$5,exports.particlesVert=vertex$3,exports.particlesWgsl=wgsl,exports.path=path,exports.pointInTriangle=pointInTriangle,exports.preloadVideo=preloadVideo,exports.removeItems=removeItems,exports.removeStructAndGroupDuplicates=removeStructAndGroupDuplicates,exports.resetUids=function(){for(const key in uidCache)delete uidCache[key]},exports.resolveCharacters=resolveCharacters,exports.resolveCompressedTextureUrl=resolveCompressedTextureUrl,exports.resolveJsonUrl=resolveJsonUrl,exports.resolveTextureUrl=resolveTextureUrl,exports.resourceToTexture=resourceToTexture,exports.roundPixelsBit=roundPixelsBit,exports.roundPixelsBitGl=roundPixelsBitGl,exports.roundedShapeArc=roundedShapeArc,exports.roundedShapeQuadraticCurve=roundedShapeQuadraticCurve,exports.sayHello=sayHello,exports.scaleModeToGlFilter=scaleModeToGlFilter,exports.setBasisTranscoderPath=function(config){Object.assign(basisTranscoderUrls,config)},exports.setKTXTranscoderPath=function(config){Object.assign(ktxTranscoderUrls,config)},exports.setPositions=setPositions,exports.setProgramName=setProgramName,exports.setUvs=setUvs,exports.shapeBuilders=shapeBuilders,exports.sortMixin=sortMixin,exports.spritesheetAsset=spritesheetAsset,exports.squaredDistanceToLineSegment=squaredDistanceToLineSegment,exports.stripVersion=stripVersion,exports.styleAttributes=styleAttributes,exports.testImageFormat=testImageFormat,exports.testVideoFormat=testVideoFormat,exports.textStyleToCSS=textStyleToCSS,exports.textureBit=textureBit,exports.textureBitGl=textureBitGl,exports.textureFrom=textureFrom,exports.tilingBit=tilingBit,exports.tilingBitGl=tilingBitGl,exports.toFillStyle=toFillStyle,exports.toLocalGlobalMixin=toLocalGlobalMixin,exports.toStrokeStyle=toStrokeStyle,exports.transformVertices=transformVertices,exports.triangulateWithHoles=triangulateWithHoles,exports.uboSyncFunctionsSTD40=uboSyncFunctionsSTD40,exports.uboSyncFunctionsWGSL=uboSyncFunctionsWGSL,exports.uid=uid$1,exports.uniformParsers=uniformParsers,exports.unpremultiplyAlpha=function(pixels){var n=(pixels=pixels instanceof Uint8ClampedArray?new Uint8Array(pixels.buffer):pixels).length;for(let i=0;i<n;i+=4){var alpha=pixels[i+3];0!==alpha&&(alpha=255.001/alpha,pixels[i]=pixels[i]*alpha+.5,pixels[i+1]=pixels[i+1]*alpha+.5,pixels[i+2]=pixels[i+2]*alpha+.5)}},exports.unsafeEvalSupported=unsafeEvalSupported,exports.updateLocalTransform=function(lt,container){var scale=container._scale,pivot=container._pivot,position=container._position,sx=scale._x,scale=scale._y,px=pivot._x,pivot=pivot._y;lt.a=container._cx*sx,lt.b=container._sx*sx,lt.c=container._cy*scale,lt.d=container._sy*scale,lt.tx=position._x-(px*lt.a+pivot*lt.c),lt.ty=position._y-(px*lt.b+pivot*lt.d)},exports.updateQuadBounds=updateQuadBounds,exports.updateRenderGroupTransform=updateRenderGroupTransform,exports.updateRenderGroupTransforms=updateRenderGroupTransforms,exports.updateTextBounds=updateTextBounds,exports.updateTransformAndChildren=updateTransformAndChildren,exports.updateTransformBackwards=updateTransformBackwards,exports.updateWorldTransform=function(local,parent,world){var lta=local.a,ltb=local.b,ltc=local.c,ltd=local.d,lttx=local.tx,local=local.ty,pta=parent.a,ptb=parent.b,ptc=parent.c,ptd=parent.d;world.a=lta*pta+ltb*ptc,world.b=lta*ptb+ltb*ptd,world.c=ltc*pta+ltd*ptc,world.d=ltc*ptb+ltd*ptd,world.tx=lttx*pta+local*ptc+parent.tx,world.ty=lttx*ptb+local*ptd+parent.ty},exports.v8_0_0=v8_0_0,exports.v8_3_4="8.3.4",exports.validFormats=validFormats,exports.validateRenderables=validateRenderables,exports.vertexGPUTemplate=vertexGPUTemplate,exports.vertexGlTemplate=vertexGlTemplate,exports.viewportFromFrame=function(viewport,source,frame){frame=frame||fullFrame;var pixelWidth=source.pixelWidth,source=source.pixelHeight;return viewport.x=frame.x*pixelWidth|0,viewport.y=frame.y*source|0,viewport.width=frame.width*pixelWidth|0,viewport.height=frame.height*source|0,viewport},exports.vkFormatToGPUFormat=vkFormatToGPUFormat,exports.warn=warn,exports.wrapModeToGlAddress=wrapModeToGlAddress,exports}({});