From f728240db9efb1860d7ef1b6877e0e9016d2e490 Mon Sep 17 00:00:00 2001 From: Michael Chen Date: Fri, 4 Nov 2022 04:05:20 +0100 Subject: [PATCH] Added crude client rendering with pixi.js Added keyboard controlling Added fixed ball reflections on right paddle added reflections on screen borders Added goal (miss the paddle) detection --- PongGame/Hubs/PongGameState.cs | 52 +- PongGame/Pages/Pong.cshtml | 3 + PongGame/libman.json | 11 + PongGame/wwwroot/js/pong.js | 81 +- PongGame/wwwroot/lib/pixi/dist/pixi.js | 24183 ++++++++++++++++ PongGame/wwwroot/lib/pixi/dist/pixi.js.map | 1 + PongGame/wwwroot/lib/pixi/dist/pixi.min.js | 1116 + .../wwwroot/lib/pixi/dist/pixi.min.js.map | 1 + 8 files changed, 25425 insertions(+), 23 deletions(-) create mode 100644 PongGame/wwwroot/lib/pixi/dist/pixi.js create mode 100644 PongGame/wwwroot/lib/pixi/dist/pixi.js.map create mode 100644 PongGame/wwwroot/lib/pixi/dist/pixi.min.js create mode 100644 PongGame/wwwroot/lib/pixi/dist/pixi.min.js.map diff --git a/PongGame/Hubs/PongGameState.cs b/PongGame/Hubs/PongGameState.cs index 39c4e83..a389240 100644 --- a/PongGame/Hubs/PongGameState.cs +++ b/PongGame/Hubs/PongGameState.cs @@ -9,20 +9,22 @@ namespace PongGame.Hubs; public struct PongGameState { public const float HEIGHT = 500.0f; public const float WIDTH = 2 * HEIGHT; - public const float PADDLE1_OFFSET = 50.0f; - public const float PADDLE2_OFFSET = 1000 - PADDLE1_OFFSET; + public const float PADDLE1_OFFSET = WIDTH / 20; + public const float PADDLE2_OFFSET = WIDTH - PADDLE1_OFFSET; public static readonly PongGameState Initial = new() { BallState = PongBallState.Initial, Paddle1 = PongPaddleState.Initial, Paddle2 = PongPaddleState.Initial, - Status = GameStatus.WaitingForPlayers + Status = GameStatus.WaitingForPlayers, + WinnerLeft = null }; public PongPaddleState Paddle1; public PongPaddleState Paddle2; public PongBallState BallState; public GameStatus Status; + public bool? WinnerLeft; public static void Update(ref PongGameState state) { if (state.Status is not GameStatus.InProgress) return; @@ -30,6 +32,12 @@ public struct PongGameState { PongPaddleState.Update(ref state.Paddle1); PongPaddleState.Update(ref state.Paddle2); PongBallState.Update(ref state.BallState); + var ballX = state.BallState.Pos.X; + if (ballX is < 0 or > WIDTH) { + state.WinnerLeft = ballX < 0; + state.Status = GameStatus.Finished; + return; + } Collide(in state.Paddle1, ref state.BallState, true); Collide(in state.Paddle2, ref state.BallState, false); @@ -41,40 +49,48 @@ public struct PongGameState { if (intersection.IsEmpty) return; // TODO: continuous collision - var ratio = (ballState.Y - paddle.Height + PongPaddleState.PADDLE_HALF_LENGTH) / PongPaddleState.PADDLE_LENGTH; - var upAngle = left ? MathF.PI * 3 / 8 : MathF.PI * 5 / 8; - var downAngle = -upAngle; + var ratio = (ballState.Pos.Y - paddle.Height + PongPaddleState.PADDLE_HALF_LENGTH) / PongPaddleState.PADDLE_LENGTH; + // TODO: lesser angles + var upAngle = left ? MathF.PI * 3 / 8 : MathF.PI * 5 / 8; + var downAngle = left ? -MathF.PI * 3 / 8 : MathF.PI * 11 / 8; + + // TODO: reflect ball on surface instead of launching ballState.BallAngle = ratio * downAngle + (1 - ratio) * upAngle; } public struct PongBallState { - public const float BALL_SPEED = 8; - public const float BALL_RADIUS = 2; + public const float BALL_SPEED = 2 * BALL_RADIUS; + public const float BALL_RADIUS = HEIGHT / 125; public static readonly PongBallState Initial = new() { BallAngle = 0.0f, - X = WIDTH / 2, - Y = HEIGHT / 2 + Pos = new() { + X = WIDTH / 2, + Y = HEIGHT / 2 + } }; - public float X; - public float Y; + public PointF Pos; public float BallAngle; public static void Update(ref PongBallState state) { var (dy, dx) = MathF.SinCos(state.BallAngle); - state.X += BALL_SPEED * dx; - state.Y -= BALL_SPEED * dy; + state.Pos.X += BALL_SPEED * dx; + state.Pos.Y -= BALL_SPEED * dy; + + if (state.Pos.Y < BALL_RADIUS + || state.Pos.Y > HEIGHT - BALL_RADIUS) + state.BallAngle = 2 * MathF.PI - state.BallAngle; } - public RectangleF GetCollider() => new(X - BALL_RADIUS, Y - BALL_RADIUS, 2 * BALL_RADIUS, 2 * BALL_RADIUS); + public RectangleF GetCollider() => new(Pos.X - BALL_RADIUS, Pos.Y - BALL_RADIUS, 2 * BALL_RADIUS, 2 * BALL_RADIUS); } public struct PongPaddleState { public const float PADDLE_LENGTH = HEIGHT / 10; public const float PADDLE_HALF_LENGTH = PADDLE_LENGTH / 2; - public const float PADDLE_WIDTH = PADDLE_LENGTH / 6; + public const float PADDLE_WIDTH = PADDLE_LENGTH / 5; public const float PADDLE_SPEED = 8; public static readonly PongPaddleState Initial = new() { @@ -86,9 +102,9 @@ public struct PongGameState { public PongPaddleDirection Direction; public static void Update(ref PongPaddleState state) { - state.Height = Math.Clamp(state.Height + ((int)state.Direction) * PADDLE_SPEED, PADDLE_HALF_LENGTH, HEIGHT - PADDLE_HALF_LENGTH); + state.Height = Math.Clamp(state.Height - ((int)state.Direction) * PADDLE_SPEED, PADDLE_HALF_LENGTH, HEIGHT - PADDLE_HALF_LENGTH); } - public RectangleF GetCollider(float x) => new(x - PADDLE_HALF_LENGTH, Height - PADDLE_HALF_LENGTH, PADDLE_WIDTH, PADDLE_LENGTH); + public RectangleF GetCollider(float x) => new(x - PADDLE_WIDTH / 2, Height - PADDLE_HALF_LENGTH, PADDLE_WIDTH, PADDLE_LENGTH); } } \ No newline at end of file diff --git a/PongGame/Pages/Pong.cshtml b/PongGame/Pages/Pong.cshtml index cca747c..0a4d17b 100644 --- a/PongGame/Pages/Pong.cshtml +++ b/PongGame/Pages/Pong.cshtml @@ -20,8 +20,11 @@ + +
+ \ No newline at end of file diff --git a/PongGame/libman.json b/PongGame/libman.json index 0477ee3..4ab55de 100644 --- a/PongGame/libman.json +++ b/PongGame/libman.json @@ -21,6 +21,17 @@ "dist/browser/signalr.min.js", "dist/browser/signalr.min.js.map" ] + }, + { + "provider": "jsdelivr", + "library": "pixi.js@7.0.2", + "destination": "wwwroot/lib/pixi/", + "files": [ + "dist/pixi.js", + "dist/pixi.js.map", + "dist/pixi.min.js.map", + "dist/pixi.min.js" + ] } ] } \ No newline at end of file diff --git a/PongGame/wwwroot/js/pong.js b/PongGame/wwwroot/js/pong.js index 966ba8b..cbafd99 100644 --- a/PongGame/wwwroot/js/pong.js +++ b/PongGame/wwwroot/js/pong.js @@ -1,7 +1,5 @@ "use strict"; -console.log("Pong script was run!"); - const connection = new signalR.HubConnectionBuilder() .withUrl("/pong/hub") .withAutomaticReconnect() @@ -14,7 +12,7 @@ function getElement(id) { const connectionStatus = getElement("connection"); const createlobby = getElement("createlobby"); -const roomid = getElement("roomid"); +const roomidinput = getElement("roomid"); const joinroom = getElement("joinroom"); const usernameinput = getElement("username"); const setusername = getElement("setusername"); @@ -44,7 +42,10 @@ connection.onreconnected(function (connectionId) { }); createlobby.addEventListener("click", function (event) { - connection.invoke("CreateRoom").catch(function (err) { + connection.invoke("CreateRoom").then(function (roomId) { + roomidinput.value = roomId; + console.info(`Joined room [${roomId}]`); + }).catch(function (err) { return console.error(err.toString()); }); event.preventDefault(); @@ -59,7 +60,7 @@ connection.on("UsernameChanged", function (username) { }); joinroom.addEventListener("click", function (event) { - connection.invoke("JoinRoom", roomid.value).catch(function (err) { + connection.invoke("JoinRoom", roomidinput.value).catch(function (err) { return console.error(err.toString()); }); event.preventDefault(); @@ -89,6 +90,76 @@ function moveUp() { return movePaddle(-1); } function stopPaddle() { return movePaddle(0); } function moveDown() { return movePaddle(1); } +// Create the application helper and add its render target to the page +let app = new PIXI.Application({ width: 1000, height: 500 }); +getElement('canvas-container').appendChild(app.view); + +let graphics = new PIXI.Graphics(); +app.stage.addChild(graphics); + +function renderPaddle(graphics, state, xMid) { + var xLeft = xMid - 5; + graphics.beginFill(0x00FFFF); + graphics.drawRect(xLeft, state.Height - 25, 10, 50); + graphics.endFill(); +} + +function renderBall(graphics, state) { + graphics.beginFill(0xFF00FF); + graphics.drawCircle(state.Pos.X, state.Pos.Y, 4); + graphics.endFill(); +} + +function renderGameState(graphics, state) { + graphics.clear(); + renderPaddle(graphics, state.Paddle1, 50); + renderPaddle(graphics, state.Paddle2, 1000 - 50); + renderBall(graphics, state.BallState); +} + +connection.on("ReceiveGameState", function (state) { + renderGameState(graphics, state); +}); + +const keyEvent = (function () { + var upPressed = false; + var downPressed = false; + + function moveUpdated() { + if (upPressed == downPressed) stopPaddle(); + else if (upPressed) moveUp(); + else if (downPressed) moveDown(); + else console.error("unknown move!"); + } + + function handler(event) { + if (event.repeat) return; + if (event.path.indexOf(document.body) != 0) return; // only use key if it was pressed on empty space + var pressed = event.type == "keyup"; + // W Key is 87, Up arrow is 87 + // S Key is 83, Down arrow is 40 + switch (event.keyCode) { + case 87: + case 38: + upPressed = pressed; + break; + case 83: + case 40: + downPressed = pressed; + break; + default: return; + } + + event.preventDefault(); + moveUpdated(); + } + + return handler; +})(); + +document.addEventListener('keydown', keyEvent); +document.addEventListener('keyup', keyEvent); + connection.start().then(function () { console.info(`Connected!`); connectionStatus.textContent = "Connected!"; diff --git a/PongGame/wwwroot/lib/pixi/dist/pixi.js b/PongGame/wwwroot/lib/pixi/dist/pixi.js new file mode 100644 index 0000000..c9be2b0 --- /dev/null +++ b/PongGame/wwwroot/lib/pixi/dist/pixi.js @@ -0,0 +1,24183 @@ +/*! + * pixi.js - v7.0.2 + * Compiled Mon, 31 Oct 2022 15:20:53 UTC + * + * pixi.js is licensed under the MIT License. + * http://www.opensource.org/licenses/mit-license + */ +var PIXI = (function (exports) { + 'use strict'; + + var ENV = /* @__PURE__ */ ((ENV2) => { + ENV2[ENV2["WEBGL_LEGACY"] = 0] = "WEBGL_LEGACY"; + ENV2[ENV2["WEBGL"] = 1] = "WEBGL"; + ENV2[ENV2["WEBGL2"] = 2] = "WEBGL2"; + return ENV2; + })(ENV || {}); + var RENDERER_TYPE = /* @__PURE__ */ ((RENDERER_TYPE2) => { + RENDERER_TYPE2[RENDERER_TYPE2["UNKNOWN"] = 0] = "UNKNOWN"; + RENDERER_TYPE2[RENDERER_TYPE2["WEBGL"] = 1] = "WEBGL"; + RENDERER_TYPE2[RENDERER_TYPE2["CANVAS"] = 2] = "CANVAS"; + return RENDERER_TYPE2; + })(RENDERER_TYPE || {}); + var BUFFER_BITS = /* @__PURE__ */ ((BUFFER_BITS2) => { + BUFFER_BITS2[BUFFER_BITS2["COLOR"] = 16384] = "COLOR"; + BUFFER_BITS2[BUFFER_BITS2["DEPTH"] = 256] = "DEPTH"; + BUFFER_BITS2[BUFFER_BITS2["STENCIL"] = 1024] = "STENCIL"; + return BUFFER_BITS2; + })(BUFFER_BITS || {}); + var BLEND_MODES = /* @__PURE__ */ ((BLEND_MODES2) => { + BLEND_MODES2[BLEND_MODES2["NORMAL"] = 0] = "NORMAL"; + BLEND_MODES2[BLEND_MODES2["ADD"] = 1] = "ADD"; + BLEND_MODES2[BLEND_MODES2["MULTIPLY"] = 2] = "MULTIPLY"; + BLEND_MODES2[BLEND_MODES2["SCREEN"] = 3] = "SCREEN"; + BLEND_MODES2[BLEND_MODES2["OVERLAY"] = 4] = "OVERLAY"; + BLEND_MODES2[BLEND_MODES2["DARKEN"] = 5] = "DARKEN"; + BLEND_MODES2[BLEND_MODES2["LIGHTEN"] = 6] = "LIGHTEN"; + BLEND_MODES2[BLEND_MODES2["COLOR_DODGE"] = 7] = "COLOR_DODGE"; + BLEND_MODES2[BLEND_MODES2["COLOR_BURN"] = 8] = "COLOR_BURN"; + BLEND_MODES2[BLEND_MODES2["HARD_LIGHT"] = 9] = "HARD_LIGHT"; + BLEND_MODES2[BLEND_MODES2["SOFT_LIGHT"] = 10] = "SOFT_LIGHT"; + BLEND_MODES2[BLEND_MODES2["DIFFERENCE"] = 11] = "DIFFERENCE"; + BLEND_MODES2[BLEND_MODES2["EXCLUSION"] = 12] = "EXCLUSION"; + BLEND_MODES2[BLEND_MODES2["HUE"] = 13] = "HUE"; + BLEND_MODES2[BLEND_MODES2["SATURATION"] = 14] = "SATURATION"; + BLEND_MODES2[BLEND_MODES2["COLOR"] = 15] = "COLOR"; + BLEND_MODES2[BLEND_MODES2["LUMINOSITY"] = 16] = "LUMINOSITY"; + BLEND_MODES2[BLEND_MODES2["NORMAL_NPM"] = 17] = "NORMAL_NPM"; + BLEND_MODES2[BLEND_MODES2["ADD_NPM"] = 18] = "ADD_NPM"; + BLEND_MODES2[BLEND_MODES2["SCREEN_NPM"] = 19] = "SCREEN_NPM"; + BLEND_MODES2[BLEND_MODES2["NONE"] = 20] = "NONE"; + BLEND_MODES2[BLEND_MODES2["SRC_OVER"] = 0] = "SRC_OVER"; + BLEND_MODES2[BLEND_MODES2["SRC_IN"] = 21] = "SRC_IN"; + BLEND_MODES2[BLEND_MODES2["SRC_OUT"] = 22] = "SRC_OUT"; + BLEND_MODES2[BLEND_MODES2["SRC_ATOP"] = 23] = "SRC_ATOP"; + BLEND_MODES2[BLEND_MODES2["DST_OVER"] = 24] = "DST_OVER"; + BLEND_MODES2[BLEND_MODES2["DST_IN"] = 25] = "DST_IN"; + BLEND_MODES2[BLEND_MODES2["DST_OUT"] = 26] = "DST_OUT"; + BLEND_MODES2[BLEND_MODES2["DST_ATOP"] = 27] = "DST_ATOP"; + BLEND_MODES2[BLEND_MODES2["ERASE"] = 26] = "ERASE"; + BLEND_MODES2[BLEND_MODES2["SUBTRACT"] = 28] = "SUBTRACT"; + BLEND_MODES2[BLEND_MODES2["XOR"] = 29] = "XOR"; + return BLEND_MODES2; + })(BLEND_MODES || {}); + var DRAW_MODES = /* @__PURE__ */ ((DRAW_MODES2) => { + DRAW_MODES2[DRAW_MODES2["POINTS"] = 0] = "POINTS"; + DRAW_MODES2[DRAW_MODES2["LINES"] = 1] = "LINES"; + DRAW_MODES2[DRAW_MODES2["LINE_LOOP"] = 2] = "LINE_LOOP"; + DRAW_MODES2[DRAW_MODES2["LINE_STRIP"] = 3] = "LINE_STRIP"; + DRAW_MODES2[DRAW_MODES2["TRIANGLES"] = 4] = "TRIANGLES"; + DRAW_MODES2[DRAW_MODES2["TRIANGLE_STRIP"] = 5] = "TRIANGLE_STRIP"; + DRAW_MODES2[DRAW_MODES2["TRIANGLE_FAN"] = 6] = "TRIANGLE_FAN"; + return DRAW_MODES2; + })(DRAW_MODES || {}); + var FORMATS = /* @__PURE__ */ ((FORMATS2) => { + FORMATS2[FORMATS2["RGBA"] = 6408] = "RGBA"; + FORMATS2[FORMATS2["RGB"] = 6407] = "RGB"; + FORMATS2[FORMATS2["RG"] = 33319] = "RG"; + FORMATS2[FORMATS2["RED"] = 6403] = "RED"; + FORMATS2[FORMATS2["RGBA_INTEGER"] = 36249] = "RGBA_INTEGER"; + FORMATS2[FORMATS2["RGB_INTEGER"] = 36248] = "RGB_INTEGER"; + FORMATS2[FORMATS2["RG_INTEGER"] = 33320] = "RG_INTEGER"; + FORMATS2[FORMATS2["RED_INTEGER"] = 36244] = "RED_INTEGER"; + FORMATS2[FORMATS2["ALPHA"] = 6406] = "ALPHA"; + FORMATS2[FORMATS2["LUMINANCE"] = 6409] = "LUMINANCE"; + FORMATS2[FORMATS2["LUMINANCE_ALPHA"] = 6410] = "LUMINANCE_ALPHA"; + FORMATS2[FORMATS2["DEPTH_COMPONENT"] = 6402] = "DEPTH_COMPONENT"; + FORMATS2[FORMATS2["DEPTH_STENCIL"] = 34041] = "DEPTH_STENCIL"; + return FORMATS2; + })(FORMATS || {}); + var TARGETS = /* @__PURE__ */ ((TARGETS2) => { + TARGETS2[TARGETS2["TEXTURE_2D"] = 3553] = "TEXTURE_2D"; + TARGETS2[TARGETS2["TEXTURE_CUBE_MAP"] = 34067] = "TEXTURE_CUBE_MAP"; + TARGETS2[TARGETS2["TEXTURE_2D_ARRAY"] = 35866] = "TEXTURE_2D_ARRAY"; + TARGETS2[TARGETS2["TEXTURE_CUBE_MAP_POSITIVE_X"] = 34069] = "TEXTURE_CUBE_MAP_POSITIVE_X"; + TARGETS2[TARGETS2["TEXTURE_CUBE_MAP_NEGATIVE_X"] = 34070] = "TEXTURE_CUBE_MAP_NEGATIVE_X"; + TARGETS2[TARGETS2["TEXTURE_CUBE_MAP_POSITIVE_Y"] = 34071] = "TEXTURE_CUBE_MAP_POSITIVE_Y"; + TARGETS2[TARGETS2["TEXTURE_CUBE_MAP_NEGATIVE_Y"] = 34072] = "TEXTURE_CUBE_MAP_NEGATIVE_Y"; + TARGETS2[TARGETS2["TEXTURE_CUBE_MAP_POSITIVE_Z"] = 34073] = "TEXTURE_CUBE_MAP_POSITIVE_Z"; + TARGETS2[TARGETS2["TEXTURE_CUBE_MAP_NEGATIVE_Z"] = 34074] = "TEXTURE_CUBE_MAP_NEGATIVE_Z"; + return TARGETS2; + })(TARGETS || {}); + var TYPES = /* @__PURE__ */ ((TYPES2) => { + TYPES2[TYPES2["UNSIGNED_BYTE"] = 5121] = "UNSIGNED_BYTE"; + TYPES2[TYPES2["UNSIGNED_SHORT"] = 5123] = "UNSIGNED_SHORT"; + TYPES2[TYPES2["UNSIGNED_SHORT_5_6_5"] = 33635] = "UNSIGNED_SHORT_5_6_5"; + TYPES2[TYPES2["UNSIGNED_SHORT_4_4_4_4"] = 32819] = "UNSIGNED_SHORT_4_4_4_4"; + TYPES2[TYPES2["UNSIGNED_SHORT_5_5_5_1"] = 32820] = "UNSIGNED_SHORT_5_5_5_1"; + TYPES2[TYPES2["UNSIGNED_INT"] = 5125] = "UNSIGNED_INT"; + TYPES2[TYPES2["UNSIGNED_INT_10F_11F_11F_REV"] = 35899] = "UNSIGNED_INT_10F_11F_11F_REV"; + TYPES2[TYPES2["UNSIGNED_INT_2_10_10_10_REV"] = 33640] = "UNSIGNED_INT_2_10_10_10_REV"; + TYPES2[TYPES2["UNSIGNED_INT_24_8"] = 34042] = "UNSIGNED_INT_24_8"; + TYPES2[TYPES2["UNSIGNED_INT_5_9_9_9_REV"] = 35902] = "UNSIGNED_INT_5_9_9_9_REV"; + TYPES2[TYPES2["BYTE"] = 5120] = "BYTE"; + TYPES2[TYPES2["SHORT"] = 5122] = "SHORT"; + TYPES2[TYPES2["INT"] = 5124] = "INT"; + TYPES2[TYPES2["FLOAT"] = 5126] = "FLOAT"; + TYPES2[TYPES2["FLOAT_32_UNSIGNED_INT_24_8_REV"] = 36269] = "FLOAT_32_UNSIGNED_INT_24_8_REV"; + TYPES2[TYPES2["HALF_FLOAT"] = 36193] = "HALF_FLOAT"; + return TYPES2; + })(TYPES || {}); + var SAMPLER_TYPES = /* @__PURE__ */ ((SAMPLER_TYPES2) => { + SAMPLER_TYPES2[SAMPLER_TYPES2["FLOAT"] = 0] = "FLOAT"; + SAMPLER_TYPES2[SAMPLER_TYPES2["INT"] = 1] = "INT"; + SAMPLER_TYPES2[SAMPLER_TYPES2["UINT"] = 2] = "UINT"; + return SAMPLER_TYPES2; + })(SAMPLER_TYPES || {}); + var SCALE_MODES = /* @__PURE__ */ ((SCALE_MODES2) => { + SCALE_MODES2[SCALE_MODES2["NEAREST"] = 0] = "NEAREST"; + SCALE_MODES2[SCALE_MODES2["LINEAR"] = 1] = "LINEAR"; + return SCALE_MODES2; + })(SCALE_MODES || {}); + var WRAP_MODES = /* @__PURE__ */ ((WRAP_MODES2) => { + WRAP_MODES2[WRAP_MODES2["CLAMP"] = 33071] = "CLAMP"; + WRAP_MODES2[WRAP_MODES2["REPEAT"] = 10497] = "REPEAT"; + WRAP_MODES2[WRAP_MODES2["MIRRORED_REPEAT"] = 33648] = "MIRRORED_REPEAT"; + return WRAP_MODES2; + })(WRAP_MODES || {}); + var MIPMAP_MODES = /* @__PURE__ */ ((MIPMAP_MODES2) => { + MIPMAP_MODES2[MIPMAP_MODES2["OFF"] = 0] = "OFF"; + MIPMAP_MODES2[MIPMAP_MODES2["POW2"] = 1] = "POW2"; + MIPMAP_MODES2[MIPMAP_MODES2["ON"] = 2] = "ON"; + MIPMAP_MODES2[MIPMAP_MODES2["ON_MANUAL"] = 3] = "ON_MANUAL"; + return MIPMAP_MODES2; + })(MIPMAP_MODES || {}); + var ALPHA_MODES = /* @__PURE__ */ ((ALPHA_MODES2) => { + ALPHA_MODES2[ALPHA_MODES2["NPM"] = 0] = "NPM"; + ALPHA_MODES2[ALPHA_MODES2["UNPACK"] = 1] = "UNPACK"; + ALPHA_MODES2[ALPHA_MODES2["PMA"] = 2] = "PMA"; + ALPHA_MODES2[ALPHA_MODES2["NO_PREMULTIPLIED_ALPHA"] = 0] = "NO_PREMULTIPLIED_ALPHA"; + ALPHA_MODES2[ALPHA_MODES2["PREMULTIPLY_ON_UPLOAD"] = 1] = "PREMULTIPLY_ON_UPLOAD"; + ALPHA_MODES2[ALPHA_MODES2["PREMULTIPLIED_ALPHA"] = 2] = "PREMULTIPLIED_ALPHA"; + return ALPHA_MODES2; + })(ALPHA_MODES || {}); + var CLEAR_MODES = /* @__PURE__ */ ((CLEAR_MODES2) => { + CLEAR_MODES2[CLEAR_MODES2["NO"] = 0] = "NO"; + CLEAR_MODES2[CLEAR_MODES2["YES"] = 1] = "YES"; + CLEAR_MODES2[CLEAR_MODES2["AUTO"] = 2] = "AUTO"; + CLEAR_MODES2[CLEAR_MODES2["BLEND"] = 0] = "BLEND"; + CLEAR_MODES2[CLEAR_MODES2["CLEAR"] = 1] = "CLEAR"; + CLEAR_MODES2[CLEAR_MODES2["BLIT"] = 2] = "BLIT"; + return CLEAR_MODES2; + })(CLEAR_MODES || {}); + var GC_MODES = /* @__PURE__ */ ((GC_MODES2) => { + GC_MODES2[GC_MODES2["AUTO"] = 0] = "AUTO"; + GC_MODES2[GC_MODES2["MANUAL"] = 1] = "MANUAL"; + return GC_MODES2; + })(GC_MODES || {}); + var PRECISION = /* @__PURE__ */ ((PRECISION2) => { + PRECISION2["LOW"] = "lowp"; + PRECISION2["MEDIUM"] = "mediump"; + PRECISION2["HIGH"] = "highp"; + return PRECISION2; + })(PRECISION || {}); + var MASK_TYPES = /* @__PURE__ */ ((MASK_TYPES2) => { + MASK_TYPES2[MASK_TYPES2["NONE"] = 0] = "NONE"; + MASK_TYPES2[MASK_TYPES2["SCISSOR"] = 1] = "SCISSOR"; + MASK_TYPES2[MASK_TYPES2["STENCIL"] = 2] = "STENCIL"; + MASK_TYPES2[MASK_TYPES2["SPRITE"] = 3] = "SPRITE"; + MASK_TYPES2[MASK_TYPES2["COLOR"] = 4] = "COLOR"; + return MASK_TYPES2; + })(MASK_TYPES || {}); + var COLOR_MASK_BITS = /* @__PURE__ */ ((COLOR_MASK_BITS2) => { + COLOR_MASK_BITS2[COLOR_MASK_BITS2["RED"] = 1] = "RED"; + COLOR_MASK_BITS2[COLOR_MASK_BITS2["GREEN"] = 2] = "GREEN"; + COLOR_MASK_BITS2[COLOR_MASK_BITS2["BLUE"] = 4] = "BLUE"; + COLOR_MASK_BITS2[COLOR_MASK_BITS2["ALPHA"] = 8] = "ALPHA"; + return COLOR_MASK_BITS2; + })(COLOR_MASK_BITS || {}); + var MSAA_QUALITY = /* @__PURE__ */ ((MSAA_QUALITY2) => { + MSAA_QUALITY2[MSAA_QUALITY2["NONE"] = 0] = "NONE"; + MSAA_QUALITY2[MSAA_QUALITY2["LOW"] = 2] = "LOW"; + MSAA_QUALITY2[MSAA_QUALITY2["MEDIUM"] = 4] = "MEDIUM"; + MSAA_QUALITY2[MSAA_QUALITY2["HIGH"] = 8] = "HIGH"; + return MSAA_QUALITY2; + })(MSAA_QUALITY || {}); + var BUFFER_TYPE = /* @__PURE__ */ ((BUFFER_TYPE2) => { + BUFFER_TYPE2[BUFFER_TYPE2["ELEMENT_ARRAY_BUFFER"] = 34963] = "ELEMENT_ARRAY_BUFFER"; + BUFFER_TYPE2[BUFFER_TYPE2["ARRAY_BUFFER"] = 34962] = "ARRAY_BUFFER"; + BUFFER_TYPE2[BUFFER_TYPE2["UNIFORM_BUFFER"] = 35345] = "UNIFORM_BUFFER"; + return BUFFER_TYPE2; + })(BUFFER_TYPE || {}); + + const BrowserAdapter = { + createCanvas: (width, height) => { + const canvas = document.createElement("canvas"); + canvas.width = width; + canvas.height = height; + return canvas; + }, + getWebGLRenderingContext: () => WebGLRenderingContext, + getNavigator: () => navigator, + getBaseUrl: () => document.baseURI ?? window.location.href, + getFontFaceSet: () => document.fonts, + fetch: (url, options) => fetch(url, options) + }; + + var appleIphone = /iPhone/i; + var appleIpod = /iPod/i; + var appleTablet = /iPad/i; + var appleUniversal = /\biOS-universal(?:.+)Mac\b/i; + var androidPhone = /\bAndroid(?:.+)Mobile\b/i; + var androidTablet = /Android/i; + var amazonPhone = /(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i; + var amazonTablet = /Silk/i; + var windowsPhone = /Windows Phone/i; + var windowsTablet = /\bWindows(?:.+)ARM\b/i; + var otherBlackBerry = /BlackBerry/i; + var otherBlackBerry10 = /BB10/i; + var otherOpera = /Opera Mini/i; + var otherChrome = /\b(CriOS|Chrome)(?:.+)Mobile/i; + var otherFirefox = /Mobile(?:.+)Firefox\b/i; + var isAppleTabletOnIos13 = function (navigator) { + return (typeof navigator !== 'undefined' && + navigator.platform === 'MacIntel' && + typeof navigator.maxTouchPoints === 'number' && + navigator.maxTouchPoints > 1 && + typeof MSStream === 'undefined'); + }; + function createMatch(userAgent) { + return function (regex) { return regex.test(userAgent); }; + } + function isMobile$1(param) { + var nav = { + userAgent: '', + platform: '', + maxTouchPoints: 0 + }; + if (!param && typeof navigator !== 'undefined') { + nav = { + userAgent: navigator.userAgent, + platform: navigator.platform, + maxTouchPoints: navigator.maxTouchPoints || 0 + }; + } + else if (typeof param === 'string') { + nav.userAgent = param; + } + else if (param && param.userAgent) { + nav = { + userAgent: param.userAgent, + platform: param.platform, + maxTouchPoints: param.maxTouchPoints || 0 + }; + } + var userAgent = nav.userAgent; + var tmp = userAgent.split('[FBAN'); + if (typeof tmp[1] !== 'undefined') { + userAgent = tmp[0]; + } + tmp = userAgent.split('Twitter'); + if (typeof tmp[1] !== 'undefined') { + userAgent = tmp[0]; + } + var match = createMatch(userAgent); + var result = { + apple: { + phone: match(appleIphone) && !match(windowsPhone), + ipod: match(appleIpod), + tablet: !match(appleIphone) && + (match(appleTablet) || isAppleTabletOnIos13(nav)) && + !match(windowsPhone), + universal: match(appleUniversal), + device: (match(appleIphone) || + match(appleIpod) || + match(appleTablet) || + match(appleUniversal) || + isAppleTabletOnIos13(nav)) && + !match(windowsPhone) + }, + amazon: { + phone: match(amazonPhone), + tablet: !match(amazonPhone) && match(amazonTablet), + device: match(amazonPhone) || match(amazonTablet) + }, + android: { + phone: (!match(windowsPhone) && match(amazonPhone)) || + (!match(windowsPhone) && match(androidPhone)), + tablet: !match(windowsPhone) && + !match(amazonPhone) && + !match(androidPhone) && + (match(amazonTablet) || match(androidTablet)), + device: (!match(windowsPhone) && + (match(amazonPhone) || + match(amazonTablet) || + match(androidPhone) || + match(androidTablet))) || + match(/\bokhttp\b/i) + }, + windows: { + phone: match(windowsPhone), + tablet: match(windowsTablet), + device: match(windowsPhone) || match(windowsTablet) + }, + other: { + blackberry: match(otherBlackBerry), + blackberry10: match(otherBlackBerry10), + opera: match(otherOpera), + firefox: match(otherFirefox), + chrome: match(otherChrome), + device: match(otherBlackBerry) || + match(otherBlackBerry10) || + match(otherOpera) || + match(otherFirefox) || + match(otherChrome) + }, + any: false, + phone: false, + tablet: false + }; + result.any = + result.apple.device || + result.android.device || + result.windows.device || + result.other.device; + result.phone = + result.apple.phone || result.android.phone || result.windows.phone; + result.tablet = + result.apple.tablet || result.android.tablet || result.windows.tablet; + return result; + } + + const isMobile = isMobile$1(globalThis.navigator); + + function canUploadSameBuffer() { + return !isMobile.apple.device; + } + + function maxRecommendedTextures(max) { + let allowMax = true; + if (isMobile.tablet || isMobile.phone) { + if (isMobile.apple.device) { + const match = navigator.userAgent.match(/OS (\d+)_(\d+)?/); + if (match) { + const majorVersion = parseInt(match[1], 10); + if (majorVersion < 11) { + allowMax = false; + } + } + } + if (isMobile.android.device) { + const match = navigator.userAgent.match(/Android\s([0-9.]*)/); + if (match) { + const majorVersion = parseInt(match[1], 10); + if (majorVersion < 7) { + allowMax = false; + } + } + } + } + return allowMax ? max : 4; + } + + const settings = { + ADAPTER: BrowserAdapter, + MIPMAP_TEXTURES: MIPMAP_MODES.POW2, + ANISOTROPIC_LEVEL: 0, + RESOLUTION: 1, + FILTER_RESOLUTION: 1, + FILTER_MULTISAMPLE: MSAA_QUALITY.NONE, + SPRITE_MAX_TEXTURES: maxRecommendedTextures(32), + SPRITE_BATCH_SIZE: 4096, + RENDER_OPTIONS: { + view: null, + antialias: false, + autoDensity: false, + backgroundColor: 0, + backgroundAlpha: 1, + useContextAlpha: true, + clearBeforeRender: true, + preserveDrawingBuffer: false, + width: 800, + height: 600, + legacy: false, + hello: false + }, + GC_MODE: GC_MODES.AUTO, + GC_MAX_IDLE: 60 * 60, + GC_MAX_CHECK_COUNT: 60 * 10, + WRAP_MODE: WRAP_MODES.CLAMP, + SCALE_MODE: SCALE_MODES.LINEAR, + PRECISION_VERTEX: PRECISION.HIGH, + PRECISION_FRAGMENT: isMobile.apple.device ? PRECISION.HIGH : PRECISION.MEDIUM, + CAN_UPLOAD_SAME_BUFFER: canUploadSameBuffer(), + CREATE_IMAGE_BITMAP: false, + ROUND_PIXELS: false + }; + + settings.PREFER_ENV = ENV.WEBGL2; + settings.STRICT_TEXTURE_CACHE = false; + + var ExtensionType = /* @__PURE__ */ ((ExtensionType2) => { + ExtensionType2["Renderer"] = "renderer"; + ExtensionType2["Application"] = "application"; + ExtensionType2["RendererSystem"] = "renderer-webgl-system"; + ExtensionType2["RendererPlugin"] = "renderer-webgl-plugin"; + ExtensionType2["CanvasRendererSystem"] = "renderer-canvas-system"; + ExtensionType2["CanvasRendererPlugin"] = "renderer-canvas-plugin"; + ExtensionType2["Asset"] = "asset"; + ExtensionType2["LoadParser"] = "load-parser"; + ExtensionType2["ResolveParser"] = "resolve-parser"; + ExtensionType2["CacheParser"] = "cache-parser"; + ExtensionType2["DetectionParser"] = "detection-parser"; + return ExtensionType2; + })(ExtensionType || {}); + const normalizeExtension = (ext) => { + if (typeof ext === "function" || typeof ext === "object" && ext.extension) { + const metadata = typeof ext.extension !== "object" ? { type: ext.extension } : ext.extension; + ext = { ...metadata, ref: ext }; + } + if (typeof ext === "object") { + ext = { ...ext }; + } else { + throw new Error("Invalid extension type"); + } + if (typeof ext.type === "string") { + ext.type = [ext.type]; + } + return ext; + }; + const extensions$1 = { + _addHandlers: {}, + _removeHandlers: {}, + _queue: {}, + remove(...extensions2) { + extensions2.map(normalizeExtension).forEach((ext) => { + ext.type.forEach((type) => this._removeHandlers[type]?.(ext)); + }); + return this; + }, + add(...extensions2) { + extensions2.map(normalizeExtension).forEach((ext) => { + ext.type.forEach((type) => { + const handlers = this._addHandlers; + const queue = this._queue; + if (!handlers[type]) { + queue[type] = queue[type] || []; + queue[type].push(ext); + } else { + handlers[type](ext); + } + }); + }); + return this; + }, + handle(type, onAdd, onRemove) { + const addHandlers = this._addHandlers; + const removeHandlers = this._removeHandlers; + addHandlers[type] = onAdd; + removeHandlers[type] = onRemove; + const queue = this._queue; + if (queue[type]) { + queue[type].forEach((ext) => onAdd(ext)); + delete queue[type]; + } + return this; + }, + handleByMap(type, map) { + return this.handle(type, (extension) => { + map[extension.name] = extension.ref; + }, (extension) => { + delete map[extension.name]; + }); + }, + handleByList(type, list) { + return this.handle(type, (extension) => { + list.push(extension.ref); + list.sort((a, b) => (b.priority ?? -1) - (a.priority ?? -1)); + }, (extension) => { + const index = list.indexOf(extension.ref); + if (index !== -1) { + list.splice(index, 1); + } + }); + } + }; + + const PI_2 = Math.PI * 2; + const RAD_TO_DEG = 180 / Math.PI; + const DEG_TO_RAD = Math.PI / 180; + var SHAPES = /* @__PURE__ */ ((SHAPES2) => { + SHAPES2[SHAPES2["POLY"] = 0] = "POLY"; + SHAPES2[SHAPES2["RECT"] = 1] = "RECT"; + SHAPES2[SHAPES2["CIRC"] = 2] = "CIRC"; + SHAPES2[SHAPES2["ELIP"] = 3] = "ELIP"; + SHAPES2[SHAPES2["RREC"] = 4] = "RREC"; + return SHAPES2; + })(SHAPES || {}); + + 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) { + this.set(p.x, p.y); + return this; + } + copyTo(p) { + p.set(this.x, this.y); + return p; + } + equals(p) { + return p.x === this.x && p.y === this.y; + } + set(x = 0, y = x) { + this.x = x; + this.y = y; + return this; + } + } + + const tempPoints$1 = [new Point(), new Point(), new Point(), new Point()]; + class Rectangle { + constructor(x = 0, y = 0, width = 0, height = 0) { + this.x = Number(x); + this.y = Number(y); + this.width = Number(width); + this.height = Number(height); + this.type = SHAPES.RECT; + } + get left() { + return this.x; + } + get right() { + return this.x + this.width; + } + get top() { + return this.y; + } + get bottom() { + return this.y + this.height; + } + static get EMPTY() { + return new Rectangle(0, 0, 0, 0); + } + clone() { + return new Rectangle(this.x, this.y, this.width, this.height); + } + copyFrom(rectangle) { + this.x = rectangle.x; + this.y = rectangle.y; + this.width = rectangle.width; + this.height = rectangle.height; + return this; + } + copyTo(rectangle) { + rectangle.x = this.x; + rectangle.y = this.y; + rectangle.width = this.width; + rectangle.height = this.height; + return rectangle; + } + contains(x, y) { + if (this.width <= 0 || this.height <= 0) { + return false; + } + if (x >= this.x && x < this.x + this.width) { + if (y >= this.y && y < this.y + this.height) { + return true; + } + } + return false; + } + intersects(other, transform) { + if (!transform) { + const x02 = this.x < other.x ? other.x : this.x; + const x12 = this.right > other.right ? other.right : this.right; + if (x12 <= x02) { + return false; + } + const y02 = this.y < other.y ? other.y : this.y; + const y12 = this.bottom > other.bottom ? other.bottom : this.bottom; + return y12 > y02; + } + const x0 = this.left; + const x1 = this.right; + const y0 = this.top; + const y1 = this.bottom; + if (x1 <= x0 || y1 <= y0) { + return false; + } + const lt = tempPoints$1[0].set(other.left, other.top); + const lb = tempPoints$1[1].set(other.left, other.bottom); + const rt = tempPoints$1[2].set(other.right, other.top); + const rb = tempPoints$1[3].set(other.right, other.bottom); + if (rt.x <= lt.x || lb.y <= lt.y) { + return false; + } + const s = Math.sign(transform.a * transform.d - transform.b * transform.c); + if (s === 0) { + return false; + } + transform.apply(lt, lt); + transform.apply(lb, lb); + transform.apply(rt, rt); + transform.apply(rb, rb); + if (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) { + return false; + } + const nx = s * (lb.y - lt.y); + const ny = s * (lt.x - lb.x); + const n00 = nx * x0 + ny * y0; + const n10 = nx * x1 + ny * y0; + const n01 = nx * x0 + ny * y1; + const n11 = nx * x1 + ny * y1; + if (Math.max(n00, n10, n01, n11) <= nx * lt.x + ny * lt.y || Math.min(n00, n10, n01, n11) >= nx * rb.x + ny * rb.y) { + return false; + } + const mx = s * (lt.y - rt.y); + const my = s * (rt.x - lt.x); + const m00 = mx * x0 + my * y0; + const m10 = mx * x1 + my * y0; + const m01 = mx * x0 + my * y1; + const m11 = mx * x1 + my * y1; + if (Math.max(m00, m10, m01, m11) <= mx * lt.x + my * lt.y || Math.min(m00, m10, m01, m11) >= mx * rb.x + my * rb.y) { + return false; + } + return true; + } + pad(paddingX = 0, paddingY = paddingX) { + this.x -= paddingX; + this.y -= paddingY; + this.width += paddingX * 2; + this.height += paddingY * 2; + return this; + } + fit(rectangle) { + const x1 = Math.max(this.x, rectangle.x); + const x2 = Math.min(this.x + this.width, rectangle.x + rectangle.width); + const y1 = Math.max(this.y, rectangle.y); + const y2 = Math.min(this.y + this.height, rectangle.y + rectangle.height); + this.x = x1; + this.width = Math.max(x2 - x1, 0); + this.y = y1; + this.height = Math.max(y2 - y1, 0); + return this; + } + ceil(resolution = 1, eps = 1e-3) { + const x2 = Math.ceil((this.x + this.width - eps) * resolution) / resolution; + const y2 = Math.ceil((this.y + this.height - eps) * resolution) / resolution; + 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; + return this; + } + enlarge(rectangle) { + const x1 = Math.min(this.x, rectangle.x); + const x2 = Math.max(this.x + this.width, rectangle.x + rectangle.width); + const y1 = Math.min(this.y, rectangle.y); + const y2 = Math.max(this.y + this.height, rectangle.y + rectangle.height); + this.x = x1; + this.width = x2 - x1; + this.y = y1; + this.height = y2 - y1; + return this; + } + } + + class Circle { + constructor(x = 0, y = 0, radius = 0) { + this.x = x; + this.y = y; + this.radius = radius; + this.type = SHAPES.CIRC; + } + clone() { + return new Circle(this.x, this.y, this.radius); + } + contains(x, y) { + if (this.radius <= 0) { + return false; + } + const r2 = this.radius * this.radius; + let dx = this.x - x; + let dy = this.y - y; + dx *= dx; + dy *= dy; + return dx + dy <= r2; + } + getBounds() { + return new Rectangle(this.x - this.radius, this.y - this.radius, this.radius * 2, this.radius * 2); + } + } + + class Ellipse { + constructor(x = 0, y = 0, halfWidth = 0, halfHeight = 0) { + this.x = x; + this.y = y; + this.width = halfWidth; + this.height = halfHeight; + this.type = SHAPES.ELIP; + } + clone() { + return new Ellipse(this.x, this.y, this.width, this.height); + } + contains(x, y) { + if (this.width <= 0 || this.height <= 0) { + return false; + } + let normx = (x - this.x) / this.width; + let normy = (y - this.y) / this.height; + normx *= normx; + normy *= normy; + return normx + normy <= 1; + } + getBounds() { + return new Rectangle(this.x - this.width, this.y - this.height, this.width, this.height); + } + } + + class Polygon { + constructor(...points) { + let flat = Array.isArray(points[0]) ? points[0] : points; + if (typeof flat[0] !== "number") { + const 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.type = SHAPES.POLY; + this.closeStroke = true; + } + clone() { + const points = this.points.slice(); + const polygon = new Polygon(points); + polygon.closeStroke = this.closeStroke; + return polygon; + } + contains(x, y) { + let inside = false; + const length = this.points.length / 2; + for (let i = 0, j = length - 1; i < length; j = i++) { + const xi = this.points[i * 2]; + const yi = this.points[i * 2 + 1]; + const xj = this.points[j * 2]; + const yj = this.points[j * 2 + 1]; + const intersect = yi > y !== yj > y && x < (xj - xi) * ((y - yi) / (yj - yi)) + xi; + if (intersect) { + inside = !inside; + } + } + return inside; + } + } + + class RoundedRectangle { + constructor(x = 0, y = 0, width = 0, height = 0, radius = 20) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.radius = radius; + this.type = SHAPES.RREC; + } + clone() { + return new RoundedRectangle(this.x, this.y, this.width, this.height, this.radius); + } + contains(x, y) { + if (this.width <= 0 || this.height <= 0) { + return false; + } + if (x >= this.x && x <= this.x + this.width) { + if (y >= this.y && y <= this.y + this.height) { + const 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 true; + } + let dx = x - (this.x + radius); + let dy = y - (this.y + radius); + const radius2 = radius * radius; + if (dx * dx + dy * dy <= radius2) { + return true; + } + dx = x - (this.x + this.width - radius); + if (dx * dx + dy * dy <= radius2) { + return true; + } + dy = y - (this.y + this.height - radius); + if (dx * dx + dy * dy <= radius2) { + return true; + } + dx = x - (this.x + radius); + if (dx * dx + dy * dy <= radius2) { + return true; + } + } + } + return false; + } + } + + class ObservablePoint { + constructor(cb, scope, x = 0, y = 0) { + this._x = x; + this._y = y; + this.cb = cb; + this.scope = scope; + } + clone(cb = this.cb, scope = this.scope) { + return new ObservablePoint(cb, scope, this._x, this._y); + } + set(x = 0, y = x) { + if (this._x !== x || this._y !== y) { + this._x = x; + this._y = y; + this.cb.call(this.scope); + } + return this; + } + copyFrom(p) { + if (this._x !== p.x || this._y !== p.y) { + this._x = p.x; + this._y = p.y; + this.cb.call(this.scope); + } + return this; + } + copyTo(p) { + p.set(this._x, this._y); + return p; + } + equals(p) { + return p.x === this._x && p.y === this._y; + } + get x() { + return this._x; + } + set x(value) { + if (this._x !== value) { + this._x = value; + this.cb.call(this.scope); + } + } + get y() { + return this._y; + } + set y(value) { + if (this._y !== value) { + this._y = value; + this.cb.call(this.scope); + } + } + } + + 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) { + this.a = a; + this.b = b; + this.c = c; + this.d = d; + this.tx = tx; + this.ty = ty; + return this; + } + toArray(transpose, out) { + if (!this.array) { + this.array = new Float32Array(9); + } + const array = out || this.array; + if (transpose) { + array[0] = this.a; + array[1] = this.b; + array[2] = 0; + array[3] = this.c; + array[4] = this.d; + array[5] = 0; + array[6] = this.tx; + array[7] = this.ty; + array[8] = 1; + } else { + array[0] = this.a; + array[1] = this.c; + array[2] = this.tx; + array[3] = this.b; + array[4] = this.d; + array[5] = this.ty; + array[6] = 0; + array[7] = 0; + array[8] = 1; + } + return array; + } + apply(pos, newPos) { + newPos = newPos || new Point(); + const x = pos.x; + const y = pos.y; + newPos.x = this.a * x + this.c * y + this.tx; + newPos.y = this.b * x + this.d * y + this.ty; + return newPos; + } + applyInverse(pos, newPos) { + newPos = newPos || new Point(); + const id = 1 / (this.a * this.d + this.c * -this.b); + const x = pos.x; + const y = pos.y; + newPos.x = this.d * id * x + -this.c * id * y + (this.ty * this.c - this.tx * this.d) * id; + newPos.y = this.a * id * y + -this.b * id * x + (-this.ty * this.a + this.tx * this.b) * id; + return newPos; + } + translate(x, y) { + this.tx += x; + this.ty += y; + return this; + } + scale(x, y) { + this.a *= x; + this.d *= y; + this.c *= x; + this.b *= y; + this.tx *= x; + this.ty *= y; + return this; + } + rotate(angle) { + const cos = Math.cos(angle); + const sin = Math.sin(angle); + const a1 = this.a; + const c1 = this.c; + const tx1 = this.tx; + this.a = a1 * cos - this.b * sin; + this.b = a1 * sin + this.b * cos; + this.c = c1 * cos - this.d * sin; + this.d = c1 * sin + this.d * cos; + this.tx = tx1 * cos - this.ty * sin; + this.ty = tx1 * sin + this.ty * cos; + return this; + } + append(matrix) { + const a1 = this.a; + const b1 = this.b; + const c1 = this.c; + const d1 = this.d; + 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; + return this; + } + setTransform(x, y, pivotX, pivotY, scaleX, scaleY, rotation, skewX, skewY) { + 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); + return this; + } + prepend(matrix) { + const tx1 = this.tx; + if (matrix.a !== 1 || matrix.b !== 0 || matrix.c !== 0 || matrix.d !== 1) { + const a1 = this.a; + const 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; + return this; + } + decompose(transform) { + const a = this.a; + const b = this.b; + const c = this.c; + const d = this.d; + const pivot = transform.pivot; + const skewX = -Math.atan2(-c, d); + const skewY = Math.atan2(b, a); + const delta = Math.abs(skewX + skewY); + if (delta < 1e-5 || Math.abs(PI_2 - delta) < 1e-5) { + transform.rotation = skewY; + transform.skew.x = transform.skew.y = 0; + } else { + 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); + return transform; + } + invert() { + const a1 = this.a; + const b1 = this.b; + const c1 = this.c; + const d1 = this.d; + const tx1 = this.tx; + const n = a1 * d1 - b1 * c1; + 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; + return this; + } + identity() { + this.a = 1; + this.b = 0; + this.c = 0; + this.d = 1; + this.tx = 0; + this.ty = 0; + return this; + } + clone() { + const matrix = new Matrix(); + matrix.a = this.a; + matrix.b = this.b; + matrix.c = this.c; + matrix.d = this.d; + matrix.tx = this.tx; + matrix.ty = this.ty; + return matrix; + } + copyTo(matrix) { + matrix.a = this.a; + matrix.b = this.b; + matrix.c = this.c; + matrix.d = this.d; + matrix.tx = this.tx; + matrix.ty = this.ty; + return matrix; + } + copyFrom(matrix) { + this.a = matrix.a; + this.b = matrix.b; + this.c = matrix.c; + this.d = matrix.d; + this.tx = matrix.tx; + this.ty = matrix.ty; + return this; + } + static get IDENTITY() { + return new Matrix(); + } + static get TEMP_MATRIX() { + return new Matrix(); + } + } + + const ux = [1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1]; + const uy = [0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1]; + const vx = [0, -1, -1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 0, -1, -1, -1]; + const vy = [1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, 1, 0, -1]; + const rotationCayley = []; + const rotationMatrices = []; + const signum = Math.sign; + function init() { + for (let i = 0; i < 16; i++) { + const row = []; + rotationCayley.push(row); + for (let j = 0; j < 16; j++) { + const _ux = signum(ux[i] * ux[j] + vx[i] * uy[j]); + const _uy = signum(uy[i] * ux[j] + vy[i] * uy[j]); + const _vx = signum(ux[i] * vx[j] + vx[i] * vy[j]); + const _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++) { + const mat = new Matrix(); + mat.set(ux[i], uy[i], vx[i], vy[i], 0, 0); + rotationMatrices.push(mat); + } + } + init(); + 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) => { + if (rotation & 8) { + return rotation & 15; + } + return -rotation & 7; + }, + add: (rotationSecond, rotationFirst) => rotationCayley[rotationSecond][rotationFirst], + sub: (rotationSecond, rotationFirst) => rotationCayley[rotationSecond][groupD8.inv(rotationFirst)], + rotate180: (rotation) => rotation ^ 4, + isVertical: (rotation) => (rotation & 3) === 2, + byDirection: (dx, dy) => { + if (Math.abs(dx) * 2 <= Math.abs(dy)) { + if (dy >= 0) { + return groupD8.S; + } + return groupD8.N; + } else if (Math.abs(dy) * 2 <= Math.abs(dx)) { + if (dx > 0) { + return groupD8.E; + } + return groupD8.W; + } else if (dy > 0) { + if (dx > 0) { + return groupD8.SE; + } + return groupD8.SW; + } else if (dx > 0) { + return groupD8.NE; + } + return groupD8.NW; + }, + matrixAppendRotationInv: (matrix, rotation, tx = 0, ty = 0) => { + const mat = rotationMatrices[groupD8.inv(rotation)]; + mat.tx = tx; + mat.ty = ty; + matrix.append(mat); + } + }; + + const _Transform = class { + constructor() { + this.worldTransform = new Matrix(); + this.localTransform = new Matrix(); + this.position = new ObservablePoint(this.onChange, this, 0, 0); + this.scale = new ObservablePoint(this.onChange, this, 1, 1); + this.pivot = new ObservablePoint(this.onChange, this, 0, 0); + this.skew = new ObservablePoint(this.updateSkew, this, 0, 0); + this._rotation = 0; + this._cx = 1; + this._sx = 0; + this._cy = 0; + this._sy = 1; + this._localID = 0; + this._currentLocalID = 0; + this._worldID = 0; + this._parentID = 0; + } + onChange() { + this._localID++; + } + 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._localID++; + } + updateLocalTransform() { + const lt = this.localTransform; + if (this._localID !== this._currentLocalID) { + 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._currentLocalID = this._localID; + this._parentID = -1; + } + } + updateTransform(parentTransform) { + const lt = this.localTransform; + if (this._localID !== this._currentLocalID) { + 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._currentLocalID = this._localID; + this._parentID = -1; + } + if (this._parentID !== parentTransform._worldID) { + const pt = parentTransform.worldTransform; + const wt = this.worldTransform; + wt.a = lt.a * pt.a + lt.b * pt.c; + wt.b = lt.a * pt.b + lt.b * pt.d; + wt.c = lt.c * pt.a + lt.d * pt.c; + wt.d = lt.c * pt.b + lt.d * pt.d; + wt.tx = lt.tx * pt.a + lt.ty * pt.c + pt.tx; + wt.ty = lt.tx * pt.b + lt.ty * pt.d + pt.ty; + this._parentID = parentTransform._worldID; + this._worldID++; + } + } + setFromMatrix(matrix) { + matrix.decompose(this); + this._localID++; + } + get rotation() { + return this._rotation; + } + set rotation(value) { + if (this._rotation !== value) { + this._rotation = value; + this.updateSkew(); + } + } + }; + let Transform = _Transform; + Transform.IDENTITY = new _Transform(); + + class Runner { + constructor(name) { + this.items = []; + this._name = name; + this._aliasCount = 0; + } + emit(a0, a1, a2, a3, a4, a5, a6, a7) { + if (arguments.length > 8) { + throw new Error("max arguments reached"); + } + const { name, items } = this; + this._aliasCount++; + for (let i = 0, len = items.length; i < len; i++) { + items[i][name](a0, a1, a2, a3, a4, a5, a6, a7); + } + if (items === this.items) { + this._aliasCount--; + } + return this; + } + ensureNonAliasedItems() { + if (this._aliasCount > 0 && this.items.length > 1) { + this._aliasCount = 0; + this.items = this.items.slice(0); + } + } + add(item) { + if (item[this._name]) { + this.ensureNonAliasedItems(); + this.remove(item); + this.items.push(item); + } + return this; + } + remove(item) { + const index = this.items.indexOf(item); + if (index !== -1) { + this.ensureNonAliasedItems(); + this.items.splice(index, 1); + } + return this; + } + contains(item) { + return this.items.includes(item); + } + removeAll() { + this.ensureNonAliasedItems(); + this.items.length = 0; + return this; + } + destroy() { + this.removeAll(); + this.items = null; + this._name = null; + } + get empty() { + return this.items.length === 0; + } + get name() { + return this._name; + } + } + Object.defineProperties(Runner.prototype, { + dispatch: { value: Runner.prototype.emit }, + run: { value: Runner.prototype.emit } + }); + + settings.TARGET_FPMS = 0.06; + + var UPDATE_PRIORITY = /* @__PURE__ */ ((UPDATE_PRIORITY2) => { + UPDATE_PRIORITY2[UPDATE_PRIORITY2["HIGH"] = 25] = "HIGH"; + UPDATE_PRIORITY2[UPDATE_PRIORITY2["NORMAL"] = 0] = "NORMAL"; + UPDATE_PRIORITY2[UPDATE_PRIORITY2["LOW"] = -25] = "LOW"; + UPDATE_PRIORITY2[UPDATE_PRIORITY2["UTILITY"] = -50] = "UTILITY"; + return UPDATE_PRIORITY2; + })(UPDATE_PRIORITY || {}); + + class TickerListener { + constructor(fn, context = null, priority = 0, once = false) { + this.next = null; + this.previous = null; + this._destroyed = false; + this.fn = fn; + this.context = context; + this.priority = priority; + this.once = once; + } + match(fn, context = null) { + return this.fn === fn && this.context === context; + } + emit(deltaTime) { + if (this.fn) { + if (this.context) { + this.fn.call(this.context, deltaTime); + } else { + this.fn(deltaTime); + } + } + const redirect = this.next; + if (this.once) { + this.destroy(true); + } + if (this._destroyed) { + this.next = null; + } + return redirect; + } + connect(previous) { + this.previous = previous; + if (previous.next) { + previous.next.previous = this; + } + this.next = previous.next; + previous.next = this; + } + destroy(hard = false) { + this._destroyed = true; + this.fn = null; + this.context = null; + if (this.previous) { + this.previous.next = this.next; + } + if (this.next) { + this.next.previous = this.previous; + } + const redirect = this.next; + this.next = hard ? null : redirect; + this.previous = null; + return redirect; + } + } + + class Ticker { + constructor() { + this.autoStart = false; + this.deltaTime = 1; + this.lastTime = -1; + this.speed = 1; + this.started = false; + this._requestId = null; + this._maxElapsedMS = 100; + this._minElapsedMS = 0; + this._protected = false; + this._lastFrame = -1; + this._head = new TickerListener(null, null, Infinity); + this.deltaMS = 1 / settings.TARGET_FPMS; + this.elapsedMS = 1 / settings.TARGET_FPMS; + this._tick = (time) => { + this._requestId = null; + if (this.started) { + this.update(time); + if (this.started && this._requestId === null && this._head.next) { + this._requestId = requestAnimationFrame(this._tick); + } + } + }; + } + _requestIfNeeded() { + if (this._requestId === null && this._head.next) { + this.lastTime = performance.now(); + this._lastFrame = this.lastTime; + this._requestId = requestAnimationFrame(this._tick); + } + } + _cancelIfNeeded() { + if (this._requestId !== null) { + cancelAnimationFrame(this._requestId); + this._requestId = null; + } + } + _startIfPossible() { + if (this.started) { + this._requestIfNeeded(); + } else if (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, true)); + } + _addListener(listener) { + let current = this._head.next; + let previous = this._head; + if (!current) { + listener.connect(previous); + } else { + while (current) { + if (listener.priority > current.priority) { + listener.connect(previous); + break; + } + previous = current; + current = current.next; + } + if (!listener.previous) { + listener.connect(previous); + } + } + this._startIfPossible(); + return this; + } + remove(fn, context) { + let listener = this._head.next; + while (listener) { + if (listener.match(fn, context)) { + listener = listener.destroy(); + } else { + listener = listener.next; + } + } + if (!this._head.next) { + this._cancelIfNeeded(); + } + return this; + } + get count() { + if (!this._head) { + return 0; + } + let count = 0; + let current = this._head; + while (current = current.next) { + count++; + } + return count; + } + start() { + if (!this.started) { + this.started = true; + this._requestIfNeeded(); + } + } + stop() { + if (this.started) { + this.started = false; + this._cancelIfNeeded(); + } + } + destroy() { + if (!this._protected) { + this.stop(); + let listener = this._head.next; + while (listener) { + listener = listener.destroy(true); + } + this._head.destroy(); + this._head = null; + } + } + update(currentTime = performance.now()) { + let elapsedMS; + if (currentTime > this.lastTime) { + elapsedMS = this.elapsedMS = currentTime - this.lastTime; + if (elapsedMS > this._maxElapsedMS) { + elapsedMS = this._maxElapsedMS; + } + elapsedMS *= this.speed; + if (this._minElapsedMS) { + const delta = currentTime - this._lastFrame | 0; + if (delta < this._minElapsedMS) { + return; + } + this._lastFrame = currentTime - delta % this._minElapsedMS; + } + this.deltaMS = elapsedMS; + this.deltaTime = this.deltaMS * settings.TARGET_FPMS; + const head = this._head; + let listener = head.next; + while (listener) { + listener = listener.emit(this.deltaTime); + } + if (!head.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) { + const minFPS = Math.min(this.maxFPS, fps); + const minFPMS = Math.min(Math.max(0, minFPS) / 1e3, settings.TARGET_FPMS); + this._maxElapsedMS = 1 / minFPMS; + } + get maxFPS() { + if (this._minElapsedMS) { + return Math.round(1e3 / this._minElapsedMS); + } + return 0; + } + set maxFPS(fps) { + if (fps === 0) { + this._minElapsedMS = 0; + } else { + const maxFPS = Math.max(this.minFPS, fps); + this._minElapsedMS = 1 / (maxFPS / 1e3); + } + } + static get shared() { + if (!Ticker._shared) { + const shared = Ticker._shared = new Ticker(); + shared.autoStart = true; + shared._protected = true; + } + return Ticker._shared; + } + static get system() { + if (!Ticker._system) { + const system = Ticker._system = new Ticker(); + system.autoStart = true; + system._protected = true; + } + return Ticker._system; + } + } + + class TickerPlugin { + static init(options) { + options = Object.assign({ + autoStart: true, + sharedTicker: false + }, options); + Object.defineProperty(this, "ticker", { + set(ticker) { + if (this._ticker) { + this._ticker.remove(this.render, this); + } + this._ticker = ticker; + if (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(); + if (options.autoStart) { + this.start(); + } + } + static destroy() { + if (this._ticker) { + const oldTicker = this._ticker; + this.ticker = null; + oldTicker.destroy(); + } + } + } + TickerPlugin.extension = ExtensionType.Application; + extensions$1.add(TickerPlugin); + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; + } + + function createCommonjsModule(fn, basedir, module) { + return module = { + path: basedir, + exports: {}, + require: function (path, base) { + return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); + } + }, fn(module, module.exports), module.exports; + } + + function getDefaultExportFromNamespaceIfPresent (n) { + return n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n; + } + + function getDefaultExportFromNamespaceIfNotNamed (n) { + return n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n; + } + + function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var a = Object.defineProperty({}, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; + } + + function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); + } + + var eventemitter3 = createCommonjsModule(function (module) { + 'use strict'; + + var has = Object.prototype.hasOwnProperty + , prefix = '~'; + + /** + * Constructor to create a storage for our `EE` objects. + * An `Events` instance is a plain object whose properties are event names. + * + * @constructor + * @private + */ + function Events() {} + + // + // We try to not inherit from `Object.prototype`. In some engines creating an + // instance in this way is faster than calling `Object.create(null)` directly. + // If `Object.create(null)` is not supported we prefix the event names with a + // character to make sure that the built-in object properties are not + // overridden or used as an attack vector. + // + if (Object.create) { + Events.prototype = Object.create(null); + + // + // This hack is needed because the `__proto__` property is still inherited in + // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5. + // + if (!new Events().__proto__) prefix = false; + } + + /** + * Representation of a single event listener. + * + * @param {Function} fn The listener function. + * @param {*} context The context to invoke the listener with. + * @param {Boolean} [once=false] Specify if the listener is a one-time listener. + * @constructor + * @private + */ + function EE(fn, context, once) { + this.fn = fn; + this.context = context; + this.once = once || false; + } + + /** + * Add a listener for a given event. + * + * @param {EventEmitter} emitter Reference to the `EventEmitter` instance. + * @param {(String|Symbol)} event The event name. + * @param {Function} fn The listener function. + * @param {*} context The context to invoke the listener with. + * @param {Boolean} once Specify if the listener is a one-time listener. + * @returns {EventEmitter} + * @private + */ + function addListener(emitter, event, fn, context, once) { + if (typeof fn !== 'function') { + throw new TypeError('The listener must be a function'); + } + + var listener = new EE(fn, context || emitter, once) + , evt = prefix ? prefix + event : event; + + if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++; + else if (!emitter._events[evt].fn) emitter._events[evt].push(listener); + else emitter._events[evt] = [emitter._events[evt], listener]; + + return emitter; + } + + /** + * Clear event by name. + * + * @param {EventEmitter} emitter Reference to the `EventEmitter` instance. + * @param {(String|Symbol)} evt The Event name. + * @private + */ + function clearEvent(emitter, evt) { + if (--emitter._eventsCount === 0) emitter._events = new Events(); + else delete emitter._events[evt]; + } + + /** + * Minimal `EventEmitter` interface that is molded against the Node.js + * `EventEmitter` interface. + * + * @constructor + * @public + */ + function EventEmitter() { + this._events = new Events(); + this._eventsCount = 0; + } + + /** + * Return an array listing the events for which the emitter has registered + * listeners. + * + * @returns {Array} + * @public + */ + EventEmitter.prototype.eventNames = function eventNames() { + var names = [] + , events + , name; + + if (this._eventsCount === 0) return names; + + for (name in (events = this._events)) { + if (has.call(events, name)) names.push(prefix ? name.slice(1) : name); + } + + if (Object.getOwnPropertySymbols) { + return names.concat(Object.getOwnPropertySymbols(events)); + } + + return names; + }; + + /** + * Return the listeners registered for a given event. + * + * @param {(String|Symbol)} event The event name. + * @returns {Array} The registered listeners. + * @public + */ + EventEmitter.prototype.listeners = function listeners(event) { + var evt = prefix ? prefix + event : event + , handlers = this._events[evt]; + + 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; + }; + + /** + * Return the number of listeners listening to a given event. + * + * @param {(String|Symbol)} event The event name. + * @returns {Number} The number of listeners. + * @public + */ + EventEmitter.prototype.listenerCount = function listenerCount(event) { + var evt = prefix ? prefix + event : event + , listeners = this._events[evt]; + + if (!listeners) return 0; + if (listeners.fn) return 1; + return listeners.length; + }; + + /** + * Calls each of the listeners registered for a given event. + * + * @param {(String|Symbol)} event The event name. + * @returns {Boolean} `true` if the event had listeners, else `false`. + * @public + */ + EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) { + var evt = prefix ? prefix + event : event; + + if (!this._events[evt]) return false; + + var listeners = this._events[evt] + , len = arguments.length + , args + , i; + + if (listeners.fn) { + if (listeners.once) this.removeListener(event, listeners.fn, undefined, true); + + switch (len) { + case 1: return listeners.fn.call(listeners.context), true; + case 2: return listeners.fn.call(listeners.context, a1), true; + case 3: return listeners.fn.call(listeners.context, a1, a2), true; + case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true; + case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true; + case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true; + } + + for (i = 1, args = new Array(len -1); i < len; i++) { + args[i - 1] = arguments[i]; + } + + listeners.fn.apply(listeners.context, args); + } else { + var length = listeners.length + , j; + + for (i = 0; i < length; i++) { + if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true); + + switch (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 true; + }; + + /** + * Add a listener for a given event. + * + * @param {(String|Symbol)} event The event name. + * @param {Function} fn The listener function. + * @param {*} [context=this] The context to invoke the listener with. + * @returns {EventEmitter} `this`. + * @public + */ + EventEmitter.prototype.on = function on(event, fn, context) { + return addListener(this, event, fn, context, false); + }; + + /** + * Add a one-time listener for a given event. + * + * @param {(String|Symbol)} event The event name. + * @param {Function} fn The listener function. + * @param {*} [context=this] The context to invoke the listener with. + * @returns {EventEmitter} `this`. + * @public + */ + EventEmitter.prototype.once = function once(event, fn, context) { + return addListener(this, event, fn, context, true); + }; + + /** + * Remove the listeners of a given event. + * + * @param {(String|Symbol)} event The event name. + * @param {Function} fn Only remove the listeners that match this function. + * @param {*} context Only remove the listeners that have this context. + * @param {Boolean} once Only remove one-time listeners. + * @returns {EventEmitter} `this`. + * @public + */ + EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) { + var evt = prefix ? prefix + event : event; + + if (!this._events[evt]) return this; + if (!fn) { + clearEvent(this, evt); + return this; + } + + var listeners = this._events[evt]; + + if (listeners.fn) { + if ( + listeners.fn === fn && + (!once || listeners.once) && + (!context || listeners.context === context) + ) { + clearEvent(this, evt); + } + } else { + for (var i = 0, events = [], length = listeners.length; i < length; i++) { + if ( + listeners[i].fn !== fn || + (once && !listeners[i].once) || + (context && listeners[i].context !== context) + ) { + events.push(listeners[i]); + } + } + + // + // Reset the array, or remove it completely if we have no more listeners. + // + if (events.length) this._events[evt] = events.length === 1 ? events[0] : events; + else clearEvent(this, evt); + } + + return this; + }; + + /** + * Remove all listeners, or those of the specified event. + * + * @param {(String|Symbol)} [event] The event name. + * @returns {EventEmitter} `this`. + * @public + */ + EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) { + var evt; + + if (event) { + evt = prefix ? prefix + event : event; + if (this._events[evt]) clearEvent(this, evt); + } else { + this._events = new Events(); + this._eventsCount = 0; + } + + return this; + }; + + // + // Alias methods names because people roll like that. + // + EventEmitter.prototype.off = EventEmitter.prototype.removeListener; + EventEmitter.prototype.addListener = EventEmitter.prototype.on; + + // + // Expose the prefix. + // + EventEmitter.prefixed = prefix; + + // + // Allow `EventEmitter` to be imported as module namespace. + // + EventEmitter.EventEmitter = EventEmitter; + + // + // Expose the module. + // + if ('undefined' !== 'object') { + module.exports = EventEmitter; + } + }); + + 'use strict'; + + var earcut_1 = earcut; + var _default = earcut; + + function earcut(data, holeIndices, dim) { + + dim = dim || 2; + + var hasHoles = holeIndices && holeIndices.length, + outerLen = hasHoles ? holeIndices[0] * dim : data.length, + outerNode = linkedList(data, 0, outerLen, dim, true), + triangles = []; + + if (!outerNode || outerNode.next === outerNode.prev) return triangles; + + var minX, minY, maxX, maxY, x, y, invSize; + + if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim); + + // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox + if (data.length > 80 * dim) { + minX = maxX = data[0]; + minY = maxY = data[1]; + + for (var i = dim; i < outerLen; i += dim) { + x = data[i]; + y = data[i + 1]; + if (x < minX) minX = x; + if (y < minY) minY = y; + if (x > maxX) maxX = x; + if (y > maxY) maxY = y; + } + + // minX, minY and invSize are later used to transform coords into integers for z-order calculation + invSize = Math.max(maxX - minX, maxY - minY); + invSize = invSize !== 0 ? 32767 / invSize : 0; + } + + earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0); + + return triangles; + } + + // create a circular doubly linked list from polygon points in the specified winding order + function linkedList(data, start, end, dim, clockwise) { + var i, last; + + if (clockwise === (signedArea(data, start, end, dim) > 0)) { + for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last); + } else { + for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last); + } + + if (last && equals(last, last.next)) { + removeNode(last); + last = last.next; + } + + return last; + } + + // eliminate colinear or duplicate points + function filterPoints(start, end) { + if (!start) return start; + if (!end) end = start; + + var p = start, + again; + do { + again = false; + + if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) { + removeNode(p); + p = end = p.prev; + if (p === p.next) break; + again = true; + + } else { + p = p.next; + } + } while (again || p !== end); + + return end; + } + + // main ear slicing loop which triangulates a polygon (given as a linked list) + function earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) { + if (!ear) return; + + // interlink polygon nodes in z-order + if (!pass && invSize) indexCurve(ear, minX, minY, invSize); + + var stop = ear, + prev, next; + + // iterate through ears, slicing them one by one + while (ear.prev !== ear.next) { + prev = ear.prev; + next = ear.next; + + if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) { + // cut off the triangle + triangles.push(prev.i / dim | 0); + triangles.push(ear.i / dim | 0); + triangles.push(next.i / dim | 0); + + removeNode(ear); + + // skipping the next vertex leads to less sliver triangles + ear = next.next; + stop = next.next; + + continue; + } + + ear = next; + + // if we looped through the whole remaining polygon and can't find any more ears + if (ear === stop) { + // try filtering points and slicing again + if (!pass) { + earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1); + + // if this didn't work, try curing all small self-intersections locally + } else if (pass === 1) { + ear = cureLocalIntersections(filterPoints(ear), triangles, dim); + earcutLinked(ear, triangles, dim, minX, minY, invSize, 2); + + // as a last resort, try splitting the remaining polygon into two + } else if (pass === 2) { + splitEarcut(ear, triangles, dim, minX, minY, invSize); + } + + break; + } + } + } + + // check whether a polygon node forms a valid ear with adjacent nodes + function isEar(ear) { + var a = ear.prev, + b = ear, + c = ear.next; + + if (area(a, b, c) >= 0) return false; // reflex, can't be an ear + + // now make sure we don't have other points inside the potential ear + var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y; + + // triangle bbox; min & max are calculated like this for speed + var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx), + y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy), + x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx), + y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy); + + var p = c.next; + while (p !== a) { + if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && + pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && + area(p.prev, p, p.next) >= 0) return false; + p = p.next; + } + + return true; + } + + function isEarHashed(ear, minX, minY, invSize) { + var a = ear.prev, + b = ear, + c = ear.next; + + if (area(a, b, c) >= 0) return false; // reflex, can't be an ear + + var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y; + + // triangle bbox; min & max are calculated like this for speed + var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx), + y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy), + x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx), + y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy); + + // z-order range for the current triangle bbox; + var minZ = zOrder(x0, y0, minX, minY, invSize), + maxZ = zOrder(x1, y1, minX, minY, invSize); + + var p = ear.prevZ, + n = ear.nextZ; + + // look for points inside the triangle in both directions + while (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(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false; + p = p.prevZ; + + if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && + pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false; + n = n.nextZ; + } + + // look for remaining points in decreasing z-order + while (p && p.z >= minZ) { + if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && + pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false; + p = p.prevZ; + } + + // look for remaining points in increasing z-order + while (n && n.z <= maxZ) { + if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && + pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false; + n = n.nextZ; + } + + return true; + } + + // go through all polygon nodes and cure small local self-intersections + function cureLocalIntersections(start, triangles, dim) { + var p = start; + do { + var a = p.prev, + b = p.next.next; + + if (!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); + + // remove two nodes involved + removeNode(p); + removeNode(p.next); + + p = start = b; + } + p = p.next; + } while (p !== start); + + return filterPoints(p); + } + + // try splitting polygon into two and triangulate them independently + function splitEarcut(start, triangles, dim, minX, minY, invSize) { + // look for a valid diagonal that divides the polygon into two + var a = start; + do { + var b = a.next.next; + while (b !== a.prev) { + if (a.i !== b.i && isValidDiagonal(a, b)) { + // split the polygon in two by the diagonal + var c = splitPolygon(a, b); + + // filter colinear points around the cuts + a = filterPoints(a, a.next); + c = filterPoints(c, c.next); + + // run earcut on each half + earcutLinked(a, triangles, dim, minX, minY, invSize, 0); + earcutLinked(c, triangles, dim, minX, minY, invSize, 0); + return; + } + b = b.next; + } + a = a.next; + } while (a !== start); + } + + // link every hole into the outer loop, producing a single-ring polygon without holes + function eliminateHoles(data, holeIndices, outerNode, dim) { + var queue = [], + i, len, start, end, list; + + for (i = 0, len = holeIndices.length; i < len; i++) { + start = holeIndices[i] * dim; + end = i < len - 1 ? holeIndices[i + 1] * dim : data.length; + list = linkedList(data, start, end, dim, false); + if (list === list.next) list.steiner = true; + queue.push(getLeftmost(list)); + } + + queue.sort(compareX); + + // process holes from left to right + for (i = 0; i < queue.length; i++) { + outerNode = eliminateHole(queue[i], outerNode); + } + + return outerNode; + } + + function compareX(a, b) { + return a.x - b.x; + } + + // find a bridge between vertices that connects hole with an outer ring and and link it + function eliminateHole(hole, outerNode) { + var bridge = findHoleBridge(hole, outerNode); + if (!bridge) { + return outerNode; + } + + var bridgeReverse = splitPolygon(bridge, hole); + + // filter collinear points around the cuts + filterPoints(bridgeReverse, bridgeReverse.next); + return filterPoints(bridge, bridge.next); + } + + // David Eberly's algorithm for finding a bridge between hole and outer polygon + function findHoleBridge(hole, outerNode) { + var p = outerNode, + hx = hole.x, + hy = hole.y, + qx = -Infinity, + m; + + // find a segment intersected by a ray from the hole's leftmost point to the left; + // segment's endpoint with lesser x will be potential connection point + 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 && x > qx) { + qx = x; + m = p.x < p.next.x ? p : p.next; + if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint + } + } + p = p.next; + } while (p !== outerNode); + + if (!m) return null; + + // look for points inside the triangle of hole point, segment intersection and endpoint; + // if there are no points found, we have a valid connection; + // otherwise choose the point of the minimum angle with the ray as connection point + + var stop = m, + mx = m.x, + my = m.y, + tanMin = Infinity, + tan; + + p = m; + + do { + if (hx >= p.x && p.x >= mx && hx !== p.x && + pointInTriangle(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); // tangential + + if (locallyInside(p, hole) && + (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) { + m = p; + tanMin = tan; + } + } + + p = p.next; + } while (p !== stop); + + return m; + } + + // whether sector in vertex m contains sector in vertex p in the same coordinates + function sectorContainsSector(m, p) { + return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0; + } + + // interlink polygon nodes in z-order + function indexCurve(start, minX, minY, invSize) { + var p = start; + do { + if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize); + p.prevZ = p.prev; + p.nextZ = p.next; + p = p.next; + } while (p !== start); + + p.prevZ.nextZ = null; + p.prevZ = null; + + sortLinked(p); + } + + // Simon Tatham's linked list merge sort algorithm + // http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html + function sortLinked(list) { + var i, p, q, e, tail, numMerges, pSize, qSize, + inSize = 1; + + do { + p = list; + list = null; + tail = null; + numMerges = 0; + + while (p) { + numMerges++; + q = p; + pSize = 0; + for (i = 0; i < inSize; i++) { + pSize++; + q = q.nextZ; + if (!q) break; + } + qSize = inSize; + + while (pSize > 0 || (qSize > 0 && q)) { + + if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) { + e = p; + p = p.nextZ; + pSize--; + } else { + e = q; + q = q.nextZ; + qSize--; + } + + if (tail) tail.nextZ = e; + else list = e; + + e.prevZ = tail; + tail = e; + } + + p = q; + } + + tail.nextZ = null; + inSize *= 2; + + } while (numMerges > 1); + + return list; + } + + // z-order of a point given coords and inverse of the longer side of data bbox + function zOrder(x, y, minX, minY, invSize) { + // coords are transformed into non-negative 15-bit integer range + x = (x - minX) * invSize | 0; + y = (y - minY) * invSize | 0; + + x = (x | (x << 8)) & 0x00FF00FF; + x = (x | (x << 4)) & 0x0F0F0F0F; + x = (x | (x << 2)) & 0x33333333; + x = (x | (x << 1)) & 0x55555555; + + y = (y | (y << 8)) & 0x00FF00FF; + y = (y | (y << 4)) & 0x0F0F0F0F; + y = (y | (y << 2)) & 0x33333333; + y = (y | (y << 1)) & 0x55555555; + + return x | (y << 1); + } + + // find the leftmost node of a polygon ring + function getLeftmost(start) { + var p = start, + leftmost = start; + do { + if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p; + p = p.next; + } while (p !== start); + + return leftmost; + } + + // check if a point lies within a convex triangle + function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) { + return (cx - px) * (ay - py) >= (ax - px) * (cy - py) && + (ax - px) * (by - py) >= (bx - px) * (ay - py) && + (bx - px) * (cy - py) >= (cx - px) * (by - py); + } + + // check if a diagonal between two polygon nodes is valid (lies in polygon interior) + function isValidDiagonal(a, b) { + return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges + (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible + (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors + equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case + } + + // signed area of a triangle + function area(p, q, r) { + return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); + } + + // check if two points are equal + function equals(p1, p2) { + return p1.x === p2.x && p1.y === p2.y; + } + + // check if two segments intersect + function intersects(p1, q1, p2, q2) { + var o1 = sign$1(area(p1, q1, p2)); + var o2 = sign$1(area(p1, q1, q2)); + var o3 = sign$1(area(p2, q2, p1)); + var o4 = sign$1(area(p2, q2, q1)); + + if (o1 !== o2 && o3 !== o4) return true; // general case + + if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1 + if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1 + if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2 + if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2 + + return false; + } + + // for collinear points p, q, r, check if point q lies on segment pr + 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$1(num) { + return num > 0 ? 1 : num < 0 ? -1 : 0; + } + + // check if a polygon diagonal intersects any polygon segments + function intersectsPolygon(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 true; + p = p.next; + } while (p !== a); + + return false; + } + + // check if a polygon diagonal is locally inside the polygon + function locallyInside(a, b) { + return area(a.prev, a, a.next) < 0 ? + area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : + area(a, b, a.prev) < 0 || area(a, a.next, b) < 0; + } + + // check if the middle point of a polygon diagonal is inside the polygon + function middleInside(a, b) { + var p = a, + inside = false, + px = (a.x + b.x) / 2, + py = (a.y + b.y) / 2; + do { + if (((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; + } while (p !== a); + + return inside; + } + + // link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two; + // if one belongs to the outer ring and another to a hole, it merges it into a single ring + 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; + + a.next = b; + b.prev = a; + + a2.next = an; + an.prev = a2; + + b2.next = a2; + a2.prev = b2; + + bp.next = b2; + b2.prev = bp; + + return b2; + } + + // create a node and optionally link it with previous one (in a circular doubly linked list) + function insertNode(i, x, y, last) { + var p = new Node(i, x, y); + + if (!last) { + p.prev = p; + p.next = p; + + } else { + p.next = last.next; + p.prev = last; + last.next.prev = p; + last.next = p; + } + return p; + } + + function removeNode(p) { + p.next.prev = p.prev; + p.prev.next = p.next; + + if (p.prevZ) p.prevZ.nextZ = p.nextZ; + if (p.nextZ) p.nextZ.prevZ = p.prevZ; + } + + function Node(i, x, y) { + // vertex index in coordinates array + this.i = i; + + // vertex coordinates + this.x = x; + this.y = y; + + // previous and next vertex nodes in a polygon ring + this.prev = null; + this.next = null; + + // z-order curve value + this.z = 0; + + // previous and next nodes in z-order + this.prevZ = null; + this.nextZ = null; + + // indicates whether this is a steiner point + this.steiner = false; + } + + // return a percentage difference between the polygon area and its triangulation area; + // used to verify correctness of triangulation + earcut.deviation = function (data, holeIndices, dim, triangles) { + var hasHoles = holeIndices && holeIndices.length; + var outerLen = hasHoles ? holeIndices[0] * dim : data.length; + + var 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; + var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length; + polygonArea -= Math.abs(signedArea(data, start, end, dim)); + } + } + + var trianglesArea = 0; + for (i = 0; i < triangles.length; i += 3) { + var a = triangles[i] * dim; + var b = triangles[i + 1] * dim; + var c = triangles[i + 2] * dim; + trianglesArea += Math.abs( + (data[a] - data[c]) * (data[b + 1] - data[a + 1]) - + (data[a] - data[b]) * (data[c + 1] - data[a + 1])); + } + + return polygonArea === 0 && trianglesArea === 0 ? 0 : + Math.abs((trianglesArea - polygonArea) / polygonArea); + }; + + function signedArea(data, start, end, dim) { + var sum = 0; + for (var i = start, j = end - dim; i < end; i += dim) { + sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]); + j = i; + } + return sum; + } + + // turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts + earcut.flatten = function (data) { + var dim = data[0][0].length, + result = {vertices: [], holes: [], dimensions: dim}, + holeIndex = 0; + + for (var 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]); + } + if (i > 0) { + holeIndex += data[i - 1].length; + result.holes.push(holeIndex); + } + } + return result; + }; + earcut_1.default = _default; + + var punycode = createCommonjsModule(function (module, exports) { + /*! https://mths.be/punycode v1.3.2 by @mathias */ + ;(function(root) { + + /** Detect free variables */ + var freeExports = 'object' == 'object' && exports && + !exports.nodeType && exports; + var freeModule = 'object' == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + /** + * The `punycode` object. + * @name punycode + * @type Object + */ + var punycode, + + /** Highest positive signed 32-bit float value */ + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + /** Bootstring parameters */ + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + /** Regular expressions */ + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + /** Error messages */ + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + /** Convenience shortcuts */ + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + /** Temporary variable */ + key; + + /*--------------------------------------------------------------------------*/ + + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error(type) { + throw RangeError(errors[type]); + } + + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * http://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + function decode(input) { + // Don't use UCS-2 + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + /** Cached calculation results */ + baseMinusT; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); + + // Cache the length + inputLength = input.length; + + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; + + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + /*--------------------------------------------------------------------------*/ + + /** Define the public API */ + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '1.3.2', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + /** Expose `punycode` */ + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + typeof undefined == 'function' && + typeof undefined.amd == 'object' && + undefined.amd + ) { + undefined('punycode', function() { + return punycode; + }); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+ + freeModule.exports = punycode; + } else { // in Narwhal or RingoJS v0.7.0- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { // in Rhino or a web browser + root.punycode = punycode; + } + + }(commonjsGlobal)); + }); + + 'use strict'; + + var util = { + isString: function(arg) { + return typeof(arg) === 'string'; + }, + isObject: function(arg) { + return typeof(arg) === 'object' && arg !== null; + }, + isNull: function(arg) { + return arg === null; + }, + isNullOrUndefined: function(arg) { + return arg == null; + } + }; + + // Copyright Joyent, Inc. and other Node contributors. + // + // Permission is hereby granted, free of charge, to any person obtaining a + // copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to permit + // persons to whom the Software is furnished to do so, subject to the + // following conditions: + // + // The above copyright notice and this permission notice shall be included + // in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + // USE OR OTHER DEALINGS IN THE SOFTWARE. + + 'use strict'; + + // If obj.hasOwnProperty has been overridden, then calling + // obj.hasOwnProperty(prop) will break. + // See: https://github.com/joyent/node/issues/1707 + function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + } + + var decode = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + // maxKeys <= 0 means that we should not limit keys count + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (Array.isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; + }; + + // Copyright Joyent, Inc. and other Node contributors. + // + // Permission is hereby granted, free of charge, to any person obtaining a + // copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to permit + // persons to whom the Software is furnished to do so, subject to the + // following conditions: + // + // The above copyright notice and this permission notice shall be included + // in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + // USE OR OTHER DEALINGS IN THE SOFTWARE. + + 'use strict'; + + var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } + }; + + var encode = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return Object.keys(obj).map(function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (Array.isArray(obj[k])) { + return obj[k].map(function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); + }; + + var querystring = createCommonjsModule(function (module, exports) { + 'use strict'; + + exports.decode = exports.parse = decode; + exports.encode = exports.stringify = encode; + }); + + // Copyright Joyent, Inc. and other Node contributors. + // + // Permission is hereby granted, free of charge, to any person obtaining a + // copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to permit + // persons to whom the Software is furnished to do so, subject to the + // following conditions: + // + // The above copyright notice and this permission notice shall be included + // in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + // USE OR OTHER DEALINGS IN THE SOFTWARE. + + 'use strict'; + + + + + var parse = urlParse; + var resolve = urlResolve; + var resolveObject = urlResolveObject; + var format = urlFormat; + + var Url_1 = Url; + + function Url() { + this.protocol = null; + this.slashes = null; + this.auth = null; + this.host = null; + this.port = null; + this.hostname = null; + this.hash = null; + this.search = null; + this.query = null; + this.pathname = null; + this.path = null; + this.href = null; + } + + // Reference: RFC 3986, RFC 1808, RFC 2396 + + // define these here so at least they only have to be + // compiled once on the first module load. + var protocolPattern = /^([a-z0-9.+-]+:)/i, + portPattern = /:[0-9]*$/, + + // Special case for a simple path URL + simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, + + // RFC 2396: characters reserved for delimiting URLs. + // We actually just auto-escape these. + delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], + + // RFC 2396: characters not allowed for various reasons. + unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), + + // Allowed by RFCs, but cause of XSS attacks. Always escape these. + autoEscape = ['\''].concat(unwise), + // Characters that are never ever allowed in a hostname. + // Note that any invalid chars are also handled, but these + // are the ones that are *expected* to be seen, so we fast-path + // them. + nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), + hostEndingChars = ['/', '?', '#'], + hostnameMaxLen = 255, + hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, + // protocols that can allow "unsafe" and "unwise" chars. + unsafeProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that never have a hostname. + hostlessProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that always contain a // bit. + slashedProtocol = { + 'http': true, + 'https': true, + 'ftp': true, + 'gopher': true, + 'file': true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }; + + function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && util.isObject(url) && url instanceof Url) return url; + + var u = new Url; + u.parse(url, parseQueryString, slashesDenoteHost); + return u; + } + + Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { + if (!util.isString(url)) { + throw new TypeError("Parameter 'url' must be a string, not " + typeof url); + } + + // Copy chrome, IE, opera backslash-handling behavior. + // Back slashes before the query string get converted to forward slashes + // See: https://code.google.com/p/chromium/issues/detail?id=25916 + var queryIndex = url.indexOf('?'), + splitter = + (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#', + uSplit = url.split(splitter), + slashRegex = /\\/g; + uSplit[0] = uSplit[0].replace(slashRegex, '/'); + url = uSplit.join(splitter); + + var rest = url; + + // trim before proceeding. + // This is to support parse stuff like " http://foo.com \n" + rest = rest.trim(); + + if (!slashesDenoteHost && url.split('#').length === 1) { + // Try fast path regexp + var simplePath = simplePathPattern.exec(rest); + if (simplePath) { + this.path = rest; + this.href = rest; + this.pathname = simplePath[1]; + if (simplePath[2]) { + this.search = simplePath[2]; + if (parseQueryString) { + this.query = querystring.parse(this.search.substr(1)); + } else { + this.query = this.search.substr(1); + } + } else if (parseQueryString) { + this.search = ''; + this.query = {}; + } + return this; + } + } + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + // figure out if it's got a host + // user@server is *always* interpreted as a hostname, and url + // resolution will treat //foo/bar as host=foo,path=bar because that's + // how the browser resolves relative URLs. + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + + if (!hostlessProtocol[proto] && + (slashes || (proto && !slashedProtocol[proto]))) { + + // there's a hostname. + // the first instance of /, ?, ;, or # ends the host. + // + // If there is an @ in the hostname, then non-host chars *are* allowed + // to the left of the last @ sign, unless some host-ending character + // comes *before* the @-sign. + // URLs are obnoxious. + // + // ex: + // http://a@b@c/ => user:a@b host:c + // http://a@b?@c => user:a host:c path:/?@c + + // v0.12 TODO(isaacs): This is not quite how Chrome does things. + // Review our test case against browsers more comprehensively. + + // find the first instance of any hostEndingChars + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + + // at this point, either we have an explicit point where the + // auth portion cannot go past, or the last @ char is the decider. + var auth, atSign; + if (hostEnd === -1) { + // atSign can be anywhere. + atSign = rest.lastIndexOf('@'); + } else { + // atSign must be in auth portion. + // http://a@b/c@d => host:b auth:a path:/c@d + atSign = rest.lastIndexOf('@', hostEnd); + } + + // Now we have a portion which is definitely the auth. + // Pull that off. + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + // the host is the remaining to the left of the first non-host char + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + // if we still have not hit it, then the entire thing is a host. + if (hostEnd === -1) + hostEnd = rest.length; + + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + // pull out port. + this.parseHost(); + + // we've indicated that there is a hostname, + // so even if it's empty, it has to be present. + this.hostname = this.hostname || ''; + + // if hostname begins with [ and ends with ] + // assume that it's an IPv6 address. + var ipv6Hostname = this.hostname[0] === '[' && + this.hostname[this.hostname.length - 1] === ']'; + + // validate a little. + if (!ipv6Hostname) { + var hostparts = this.hostname.split(/\./); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) continue; + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + // we replace non-ASCII char with a temporary placeholder + // we need this to make sure size of hostname is not + // broken by replacing non-ASCII by nothing + newpart += 'x'; + } else { + newpart += part[j]; + } + } + // we test again with ASCII char only + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; + } + } + } + } + + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + // hostnames are always lower case. + this.hostname = this.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + // IDNA Support: Returns a punycoded representation of "domain". + // It only converts parts of the domain name that + // have non-ASCII characters, i.e. it doesn't matter if + // you call it with a domain that already is ASCII-only. + this.hostname = punycode.toASCII(this.hostname); + } + + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + // strip [ and ] from the hostname + // the host field still retains them, though + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + // now rest is set to the post-host stuff. + // chop off any delim chars. + if (!unsafeProtocol[lowerProto]) { + + // First, make 100% sure that any "autoEscape" chars get + // escaped, even if encodeURIComponent doesn't think they + // need to be. + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + if (rest.indexOf(ae) === -1) + continue; + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + + // chop off from the tail first. + var hash = rest.indexOf('#'); + if (hash !== -1) { + // got a fragment string. + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + // no query string, but parseQueryString still requested + this.search = ''; + this.query = {}; + } + if (rest) this.pathname = rest; + if (slashedProtocol[lowerProto] && + this.hostname && !this.pathname) { + this.pathname = '/'; + } + + //to support http.request + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + // finally, reconstruct the href based on what has been validated. + this.href = this.format(); + return this; + }; + + // format a parsed object into a url string + function urlFormat(obj) { + // ensure it's an object, and not a string url. + // If it's an obj, this is a no-op. + // this way, you can call url_format() on strings + // to clean up potentially wonky urls. + if (util.isString(obj)) obj = urlParse(obj); + if (!(obj instanceof Url)) return Url.prototype.format.call(obj); + return obj.format(); + } + + Url.prototype.format = function() { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; + + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? + this.hostname : + '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } + + if (this.query && + util.isObject(this.query) && + Object.keys(this.query).length) { + query = querystring.stringify(this.query); + } + + var search = this.search || (query && ('?' + query)) || ''; + + if (protocol && protocol.substr(-1) !== ':') protocol += ':'; + + // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. + // unless they had them to begin with. + if (this.slashes || + (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') hash = '#' + hash; + if (search && search.charAt(0) !== '?') search = '?' + search; + + pathname = pathname.replace(/[?#]/g, function(match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; + }; + + function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); + } + + Url.prototype.resolve = function(relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); + }; + + function urlResolveObject(source, relative) { + if (!source) return relative; + return urlParse(source, false, true).resolveObject(relative); + } + + Url.prototype.resolveObject = function(relative) { + if (util.isString(relative)) { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + var tkeys = Object.keys(this); + for (var tk = 0; tk < tkeys.length; tk++) { + var tkey = tkeys[tk]; + result[tkey] = this[tkey]; + } + + // hash is always overridden, no matter what. + // even href="" will remove it. + result.hash = relative.hash; + + // if the relative url is empty, then there's nothing left to do here. + if (relative.href === '') { + result.href = result.format(); + return result; + } + + // hrefs like //foo/bar always cut to the protocol. + if (relative.slashes && !relative.protocol) { + // take everything except the protocol from relative + var rkeys = Object.keys(relative); + for (var rk = 0; rk < rkeys.length; rk++) { + var rkey = rkeys[rk]; + if (rkey !== 'protocol') + result[rkey] = relative[rkey]; + } + + //urlParse appends trailing / to urls like http://www.example.com + if (slashedProtocol[result.protocol] && + result.hostname && !result.pathname) { + result.path = result.pathname = '/'; + } + + result.href = result.format(); + return result; + } + + if (relative.protocol && relative.protocol !== result.protocol) { + // if it's a known url protocol, then changing + // the protocol does weird things + // first, if it's not file:, then we MUST have a host, + // and if there was a path + // to begin with, then we MUST have a path. + // if it is file:, then the host is dropped, + // because that's known to be hostless. + // anything else is assumed to be absolute. + if (!slashedProtocol[relative.protocol]) { + var keys = Object.keys(relative); + for (var v = 0; v < keys.length; v++) { + var k = keys[v]; + result[k] = relative[k]; + } + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())); + if (!relative.host) relative.host = ''; + if (!relative.hostname) relative.hostname = ''; + if (relPath[0] !== '') relPath.unshift(''); + if (relPath.length < 2) relPath.unshift(''); + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + // to support http.request + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), + isRelAbs = ( + relative.host || + relative.pathname && relative.pathname.charAt(0) === '/' + ), + mustEndAbs = (isRelAbs || isSourceAbs || + (result.host && relative.pathname)), + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + relPath = relative.pathname && relative.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + // if the url is a non-slashed url, then relative + // links like ../.. should be able + // to crawl up to the hostname, as well. This is strange. + // result.protocol has already been set by now. + // Later on, put the first path part into the host field. + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') srcPath[0] = result.host; + else srcPath.unshift(result.host); + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') relPath[0] = relative.host; + else relPath.unshift(relative.host); + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + + if (isRelAbs) { + // it's absolute. + result.host = (relative.host || relative.host === '') ? + relative.host : result.host; + result.hostname = (relative.hostname || relative.hostname === '') ? + relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + // fall through to the dot-handling below. + } else if (relPath.length) { + // it's relative + // throw away the existing file, and take the new path instead. + if (!srcPath) srcPath = []; + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (!util.isNullOrUndefined(relative.search)) { + // just pull out the search. + // like href='?foo'. + // Put this after the other two cases because it simplifies the booleans + if (psychotic) { + result.hostname = result.host = srcPath.shift(); + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + result.search = relative.search; + result.query = relative.query; + //to support http.request + if (!util.isNull(result.pathname) || !util.isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + // no path at all. easy. + // we've already handled the other stuff above. + result.pathname = null; + //to support http.request + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + // if a url ENDs in . or .., then it must get a trailing slash. + // however, if it ends in anything else non-slashy, + // then it must NOT get a trailing slash. + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = ( + (result.host || relative.host || srcPath.length > 1) && + (last === '.' || last === '..') || last === ''); + + // strip single dots, resolve double dots to parent dir + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last === '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && + (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || + (srcPath[0] && srcPath[0].charAt(0) === '/'); + + // put the host back + if (psychotic) { + result.hostname = result.host = isAbsolute ? '' : + srcPath.length ? srcPath.shift() : ''; + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (!srcPath.length) { + result.pathname = null; + result.path = null; + } else { + result.pathname = srcPath.join('/'); + } + + //to support request.http + if (!util.isNull(result.pathname) || !util.isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + }; + + Url.prototype.parseHost = function() { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) this.hostname = host; + }; + + var url$1 = { + parse: parse, + resolve: resolve, + resolveObject: resolveObject, + format: format, + Url: Url_1 + }; + + const url = { + parse: parse, + format: format, + resolve: resolve + }; + + function assertPath(path2) { + if (typeof path2 !== "string") { + throw new TypeError(`Path must be a string. Received ${JSON.stringify(path2)}`); + } + } + function removeUrlParams(url) { + const re = url.split("?")[0]; + return re.split("#")[0]; + } + function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + } + function replaceAll(str, find, replace) { + return str.replace(new RegExp(escapeRegExp(find), "g"), replace); + } + function normalizeStringPosix(path2, allowAboveRoot) { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code; + for (let i = 0; i <= path2.length; ++i) { + if (i < path2.length) { + code = path2.charCodeAt(i); + } else if (code === 47) { + break; + } else { + code = 47; + } + if (code === 47) { + if (lastSlash === i - 1 || dots === 1) { + } else if (lastSlash !== i - 1 && dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf("/"); + if (lastSlashIndex !== res.length - 1) { + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf("/"); + } + lastSlash = i; + dots = 0; + continue; + } + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) { + res += "/.."; + } else { + res = ".."; + } + lastSegmentLength = 2; + } + } else { + if (res.length > 0) { + res += `/${path2.slice(lastSlash + 1, i)}`; + } else { + res = path2.slice(lastSlash + 1, i); + } + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === 46 && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; + } + const path = { + toPosix(path2) { + return replaceAll(path2, "\\", "/"); + }, + 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); + }, + hasProtocol(path2) { + return /^[^/:]+:\//.test(this.toPosix(path2)); + }, + getProtocol(path2) { + assertPath(path2); + path2 = this.toPosix(path2); + let protocol = ""; + const isFile = /^file:\/\/\//.exec(path2); + const isHttp = /^[^/:]+:\/\//.exec(path2); + const isWindows = /^[^/:]+:\//.exec(path2); + if (isFile || isHttp || isWindows) { + const arr = isFile?.[0] || isHttp?.[0] || isWindows?.[0]; + protocol = arr; + path2 = path2.slice(arr.length); + } + return protocol; + }, + toAbsolute(url, customBaseUrl, customRootUrl) { + if (this.isDataUrl(url)) + return url; + const baseUrl = removeUrlParams(this.toPosix(customBaseUrl ?? settings.ADAPTER.getBaseUrl())); + const rootUrl = removeUrlParams(this.toPosix(customRootUrl ?? this.rootname(baseUrl))); + assertPath(url); + url = this.toPosix(url); + if (url.startsWith("/")) { + return path.join(rootUrl, url.slice(1)); + } + const absolutePath = this.isAbsolute(url) ? url : this.join(baseUrl, url); + return absolutePath; + }, + normalize(path2) { + path2 = this.toPosix(path2); + assertPath(path2); + if (path2.length === 0) + return "."; + let protocol = ""; + const isAbsolute = path2.startsWith("/"); + if (this.hasProtocol(path2)) { + protocol = this.rootname(path2); + path2 = path2.slice(protocol.length); + } + const trailingSeparator = path2.endsWith("/"); + path2 = normalizeStringPosix(path2, false); + if (path2.length > 0 && trailingSeparator) + path2 += "/"; + if (isAbsolute) + return `/${path2}`; + return protocol + path2; + }, + isAbsolute(path2) { + assertPath(path2); + path2 = this.toPosix(path2); + if (this.hasProtocol(path2)) + return true; + return path2.startsWith("/"); + }, + join(...segments) { + if (segments.length === 0) { + return "."; + } + let joined; + for (let i = 0; i < segments.length; ++i) { + const arg = segments[i]; + assertPath(arg); + if (arg.length > 0) { + if (joined === void 0) + joined = arg; + else { + const prevArg = segments[i - 1] ?? ""; + if (this.extname(prevArg)) { + joined += `/../${arg}`; + } else { + joined += `/${arg}`; + } + } + } + } + if (joined === void 0) { + return "."; + } + return this.normalize(joined); + }, + dirname(path2) { + assertPath(path2); + if (path2.length === 0) + return "."; + path2 = this.toPosix(path2); + let code = path2.charCodeAt(0); + const hasRoot = code === 47; + let end = -1; + let matchedSlash = true; + const proto = this.getProtocol(path2); + const origpath = path2; + path2 = path2.slice(proto.length); + for (let i = path2.length - 1; i >= 1; --i) { + code = path2.charCodeAt(i); + if (code === 47) { + if (!matchedSlash) { + end = i; + break; + } + } else { + matchedSlash = false; + } + } + if (end === -1) + return hasRoot ? "/" : this.isUrl(origpath) ? proto + path2 : proto; + if (hasRoot && end === 1) + return "//"; + return proto + path2.slice(0, end); + }, + rootname(path2) { + assertPath(path2); + path2 = this.toPosix(path2); + let root = ""; + if (path2.startsWith("/")) + root = "/"; + else { + root = this.getProtocol(path2); + } + if (this.isUrl(path2)) { + const index = path2.indexOf("/", root.length); + if (index !== -1) { + root = path2.slice(0, index); + } else + root = path2; + if (!root.endsWith("/")) + root += "/"; + } + return root; + }, + basename(path2, ext) { + assertPath(path2); + if (ext) + assertPath(ext); + path2 = this.toPosix(path2); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + if (ext !== void 0 && ext.length > 0 && ext.length <= path2.length) { + if (ext.length === path2.length && ext === path2) + return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path2.length - 1; i >= 0; --i) { + const code = path2.charCodeAt(i); + if (code === 47) { + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + end = i; + } + } else { + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) + end = firstNonSlashEnd; + else if (end === -1) + end = path2.length; + return path2.slice(start, end); + } + for (i = path2.length - 1; i >= 0; --i) { + if (path2.charCodeAt(i) === 47) { + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) + return ""; + return path2.slice(start, end); + }, + extname(path2) { + assertPath(path2); + path2 = this.toPosix(path2); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let preDotState = 0; + for (let i = path2.length - 1; i >= 0; --i) { + const code = path2.charCodeAt(i); + if (code === 47) { + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + matchedSlash = false; + end = i + 1; + } + if (code === 46) { + if (startDot === -1) + startDot = i; + else if (preDotState !== 1) + preDotState = 1; + } else if (startDot !== -1) { + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path2.slice(startDot, end); + }, + parse(path2) { + assertPath(path2); + const ret = { root: "", dir: "", base: "", ext: "", name: "" }; + if (path2.length === 0) + return ret; + path2 = this.toPosix(path2); + let code = path2.charCodeAt(0); + const isAbsolute = this.isAbsolute(path2); + let start; + const protocol = ""; + ret.root = this.rootname(path2); + if (isAbsolute || this.hasProtocol(path2)) { + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path2.length - 1; + let preDotState = 0; + for (; i >= start; --i) { + code = path2.charCodeAt(i); + if (code === 47) { + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + matchedSlash = false; + end = i + 1; + } + if (code === 46) { + if (startDot === -1) + startDot = i; + else if (preDotState !== 1) + preDotState = 1; + } else if (startDot !== -1) { + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) + ret.base = ret.name = path2.slice(1, end); + else + ret.base = ret.name = path2.slice(startPart, end); + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path2.slice(1, startDot); + ret.base = path2.slice(1, end); + } else { + ret.name = path2.slice(startPart, startDot); + ret.base = path2.slice(startPart, end); + } + ret.ext = path2.slice(startDot, end); + } + ret.dir = this.dirname(path2); + if (protocol) + ret.dir = protocol + ret.dir; + return ret; + }, + sep: "/", + delimiter: ":" + }; + + settings.RETINA_PREFIX = /@([0-9\.]+)x/; + settings.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT = false; + + function skipHello() { + } + function sayHello() { + } + + let supported; + function isWebGLSupported() { + if (typeof supported === "undefined") { + supported = function supported2() { + const contextOptions = { + stencil: true, + failIfMajorPerformanceCaveat: settings.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT + }; + try { + if (!settings.ADAPTER.getWebGLRenderingContext()) { + return false; + } + const canvas = settings.ADAPTER.createCanvas(); + let gl = canvas.getContext("webgl", contextOptions) || canvas.getContext("experimental-webgl", contextOptions); + const success = !!(gl && gl.getContextAttributes().stencil); + if (gl) { + const loseContext = gl.getExtension("WEBGL_lose_context"); + if (loseContext) { + loseContext.loseContext(); + } + } + gl = null; + return success; + } catch (e) { + return false; + } + }(); + } + return supported; + } + + var aliceblue = "#f0f8ff"; + var antiquewhite = "#faebd7"; + var aqua = "#00ffff"; + var aquamarine = "#7fffd4"; + var azure = "#f0ffff"; + var beige = "#f5f5dc"; + var bisque = "#ffe4c4"; + var black = "#000000"; + var blanchedalmond = "#ffebcd"; + var blue = "#0000ff"; + var blueviolet = "#8a2be2"; + var brown = "#a52a2a"; + var burlywood = "#deb887"; + var cadetblue = "#5f9ea0"; + var chartreuse = "#7fff00"; + var chocolate = "#d2691e"; + var coral = "#ff7f50"; + var cornflowerblue = "#6495ed"; + var cornsilk = "#fff8dc"; + var crimson = "#dc143c"; + var cyan = "#00ffff"; + var darkblue = "#00008b"; + var darkcyan = "#008b8b"; + var darkgoldenrod = "#b8860b"; + var darkgray = "#a9a9a9"; + var darkgreen = "#006400"; + var darkgrey = "#a9a9a9"; + var darkkhaki = "#bdb76b"; + var darkmagenta = "#8b008b"; + var darkolivegreen = "#556b2f"; + var darkorange = "#ff8c00"; + var darkorchid = "#9932cc"; + var darkred = "#8b0000"; + var darksalmon = "#e9967a"; + var darkseagreen = "#8fbc8f"; + var darkslateblue = "#483d8b"; + var darkslategray = "#2f4f4f"; + var darkslategrey = "#2f4f4f"; + var darkturquoise = "#00ced1"; + var darkviolet = "#9400d3"; + var deeppink = "#ff1493"; + var deepskyblue = "#00bfff"; + var dimgray = "#696969"; + var dimgrey = "#696969"; + var dodgerblue = "#1e90ff"; + var firebrick = "#b22222"; + var floralwhite = "#fffaf0"; + var forestgreen = "#228b22"; + var fuchsia = "#ff00ff"; + var gainsboro = "#dcdcdc"; + var ghostwhite = "#f8f8ff"; + var goldenrod = "#daa520"; + var gold = "#ffd700"; + var gray = "#808080"; + var green = "#008000"; + var greenyellow = "#adff2f"; + var grey = "#808080"; + var honeydew = "#f0fff0"; + var hotpink = "#ff69b4"; + var indianred = "#cd5c5c"; + var indigo = "#4b0082"; + var ivory = "#fffff0"; + var khaki = "#f0e68c"; + var lavenderblush = "#fff0f5"; + var lavender = "#e6e6fa"; + var lawngreen = "#7cfc00"; + var lemonchiffon = "#fffacd"; + var lightblue = "#add8e6"; + var lightcoral = "#f08080"; + var lightcyan = "#e0ffff"; + var lightgoldenrodyellow = "#fafad2"; + var lightgray = "#d3d3d3"; + var lightgreen = "#90ee90"; + var lightgrey = "#d3d3d3"; + var lightpink = "#ffb6c1"; + var lightsalmon = "#ffa07a"; + var lightseagreen = "#20b2aa"; + var lightskyblue = "#87cefa"; + var lightslategray = "#778899"; + var lightslategrey = "#778899"; + var lightsteelblue = "#b0c4de"; + var lightyellow = "#ffffe0"; + var lime = "#00ff00"; + var limegreen = "#32cd32"; + var linen = "#faf0e6"; + var magenta = "#ff00ff"; + var maroon = "#800000"; + var mediumaquamarine = "#66cdaa"; + var mediumblue = "#0000cd"; + var mediumorchid = "#ba55d3"; + var mediumpurple = "#9370db"; + var mediumseagreen = "#3cb371"; + var mediumslateblue = "#7b68ee"; + var mediumspringgreen = "#00fa9a"; + var mediumturquoise = "#48d1cc"; + var mediumvioletred = "#c71585"; + var midnightblue = "#191970"; + var mintcream = "#f5fffa"; + var mistyrose = "#ffe4e1"; + var moccasin = "#ffe4b5"; + var navajowhite = "#ffdead"; + var navy = "#000080"; + var oldlace = "#fdf5e6"; + var olive = "#808000"; + var olivedrab = "#6b8e23"; + var orange = "#ffa500"; + var orangered = "#ff4500"; + var orchid = "#da70d6"; + var palegoldenrod = "#eee8aa"; + var palegreen = "#98fb98"; + var paleturquoise = "#afeeee"; + var palevioletred = "#db7093"; + var papayawhip = "#ffefd5"; + var peachpuff = "#ffdab9"; + var peru = "#cd853f"; + var pink = "#ffc0cb"; + var plum = "#dda0dd"; + var powderblue = "#b0e0e6"; + var purple = "#800080"; + var rebeccapurple = "#663399"; + var red = "#ff0000"; + var rosybrown = "#bc8f8f"; + var royalblue = "#4169e1"; + var saddlebrown = "#8b4513"; + var salmon = "#fa8072"; + var sandybrown = "#f4a460"; + var seagreen = "#2e8b57"; + var seashell = "#fff5ee"; + var sienna = "#a0522d"; + var silver = "#c0c0c0"; + var skyblue = "#87ceeb"; + var slateblue = "#6a5acd"; + var slategray = "#708090"; + var slategrey = "#708090"; + var snow = "#fffafa"; + var springgreen = "#00ff7f"; + var steelblue = "#4682b4"; + var tan = "#d2b48c"; + var teal = "#008080"; + var thistle = "#d8bfd8"; + var tomato = "#ff6347"; + var turquoise = "#40e0d0"; + var violet = "#ee82ee"; + var wheat = "#f5deb3"; + var white = "#ffffff"; + var whitesmoke = "#f5f5f5"; + var yellow = "#ffff00"; + var yellowgreen = "#9acd32"; + var cssColorNames = { + aliceblue: aliceblue, + antiquewhite: antiquewhite, + aqua: aqua, + aquamarine: aquamarine, + azure: azure, + beige: beige, + bisque: bisque, + black: black, + blanchedalmond: blanchedalmond, + blue: blue, + blueviolet: blueviolet, + brown: brown, + burlywood: burlywood, + cadetblue: cadetblue, + chartreuse: chartreuse, + chocolate: chocolate, + coral: coral, + cornflowerblue: cornflowerblue, + cornsilk: cornsilk, + crimson: crimson, + cyan: cyan, + darkblue: darkblue, + darkcyan: darkcyan, + darkgoldenrod: darkgoldenrod, + darkgray: darkgray, + darkgreen: darkgreen, + darkgrey: darkgrey, + darkkhaki: darkkhaki, + darkmagenta: darkmagenta, + darkolivegreen: darkolivegreen, + darkorange: darkorange, + darkorchid: darkorchid, + darkred: darkred, + darksalmon: darksalmon, + darkseagreen: darkseagreen, + darkslateblue: darkslateblue, + darkslategray: darkslategray, + darkslategrey: darkslategrey, + darkturquoise: darkturquoise, + darkviolet: darkviolet, + deeppink: deeppink, + deepskyblue: deepskyblue, + dimgray: dimgray, + dimgrey: dimgrey, + dodgerblue: dodgerblue, + firebrick: firebrick, + floralwhite: floralwhite, + forestgreen: forestgreen, + fuchsia: fuchsia, + gainsboro: gainsboro, + ghostwhite: ghostwhite, + goldenrod: goldenrod, + gold: gold, + gray: gray, + green: green, + greenyellow: greenyellow, + grey: grey, + honeydew: honeydew, + hotpink: hotpink, + indianred: indianred, + indigo: indigo, + ivory: ivory, + khaki: khaki, + lavenderblush: lavenderblush, + lavender: lavender, + lawngreen: lawngreen, + lemonchiffon: lemonchiffon, + lightblue: lightblue, + lightcoral: lightcoral, + lightcyan: lightcyan, + lightgoldenrodyellow: lightgoldenrodyellow, + lightgray: lightgray, + lightgreen: lightgreen, + lightgrey: lightgrey, + lightpink: lightpink, + lightsalmon: lightsalmon, + lightseagreen: lightseagreen, + lightskyblue: lightskyblue, + lightslategray: lightslategray, + lightslategrey: lightslategrey, + lightsteelblue: lightsteelblue, + lightyellow: lightyellow, + lime: lime, + limegreen: limegreen, + linen: linen, + magenta: magenta, + maroon: maroon, + mediumaquamarine: mediumaquamarine, + mediumblue: mediumblue, + mediumorchid: mediumorchid, + mediumpurple: mediumpurple, + mediumseagreen: mediumseagreen, + mediumslateblue: mediumslateblue, + mediumspringgreen: mediumspringgreen, + mediumturquoise: mediumturquoise, + mediumvioletred: mediumvioletred, + midnightblue: midnightblue, + mintcream: mintcream, + mistyrose: mistyrose, + moccasin: moccasin, + navajowhite: navajowhite, + navy: navy, + oldlace: oldlace, + olive: olive, + olivedrab: olivedrab, + orange: orange, + orangered: orangered, + orchid: orchid, + palegoldenrod: palegoldenrod, + palegreen: palegreen, + paleturquoise: paleturquoise, + palevioletred: palevioletred, + papayawhip: papayawhip, + peachpuff: peachpuff, + peru: peru, + pink: pink, + plum: plum, + powderblue: powderblue, + purple: purple, + rebeccapurple: rebeccapurple, + red: red, + rosybrown: rosybrown, + royalblue: royalblue, + saddlebrown: saddlebrown, + salmon: salmon, + sandybrown: sandybrown, + seagreen: seagreen, + seashell: seashell, + sienna: sienna, + silver: silver, + skyblue: skyblue, + slateblue: slateblue, + slategray: slategray, + slategrey: slategrey, + snow: snow, + springgreen: springgreen, + steelblue: steelblue, + tan: tan, + teal: teal, + thistle: thistle, + tomato: tomato, + turquoise: turquoise, + violet: violet, + wheat: wheat, + white: white, + whitesmoke: whitesmoke, + yellow: yellow, + yellowgreen: yellowgreen + }; + + function hex2rgb(hex, out = []) { + out[0] = (hex >> 16 & 255) / 255; + out[1] = (hex >> 8 & 255) / 255; + out[2] = (hex & 255) / 255; + return out; + } + function hex2string(hex) { + let hexString = hex.toString(16); + hexString = "000000".substring(0, 6 - hexString.length) + hexString; + return `#${hexString}`; + } + function string2hex(string) { + if (typeof string === "string") { + string = cssColorNames[string.toLowerCase()] || string; + if (string[0] === "#") { + string = string.slice(1); + } + if (string.length === 3) { + const [r, g, b] = string; + string = r + r + g + g + b + b; + } + } + return parseInt(string, 16); + } + function rgb2hex(rgb) { + return (rgb[0] * 255 << 16) + (rgb[1] * 255 << 8) + (rgb[2] * 255 | 0); + } + + function mapPremultipliedBlendModes() { + const pm = []; + const npm = []; + for (let i = 0; i < 32; i++) { + pm[i] = i; + npm[i] = i; + } + pm[BLEND_MODES.NORMAL_NPM] = BLEND_MODES.NORMAL; + pm[BLEND_MODES.ADD_NPM] = BLEND_MODES.ADD; + pm[BLEND_MODES.SCREEN_NPM] = BLEND_MODES.SCREEN; + npm[BLEND_MODES.NORMAL] = BLEND_MODES.NORMAL_NPM; + npm[BLEND_MODES.ADD] = BLEND_MODES.ADD_NPM; + npm[BLEND_MODES.SCREEN] = BLEND_MODES.SCREEN_NPM; + const array = []; + array.push(npm); + array.push(pm); + return array; + } + const premultiplyBlendMode = mapPremultipliedBlendModes(); + function correctBlendMode(blendMode, premultiplied) { + return premultiplyBlendMode[premultiplied ? 1 : 0][blendMode]; + } + function premultiplyRgba(rgb, alpha, out, premultiply) { + out = out || new Float32Array(4); + if (premultiply || premultiply === void 0) { + out[0] = rgb[0] * alpha; + out[1] = rgb[1] * alpha; + out[2] = rgb[2] * alpha; + } else { + out[0] = rgb[0]; + out[1] = rgb[1]; + out[2] = rgb[2]; + } + out[3] = alpha; + return out; + } + function premultiplyTint(tint, alpha) { + if (alpha === 1) { + return (alpha * 255 << 24) + tint; + } + if (alpha === 0) { + return 0; + } + let R = tint >> 16 & 255; + let G = tint >> 8 & 255; + let B = tint & 255; + R = R * alpha + 0.5 | 0; + G = G * alpha + 0.5 | 0; + B = B * alpha + 0.5 | 0; + return (alpha * 255 << 24) + (R << 16) + (G << 8) + B; + } + function premultiplyTintToRgba(tint, alpha, out, premultiply) { + out = out || new Float32Array(4); + out[0] = (tint >> 16 & 255) / 255; + out[1] = (tint >> 8 & 255) / 255; + out[2] = (tint & 255) / 255; + if (premultiply || premultiply === void 0) { + out[0] *= alpha; + out[1] *= alpha; + out[2] *= alpha; + } + out[3] = alpha; + return out; + } + + function createIndicesForQuads(size, outBuffer = null) { + const totalIndices = size * 6; + outBuffer = outBuffer || new Uint16Array(totalIndices); + if (outBuffer.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 getBufferType(array) { + if (array.BYTES_PER_ELEMENT === 4) { + if (array instanceof Float32Array) { + return "Float32Array"; + } else if (array instanceof Uint32Array) { + return "Uint32Array"; + } + return "Int32Array"; + } else if (array.BYTES_PER_ELEMENT === 2) { + if (array instanceof Uint16Array) { + return "Uint16Array"; + } + } else if (array.BYTES_PER_ELEMENT === 1) { + if (array instanceof Uint8Array) { + return "Uint8Array"; + } + } + return null; + } + + const map$2 = { Float32Array, Uint32Array, Int32Array, Uint8Array }; + function interleaveTypedArrays$1(arrays, sizes) { + let outSize = 0; + let stride = 0; + const views = {}; + for (let i = 0; i < arrays.length; i++) { + stride += sizes[i]; + outSize += arrays[i].length; + } + const buffer = new ArrayBuffer(outSize * 4); + let out = null; + let littleOffset = 0; + for (let i = 0; i < arrays.length; i++) { + const size = sizes[i]; + const array = arrays[i]; + const type = getBufferType(array); + if (!views[type]) { + views[type] = new map$2[type](buffer); + } + out = views[type]; + for (let j = 0; j < array.length; j++) { + const indexStart = (j / size | 0) * stride + littleOffset; + const index = j % size; + out[indexStart + index] = array[j]; + } + littleOffset += size; + } + return new Float32Array(buffer); + } + + function nextPow2(v) { + v += v === 0 ? 1 : 0; + --v; + v |= v >>> 1; + v |= v >>> 2; + v |= v >>> 4; + v |= v >>> 8; + v |= v >>> 16; + return v + 1; + } + function isPow2(v) { + return !(v & v - 1) && !!v; + } + function log2(v) { + let r = (v > 65535 ? 1 : 0) << 4; + v >>>= r; + let shift = (v > 255 ? 1 : 0) << 3; + v >>>= shift; + r |= shift; + shift = (v > 15 ? 1 : 0) << 2; + v >>>= shift; + r |= shift; + shift = (v > 3 ? 1 : 0) << 1; + v >>>= shift; + r |= shift; + return r | v >> 1; + } + + function removeItems(arr, startIdx, removeCount) { + const length = arr.length; + let i; + if (startIdx >= length || removeCount === 0) { + return; + } + removeCount = startIdx + removeCount > length ? length - startIdx : removeCount; + const len = length - removeCount; + for (i = startIdx; i < len; ++i) { + arr[i] = arr[i + removeCount]; + } + arr.length = len; + } + + function sign(n) { + if (n === 0) + return 0; + return n < 0 ? -1 : 1; + } + + let nextUid = 0; + function uid() { + return ++nextUid; + } + + const warnings = {}; + function deprecation(version, message, ignoreDepth = 3) { + if (warnings[message]) { + return; + } + let stack = new Error().stack; + if (typeof stack === "undefined") { + console.warn("PixiJS Deprecation Warning: ", `${message} +Deprecated since v${version}`); + } else { + stack = stack.split("\n").splice(ignoreDepth).join("\n"); + if (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(); + } else { + console.warn("PixiJS Deprecation Warning: ", `${message} +Deprecated since v${version}`); + console.warn(stack); + } + } + warnings[message] = true; + } + + const ProgramCache = {}; + const TextureCache = /* @__PURE__ */ Object.create(null); + const BaseTextureCache = /* @__PURE__ */ Object.create(null); + function destroyTextureCache() { + let key; + for (key in TextureCache) { + TextureCache[key].destroy(); + } + for (key in BaseTextureCache) { + BaseTextureCache[key].destroy(); + } + } + function clearTextureCache() { + let key; + for (key in TextureCache) { + delete TextureCache[key]; + } + for (key in BaseTextureCache) { + delete BaseTextureCache[key]; + } + } + + class CanvasRenderTarget { + constructor(width, height, resolution) { + this.canvas = settings.ADAPTER.createCanvas(); + this.context = this.canvas.getContext("2d"); + this.resolution = resolution || settings.RESOLUTION; + this.resize(width, height); + } + clear() { + this.context.setTransform(1, 0, 0, 1, 0, 0); + this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); + } + resize(desiredWidth, desiredHeight) { + this.canvas.width = Math.round(desiredWidth * this.resolution); + this.canvas.height = Math.round(desiredHeight * this.resolution); + } + destroy() { + this.context = null; + this.canvas = null; + } + get width() { + return this.canvas.width; + } + set width(val) { + this.canvas.width = Math.round(val); + } + get height() { + return this.canvas.height; + } + set height(val) { + this.canvas.height = Math.round(val); + } + } + + function trimCanvas(canvas) { + let width = canvas.width; + let height = canvas.height; + const context = canvas.getContext("2d", { + willReadFrequently: true + }); + const imageData = context.getImageData(0, 0, width, height); + const pixels = imageData.data; + const len = pixels.length; + const bound = { + top: null, + left: null, + right: null, + bottom: null + }; + let data = null; + let i; + let x; + let y; + for (i = 0; i < len; i += 4) { + if (pixels[i + 3] !== 0) { + x = i / 4 % width; + y = ~~(i / 4 / width); + if (bound.top === null) { + bound.top = y; + } + if (bound.left === null) { + bound.left = x; + } else if (x < bound.left) { + bound.left = x; + } + if (bound.right === null) { + bound.right = x + 1; + } else if (bound.right < x) { + bound.right = x + 1; + } + if (bound.bottom === null) { + bound.bottom = y; + } else if (bound.bottom < y) { + bound.bottom = y; + } + } + } + if (bound.top !== null) { + width = bound.right - bound.left; + height = bound.bottom - bound.top + 1; + data = context.getImageData(bound.left, bound.top, width, height); + } + return { + height, + width, + data + }; + } + + const DATA_URI = /^\s*data:(?:([\w-]+)\/([\w+.-]+))?(?:;charset=([\w-]+))?(?:;(base64))?,(.*)/i; + + function decomposeDataUri(dataUri) { + const dataUriMatch = DATA_URI.exec(dataUri); + if (dataUriMatch) { + return { + mediaType: dataUriMatch[1] ? dataUriMatch[1].toLowerCase() : void 0, + subType: dataUriMatch[2] ? dataUriMatch[2].toLowerCase() : void 0, + charset: dataUriMatch[3] ? dataUriMatch[3].toLowerCase() : void 0, + encoding: dataUriMatch[4] ? dataUriMatch[4].toLowerCase() : void 0, + data: dataUriMatch[5] + }; + } + return void 0; + } + + let tempAnchor; + function determineCrossOrigin(url$1, loc = globalThis.location) { + if (url$1.startsWith("data:")) { + return ""; + } + loc = loc || globalThis.location; + if (!tempAnchor) { + tempAnchor = document.createElement("a"); + } + tempAnchor.href = url$1; + const parsedUrl = url.parse(tempAnchor.href); + const samePort = !parsedUrl.port && loc.port === "" || parsedUrl.port === loc.port; + if (parsedUrl.hostname !== loc.hostname || !samePort || parsedUrl.protocol !== loc.protocol) { + return "anonymous"; + } + return ""; + } + + function getResolutionOfUrl(url, defaultValue = 1) { + const resolution = settings.RETINA_PREFIX.exec(url); + if (resolution) { + return parseFloat(resolution[1]); + } + return defaultValue; + } + + var index = { + __proto__: null, + isMobile: isMobile, + EventEmitter: eventemitter3, + earcut: earcut_1, + url: url, + path: path, + sayHello: sayHello, + skipHello: skipHello, + isWebGLSupported: isWebGLSupported, + hex2rgb: hex2rgb, + hex2string: hex2string, + rgb2hex: rgb2hex, + string2hex: string2hex, + correctBlendMode: correctBlendMode, + premultiplyBlendMode: premultiplyBlendMode, + premultiplyRgba: premultiplyRgba, + premultiplyTint: premultiplyTint, + premultiplyTintToRgba: premultiplyTintToRgba, + createIndicesForQuads: createIndicesForQuads, + getBufferType: getBufferType, + interleaveTypedArrays: interleaveTypedArrays$1, + isPow2: isPow2, + log2: log2, + nextPow2: nextPow2, + removeItems: removeItems, + sign: sign, + uid: uid, + deprecation: deprecation, + BaseTextureCache: BaseTextureCache, + ProgramCache: ProgramCache, + TextureCache: TextureCache, + clearTextureCache: clearTextureCache, + destroyTextureCache: destroyTextureCache, + CanvasRenderTarget: CanvasRenderTarget, + trimCanvas: trimCanvas, + decomposeDataUri: decomposeDataUri, + determineCrossOrigin: determineCrossOrigin, + getResolutionOfUrl: getResolutionOfUrl, + DATA_URI: DATA_URI + }; + + const INSTALLED = []; + function autoDetectResource(source, options) { + if (!source) { + return null; + } + let extension = ""; + if (typeof source === "string") { + const result = /\.(\w{3,4})(?:$|\?|#)/i.exec(source); + if (result) { + extension = result[1].toLowerCase(); + } + } + for (let i = INSTALLED.length - 1; i >= 0; --i) { + const ResourcePlugin = INSTALLED[i]; + if (ResourcePlugin.test && ResourcePlugin.test(source, extension)) { + return new ResourcePlugin(source, options); + } + } + throw new Error("Unrecognized source type to auto-detect Resource"); + } + + class Resource { + constructor(width = 0, height = 0) { + this._width = width; + this._height = height; + this.destroyed = false; + this.internal = false; + this.onResize = new Runner("setRealSize"); + this.onUpdate = new Runner("update"); + this.onError = new Runner("onError"); + } + bind(baseTexture) { + this.onResize.add(baseTexture); + this.onUpdate.add(baseTexture); + this.onError.add(baseTexture); + if (this._width || this._height) { + this.onResize.emit(this._width, this._height); + } + } + unbind(baseTexture) { + this.onResize.remove(baseTexture); + this.onUpdate.remove(baseTexture); + this.onError.remove(baseTexture); + } + resize(width, height) { + if (width !== this._width || height !== this._height) { + this._width = width; + this._height = height; + this.onResize.emit(width, height); + } + } + get valid() { + return !!this._width && !!this._height; + } + update() { + if (!this.destroyed) { + this.onUpdate.emit(); + } + } + load() { + return Promise.resolve(this); + } + get width() { + return this._width; + } + get height() { + return this._height; + } + style(_renderer, _baseTexture, _glTexture) { + return false; + } + dispose() { + } + destroy() { + if (!this.destroyed) { + this.destroyed = true; + this.dispose(); + this.onError.removeAll(); + this.onError = null; + this.onResize.removeAll(); + this.onResize = null; + this.onUpdate.removeAll(); + this.onUpdate = null; + } + } + static test(_source, _extension) { + return false; + } + } + + class BufferResource extends Resource { + constructor(source, options) { + const { width, height } = options || {}; + if (!width || !height) { + throw new Error("BufferResource width or height invalid"); + } + super(width, height); + this.data = source; + } + upload(renderer, baseTexture, glTexture) { + const gl = renderer.gl; + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK); + const width = baseTexture.realWidth; + const height = baseTexture.realHeight; + if (glTexture.width === width && glTexture.height === height) { + gl.texSubImage2D(baseTexture.target, 0, 0, 0, width, height, baseTexture.format, glTexture.type, this.data); + } else { + glTexture.width = width; + glTexture.height = height; + gl.texImage2D(baseTexture.target, 0, glTexture.internalFormat, width, height, 0, baseTexture.format, glTexture.type, this.data); + } + return true; + } + dispose() { + this.data = null; + } + static test(source) { + return source instanceof Float32Array || source instanceof Uint8Array || source instanceof Uint32Array; + } + } + + const defaultBufferOptions = { + scaleMode: SCALE_MODES.NEAREST, + format: FORMATS.RGBA, + alphaMode: ALPHA_MODES.NPM + }; + const _BaseTexture = class extends eventemitter3 { + constructor(resource = null, options = null) { + super(); + options = options || {}; + const { + alphaMode, + mipmap, + anisotropicLevel, + scaleMode, + width, + height, + wrapMode, + format, + type, + target, + resolution, + resourceOptions + } = options; + if (resource && !(resource instanceof Resource)) { + resource = autoDetectResource(resource, resourceOptions); + resource.internal = true; + } + this.resolution = resolution || settings.RESOLUTION; + this.width = Math.round((width || 0) * this.resolution) / this.resolution; + this.height = Math.round((height || 0) * this.resolution) / this.resolution; + this._mipmap = mipmap ?? settings.MIPMAP_TEXTURES; + this.anisotropicLevel = anisotropicLevel ?? settings.ANISOTROPIC_LEVEL; + this._wrapMode = wrapMode || settings.WRAP_MODE; + this._scaleMode = scaleMode ?? settings.SCALE_MODE; + this.format = format || FORMATS.RGBA; + this.type = type || TYPES.UNSIGNED_BYTE; + this.target = target || TARGETS.TEXTURE_2D; + this.alphaMode = alphaMode ?? ALPHA_MODES.UNPACK; + this.uid = uid(); + this.touched = 0; + this.isPowerOfTwo = false; + this._refreshPOT(); + this._glTextures = {}; + this.dirtyId = 0; + this.dirtyStyleId = 0; + this.cacheId = null; + this.valid = width > 0 && height > 0; + this.textureCacheIds = []; + this.destroyed = false; + this.resource = null; + this._batchEnabled = 0; + this._batchLocation = 0; + this.parentTextureArray = null; + this.setResource(resource); + } + get realWidth() { + return Math.round(this.width * this.resolution); + } + get realHeight() { + return Math.round(this.height * this.resolution); + } + get mipmap() { + return this._mipmap; + } + set mipmap(value) { + if (this._mipmap !== value) { + this._mipmap = value; + this.dirtyStyleId++; + } + } + get scaleMode() { + return this._scaleMode; + } + set scaleMode(value) { + if (this._scaleMode !== value) { + this._scaleMode = value; + this.dirtyStyleId++; + } + } + get wrapMode() { + return this._wrapMode; + } + set wrapMode(value) { + if (this._wrapMode !== value) { + this._wrapMode = value; + this.dirtyStyleId++; + } + } + setStyle(scaleMode, mipmap) { + let dirty; + if (scaleMode !== void 0 && scaleMode !== this.scaleMode) { + this.scaleMode = scaleMode; + dirty = true; + } + if (mipmap !== void 0 && mipmap !== this.mipmap) { + this.mipmap = mipmap; + dirty = true; + } + if (dirty) { + this.dirtyStyleId++; + } + return this; + } + setSize(desiredWidth, desiredHeight, resolution) { + resolution = resolution || this.resolution; + return this.setRealSize(desiredWidth * resolution, desiredHeight * resolution, resolution); + } + setRealSize(realWidth, realHeight, resolution) { + this.resolution = resolution || this.resolution; + this.width = Math.round(realWidth) / this.resolution; + this.height = Math.round(realHeight) / this.resolution; + this._refreshPOT(); + this.update(); + return this; + } + _refreshPOT() { + this.isPowerOfTwo = isPow2(this.realWidth) && isPow2(this.realHeight); + } + setResolution(resolution) { + const oldResolution = this.resolution; + if (oldResolution === resolution) { + return this; + } + this.resolution = resolution; + if (this.valid) { + this.width = Math.round(this.width * oldResolution) / resolution; + this.height = Math.round(this.height * oldResolution) / resolution; + this.emit("update", this); + } + this._refreshPOT(); + return this; + } + setResource(resource) { + if (this.resource === resource) { + return this; + } + if (this.resource) { + throw new Error("Resource can be set only once"); + } + resource.bind(this); + this.resource = resource; + return this; + } + update() { + if (!this.valid) { + if (this.width > 0 && this.height > 0) { + this.valid = true; + this.emit("loaded", this); + this.emit("update", this); + } + } else { + this.dirtyId++; + this.dirtyStyleId++; + this.emit("update", this); + } + } + onError(event) { + this.emit("error", this, event); + } + destroy() { + if (this.resource) { + this.resource.unbind(this); + if (this.resource.internal) { + this.resource.destroy(); + } + this.resource = null; + } + if (this.cacheId) { + delete BaseTextureCache[this.cacheId]; + delete TextureCache[this.cacheId]; + this.cacheId = null; + } + this.dispose(); + _BaseTexture.removeFromCache(this); + this.textureCacheIds = null; + this.destroyed = true; + } + dispose() { + this.emit("dispose", this); + } + castToBaseTexture() { + return this; + } + static from(source, options, strict = settings.STRICT_TEXTURE_CACHE) { + const isFrame = typeof source === "string"; + let cacheId = null; + if (isFrame) { + cacheId = source; + } else { + if (!source._pixiId) { + const prefix = options?.pixiIdPrefix || "pixiid"; + source._pixiId = `${prefix}_${uid()}`; + } + cacheId = source._pixiId; + } + let baseTexture = BaseTextureCache[cacheId]; + if (isFrame && strict && !baseTexture) { + throw new Error(`The cacheId "${cacheId}" does not exist in BaseTextureCache.`); + } + if (!baseTexture) { + baseTexture = new _BaseTexture(source, options); + baseTexture.cacheId = cacheId; + _BaseTexture.addToCache(baseTexture, cacheId); + } + return baseTexture; + } + static fromBuffer(buffer, width, height, options) { + buffer = buffer || new Float32Array(width * height * 4); + const resource = new BufferResource(buffer, { width, height }); + const type = buffer instanceof Float32Array ? TYPES.FLOAT : TYPES.UNSIGNED_BYTE; + return new _BaseTexture(resource, Object.assign({}, defaultBufferOptions, options || { width, height, type })); + } + static addToCache(baseTexture, id) { + if (id) { + if (!baseTexture.textureCacheIds.includes(id)) { + baseTexture.textureCacheIds.push(id); + } + if (BaseTextureCache[id]) { + console.warn(`BaseTexture added to the cache with an id [${id}] that already had an entry`); + } + BaseTextureCache[id] = baseTexture; + } + } + static removeFromCache(baseTexture) { + if (typeof baseTexture === "string") { + const baseTextureFromCache = BaseTextureCache[baseTexture]; + if (baseTextureFromCache) { + const index = baseTextureFromCache.textureCacheIds.indexOf(baseTexture); + if (index > -1) { + baseTextureFromCache.textureCacheIds.splice(index, 1); + } + delete BaseTextureCache[baseTexture]; + return baseTextureFromCache; + } + } else if (baseTexture?.textureCacheIds) { + for (let i = 0; i < baseTexture.textureCacheIds.length; ++i) { + delete BaseTextureCache[baseTexture.textureCacheIds[i]]; + } + baseTexture.textureCacheIds.length = 0; + return baseTexture; + } + return null; + } + }; + let BaseTexture = _BaseTexture; + BaseTexture._globalBatch = 0; + + class AbstractMultiResource extends Resource { + constructor(length, options) { + const { width, height } = options || {}; + super(width, height); + this.items = []; + this.itemDirtyIds = []; + for (let i = 0; i < length; i++) { + const partTexture = new BaseTexture(); + this.items.push(partTexture); + this.itemDirtyIds.push(-2); + } + this.length = length; + this._load = null; + this.baseTexture = null; + } + initFromArray(resources, options) { + for (let i = 0; i < this.length; i++) { + if (!resources[i]) { + continue; + } + if (resources[i].castToBaseTexture) { + this.addBaseTextureAt(resources[i].castToBaseTexture(), i); + } else if (resources[i] instanceof Resource) { + this.addResourceAt(resources[i], i); + } else { + this.addResourceAt(autoDetectResource(resources[i], options), i); + } + } + } + dispose() { + for (let i = 0, len = this.length; i < len; i++) { + this.items[i].destroy(); + } + this.items = null; + this.itemDirtyIds = null; + this._load = null; + } + addResourceAt(resource, index) { + if (!this.items[index]) { + throw new Error(`Index ${index} is out of bounds`); + } + if (resource.valid && !this.valid) { + this.resize(resource.width, resource.height); + } + this.items[index].setResource(resource); + return this; + } + bind(baseTexture) { + if (this.baseTexture !== null) { + throw new Error("Only one base texture per TextureArray is allowed"); + } + super.bind(baseTexture); + for (let i = 0; i < this.length; i++) { + this.items[i].parentTextureArray = baseTexture; + this.items[i].on("update", baseTexture.update, baseTexture); + } + } + unbind(baseTexture) { + super.unbind(baseTexture); + for (let i = 0; i < this.length; i++) { + this.items[i].parentTextureArray = null; + this.items[i].off("update", baseTexture.update, baseTexture); + } + } + load() { + if (this._load) { + return this._load; + } + const resources = this.items.map((item) => item.resource).filter((item) => item); + const promises = resources.map((item) => item.load()); + this._load = Promise.all(promises).then(() => { + const { realWidth, realHeight } = this.items[0]; + this.resize(realWidth, realHeight); + return Promise.resolve(this); + }); + return this._load; + } + } + + class ArrayResource extends AbstractMultiResource { + constructor(source, options) { + const { width, height } = options || {}; + let urls; + let length; + if (Array.isArray(source)) { + urls = source; + length = source.length; + } else { + length = source; + } + super(length, { width, height }); + if (urls) { + this.initFromArray(urls, options); + } + } + addBaseTextureAt(baseTexture, index) { + if (baseTexture.resource) { + this.addResourceAt(baseTexture.resource, index); + } else { + throw new Error("ArrayResource does not support RenderTexture"); + } + return this; + } + bind(baseTexture) { + super.bind(baseTexture); + baseTexture.target = TARGETS.TEXTURE_2D_ARRAY; + } + upload(renderer, texture, glTexture) { + const { length, itemDirtyIds, items } = this; + const { gl } = renderer; + if (glTexture.dirtyId < 0) { + gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, glTexture.internalFormat, this._width, this._height, length, 0, texture.format, glTexture.type, null); + } + for (let i = 0; i < length; i++) { + const item = items[i]; + if (itemDirtyIds[i] < item.dirtyId) { + itemDirtyIds[i] = item.dirtyId; + if (item.valid) { + gl.texSubImage3D(gl.TEXTURE_2D_ARRAY, 0, 0, 0, i, item.resource.width, item.resource.height, 1, texture.format, glTexture.type, item.resource.source); + } + } + } + return true; + } + } + + class BaseImageResource extends Resource { + constructor(source) { + const sourceAny = source; + const width = sourceAny.naturalWidth || sourceAny.videoWidth || sourceAny.width; + const height = sourceAny.naturalHeight || sourceAny.videoHeight || sourceAny.height; + super(width, height); + this.source = source; + this.noSubImage = false; + } + static crossOrigin(element, url, crossorigin) { + if (crossorigin === void 0 && !url.startsWith("data:")) { + element.crossOrigin = determineCrossOrigin(url); + } else if (crossorigin !== false) { + element.crossOrigin = typeof crossorigin === "string" ? crossorigin : "anonymous"; + } + } + upload(renderer, baseTexture, glTexture, source) { + const gl = renderer.gl; + const width = baseTexture.realWidth; + const height = baseTexture.realHeight; + source = source || this.source; + if (typeof HTMLImageElement !== "undefined" && source instanceof HTMLImageElement) { + if (!source.complete || source.naturalWidth === 0) { + return false; + } + } else if (typeof HTMLVideoElement !== "undefined" && source instanceof HTMLVideoElement) { + if (source.readyState <= 1) { + return false; + } + } + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK); + if (!this.noSubImage && baseTexture.target === gl.TEXTURE_2D && glTexture.width === width && glTexture.height === height) { + gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, baseTexture.format, glTexture.type, source); + } else { + glTexture.width = width; + glTexture.height = height; + gl.texImage2D(baseTexture.target, 0, glTexture.internalFormat, baseTexture.format, glTexture.type, source); + } + return true; + } + update() { + if (this.destroyed) { + return; + } + const source = this.source; + const width = source.naturalWidth || source.videoWidth || source.width; + const height = source.naturalHeight || source.videoHeight || source.height; + this.resize(width, height); + super.update(); + } + dispose() { + this.source = null; + } + } + + class CanvasResource extends BaseImageResource { + constructor(source) { + super(source); + } + static test(source) { + const { OffscreenCanvas } = globalThis; + if (OffscreenCanvas && source instanceof OffscreenCanvas) { + return true; + } + return globalThis.HTMLCanvasElement && source instanceof HTMLCanvasElement; + } + } + + const _CubeResource = class extends AbstractMultiResource { + constructor(source, options) { + const { width, height, autoLoad, linkBaseTexture } = options || {}; + if (source && source.length !== _CubeResource.SIDES) { + throw new Error(`Invalid length. Got ${source.length}, expected 6`); + } + super(6, { width, height }); + for (let i = 0; i < _CubeResource.SIDES; i++) { + this.items[i].target = TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + i; + } + this.linkBaseTexture = linkBaseTexture !== false; + if (source) { + this.initFromArray(source, options); + } + if (autoLoad !== false) { + this.load(); + } + } + bind(baseTexture) { + super.bind(baseTexture); + baseTexture.target = TARGETS.TEXTURE_CUBE_MAP; + } + addBaseTextureAt(baseTexture, index, linkBaseTexture) { + if (linkBaseTexture === void 0) { + linkBaseTexture = this.linkBaseTexture; + } + if (!this.items[index]) { + throw new Error(`Index ${index} is out of bounds`); + } + if (!this.linkBaseTexture || baseTexture.parentTextureArray || Object.keys(baseTexture._glTextures).length > 0) { + if (baseTexture.resource) { + this.addResourceAt(baseTexture.resource, index); + } else { + throw new Error(`CubeResource does not support copying of renderTexture.`); + } + } else { + baseTexture.target = TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + index; + baseTexture.parentTextureArray = this.baseTexture; + this.items[index] = baseTexture; + } + if (baseTexture.valid && !this.valid) { + this.resize(baseTexture.realWidth, baseTexture.realHeight); + } + this.items[index] = baseTexture; + return this; + } + upload(renderer, _baseTexture, glTexture) { + const dirty = this.itemDirtyIds; + for (let i = 0; i < _CubeResource.SIDES; i++) { + const side = this.items[i]; + if (dirty[i] < side.dirtyId || glTexture.dirtyId < _baseTexture.dirtyId) { + if (side.valid && side.resource) { + side.resource.upload(renderer, side, glTexture); + dirty[i] = side.dirtyId; + } else if (dirty[i] < -1) { + renderer.gl.texImage2D(side.target, 0, glTexture.internalFormat, _baseTexture.realWidth, _baseTexture.realHeight, 0, _baseTexture.format, glTexture.type, null); + dirty[i] = -1; + } + } + } + return true; + } + static test(source) { + return Array.isArray(source) && source.length === _CubeResource.SIDES; + } + }; + let CubeResource = _CubeResource; + CubeResource.SIDES = 6; + + class ImageResource extends BaseImageResource { + constructor(source, options) { + options = options || {}; + if (typeof source === "string") { + const imageElement = new Image(); + BaseImageResource.crossOrigin(imageElement, source, options.crossorigin); + imageElement.src = source; + source = imageElement; + } + super(source); + if (!source.complete && !!this._width && !!this._height) { + this._width = 0; + this._height = 0; + } + this.url = source.src; + this._process = null; + this.preserveBitmap = false; + this.createBitmap = (options.createBitmap ?? settings.CREATE_IMAGE_BITMAP) && !!globalThis.createImageBitmap; + this.alphaMode = typeof options.alphaMode === "number" ? options.alphaMode : null; + this.bitmap = null; + this._load = null; + if (options.autoLoad !== false) { + this.load(); + } + } + load(createBitmap) { + if (this._load) { + return this._load; + } + if (createBitmap !== void 0) { + this.createBitmap = createBitmap; + } + this._load = new Promise((resolve, reject) => { + const source = this.source; + this.url = source.src; + const completed = () => { + if (this.destroyed) { + return; + } + source.onload = null; + source.onerror = null; + this.resize(source.width, source.height); + this._load = null; + if (this.createBitmap) { + resolve(this.process()); + } else { + resolve(this); + } + }; + if (source.complete && source.src) { + completed(); + } else { + source.onload = completed; + source.onerror = (event) => { + reject(event); + this.onError.emit(event); + }; + } + }); + return this._load; + } + process() { + const source = this.source; + if (this._process !== null) { + return this._process; + } + if (this.bitmap !== null || !globalThis.createImageBitmap) { + return Promise.resolve(this); + } + const createImageBitmap = globalThis.createImageBitmap; + const cors = !source.crossOrigin || source.crossOrigin === "anonymous"; + this._process = fetch(source.src, { + mode: cors ? "cors" : "no-cors" + }).then((r) => r.blob()).then((blob) => createImageBitmap(blob, 0, 0, source.width, source.height, { + premultiplyAlpha: this.alphaMode === null || this.alphaMode === ALPHA_MODES.UNPACK ? "premultiply" : "none" + })).then((bitmap) => { + if (this.destroyed) { + return Promise.reject(); + } + this.bitmap = bitmap; + this.update(); + this._process = null; + return Promise.resolve(this); + }); + return this._process; + } + upload(renderer, baseTexture, glTexture) { + if (typeof this.alphaMode === "number") { + baseTexture.alphaMode = this.alphaMode; + } + if (!this.createBitmap) { + return super.upload(renderer, baseTexture, glTexture); + } + if (!this.bitmap) { + this.process(); + if (!this.bitmap) { + return false; + } + } + super.upload(renderer, baseTexture, glTexture, this.bitmap); + if (!this.preserveBitmap) { + let flag = true; + const glTextures = baseTexture._glTextures; + for (const key in glTextures) { + const otherTex = glTextures[key]; + if (otherTex !== glTexture && otherTex.dirtyId !== baseTexture.dirtyId) { + flag = false; + break; + } + } + if (flag) { + if (this.bitmap.close) { + this.bitmap.close(); + } + this.bitmap = null; + } + } + return true; + } + dispose() { + this.source.onload = null; + this.source.onerror = null; + super.dispose(); + if (this.bitmap) { + this.bitmap.close(); + this.bitmap = null; + } + this._process = null; + this._load = null; + } + static test(source) { + return typeof HTMLImageElement !== "undefined" && (typeof source === "string" || source instanceof HTMLImageElement); + } + } + + const _SVGResource = class extends BaseImageResource { + constructor(sourceBase64, options) { + options = options || {}; + super(settings.ADAPTER.createCanvas()); + this._width = 0; + this._height = 0; + this.svg = sourceBase64; + this.scale = options.scale || 1; + this._overrideWidth = options.width; + this._overrideHeight = options.height; + this._resolve = null; + this._crossorigin = options.crossorigin; + this._load = null; + if (options.autoLoad !== false) { + this.load(); + } + } + load() { + if (this._load) { + return this._load; + } + this._load = new Promise((resolve) => { + this._resolve = () => { + this.resize(this.source.width, this.source.height); + resolve(this); + }; + if (_SVGResource.SVG_XML.test(this.svg.trim())) { + if (!btoa) { + throw new Error("Your browser doesn't support base64 conversions."); + } + this.svg = `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`; + } + this._loadSvg(); + }); + return this._load; + } + _loadSvg() { + const tempImage = new Image(); + BaseImageResource.crossOrigin(tempImage, this.svg, this._crossorigin); + tempImage.src = this.svg; + tempImage.onerror = (event) => { + if (!this._resolve) { + return; + } + tempImage.onerror = null; + this.onError.emit(event); + }; + tempImage.onload = () => { + if (!this._resolve) { + return; + } + const svgWidth = tempImage.width; + const svgHeight = tempImage.height; + if (!svgWidth || !svgHeight) { + throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them."); + } + let width = svgWidth * this.scale; + let height = svgHeight * this.scale; + if (this._overrideWidth || this._overrideHeight) { + width = this._overrideWidth || this._overrideHeight / svgHeight * svgWidth; + height = this._overrideHeight || this._overrideWidth / svgWidth * svgHeight; + } + width = Math.round(width); + height = Math.round(height); + const canvas = this.source; + canvas.width = width; + canvas.height = height; + canvas._pixiId = `canvas_${uid()}`; + canvas.getContext("2d").drawImage(tempImage, 0, 0, svgWidth, svgHeight, 0, 0, width, height); + this._resolve(); + this._resolve = null; + }; + } + static getSize(svgString) { + const sizeMatch = _SVGResource.SVG_SIZE.exec(svgString); + const size = {}; + if (sizeMatch) { + size[sizeMatch[1]] = Math.round(parseFloat(sizeMatch[3])); + size[sizeMatch[5]] = Math.round(parseFloat(sizeMatch[7])); + } + return size; + } + dispose() { + super.dispose(); + this._resolve = null; + this._crossorigin = null; + } + static test(source, extension) { + return extension === "svg" || typeof source === "string" && source.startsWith("data:image/svg+xml") || typeof source === "string" && _SVGResource.SVG_XML.test(source); + } + }; + let SVGResource = _SVGResource; + SVGResource.SVG_XML = /^(<\?xml[^?]+\?>)?\s*()]*-->)?\s*\]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i; + + const _VideoResource = class extends BaseImageResource { + constructor(source, options) { + options = options || {}; + if (!(source instanceof HTMLVideoElement)) { + const videoElement = document.createElement("video"); + videoElement.setAttribute("preload", "auto"); + videoElement.setAttribute("webkit-playsinline", ""); + videoElement.setAttribute("playsinline", ""); + if (typeof source === "string") { + source = [source]; + } + const firstSrc = source[0].src || source[0]; + BaseImageResource.crossOrigin(videoElement, firstSrc, options.crossorigin); + for (let i = 0; i < source.length; ++i) { + const sourceElement = document.createElement("source"); + let { src, mime } = source[i]; + src = src || source[i]; + const baseSrc = src.split("?").shift().toLowerCase(); + const ext = baseSrc.slice(baseSrc.lastIndexOf(".") + 1); + mime = mime || _VideoResource.MIME_TYPES[ext] || `video/${ext}`; + sourceElement.src = src; + sourceElement.type = mime; + videoElement.appendChild(sourceElement); + } + source = videoElement; + } + super(source); + this.noSubImage = true; + this._autoUpdate = true; + this._isConnectedToTicker = false; + this._updateFPS = options.updateFPS || 0; + this._msToNextUpdate = 0; + this.autoPlay = options.autoPlay !== false; + this._load = null; + this._resolve = null; + this._onCanPlay = this._onCanPlay.bind(this); + this._onError = this._onError.bind(this); + if (options.autoLoad !== false) { + this.load(); + } + } + update(_deltaTime = 0) { + if (!this.destroyed) { + const elapsedMS = Ticker.shared.elapsedMS * this.source.playbackRate; + this._msToNextUpdate = Math.floor(this._msToNextUpdate - elapsedMS); + if (!this._updateFPS || this._msToNextUpdate <= 0) { + super.update(); + this._msToNextUpdate = this._updateFPS ? Math.floor(1e3 / this._updateFPS) : 0; + } + } + } + load() { + if (this._load) { + return this._load; + } + const source = this.source; + if ((source.readyState === source.HAVE_ENOUGH_DATA || source.readyState === source.HAVE_FUTURE_DATA) && source.width && source.height) { + source.complete = true; + } + source.addEventListener("play", this._onPlayStart.bind(this)); + source.addEventListener("pause", this._onPlayStop.bind(this)); + if (!this._isSourceReady()) { + source.addEventListener("canplay", this._onCanPlay); + source.addEventListener("canplaythrough", this._onCanPlay); + source.addEventListener("error", this._onError, true); + } else { + this._onCanPlay(); + } + this._load = new Promise((resolve) => { + if (this.valid) { + resolve(this); + } else { + this._resolve = resolve; + source.load(); + } + }); + return this._load; + } + _onError(event) { + this.source.removeEventListener("error", this._onError, true); + this.onError.emit(event); + } + _isSourcePlaying() { + const source = this.source; + return !source.paused && !source.ended && this._isSourceReady(); + } + _isSourceReady() { + const source = this.source; + return source.readyState > 2; + } + _onPlayStart() { + if (!this.valid) { + this._onCanPlay(); + } + if (this.autoUpdate && !this._isConnectedToTicker) { + Ticker.shared.add(this.update, this); + this._isConnectedToTicker = true; + } + } + _onPlayStop() { + if (this._isConnectedToTicker) { + Ticker.shared.remove(this.update, this); + this._isConnectedToTicker = false; + } + } + _onCanPlay() { + const source = this.source; + source.removeEventListener("canplay", this._onCanPlay); + source.removeEventListener("canplaythrough", this._onCanPlay); + const valid = this.valid; + this.resize(source.videoWidth, source.videoHeight); + if (!valid && this._resolve) { + this._resolve(this); + this._resolve = null; + } + if (this._isSourcePlaying()) { + this._onPlayStart(); + } else if (this.autoPlay) { + source.play(); + } + } + dispose() { + if (this._isConnectedToTicker) { + Ticker.shared.remove(this.update, this); + this._isConnectedToTicker = false; + } + const source = this.source; + if (source) { + source.removeEventListener("error", this._onError, true); + source.pause(); + source.src = ""; + source.load(); + } + super.dispose(); + } + get autoUpdate() { + return this._autoUpdate; + } + set autoUpdate(value) { + if (value !== this._autoUpdate) { + this._autoUpdate = value; + if (!this._autoUpdate && this._isConnectedToTicker) { + Ticker.shared.remove(this.update, this); + this._isConnectedToTicker = false; + } else if (this._autoUpdate && !this._isConnectedToTicker && this._isSourcePlaying()) { + Ticker.shared.add(this.update, this); + this._isConnectedToTicker = true; + } + } + } + get updateFPS() { + return this._updateFPS; + } + set updateFPS(value) { + if (value !== this._updateFPS) { + this._updateFPS = value; + } + } + static test(source, extension) { + return globalThis.HTMLVideoElement && source instanceof HTMLVideoElement || _VideoResource.TYPES.includes(extension); + } + }; + let VideoResource = _VideoResource; + VideoResource.TYPES = ["mp4", "m4v", "webm", "ogg", "ogv", "h264", "avi", "mov"]; + VideoResource.MIME_TYPES = { + ogv: "video/ogg", + mov: "video/quicktime", + m4v: "video/mp4" + }; + + class ImageBitmapResource extends BaseImageResource { + constructor(source, options) { + var __super = (...args) => { + super(...args); + }; + options = options || {}; + if (typeof source === "string") { + __super(ImageBitmapResource.EMPTY); + this.url = source; + } else { + __super(source); + this.url = null; + } + this.crossOrigin = options.crossOrigin ?? true; + this.alphaMode = typeof options.alphaMode === "number" ? options.alphaMode : null; + this._load = null; + if (options.autoLoad !== false) { + this.load(); + } + } + load() { + if (this._load) { + return this._load; + } + this._load = new Promise(async (resolve, reject) => { + if (this.url === null) { + resolve(this); + return; + } + try { + const response = await settings.ADAPTER.fetch(this.url, { + mode: this.crossOrigin ? "cors" : "no-cors" + }); + if (this.destroyed) + return; + const imageBlob = await response.blob(); + if (this.destroyed) + return; + const imageBitmap = await createImageBitmap(imageBlob, { + premultiplyAlpha: this.alphaMode === null || this.alphaMode === ALPHA_MODES.UNPACK ? "premultiply" : "none" + }); + if (this.destroyed) + return; + this.source = imageBitmap; + this.update(); + resolve(this); + } catch (e) { + if (this.destroyed) + return; + reject(e); + this.onError.emit(e); + } + }); + return this._load; + } + upload(renderer, baseTexture, glTexture) { + if (!(this.source instanceof ImageBitmap)) { + this.load(); + return false; + } + if (typeof this.alphaMode === "number") { + baseTexture.alphaMode = this.alphaMode; + } + return super.upload(renderer, baseTexture, glTexture); + } + dispose() { + if (this.source instanceof ImageBitmap) { + this.source.close(); + } + super.dispose(); + this._load = null; + } + static test(source) { + return !!globalThis.createImageBitmap && typeof ImageBitmap !== "undefined" && (typeof source === "string" || source instanceof ImageBitmap); + } + static get EMPTY() { + ImageBitmapResource._EMPTY = ImageBitmapResource._EMPTY ?? settings.ADAPTER.createCanvas(0, 0); + return ImageBitmapResource._EMPTY; + } + } + + INSTALLED.push(ImageBitmapResource, ImageResource, CanvasResource, VideoResource, SVGResource, BufferResource, CubeResource, ArrayResource); + + class DepthResource extends BufferResource { + upload(renderer, baseTexture, glTexture) { + const gl = renderer.gl; + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK); + const width = baseTexture.realWidth; + const height = baseTexture.realHeight; + if (glTexture.width === width && glTexture.height === height) { + gl.texSubImage2D(baseTexture.target, 0, 0, 0, width, height, baseTexture.format, glTexture.type, this.data); + } else { + glTexture.width = width; + glTexture.height = height; + gl.texImage2D(baseTexture.target, 0, glTexture.internalFormat, width, height, 0, baseTexture.format, glTexture.type, this.data); + } + return true; + } + } + + class Framebuffer { + constructor(width, height) { + this.width = Math.round(width || 100); + this.height = Math.round(height || 100); + this.stencil = false; + this.depth = false; + this.dirtyId = 0; + this.dirtyFormat = 0; + this.dirtySize = 0; + this.depthTexture = null; + this.colorTextures = []; + this.glFramebuffers = {}; + this.disposeRunner = new Runner("disposeFramebuffer"); + this.multisample = MSAA_QUALITY.NONE; + } + get colorTexture() { + return this.colorTextures[0]; + } + addColorTexture(index = 0, texture) { + this.colorTextures[index] = texture || new BaseTexture(null, { + scaleMode: SCALE_MODES.NEAREST, + resolution: 1, + mipmap: MIPMAP_MODES.OFF, + width: this.width, + height: this.height + }); + this.dirtyId++; + this.dirtyFormat++; + return this; + } + addDepthTexture(texture) { + this.depthTexture = texture || new BaseTexture(new DepthResource(null, { width: this.width, height: this.height }), { + scaleMode: SCALE_MODES.NEAREST, + resolution: 1, + width: this.width, + height: this.height, + mipmap: MIPMAP_MODES.OFF, + format: FORMATS.DEPTH_COMPONENT, + type: TYPES.UNSIGNED_SHORT + }); + this.dirtyId++; + this.dirtyFormat++; + return this; + } + enableDepth() { + this.depth = true; + this.dirtyId++; + this.dirtyFormat++; + return this; + } + enableStencil() { + this.stencil = true; + this.dirtyId++; + this.dirtyFormat++; + return this; + } + resize(width, height) { + width = Math.round(width); + height = Math.round(height); + if (width === this.width && height === this.height) + return; + this.width = width; + this.height = height; + this.dirtyId++; + this.dirtySize++; + for (let i = 0; i < this.colorTextures.length; i++) { + const texture = this.colorTextures[i]; + const resolution = texture.resolution; + texture.setSize(width / resolution, height / resolution); + } + if (this.depthTexture) { + const resolution = this.depthTexture.resolution; + this.depthTexture.setSize(width / resolution, height / resolution); + } + } + dispose() { + this.disposeRunner.emit(this, false); + } + destroyDepthTexture() { + if (this.depthTexture) { + this.depthTexture.destroy(); + this.depthTexture = null; + ++this.dirtyId; + ++this.dirtyFormat; + } + } + } + + class BaseRenderTexture extends BaseTexture { + constructor(options = {}) { + if (typeof options === "number") { + const width = arguments[0]; + const height = arguments[1]; + const scaleMode = arguments[2]; + const resolution = arguments[3]; + options = { width, height, scaleMode, resolution }; + } + options.width = options.width || 100; + options.height = options.height || 100; + options.multisample ?? (options.multisample = MSAA_QUALITY.NONE); + super(null, options); + this.mipmap = MIPMAP_MODES.OFF; + this.valid = true; + this.clearColor = [0, 0, 0, 0]; + this.framebuffer = new Framebuffer(this.realWidth, this.realHeight).addColorTexture(0, this); + this.framebuffer.multisample = options.multisample; + this.maskStack = []; + this.filterStack = [{}]; + } + resize(desiredWidth, desiredHeight) { + this.framebuffer.resize(desiredWidth * this.resolution, desiredHeight * this.resolution); + this.setRealSize(this.framebuffer.width, this.framebuffer.height); + } + dispose() { + this.framebuffer.dispose(); + super.dispose(); + } + destroy() { + super.destroy(); + this.framebuffer.destroyDepthTexture(); + this.framebuffer = null; + } + } + + class TextureUvs { + 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) { + const tw = baseFrame.width; + const th = baseFrame.height; + if (rotate) { + const w2 = frame.width / 2 / tw; + const h2 = frame.height / 2 / th; + const cX = frame.x / tw + w2; + const cY = frame.y / th + 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); + } else { + this.x0 = frame.x / tw; + this.y0 = frame.y / th; + this.x1 = (frame.x + frame.width) / tw; + this.y1 = frame.y / th; + this.x2 = (frame.x + frame.width) / tw; + this.y2 = (frame.y + frame.height) / th; + this.x3 = frame.x / tw; + this.y3 = (frame.y + frame.height) / th; + } + 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; + } + } + + const DEFAULT_UVS = new TextureUvs(); + function removeAllHandlers(tex) { + tex.destroy = function _emptyDestroy() { + }; + tex.on = function _emptyOn() { + }; + tex.once = function _emptyOnce() { + }; + tex.emit = function _emptyEmit() { + }; + } + class Texture extends eventemitter3 { + constructor(baseTexture, frame, orig, trim, rotate, anchor) { + super(); + this.noFrame = false; + if (!frame) { + this.noFrame = true; + frame = new Rectangle(0, 0, 1, 1); + } + if (baseTexture instanceof Texture) { + baseTexture = baseTexture.baseTexture; + } + this.baseTexture = baseTexture; + this._frame = frame; + this.trim = trim; + this.valid = false; + this._uvs = DEFAULT_UVS; + this.uvMatrix = null; + this.orig = orig || frame; + this._rotate = Number(rotate || 0); + if (rotate === true) { + this._rotate = 2; + } else if (this._rotate % 2 !== 0) { + throw new Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually"); + } + this.defaultAnchor = anchor ? new Point(anchor.x, anchor.y) : new Point(0, 0); + this._updateID = 0; + this.textureCacheIds = []; + if (!baseTexture.valid) { + baseTexture.once("loaded", this.onBaseTextureUpdated, this); + } else if (this.noFrame) { + if (baseTexture.valid) { + this.onBaseTextureUpdated(baseTexture); + } + } else { + this.frame = frame; + } + if (this.noFrame) { + baseTexture.on("update", this.onBaseTextureUpdated, this); + } + } + update() { + if (this.baseTexture.resource) { + this.baseTexture.resource.update(); + } + } + onBaseTextureUpdated(baseTexture) { + if (this.noFrame) { + if (!this.baseTexture.valid) { + return; + } + this._frame.width = baseTexture.width; + this._frame.height = baseTexture.height; + this.valid = true; + this.updateUvs(); + } else { + this.frame = this._frame; + } + this.emit("update", this); + } + destroy(destroyBase) { + if (this.baseTexture) { + if (destroyBase) { + const { resource } = this.baseTexture; + if (resource?.url && TextureCache[resource.url]) { + Texture.removeFromCache(resource.url); + } + this.baseTexture.destroy(); + } + this.baseTexture.off("loaded", this.onBaseTextureUpdated, this); + this.baseTexture.off("update", this.onBaseTextureUpdated, this); + this.baseTexture = null; + } + this._frame = null; + this._uvs = null; + this.trim = null; + this.orig = null; + this.valid = false; + Texture.removeFromCache(this); + this.textureCacheIds = null; + } + clone() { + const clonedFrame = this._frame.clone(); + const clonedOrig = this._frame === this.orig ? clonedFrame : this.orig.clone(); + const clonedTexture = new Texture(this.baseTexture, !this.noFrame && clonedFrame, clonedOrig, this.trim?.clone(), this.rotate, this.defaultAnchor); + if (this.noFrame) { + clonedTexture._frame = clonedFrame; + } + return clonedTexture; + } + updateUvs() { + if (this._uvs === DEFAULT_UVS) { + this._uvs = new TextureUvs(); + } + this._uvs.set(this._frame, this.baseTexture, this.rotate); + this._updateID++; + } + static from(source, options = {}, strict = settings.STRICT_TEXTURE_CACHE) { + const isFrame = typeof source === "string"; + let cacheId = null; + if (isFrame) { + cacheId = source; + } else if (source instanceof BaseTexture) { + if (!source.cacheId) { + const prefix = options?.pixiIdPrefix || "pixiid"; + source.cacheId = `${prefix}-${uid()}`; + BaseTexture.addToCache(source, source.cacheId); + } + cacheId = source.cacheId; + } else { + if (!source._pixiId) { + const prefix = options?.pixiIdPrefix || "pixiid"; + source._pixiId = `${prefix}_${uid()}`; + } + cacheId = source._pixiId; + } + let texture = TextureCache[cacheId]; + if (isFrame && strict && !texture) { + throw new Error(`The cacheId "${cacheId}" does not exist in TextureCache.`); + } + if (!texture && !(source instanceof BaseTexture)) { + if (!options.resolution) { + options.resolution = getResolutionOfUrl(source); + } + texture = new Texture(new BaseTexture(source, options)); + texture.baseTexture.cacheId = cacheId; + BaseTexture.addToCache(texture.baseTexture, cacheId); + Texture.addToCache(texture, cacheId); + } else if (!texture && source instanceof BaseTexture) { + texture = new Texture(source); + Texture.addToCache(texture, cacheId); + } + return texture; + } + static fromURL(url, options) { + const resourceOptions = Object.assign({ autoLoad: false }, options?.resourceOptions); + const texture = Texture.from(url, Object.assign({ resourceOptions }, options), false); + const resource = texture.baseTexture.resource; + if (texture.baseTexture.valid) { + return Promise.resolve(texture); + } + return resource.load().then(() => Promise.resolve(texture)); + } + static fromBuffer(buffer, width, height, options) { + return new Texture(BaseTexture.fromBuffer(buffer, width, height, options)); + } + static fromLoader(source, imageUrl, name, options) { + const baseTexture = new BaseTexture(source, Object.assign({ + scaleMode: settings.SCALE_MODE, + resolution: getResolutionOfUrl(imageUrl) + }, options)); + const { resource } = baseTexture; + if (resource instanceof ImageResource) { + resource.url = imageUrl; + } + const texture = new Texture(baseTexture); + if (!name) { + name = imageUrl; + } + BaseTexture.addToCache(texture.baseTexture, name); + Texture.addToCache(texture, name); + if (name !== imageUrl) { + BaseTexture.addToCache(texture.baseTexture, imageUrl); + Texture.addToCache(texture, imageUrl); + } + if (texture.baseTexture.valid) { + return Promise.resolve(texture); + } + return new Promise((resolve) => { + texture.baseTexture.once("loaded", () => resolve(texture)); + }); + } + static addToCache(texture, id) { + if (id) { + if (!texture.textureCacheIds.includes(id)) { + texture.textureCacheIds.push(id); + } + if (TextureCache[id]) { + console.warn(`Texture added to the cache with an id [${id}] that already had an entry`); + } + TextureCache[id] = texture; + } + } + static removeFromCache(texture) { + if (typeof texture === "string") { + const textureFromCache = TextureCache[texture]; + if (textureFromCache) { + const index = textureFromCache.textureCacheIds.indexOf(texture); + if (index > -1) { + textureFromCache.textureCacheIds.splice(index, 1); + } + delete TextureCache[texture]; + return textureFromCache; + } + } else if (texture?.textureCacheIds) { + for (let i = 0; i < texture.textureCacheIds.length; ++i) { + if (TextureCache[texture.textureCacheIds[i]] === texture) { + delete TextureCache[texture.textureCacheIds[i]]; + } + } + texture.textureCacheIds.length = 0; + return texture; + } + return null; + } + get resolution() { + return this.baseTexture.resolution; + } + get frame() { + return this._frame; + } + set frame(frame) { + this._frame = frame; + this.noFrame = false; + const { x, y, width, height } = frame; + const xNotFit = x + width > this.baseTexture.width; + const yNotFit = y + height > this.baseTexture.height; + if (xNotFit || yNotFit) { + const relationship = xNotFit && yNotFit ? "and" : "or"; + const errorX = `X: ${x} + ${width} = ${x + width} > ${this.baseTexture.width}`; + const errorY = `Y: ${y} + ${height} = ${y + height} > ${this.baseTexture.height}`; + throw new Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${errorX} ${relationship} ${errorY}`); + } + this.valid = width && height && this.baseTexture.valid; + if (!this.trim && !this.rotate) { + this.orig = frame; + } + if (this.valid) { + this.updateUvs(); + } + } + get rotate() { + return this._rotate; + } + set rotate(rotate) { + this._rotate = rotate; + if (this.valid) { + this.updateUvs(); + } + } + get width() { + return this.orig.width; + } + get height() { + return this.orig.height; + } + castToBaseTexture() { + return this.baseTexture; + } + static get EMPTY() { + if (!Texture._EMPTY) { + Texture._EMPTY = new Texture(new BaseTexture()); + removeAllHandlers(Texture._EMPTY); + removeAllHandlers(Texture._EMPTY.baseTexture); + } + return Texture._EMPTY; + } + static get WHITE() { + if (!Texture._WHITE) { + const canvas = settings.ADAPTER.createCanvas(16, 16); + const context = canvas.getContext("2d"); + canvas.width = 16; + canvas.height = 16; + context.fillStyle = "white"; + context.fillRect(0, 0, 16, 16); + Texture._WHITE = new Texture(BaseTexture.from(canvas)); + removeAllHandlers(Texture._WHITE); + removeAllHandlers(Texture._WHITE.baseTexture); + } + return Texture._WHITE; + } + } + + class RenderTexture extends Texture { + constructor(baseRenderTexture, frame) { + super(baseRenderTexture, frame); + this.valid = true; + this.filterFrame = null; + this.filterPoolKey = null; + this.updateUvs(); + } + get framebuffer() { + return this.baseTexture.framebuffer; + } + get multisample() { + return this.framebuffer.multisample; + } + set multisample(value) { + this.framebuffer.multisample = value; + } + resize(desiredWidth, desiredHeight, resizeBaseTexture = true) { + const resolution = this.baseTexture.resolution; + const width = Math.round(desiredWidth * resolution) / resolution; + const height = Math.round(desiredHeight * resolution) / resolution; + this.valid = width > 0 && height > 0; + this._frame.width = this.orig.width = width; + this._frame.height = this.orig.height = height; + if (resizeBaseTexture) { + this.baseTexture.resize(width, height); + } + this.updateUvs(); + } + setResolution(resolution) { + const { baseTexture } = this; + if (baseTexture.resolution === resolution) { + return; + } + baseTexture.setResolution(resolution); + this.resize(baseTexture.width, baseTexture.height, false); + } + static create(options) { + return new RenderTexture(new BaseRenderTexture(options)); + } + } + + class RenderTexturePool { + constructor(textureOptions) { + this.texturePool = {}; + this.textureOptions = textureOptions || {}; + this.enableFullScreen = false; + this._pixelsWidth = 0; + this._pixelsHeight = 0; + } + createTexture(realWidth, realHeight, multisample = MSAA_QUALITY.NONE) { + const baseRenderTexture = new BaseRenderTexture(Object.assign({ + width: realWidth, + height: realHeight, + resolution: 1, + multisample + }, this.textureOptions)); + return new RenderTexture(baseRenderTexture); + } + getOptimalTexture(minWidth, minHeight, resolution = 1, multisample = MSAA_QUALITY.NONE) { + let key; + minWidth = Math.ceil(minWidth * resolution - 1e-6); + minHeight = Math.ceil(minHeight * resolution - 1e-6); + if (!this.enableFullScreen || minWidth !== this._pixelsWidth || minHeight !== this._pixelsHeight) { + minWidth = nextPow2(minWidth); + minHeight = nextPow2(minHeight); + key = ((minWidth & 65535) << 16 | minHeight & 65535) >>> 0; + if (multisample > 1) { + key += multisample * 4294967296; + } + } else { + key = multisample > 1 ? -multisample : -1; + } + if (!this.texturePool[key]) { + this.texturePool[key] = []; + } + let renderTexture = this.texturePool[key].pop(); + if (!renderTexture) { + renderTexture = this.createTexture(minWidth, minHeight, multisample); + } + renderTexture.filterPoolKey = key; + renderTexture.setResolution(resolution); + return renderTexture; + } + getFilterTexture(input, resolution, multisample) { + const filterTexture = this.getOptimalTexture(input.width, input.height, resolution || input.resolution, multisample || MSAA_QUALITY.NONE); + filterTexture.filterFrame = input.filterFrame; + return filterTexture; + } + returnTexture(renderTexture) { + const key = renderTexture.filterPoolKey; + renderTexture.filterFrame = null; + this.texturePool[key].push(renderTexture); + } + returnFilterTexture(renderTexture) { + this.returnTexture(renderTexture); + } + clear(destroyTextures) { + destroyTextures = destroyTextures !== false; + if (destroyTextures) { + for (const i in this.texturePool) { + const textures = this.texturePool[i]; + if (textures) { + for (let j = 0; j < textures.length; j++) { + textures[j].destroy(true); + } + } + } + } + this.texturePool = {}; + } + setScreenSize(size) { + if (size.width === this._pixelsWidth && size.height === this._pixelsHeight) { + return; + } + this.enableFullScreen = size.width > 0 && size.height > 0; + for (const i in this.texturePool) { + if (!(Number(i) < 0)) { + continue; + } + const textures = this.texturePool[i]; + if (textures) { + for (let j = 0; j < textures.length; j++) { + textures[j].destroy(true); + } + } + this.texturePool[i] = []; + } + this._pixelsWidth = size.width; + this._pixelsHeight = size.height; + } + } + RenderTexturePool.SCREEN_KEY = -1; + + class Attribute { + constructor(buffer, size = 0, normalized = false, type = TYPES.FLOAT, stride, start, instance) { + this.buffer = buffer; + this.size = size; + this.normalized = normalized; + this.type = type; + this.stride = stride; + this.start = start; + this.instance = instance; + } + destroy() { + this.buffer = null; + } + static from(buffer, size, normalized, type, stride) { + return new Attribute(buffer, size, normalized, type, stride); + } + } + + let UID$4 = 0; + class Buffer { + constructor(data, _static = true, index = false) { + this.data = data || new Float32Array(1); + this._glBuffers = {}; + this._updateID = 0; + this.index = index; + this.static = _static; + this.id = UID$4++; + this.disposeRunner = new Runner("disposeBuffer"); + } + update(data) { + if (data instanceof Array) { + data = new Float32Array(data); + } + this.data = data || this.data; + this._updateID++; + } + dispose() { + this.disposeRunner.emit(this, false); + } + destroy() { + this.dispose(); + this.data = null; + } + set index(value) { + this.type = value ? BUFFER_TYPE.ELEMENT_ARRAY_BUFFER : BUFFER_TYPE.ARRAY_BUFFER; + } + get index() { + return this.type === BUFFER_TYPE.ELEMENT_ARRAY_BUFFER; + } + static from(data) { + if (data instanceof Array) { + data = new Float32Array(data); + } + return new Buffer(data); + } + } + + const map$1 = { + Float32Array, + Uint32Array, + Int32Array, + Uint8Array + }; + function interleaveTypedArrays(arrays, sizes) { + let outSize = 0; + let stride = 0; + const views = {}; + for (let i = 0; i < arrays.length; i++) { + stride += sizes[i]; + outSize += arrays[i].length; + } + const buffer = new ArrayBuffer(outSize * 4); + let out = null; + let littleOffset = 0; + for (let i = 0; i < arrays.length; i++) { + const size = sizes[i]; + const array = arrays[i]; + const type = getBufferType(array); + if (!views[type]) { + views[type] = new map$1[type](buffer); + } + out = views[type]; + for (let j = 0; j < array.length; j++) { + const indexStart = (j / size | 0) * stride + littleOffset; + const index = j % size; + out[indexStart + index] = array[j]; + } + littleOffset += size; + } + return new Float32Array(buffer); + } + + const byteSizeMap$1 = { 5126: 4, 5123: 2, 5121: 1 }; + let UID$3 = 0; + const map = { + Float32Array, + Uint32Array, + Int32Array, + Uint8Array, + Uint16Array + }; + class Geometry { + constructor(buffers = [], attributes = {}) { + this.buffers = buffers; + this.indexBuffer = null; + this.attributes = attributes; + this.glVertexArrayObjects = {}; + this.id = UID$3++; + this.instanced = false; + this.instanceCount = 1; + this.disposeRunner = new Runner("disposeGeometry"); + this.refCount = 0; + } + addAttribute(id, buffer, size = 0, normalized = false, type, stride, start, instance = false) { + if (!buffer) { + throw new Error("You must pass a buffer when creating an attribute"); + } + if (!(buffer instanceof Buffer)) { + if (buffer instanceof Array) { + buffer = new Float32Array(buffer); + } + buffer = new Buffer(buffer); + } + const ids = id.split("|"); + if (ids.length > 1) { + for (let i = 0; i < ids.length; i++) { + this.addAttribute(ids[i], buffer, size, normalized, type); + } + return this; + } + let bufferIndex = this.buffers.indexOf(buffer); + if (bufferIndex === -1) { + this.buffers.push(buffer); + bufferIndex = this.buffers.length - 1; + } + this.attributes[id] = new Attribute(bufferIndex, size, normalized, type, stride, start, instance); + this.instanced = this.instanced || instance; + return this; + } + getAttribute(id) { + return this.attributes[id]; + } + getBuffer(id) { + return this.buffers[this.getAttribute(id).buffer]; + } + addIndex(buffer) { + if (!(buffer instanceof Buffer)) { + if (buffer instanceof Array) { + buffer = new Uint16Array(buffer); + } + buffer = new Buffer(buffer); + } + buffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER; + this.indexBuffer = buffer; + if (!this.buffers.includes(buffer)) { + this.buffers.push(buffer); + } + return this; + } + getIndex() { + return this.indexBuffer; + } + interleave() { + if (this.buffers.length === 1 || this.buffers.length === 2 && this.indexBuffer) + return this; + const arrays = []; + const sizes = []; + const interleavedBuffer = new Buffer(); + let i; + for (i in this.attributes) { + const attribute = this.attributes[i]; + const buffer = this.buffers[attribute.buffer]; + arrays.push(buffer.data); + sizes.push(attribute.size * byteSizeMap$1[attribute.type] / 4); + attribute.buffer = 0; + } + interleavedBuffer.data = interleaveTypedArrays(arrays, sizes); + for (i = 0; i < this.buffers.length; i++) { + if (this.buffers[i] !== this.indexBuffer) { + this.buffers[i].destroy(); + } + } + this.buffers = [interleavedBuffer]; + if (this.indexBuffer) { + this.buffers.push(this.indexBuffer); + } + return this; + } + getSize() { + for (const i in this.attributes) { + const attribute = this.attributes[i]; + const buffer = this.buffers[attribute.buffer]; + return buffer.data.length / (attribute.stride / 4 || attribute.size); + } + return 0; + } + dispose() { + this.disposeRunner.emit(this, false); + } + destroy() { + this.dispose(); + this.buffers = null; + this.indexBuffer = null; + this.attributes = null; + } + clone() { + const geometry = new Geometry(); + for (let i = 0; i < this.buffers.length; i++) { + geometry.buffers[i] = new Buffer(this.buffers[i].data.slice(0)); + } + for (const i in this.attributes) { + const attrib = this.attributes[i]; + geometry.attributes[i] = new Attribute(attrib.buffer, attrib.size, attrib.normalized, attrib.type, attrib.stride, attrib.start, attrib.instance); + } + if (this.indexBuffer) { + geometry.indexBuffer = geometry.buffers[this.buffers.indexOf(this.indexBuffer)]; + geometry.indexBuffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER; + } + return geometry; + } + static merge(geometries) { + const geometryOut = new Geometry(); + const arrays = []; + const sizes = []; + const offsets = []; + let geometry; + for (let i = 0; i < geometries.length; i++) { + geometry = geometries[i]; + for (let j = 0; j < geometry.buffers.length; j++) { + sizes[j] = sizes[j] || 0; + sizes[j] += geometry.buffers[j].data.length; + offsets[j] = 0; + } + } + for (let i = 0; i < geometry.buffers.length; i++) { + arrays[i] = new map[getBufferType(geometry.buffers[i].data)](sizes[i]); + geometryOut.buffers[i] = new Buffer(arrays[i]); + } + for (let i = 0; i < geometries.length; i++) { + geometry = geometries[i]; + for (let j = 0; j < geometry.buffers.length; j++) { + arrays[j].set(geometry.buffers[j].data, offsets[j]); + offsets[j] += geometry.buffers[j].data.length; + } + } + geometryOut.attributes = geometry.attributes; + if (geometry.indexBuffer) { + geometryOut.indexBuffer = geometryOut.buffers[geometry.buffers.indexOf(geometry.indexBuffer)]; + geometryOut.indexBuffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER; + let offset = 0; + let stride = 0; + let offset2 = 0; + let bufferIndexToCount = 0; + for (let i = 0; i < geometry.buffers.length; i++) { + if (geometry.buffers[i] !== geometry.indexBuffer) { + bufferIndexToCount = i; + break; + } + } + for (const i in geometry.attributes) { + const attribute = geometry.attributes[i]; + if ((attribute.buffer | 0) === bufferIndexToCount) { + stride += attribute.size * byteSizeMap$1[attribute.type] / 4; + } + } + for (let i = 0; i < geometries.length; i++) { + const indexBufferData = geometries[i].indexBuffer.data; + for (let j = 0; j < indexBufferData.length; j++) { + geometryOut.indexBuffer.data[j + offset2] += offset; + } + offset += geometries[i].buffers[bufferIndexToCount].data.length / stride; + offset2 += indexBufferData.length; + } + } + return geometryOut; + } + } + + class Quad extends Geometry { + constructor() { + super(); + this.addAttribute("aVertexPosition", new Float32Array([ + 0, + 0, + 1, + 0, + 1, + 1, + 0, + 1 + ])).addIndex([0, 1, 3, 2]); + } + } + + class QuadUv extends Geometry { + constructor() { + super(); + this.vertices = new Float32Array([ + -1, + -1, + 1, + -1, + 1, + 1, + -1, + 1 + ]); + this.uvs = new Float32Array([ + 0, + 0, + 1, + 0, + 1, + 1, + 0, + 1 + ]); + this.vertexBuffer = new Buffer(this.vertices); + this.uvBuffer = new Buffer(this.uvs); + this.addAttribute("aVertexPosition", this.vertexBuffer).addAttribute("aTextureCoord", this.uvBuffer).addIndex([0, 1, 2, 0, 2, 3]); + } + map(targetTextureFrame, destinationFrame) { + let x = 0; + let y = 0; + this.uvs[0] = x; + this.uvs[1] = y; + this.uvs[2] = x + destinationFrame.width / targetTextureFrame.width; + this.uvs[3] = y; + this.uvs[4] = x + destinationFrame.width / targetTextureFrame.width; + this.uvs[5] = y + destinationFrame.height / targetTextureFrame.height; + this.uvs[6] = x; + this.uvs[7] = y + destinationFrame.height / targetTextureFrame.height; + x = destinationFrame.x; + y = destinationFrame.y; + this.vertices[0] = x; + this.vertices[1] = y; + this.vertices[2] = x + destinationFrame.width; + this.vertices[3] = y; + this.vertices[4] = x + destinationFrame.width; + this.vertices[5] = y + destinationFrame.height; + this.vertices[6] = x; + this.vertices[7] = y + destinationFrame.height; + this.invalidate(); + return this; + } + invalidate() { + this.vertexBuffer._updateID++; + this.uvBuffer._updateID++; + return this; + } + } + + let UID$2 = 0; + class UniformGroup { + constructor(uniforms, isStatic, isUbo) { + this.group = true; + this.syncUniforms = {}; + this.dirtyId = 0; + this.id = UID$2++; + this.static = !!isStatic; + this.ubo = !!isUbo; + if (uniforms instanceof Buffer) { + this.buffer = uniforms; + this.buffer.type = BUFFER_TYPE.UNIFORM_BUFFER; + this.autoManage = false; + this.ubo = true; + } else { + this.uniforms = uniforms; + if (this.ubo) { + this.buffer = new Buffer(new Float32Array(1)); + this.buffer.type = BUFFER_TYPE.UNIFORM_BUFFER; + this.autoManage = true; + } + } + } + update() { + this.dirtyId++; + if (!this.autoManage && this.buffer) { + this.buffer.update(); + } + } + add(name, uniforms, _static) { + if (!this.ubo) { + this.uniforms[name] = new UniformGroup(uniforms, _static); + } else { + throw new Error("[UniformGroup] uniform groups in ubo mode cannot be modified, or have uniform groups nested in them"); + } + } + static from(uniforms, _static, _ubo) { + return new UniformGroup(uniforms, _static, _ubo); + } + static uboFrom(uniforms, _static) { + return new UniformGroup(uniforms, _static ?? true, true); + } + } + + class FilterState { + constructor() { + this.renderTexture = null; + this.target = null; + this.legacy = false; + this.resolution = 1; + this.multisample = MSAA_QUALITY.NONE; + this.sourceFrame = new Rectangle(); + this.destinationFrame = new Rectangle(); + this.bindingSourceFrame = new Rectangle(); + this.bindingDestinationFrame = new Rectangle(); + this.filters = []; + this.transform = null; + } + clear() { + this.target = null; + this.filters = null; + this.renderTexture = null; + } + } + + const tempPoints = [new Point(), new Point(), new Point(), new Point()]; + const tempMatrix$1 = new Matrix(); + class FilterSystem { + constructor(renderer) { + this.renderer = renderer; + this.defaultFilterStack = [{}]; + this.texturePool = new RenderTexturePool(); + this.statePool = []; + this.quad = new Quad(); + this.quadUv = new QuadUv(); + this.tempRect = new Rectangle(); + this.activeState = {}; + this.globalUniforms = new UniformGroup({ + outputFrame: new Rectangle(), + inputSize: new Float32Array(4), + inputPixel: new Float32Array(4), + inputClamp: new Float32Array(4), + resolution: 1, + filterArea: new Float32Array(4), + filterClamp: new Float32Array(4) + }, true); + this.forceClear = false; + this.useMaxPadding = false; + } + init() { + this.texturePool.setScreenSize(this.renderer.view); + } + push(target, filters) { + const renderer = this.renderer; + const filterStack = this.defaultFilterStack; + const state = this.statePool.pop() || new FilterState(); + const renderTextureSystem = this.renderer.renderTexture; + let resolution = filters[0].resolution; + let multisample = filters[0].multisample; + let padding = filters[0].padding; + let autoFit = filters[0].autoFit; + let legacy = filters[0].legacy ?? true; + for (let i = 1; i < filters.length; i++) { + const filter = filters[i]; + resolution = Math.min(resolution, filter.resolution); + multisample = Math.min(multisample, filter.multisample); + padding = this.useMaxPadding ? Math.max(padding, filter.padding) : padding + filter.padding; + autoFit = autoFit && filter.autoFit; + legacy = legacy || (filter.legacy ?? true); + } + if (filterStack.length === 1) { + this.defaultFilterStack[0].renderTexture = renderTextureSystem.current; + } + filterStack.push(state); + state.resolution = resolution; + state.multisample = multisample; + state.legacy = legacy; + state.target = target; + state.sourceFrame.copyFrom(target.filterArea || target.getBounds(true)); + state.sourceFrame.pad(padding); + const sourceFrameProjected = this.tempRect.copyFrom(renderTextureSystem.sourceFrame); + if (renderer.projection.transform) { + this.transformAABB(tempMatrix$1.copyFrom(renderer.projection.transform).invert(), sourceFrameProjected); + } + if (autoFit) { + state.sourceFrame.fit(sourceFrameProjected); + if (state.sourceFrame.width <= 0 || state.sourceFrame.height <= 0) { + state.sourceFrame.width = 0; + state.sourceFrame.height = 0; + } + } else if (!state.sourceFrame.intersects(sourceFrameProjected)) { + state.sourceFrame.width = 0; + state.sourceFrame.height = 0; + } + this.roundFrame(state.sourceFrame, renderTextureSystem.current ? renderTextureSystem.current.resolution : renderer.resolution, renderTextureSystem.sourceFrame, renderTextureSystem.destinationFrame, renderer.projection.transform); + state.renderTexture = this.getOptimalFilterTexture(state.sourceFrame.width, state.sourceFrame.height, resolution, multisample); + state.filters = filters; + state.destinationFrame.width = state.renderTexture.width; + state.destinationFrame.height = state.renderTexture.height; + const destinationFrame = this.tempRect; + destinationFrame.x = 0; + destinationFrame.y = 0; + destinationFrame.width = state.sourceFrame.width; + destinationFrame.height = state.sourceFrame.height; + state.renderTexture.filterFrame = state.sourceFrame; + state.bindingSourceFrame.copyFrom(renderTextureSystem.sourceFrame); + state.bindingDestinationFrame.copyFrom(renderTextureSystem.destinationFrame); + state.transform = renderer.projection.transform; + renderer.projection.transform = null; + renderTextureSystem.bind(state.renderTexture, state.sourceFrame, destinationFrame); + renderer.framebuffer.clear(0, 0, 0, 0); + } + pop() { + const filterStack = this.defaultFilterStack; + const state = filterStack.pop(); + const filters = state.filters; + this.activeState = state; + const globalUniforms = this.globalUniforms.uniforms; + globalUniforms.outputFrame = state.sourceFrame; + globalUniforms.resolution = state.resolution; + const inputSize = globalUniforms.inputSize; + const inputPixel = globalUniforms.inputPixel; + const inputClamp = globalUniforms.inputClamp; + inputSize[0] = state.destinationFrame.width; + inputSize[1] = state.destinationFrame.height; + inputSize[2] = 1 / inputSize[0]; + inputSize[3] = 1 / inputSize[1]; + inputPixel[0] = Math.round(inputSize[0] * state.resolution); + inputPixel[1] = Math.round(inputSize[1] * state.resolution); + inputPixel[2] = 1 / inputPixel[0]; + inputPixel[3] = 1 / inputPixel[1]; + inputClamp[0] = 0.5 * inputPixel[2]; + inputClamp[1] = 0.5 * inputPixel[3]; + inputClamp[2] = state.sourceFrame.width * inputSize[2] - 0.5 * inputPixel[2]; + inputClamp[3] = state.sourceFrame.height * inputSize[3] - 0.5 * inputPixel[3]; + if (state.legacy) { + const filterArea = globalUniforms.filterArea; + filterArea[0] = state.destinationFrame.width; + filterArea[1] = state.destinationFrame.height; + filterArea[2] = state.sourceFrame.x; + filterArea[3] = state.sourceFrame.y; + globalUniforms.filterClamp = globalUniforms.inputClamp; + } + this.globalUniforms.update(); + const lastState = filterStack[filterStack.length - 1]; + this.renderer.framebuffer.blit(); + if (filters.length === 1) { + filters[0].apply(this, state.renderTexture, lastState.renderTexture, CLEAR_MODES.BLEND, state); + this.returnFilterTexture(state.renderTexture); + } else { + let flip = state.renderTexture; + let flop = this.getOptimalFilterTexture(flip.width, flip.height, state.resolution); + flop.filterFrame = flip.filterFrame; + let i = 0; + for (i = 0; i < filters.length - 1; ++i) { + if (i === 1 && state.multisample > 1) { + flop = this.getOptimalFilterTexture(flip.width, flip.height, state.resolution); + flop.filterFrame = flip.filterFrame; + } + filters[i].apply(this, flip, flop, CLEAR_MODES.CLEAR, state); + const t = flip; + flip = flop; + flop = t; + } + filters[i].apply(this, flip, lastState.renderTexture, CLEAR_MODES.BLEND, state); + if (i > 1 && state.multisample > 1) { + this.returnFilterTexture(state.renderTexture); + } + this.returnFilterTexture(flip); + this.returnFilterTexture(flop); + } + state.clear(); + this.statePool.push(state); + } + bindAndClear(filterTexture, clearMode = CLEAR_MODES.CLEAR) { + const { + renderTexture: renderTextureSystem, + state: stateSystem + } = this.renderer; + if (filterTexture === this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture) { + this.renderer.projection.transform = this.activeState.transform; + } else { + this.renderer.projection.transform = null; + } + if (filterTexture?.filterFrame) { + const destinationFrame = this.tempRect; + destinationFrame.x = 0; + destinationFrame.y = 0; + destinationFrame.width = filterTexture.filterFrame.width; + destinationFrame.height = filterTexture.filterFrame.height; + renderTextureSystem.bind(filterTexture, filterTexture.filterFrame, destinationFrame); + } else if (filterTexture !== this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture) { + renderTextureSystem.bind(filterTexture); + } else { + this.renderer.renderTexture.bind(filterTexture, this.activeState.bindingSourceFrame, this.activeState.bindingDestinationFrame); + } + const autoClear = stateSystem.stateId & 1 || this.forceClear; + if (clearMode === CLEAR_MODES.CLEAR || clearMode === CLEAR_MODES.BLIT && autoClear) { + this.renderer.framebuffer.clear(0, 0, 0, 0); + } + } + applyFilter(filter, input, output, clearMode) { + const renderer = this.renderer; + renderer.state.set(filter.state); + this.bindAndClear(output, clearMode); + filter.uniforms.uSampler = input; + filter.uniforms.filterGlobals = this.globalUniforms; + renderer.shader.bind(filter); + filter.legacy = !!filter.program.attributeData.aTextureCoord; + if (filter.legacy) { + this.quadUv.map(input._frame, input.filterFrame); + renderer.geometry.bind(this.quadUv); + renderer.geometry.draw(DRAW_MODES.TRIANGLES); + } else { + renderer.geometry.bind(this.quad); + renderer.geometry.draw(DRAW_MODES.TRIANGLE_STRIP); + } + } + calculateSpriteMatrix(outputMatrix, sprite) { + const { sourceFrame, destinationFrame } = this.activeState; + const { orig } = sprite._texture; + const mappedMatrix = outputMatrix.set(destinationFrame.width, 0, 0, destinationFrame.height, sourceFrame.x, sourceFrame.y); + const worldTransform = sprite.worldTransform.copyTo(Matrix.TEMP_MATRIX); + worldTransform.invert(); + mappedMatrix.prepend(worldTransform); + mappedMatrix.scale(1 / orig.width, 1 / orig.height); + mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y); + return mappedMatrix; + } + destroy() { + this.renderer = null; + this.texturePool.clear(false); + } + getOptimalFilterTexture(minWidth, minHeight, resolution = 1, multisample = MSAA_QUALITY.NONE) { + return this.texturePool.getOptimalTexture(minWidth, minHeight, resolution, multisample); + } + getFilterTexture(input, resolution, multisample) { + if (typeof input === "number") { + const swap = input; + input = resolution; + resolution = swap; + } + input = input || this.activeState.renderTexture; + const filterTexture = this.texturePool.getOptimalTexture(input.width, input.height, resolution || input.resolution, multisample || MSAA_QUALITY.NONE); + filterTexture.filterFrame = input.filterFrame; + return filterTexture; + } + returnFilterTexture(renderTexture) { + this.texturePool.returnTexture(renderTexture); + } + emptyPool() { + this.texturePool.clear(true); + } + resize() { + this.texturePool.setScreenSize(this.renderer.view); + } + transformAABB(matrix, rect) { + const lt = tempPoints[0]; + const lb = tempPoints[1]; + const rt = tempPoints[2]; + const rb = tempPoints[3]; + lt.set(rect.left, rect.top); + lb.set(rect.left, rect.bottom); + rt.set(rect.right, rect.top); + rb.set(rect.right, rect.bottom); + matrix.apply(lt, lt); + matrix.apply(lb, lb); + matrix.apply(rt, rt); + matrix.apply(rb, rb); + const x0 = Math.min(lt.x, lb.x, rt.x, rb.x); + const y0 = Math.min(lt.y, lb.y, rt.y, rb.y); + const x1 = Math.max(lt.x, lb.x, rt.x, rb.x); + const y1 = Math.max(lt.y, lb.y, rt.y, rb.y); + rect.x = x0; + rect.y = y0; + rect.width = x1 - x0; + rect.height = y1 - y0; + } + roundFrame(frame, resolution, bindingSourceFrame, bindingDestinationFrame, transform) { + if (frame.width <= 0 || frame.height <= 0 || bindingSourceFrame.width <= 0 || bindingSourceFrame.height <= 0) { + return; + } + if (transform) { + const { a, b, c, d } = transform; + if ((Math.abs(b) > 1e-4 || Math.abs(c) > 1e-4) && (Math.abs(a) > 1e-4 || Math.abs(d) > 1e-4)) { + return; + } + } + transform = transform ? tempMatrix$1.copyFrom(transform) : tempMatrix$1.identity(); + transform.translate(-bindingSourceFrame.x, -bindingSourceFrame.y).scale(bindingDestinationFrame.width / bindingSourceFrame.width, bindingDestinationFrame.height / bindingSourceFrame.height).translate(bindingDestinationFrame.x, bindingDestinationFrame.y); + this.transformAABB(transform, frame); + frame.ceil(resolution); + this.transformAABB(transform.invert(), frame); + } + } + FilterSystem.extension = { + type: ExtensionType.RendererSystem, + name: "filter" + }; + extensions$1.add(FilterSystem); + + class ObjectRenderer { + constructor(renderer) { + this.renderer = renderer; + } + flush() { + } + destroy() { + this.renderer = null; + } + start() { + } + stop() { + this.flush(); + } + render(_object) { + } + } + + class BatchSystem { + constructor(renderer) { + this.renderer = renderer; + this.emptyRenderer = new ObjectRenderer(renderer); + this.currentRenderer = this.emptyRenderer; + } + setObjectRenderer(objectRenderer) { + if (this.currentRenderer === objectRenderer) { + return; + } + this.currentRenderer.stop(); + this.currentRenderer = objectRenderer; + this.currentRenderer.start(); + } + flush() { + this.setObjectRenderer(this.emptyRenderer); + } + reset() { + this.setObjectRenderer(this.emptyRenderer); + } + copyBoundTextures(arr, maxTextures) { + const { boundTextures } = this.renderer.texture; + for (let i = maxTextures - 1; i >= 0; --i) { + arr[i] = boundTextures[i] || null; + if (arr[i]) { + arr[i]._batchLocation = i; + } + } + } + boundArray(texArray, boundTextures, batchId, maxTextures) { + const { elements, ids, count } = texArray; + let j = 0; + for (let i = 0; i < count; i++) { + const tex = elements[i]; + const loc = tex._batchLocation; + if (loc >= 0 && loc < maxTextures && boundTextures[loc] === tex) { + ids[i] = loc; + continue; + } + while (j < maxTextures) { + const bound = boundTextures[j]; + if (bound && bound._batchEnabled === batchId && bound._batchLocation === j) { + j++; + continue; + } + ids[i] = j; + tex._batchLocation = j; + boundTextures[j] = tex; + break; + } + } + } + destroy() { + this.renderer = null; + } + } + BatchSystem.extension = { + type: ExtensionType.RendererSystem, + name: "batch" + }; + extensions$1.add(BatchSystem); + + let CONTEXT_UID_COUNTER = 0; + class ContextSystem { + constructor(renderer) { + this.renderer = renderer; + this.webGLVersion = 1; + this.extensions = {}; + this.supports = { + uint32Indices: false + }; + 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; + this.renderer.CONTEXT_UID = CONTEXT_UID_COUNTER++; + if (gl.isContextLost() && gl.getExtension("WEBGL_lose_context")) { + gl.getExtension("WEBGL_lose_context").restoreContext(); + } + } + init(options) { + if (options.context) { + this.initFromContext(options.context); + } else { + const alpha = this.renderer.background.alpha < 1; + const premultipliedAlpha = options.premultipliedAlpha ?? true; + this.preserveDrawingBuffer = options.preserveDrawingBuffer; + this.useContextAlpha = options.useContextAlpha; + this.powerPreference = options.powerPreference; + this.initFromOptions({ + alpha, + premultipliedAlpha, + antialias: options.antialias, + stencil: true, + preserveDrawingBuffer: options.preserveDrawingBuffer, + powerPreference: options.powerPreference + }); + } + } + initFromContext(gl) { + this.gl = gl; + this.validateContext(gl); + this.renderer.gl = gl; + this.renderer.CONTEXT_UID = CONTEXT_UID_COUNTER++; + this.renderer.runners.contextChange.emit(gl); + const view = this.renderer.view; + if (view.addEventListener !== void 0) { + view.addEventListener("webglcontextlost", this.handleContextLost, false); + view.addEventListener("webglcontextrestored", this.handleContextRestored, false); + } + } + initFromOptions(options) { + const gl = this.createContext(this.renderer.view, options); + this.initFromContext(gl); + } + createContext(canvas, options) { + let gl; + if (settings.PREFER_ENV >= ENV.WEBGL2) { + gl = canvas.getContext("webgl2", options); + } + if (gl) { + this.webGLVersion = 2; + } else { + this.webGLVersion = 1; + gl = canvas.getContext("webgl", options) || canvas.getContext("experimental-webgl", options); + if (!gl) { + throw new Error("This browser does not support WebGL. Try using the canvas renderer"); + } + } + this.gl = gl; + this.getExtensions(); + return this.gl; + } + getExtensions() { + const { gl } = this; + const 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") + }; + if (this.webGLVersion === 1) { + Object.assign(this.extensions, common, { + drawBuffers: gl.getExtension("WEBGL_draw_buffers"), + depthTexture: gl.getExtension("WEBGL_depth_texture"), + loseContext: gl.getExtension("WEBGL_lose_context"), + 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") + }); + } else if (this.webGLVersion === 2) { + Object.assign(this.extensions, common, { + colorBufferFloat: gl.getExtension("EXT_color_buffer_float") + }); + } + } + handleContextLost(event) { + event.preventDefault(); + } + handleContextRestored() { + this.renderer.runners.contextChange.emit(this.gl); + } + destroy() { + const view = this.renderer.view; + this.renderer = null; + if (view.removeEventListener !== void 0) { + view.removeEventListener("webglcontextlost", this.handleContextLost); + view.removeEventListener("webglcontextrestored", this.handleContextRestored); + } + this.gl.useProgram(null); + if (this.extensions.loseContext) { + this.extensions.loseContext.loseContext(); + } + } + postrender() { + if (this.renderer.objectRenderer.renderingToScreen) { + this.gl.flush(); + } + } + validateContext(gl) { + const attributes = gl.getContextAttributes(); + const isWebGl2 = "WebGL2RenderingContext" in globalThis && gl instanceof globalThis.WebGL2RenderingContext; + if (isWebGl2) { + this.webGLVersion = 2; + } + if (attributes && !attributes.stencil) { + console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly"); + } + const hasuint32 = isWebGl2 || !!gl.getExtension("OES_element_index_uint"); + this.supports.uint32Indices = hasuint32; + if (!hasuint32) { + console.warn("Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly"); + } + } + } + ContextSystem.extension = { + type: ExtensionType.RendererSystem, + name: "context" + }; + extensions$1.add(ContextSystem); + + class GLFramebuffer { + constructor(framebuffer) { + this.framebuffer = framebuffer; + this.stencil = null; + this.dirtyId = -1; + this.dirtyFormat = -1; + this.dirtySize = -1; + this.multisample = MSAA_QUALITY.NONE; + this.msaaBuffer = null; + this.blitFramebuffer = null; + this.mipLevel = 0; + } + } + + const tempRectangle = new Rectangle(); + class FramebufferSystem { + constructor(renderer) { + this.renderer = renderer; + this.managedFramebuffers = []; + this.unknownFramebuffer = new Framebuffer(10, 10); + this.msaaSamples = null; + } + contextChange() { + const gl = this.gl = this.renderer.gl; + this.CONTEXT_UID = this.renderer.CONTEXT_UID; + this.current = this.unknownFramebuffer; + this.viewport = new Rectangle(); + this.hasMRT = true; + this.writeDepthTexture = true; + this.disposeAll(true); + if (this.renderer.context.webGLVersion === 1) { + let nativeDrawBuffersExtension = this.renderer.context.extensions.drawBuffers; + let nativeDepthTextureExtension = this.renderer.context.extensions.depthTexture; + if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) { + nativeDrawBuffersExtension = null; + nativeDepthTextureExtension = null; + } + if (nativeDrawBuffersExtension) { + gl.drawBuffers = (activeTextures) => nativeDrawBuffersExtension.drawBuffersWEBGL(activeTextures); + } else { + this.hasMRT = false; + gl.drawBuffers = () => { + }; + } + if (!nativeDepthTextureExtension) { + this.writeDepthTexture = false; + } + } else { + this.msaaSamples = gl.getInternalformatParameter(gl.RENDERBUFFER, gl.RGBA8, gl.SAMPLES); + } + } + bind(framebuffer, frame, mipLevel = 0) { + const { gl } = this; + if (framebuffer) { + const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID] || this.initFramebuffer(framebuffer); + if (this.current !== framebuffer) { + this.current = framebuffer; + gl.bindFramebuffer(gl.FRAMEBUFFER, fbo.framebuffer); + } + if (fbo.mipLevel !== mipLevel) { + framebuffer.dirtyId++; + framebuffer.dirtyFormat++; + fbo.mipLevel = mipLevel; + } + if (fbo.dirtyId !== framebuffer.dirtyId) { + fbo.dirtyId = framebuffer.dirtyId; + if (fbo.dirtyFormat !== framebuffer.dirtyFormat) { + fbo.dirtyFormat = framebuffer.dirtyFormat; + fbo.dirtySize = framebuffer.dirtySize; + this.updateFramebuffer(framebuffer, mipLevel); + } else if (fbo.dirtySize !== framebuffer.dirtySize) { + fbo.dirtySize = framebuffer.dirtySize; + this.resizeFramebuffer(framebuffer); + } + } + for (let i = 0; i < framebuffer.colorTextures.length; i++) { + const tex = framebuffer.colorTextures[i]; + this.renderer.texture.unbind(tex.parentTextureArray || tex); + } + if (framebuffer.depthTexture) { + this.renderer.texture.unbind(framebuffer.depthTexture); + } + if (frame) { + const mipWidth = frame.width >> mipLevel; + const mipHeight = frame.height >> mipLevel; + const scale = mipWidth / frame.width; + this.setViewport(frame.x * scale, frame.y * scale, mipWidth, mipHeight); + } else { + const mipWidth = framebuffer.width >> mipLevel; + const mipHeight = framebuffer.height >> mipLevel; + this.setViewport(0, 0, mipWidth, mipHeight); + } + } else { + if (this.current) { + this.current = null; + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + } + if (frame) { + this.setViewport(frame.x, frame.y, frame.width, frame.height); + } else { + this.setViewport(0, 0, this.renderer.width, this.renderer.height); + } + } + } + setViewport(x, y, width, height) { + const v = this.viewport; + x = Math.round(x); + y = Math.round(y); + width = Math.round(width); + height = Math.round(height); + if (v.width !== width || v.height !== height || v.x !== x || v.y !== y) { + v.x = x; + v.y = y; + v.width = width; + v.height = height; + this.gl.viewport(x, y, width, height); + } + } + get size() { + if (this.current) { + return { x: 0, y: 0, width: this.current.width, height: this.current.height }; + } + return { x: 0, y: 0, width: this.renderer.width, height: this.renderer.height }; + } + clear(r, g, b, a, mask = BUFFER_BITS.COLOR | BUFFER_BITS.DEPTH) { + const { gl } = this; + gl.clearColor(r, g, b, a); + gl.clear(mask); + } + initFramebuffer(framebuffer) { + const { gl } = this; + const fbo = new GLFramebuffer(gl.createFramebuffer()); + fbo.multisample = this.detectSamples(framebuffer.multisample); + framebuffer.glFramebuffers[this.CONTEXT_UID] = fbo; + this.managedFramebuffers.push(framebuffer); + framebuffer.disposeRunner.add(this); + return fbo; + } + resizeFramebuffer(framebuffer) { + const { gl } = this; + const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID]; + if (fbo.stencil) { + gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.stencil); + if (fbo.msaaBuffer) { + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, gl.DEPTH24_STENCIL8, framebuffer.width, framebuffer.height); + } else { + gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, framebuffer.width, framebuffer.height); + } + } + const colorTextures = framebuffer.colorTextures; + let count = colorTextures.length; + if (!gl.drawBuffers) { + count = Math.min(count, 1); + } + for (let i = 0; i < count; i++) { + const texture = colorTextures[i]; + const parentTexture = texture.parentTextureArray || texture; + this.renderer.texture.bind(parentTexture, 0); + if (i === 0 && fbo.msaaBuffer) { + gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.msaaBuffer); + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, parentTexture._glTextures[this.CONTEXT_UID].internalFormat, framebuffer.width, framebuffer.height); + } + } + if (framebuffer.depthTexture && this.writeDepthTexture) { + this.renderer.texture.bind(framebuffer.depthTexture, 0); + } + } + updateFramebuffer(framebuffer, mipLevel) { + const { gl } = this; + const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID]; + const colorTextures = framebuffer.colorTextures; + let count = colorTextures.length; + if (!gl.drawBuffers) { + count = Math.min(count, 1); + } + if (fbo.multisample > 1 && this.canMultisampleFramebuffer(framebuffer)) { + fbo.msaaBuffer = fbo.msaaBuffer || gl.createRenderbuffer(); + } else if (fbo.msaaBuffer) { + gl.deleteRenderbuffer(fbo.msaaBuffer); + fbo.msaaBuffer = null; + if (fbo.blitFramebuffer) { + fbo.blitFramebuffer.dispose(); + fbo.blitFramebuffer = null; + } + } + const activeTextures = []; + for (let i = 0; i < count; i++) { + const texture = colorTextures[i]; + const parentTexture = texture.parentTextureArray || texture; + this.renderer.texture.bind(parentTexture, 0); + if (i === 0 && fbo.msaaBuffer) { + gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.msaaBuffer); + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, parentTexture._glTextures[this.CONTEXT_UID].internalFormat, framebuffer.width, framebuffer.height); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, fbo.msaaBuffer); + } else { + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + i, texture.target, parentTexture._glTextures[this.CONTEXT_UID].texture, mipLevel); + activeTextures.push(gl.COLOR_ATTACHMENT0 + i); + } + } + if (activeTextures.length > 1) { + gl.drawBuffers(activeTextures); + } + if (framebuffer.depthTexture) { + const writeDepthTexture = this.writeDepthTexture; + if (writeDepthTexture) { + const depthTexture = framebuffer.depthTexture; + this.renderer.texture.bind(depthTexture, 0); + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, depthTexture._glTextures[this.CONTEXT_UID].texture, mipLevel); + } + } + if ((framebuffer.stencil || framebuffer.depth) && !(framebuffer.depthTexture && this.writeDepthTexture)) { + fbo.stencil = fbo.stencil || gl.createRenderbuffer(); + gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.stencil); + if (fbo.msaaBuffer) { + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, gl.DEPTH24_STENCIL8, framebuffer.width, framebuffer.height); + } else { + gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, framebuffer.width, framebuffer.height); + } + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, fbo.stencil); + } else if (fbo.stencil) { + gl.deleteRenderbuffer(fbo.stencil); + fbo.stencil = null; + } + } + canMultisampleFramebuffer(framebuffer) { + return this.renderer.context.webGLVersion !== 1 && framebuffer.colorTextures.length <= 1 && !framebuffer.depthTexture; + } + detectSamples(samples) { + const { msaaSamples } = this; + let res = MSAA_QUALITY.NONE; + if (samples <= 1 || msaaSamples === null) { + return res; + } + for (let i = 0; i < msaaSamples.length; i++) { + if (msaaSamples[i] <= samples) { + res = msaaSamples[i]; + break; + } + } + if (res === 1) { + res = MSAA_QUALITY.NONE; + } + return res; + } + blit(framebuffer, sourcePixels, destPixels) { + const { current, renderer, gl, CONTEXT_UID } = this; + if (renderer.context.webGLVersion !== 2) { + return; + } + if (!current) { + return; + } + const fbo = current.glFramebuffers[CONTEXT_UID]; + if (!fbo) { + return; + } + if (!framebuffer) { + if (!fbo.msaaBuffer) { + return; + } + const colorTexture = current.colorTextures[0]; + if (!colorTexture) { + return; + } + if (!fbo.blitFramebuffer) { + fbo.blitFramebuffer = new Framebuffer(current.width, current.height); + fbo.blitFramebuffer.addColorTexture(0, colorTexture); + } + framebuffer = fbo.blitFramebuffer; + if (framebuffer.colorTextures[0] !== colorTexture) { + framebuffer.colorTextures[0] = colorTexture; + framebuffer.dirtyId++; + framebuffer.dirtyFormat++; + } + if (framebuffer.width !== current.width || framebuffer.height !== current.height) { + framebuffer.width = current.width; + framebuffer.height = current.height; + framebuffer.dirtyId++; + framebuffer.dirtySize++; + } + } + if (!sourcePixels) { + sourcePixels = tempRectangle; + sourcePixels.width = current.width; + sourcePixels.height = current.height; + } + if (!destPixels) { + destPixels = sourcePixels; + } + const sameSize = sourcePixels.width === destPixels.width && sourcePixels.height === destPixels.height; + this.bind(framebuffer); + gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbo.framebuffer); + gl.blitFramebuffer(sourcePixels.left, sourcePixels.top, sourcePixels.right, sourcePixels.bottom, destPixels.left, destPixels.top, destPixels.right, destPixels.bottom, gl.COLOR_BUFFER_BIT, sameSize ? gl.NEAREST : gl.LINEAR); + } + disposeFramebuffer(framebuffer, contextLost) { + const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID]; + const gl = this.gl; + if (!fbo) { + return; + } + delete framebuffer.glFramebuffers[this.CONTEXT_UID]; + const index = this.managedFramebuffers.indexOf(framebuffer); + if (index >= 0) { + this.managedFramebuffers.splice(index, 1); + } + framebuffer.disposeRunner.remove(this); + if (!contextLost) { + gl.deleteFramebuffer(fbo.framebuffer); + if (fbo.msaaBuffer) { + gl.deleteRenderbuffer(fbo.msaaBuffer); + } + if (fbo.stencil) { + gl.deleteRenderbuffer(fbo.stencil); + } + } + if (fbo.blitFramebuffer) { + fbo.blitFramebuffer.dispose(); + } + } + disposeAll(contextLost) { + const list = this.managedFramebuffers; + this.managedFramebuffers = []; + for (let i = 0; i < list.length; i++) { + this.disposeFramebuffer(list[i], contextLost); + } + } + forceStencil() { + const framebuffer = this.current; + if (!framebuffer) { + return; + } + const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID]; + if (!fbo || fbo.stencil) { + return; + } + framebuffer.stencil = true; + const w = framebuffer.width; + const h = framebuffer.height; + const gl = this.gl; + const stencil = gl.createRenderbuffer(); + gl.bindRenderbuffer(gl.RENDERBUFFER, stencil); + if (fbo.msaaBuffer) { + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, gl.DEPTH24_STENCIL8, w, h); + } else { + gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, w, h); + } + fbo.stencil = stencil; + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, stencil); + } + reset() { + this.current = this.unknownFramebuffer; + this.viewport = new Rectangle(); + } + destroy() { + this.renderer = null; + } + } + FramebufferSystem.extension = { + type: ExtensionType.RendererSystem, + name: "framebuffer" + }; + extensions$1.add(FramebufferSystem); + + const byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 }; + class GeometrySystem { + constructor(renderer) { + this.renderer = renderer; + this._activeGeometry = null; + this._activeVao = null; + this.hasVao = true; + this.hasInstance = true; + this.canUseUInt32ElementIndex = false; + this.managedGeometries = {}; + } + contextChange() { + this.disposeAll(true); + const gl = this.gl = this.renderer.gl; + const context = this.renderer.context; + this.CONTEXT_UID = this.renderer.CONTEXT_UID; + if (context.webGLVersion !== 2) { + let nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; + if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) { + nativeVaoExtension = null; + } + if (nativeVaoExtension) { + gl.createVertexArray = () => nativeVaoExtension.createVertexArrayOES(); + gl.bindVertexArray = (vao) => nativeVaoExtension.bindVertexArrayOES(vao); + gl.deleteVertexArray = (vao) => nativeVaoExtension.deleteVertexArrayOES(vao); + } else { + this.hasVao = false; + gl.createVertexArray = () => null; + gl.bindVertexArray = () => null; + gl.deleteVertexArray = () => null; + } + } + if (context.webGLVersion !== 2) { + const instanceExt = gl.getExtension("ANGLE_instanced_arrays"); + if (instanceExt) { + gl.vertexAttribDivisor = (a, b) => instanceExt.vertexAttribDivisorANGLE(a, b); + gl.drawElementsInstanced = (a, b, c, d, e) => instanceExt.drawElementsInstancedANGLE(a, b, c, d, e); + gl.drawArraysInstanced = (a, b, c, d) => instanceExt.drawArraysInstancedANGLE(a, b, c, d); + } else { + this.hasInstance = false; + } + } + this.canUseUInt32ElementIndex = context.webGLVersion === 2 || !!context.extensions.uint32ElementIndex; + } + bind(geometry, shader) { + shader = shader || this.renderer.shader.shader; + const { gl } = this; + let vaos = geometry.glVertexArrayObjects[this.CONTEXT_UID]; + let incRefCount = false; + if (!vaos) { + this.managedGeometries[geometry.id] = geometry; + geometry.disposeRunner.add(this); + geometry.glVertexArrayObjects[this.CONTEXT_UID] = vaos = {}; + incRefCount = true; + } + const vao = vaos[shader.program.id] || this.initGeometryVao(geometry, shader, incRefCount); + this._activeGeometry = geometry; + if (this._activeVao !== vao) { + this._activeVao = vao; + if (this.hasVao) { + gl.bindVertexArray(vao); + } else { + this.activateVao(geometry, shader.program); + } + } + this.updateBuffers(); + } + reset() { + this.unbind(); + } + updateBuffers() { + const geometry = this._activeGeometry; + const bufferSystem = this.renderer.buffer; + for (let i = 0; i < geometry.buffers.length; i++) { + const buffer = geometry.buffers[i]; + bufferSystem.update(buffer); + } + } + checkCompatibility(geometry, program) { + const geometryAttributes = geometry.attributes; + const shaderAttributes = program.attributeData; + for (const j in shaderAttributes) { + if (!geometryAttributes[j]) { + throw new Error(`shader and geometry incompatible, geometry missing the "${j}" attribute`); + } + } + } + getSignature(geometry, program) { + const attribs = geometry.attributes; + const shaderAttributes = program.attributeData; + const strings = ["g", geometry.id]; + for (const i in attribs) { + if (shaderAttributes[i]) { + strings.push(i, shaderAttributes[i].location); + } + } + return strings.join("-"); + } + initGeometryVao(geometry, shader, incRefCount = true) { + const gl = this.gl; + const CONTEXT_UID = this.CONTEXT_UID; + const bufferSystem = this.renderer.buffer; + const program = shader.program; + if (!program.glPrograms[CONTEXT_UID]) { + this.renderer.shader.generateProgram(shader); + } + this.checkCompatibility(geometry, program); + const signature = this.getSignature(geometry, program); + const vaoObjectHash = geometry.glVertexArrayObjects[this.CONTEXT_UID]; + let vao = vaoObjectHash[signature]; + if (vao) { + vaoObjectHash[program.id] = vao; + return vao; + } + const buffers = geometry.buffers; + const attributes = geometry.attributes; + const tempStride = {}; + const tempStart = {}; + for (const j in buffers) { + tempStride[j] = 0; + tempStart[j] = 0; + } + for (const j in attributes) { + if (!attributes[j].size && program.attributeData[j]) { + attributes[j].size = program.attributeData[j].size; + } else if (!attributes[j].size) { + console.warn(`PIXI Geometry attribute '${j}' size cannot be determined (likely the bound shader does not have the attribute)`); + } + tempStride[attributes[j].buffer] += attributes[j].size * byteSizeMap[attributes[j].type]; + } + for (const j in attributes) { + const attribute = attributes[j]; + const attribSize = attribute.size; + if (attribute.stride === void 0) { + if (tempStride[attribute.buffer] === attribSize * byteSizeMap[attribute.type]) { + attribute.stride = 0; + } else { + attribute.stride = tempStride[attribute.buffer]; + } + } + if (attribute.start === void 0) { + attribute.start = tempStart[attribute.buffer]; + tempStart[attribute.buffer] += attribSize * byteSizeMap[attribute.type]; + } + } + vao = gl.createVertexArray(); + gl.bindVertexArray(vao); + for (let i = 0; i < buffers.length; i++) { + const buffer = buffers[i]; + bufferSystem.bind(buffer); + if (incRefCount) { + buffer._glBuffers[CONTEXT_UID].refCount++; + } + } + this.activateVao(geometry, program); + vaoObjectHash[program.id] = vao; + vaoObjectHash[signature] = vao; + gl.bindVertexArray(null); + bufferSystem.unbind(BUFFER_TYPE.ARRAY_BUFFER); + return vao; + } + disposeGeometry(geometry, contextLost) { + if (!this.managedGeometries[geometry.id]) { + return; + } + delete this.managedGeometries[geometry.id]; + const vaos = geometry.glVertexArrayObjects[this.CONTEXT_UID]; + const gl = this.gl; + const buffers = geometry.buffers; + const bufferSystem = this.renderer?.buffer; + geometry.disposeRunner.remove(this); + if (!vaos) { + return; + } + if (bufferSystem) { + for (let i = 0; i < buffers.length; i++) { + const buf = buffers[i]._glBuffers[this.CONTEXT_UID]; + if (buf) { + buf.refCount--; + if (buf.refCount === 0 && !contextLost) { + bufferSystem.dispose(buffers[i], contextLost); + } + } + } + } + if (!contextLost) { + for (const vaoId in vaos) { + if (vaoId[0] === "g") { + const vao = vaos[vaoId]; + if (this._activeVao === vao) { + this.unbind(); + } + gl.deleteVertexArray(vao); + } + } + } + delete geometry.glVertexArrayObjects[this.CONTEXT_UID]; + } + disposeAll(contextLost) { + const all = Object.keys(this.managedGeometries); + for (let i = 0; i < all.length; i++) { + this.disposeGeometry(this.managedGeometries[all[i]], contextLost); + } + } + activateVao(geometry, program) { + const gl = this.gl; + const CONTEXT_UID = this.CONTEXT_UID; + const bufferSystem = this.renderer.buffer; + const buffers = geometry.buffers; + const attributes = geometry.attributes; + if (geometry.indexBuffer) { + bufferSystem.bind(geometry.indexBuffer); + } + let lastBuffer = null; + for (const j in attributes) { + const attribute = attributes[j]; + const buffer = buffers[attribute.buffer]; + const glBuffer = buffer._glBuffers[CONTEXT_UID]; + if (program.attributeData[j]) { + if (lastBuffer !== glBuffer) { + bufferSystem.bind(buffer); + lastBuffer = glBuffer; + } + const location = program.attributeData[j].location; + gl.enableVertexAttribArray(location); + gl.vertexAttribPointer(location, attribute.size, attribute.type || gl.FLOAT, attribute.normalized, attribute.stride, attribute.start); + if (attribute.instance) { + if (this.hasInstance) { + gl.vertexAttribDivisor(location, 1); + } else { + throw new Error("geometry error, GPU Instancing is not supported on this device"); + } + } + } + } + } + draw(type, size, start, instanceCount) { + const { gl } = this; + const geometry = this._activeGeometry; + if (geometry.indexBuffer) { + const byteSize = geometry.indexBuffer.data.BYTES_PER_ELEMENT; + const glType = byteSize === 2 ? gl.UNSIGNED_SHORT : gl.UNSIGNED_INT; + if (byteSize === 2 || byteSize === 4 && this.canUseUInt32ElementIndex) { + if (geometry.instanced) { + gl.drawElementsInstanced(type, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize, instanceCount || 1); + } else { + gl.drawElements(type, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize); + } + } else { + console.warn("unsupported index buffer type: uint32"); + } + } else if (geometry.instanced) { + gl.drawArraysInstanced(type, start, size || geometry.getSize(), instanceCount || 1); + } else { + gl.drawArrays(type, start, size || geometry.getSize()); + } + return this; + } + unbind() { + this.gl.bindVertexArray(null); + this._activeVao = null; + this._activeGeometry = null; + } + destroy() { + this.renderer = null; + } + } + GeometrySystem.extension = { + type: ExtensionType.RendererSystem, + name: "geometry" + }; + extensions$1.add(GeometrySystem); + + class MaskData { + constructor(maskObject = null) { + this.type = MASK_TYPES.NONE; + this.autoDetect = true; + this.maskObject = maskObject || null; + this.pooled = false; + this.isMaskData = true; + this.resolution = null; + this.multisample = settings.FILTER_MULTISAMPLE; + this.enabled = true; + this.colorMask = 15; + this._filters = null; + this._stencilCounter = 0; + this._scissorCounter = 0; + this._scissorRect = null; + this._scissorRectLocal = null; + this._colorMask = 15; + this._target = null; + } + get filter() { + return this._filters ? this._filters[0] : null; + } + set filter(value) { + if (value) { + if (this._filters) { + this._filters[0] = value; + } else { + this._filters = [value]; + } + } else { + this._filters = null; + } + } + reset() { + if (this.pooled) { + this.maskObject = null; + this.type = MASK_TYPES.NONE; + this.autoDetect = true; + } + this._target = null; + this._scissorRectLocal = null; + } + copyCountersOrReset(maskAbove) { + if (maskAbove) { + this._stencilCounter = maskAbove._stencilCounter; + this._scissorCounter = maskAbove._scissorCounter; + this._scissorRect = maskAbove._scissorRect; + } else { + this._stencilCounter = 0; + this._scissorCounter = 0; + this._scissorRect = null; + } + } + } + + function compileShader(gl, type, src) { + const shader = gl.createShader(type); + gl.shaderSource(shader, src); + gl.compileShader(shader); + return shader; + } + + function logPrettyShaderError(gl, shader) { + const shaderSrc = gl.getShaderSource(shader).split("\n").map((line, index) => `${index}: ${line}`); + const shaderLog = gl.getShaderInfoLog(shader); + const splitShader = shaderLog.split("\n"); + const dedupe = {}; + const lineNumbers = splitShader.map((line) => parseFloat(line.replace(/^ERROR\: 0\:([\d]+)\:.*$/, "$1"))).filter((n) => { + if (n && !dedupe[n]) { + dedupe[n] = true; + return true; + } + return false; + }); + const logArgs = [""]; + lineNumbers.forEach((number) => { + shaderSrc[number - 1] = `%c${shaderSrc[number - 1]}%c`; + logArgs.push("background: #FF0000; color:#FFFFFF; font-size: 10px", "font-size: 10px"); + }); + const fragmentSourceToLog = shaderSrc.join("\n"); + logArgs[0] = fragmentSourceToLog; + console.error(shaderLog); + console.groupCollapsed("click to view full shader code"); + console.warn(...logArgs); + console.groupEnd(); + } + function logProgramError(gl, program, vertexShader, fragmentShader) { + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) { + logPrettyShaderError(gl, vertexShader); + } + if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) { + logPrettyShaderError(gl, fragmentShader); + } + console.error("PixiJS Error: Could not initialize shader."); + if (gl.getProgramInfoLog(program) !== "") { + console.warn("PixiJS Warning: gl.getProgramInfoLog()", gl.getProgramInfoLog(program)); + } + } + } + + function booleanArray(size) { + const array = new Array(size); + for (let i = 0; i < array.length; i++) { + array[i] = false; + } + 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 false; + 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; + } + + const unknownContext = {}; + let context = unknownContext; + function getTestContext() { + if (context === unknownContext || context?.isContextLost()) { + const canvas = settings.ADAPTER.createCanvas(); + let gl; + if (settings.PREFER_ENV >= ENV.WEBGL2) { + gl = canvas.getContext("webgl2", {}); + } + if (!gl) { + gl = canvas.getContext("webgl", {}) || canvas.getContext("experimental-webgl", {}); + if (!gl) { + gl = null; + } else { + gl.getExtension("WEBGL_draw_buffers"); + } + } + context = gl; + } + return context; + } + + let maxFragmentPrecision; + function getMaxFragmentPrecision() { + if (!maxFragmentPrecision) { + maxFragmentPrecision = PRECISION.MEDIUM; + const gl = getTestContext(); + if (gl) { + if (gl.getShaderPrecisionFormat) { + const shaderFragment = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT); + maxFragmentPrecision = shaderFragment.precision ? PRECISION.HIGH : PRECISION.MEDIUM; + } + } + } + return maxFragmentPrecision; + } + + function setPrecision(src, requestedPrecision, maxSupportedPrecision) { + if (src.substring(0, 9) !== "precision") { + let precision = requestedPrecision; + if (requestedPrecision === PRECISION.HIGH && maxSupportedPrecision !== PRECISION.HIGH) { + precision = PRECISION.MEDIUM; + } + return `precision ${precision} float; +${src}`; + } else if (maxSupportedPrecision !== PRECISION.HIGH && src.substring(0, 15) === "precision highp") { + return src.replace("precision highp", "precision mediump"); + } + return src; + } + + 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 mapSize(type) { + return GLSL_TO_SIZE[type]; + } + + 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" + }; + function mapType(gl, type) { + if (!GL_TABLE) { + const typeNames = Object.keys(GL_TO_GLSL_TYPES); + GL_TABLE = {}; + for (let i = 0; i < typeNames.length; ++i) { + const tn = typeNames[i]; + GL_TABLE[gl[tn]] = GL_TO_GLSL_TYPES[tn]; + } + } + return GL_TABLE[type]; + } + + const uniformParsers = [ + { + test: (data) => data.type === "float" && data.size === 1 && !data.isArray, + code: (name) => ` + if(uv["${name}"] !== ud["${name}"].value) + { + ud["${name}"].value = uv["${name}"] + gl.uniform1f(ud["${name}"].location, uv["${name}"]) + } + ` + }, + { + test: (data, uniform) => (data.type === "sampler2D" || data.type === "samplerCube" || data.type === "sampler2DArray") && data.size === 1 && !data.isArray && (uniform == null || uniform.castToBaseTexture !== void 0), + code: (name) => `t = syncData.textureCount++; + + renderer.texture.bind(uv["${name}"], t); + + if(ud["${name}"].value !== t) + { + ud["${name}"].value = t; + gl.uniform1i(ud["${name}"].location, t); +; // eslint-disable-line max-len + }` + }, + { + test: (data, uniform) => data.type === "mat3" && data.size === 1 && !data.isArray && uniform.a !== void 0, + code: (name) => ` + gl.uniformMatrix3fv(ud["${name}"].location, false, uv["${name}"].toArray(true)); + `, + codeUbo: (name) => ` + var ${name}_matrix = uv.${name}.toArray(true); + + data[offset] = ${name}_matrix[0]; + data[offset+1] = ${name}_matrix[1]; + data[offset+2] = ${name}_matrix[2]; + + data[offset + 4] = ${name}_matrix[3]; + data[offset + 5] = ${name}_matrix[4]; + data[offset + 6] = ${name}_matrix[5]; + + data[offset + 8] = ${name}_matrix[6]; + data[offset + 9] = ${name}_matrix[7]; + data[offset + 10] = ${name}_matrix[8]; + ` + }, + { + test: (data, uniform) => data.type === "vec2" && data.size === 1 && !data.isArray && uniform.x !== void 0, + code: (name) => ` + 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); + }`, + codeUbo: (name) => ` + v = uv.${name}; + + data[offset] = v.x; + data[offset+1] = v.y; + ` + }, + { + test: (data) => data.type === "vec2" && data.size === 1 && !data.isArray, + code: (name) => ` + cv = ud["${name}"].value; + v = uv["${name}"]; + + if(cv[0] !== v[0] || cv[1] !== v[1]) + { + cv[0] = v[0]; + cv[1] = v[1]; + gl.uniform2f(ud["${name}"].location, v[0], v[1]); + } + ` + }, + { + test: (data, uniform) => data.type === "vec4" && data.size === 1 && !data.isArray && uniform.width !== void 0, + code: (name) => ` + 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) + }`, + codeUbo: (name) => ` + v = uv.${name}; + + data[offset] = v.x; + data[offset+1] = v.y; + data[offset+2] = v.width; + data[offset+3] = v.height; + ` + }, + { + test: (data) => data.type === "vec4" && data.size === 1 && !data.isArray, + code: (name) => ` + cv = ud["${name}"].value; + v = uv["${name}"]; + + 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(ud["${name}"].location, v[0], v[1], v[2], v[3]) + }` + } + ]; + + const GLSL_TO_SINGLE_SETTERS_CACHED = { + float: ` + if (cv !== v) + { + cu.value = v; + gl.uniform1f(location, v); + }`, + vec2: ` + 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: ` + 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: ` + 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]); + }`, + int: ` + if (cv !== v) + { + cu.value = v; + + gl.uniform1i(location, v); + }`, + ivec2: ` + if (cv[0] !== v[0] || cv[1] !== v[1]) + { + cv[0] = v[0]; + cv[1] = v[1]; + + gl.uniform2i(location, v[0], v[1]); + }`, + ivec3: ` + 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]); + }`, + ivec4: ` + 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]); + }`, + uint: ` + if (cv !== v) + { + cu.value = v; + + gl.uniform1ui(location, v); + }`, + uvec2: ` + if (cv[0] !== v[0] || cv[1] !== v[1]) + { + cv[0] = v[0]; + cv[1] = v[1]; + + gl.uniform2ui(location, v[0], v[1]); + }`, + uvec3: ` + 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]); + }`, + uvec4: ` + 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); + }`, + bvec2: ` + if (cv[0] != v[0] || cv[1] != v[1]) + { + cv[0] = v[0]; + cv[1] = v[1]; + + gl.uniform2i(location, v[0], v[1]); + }`, + bvec3: ` + 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]); + }`, + bvec4: ` + 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]); + }`, + mat2: "gl.uniformMatrix2fv(location, false, v)", + mat3: "gl.uniformMatrix3fv(location, false, v)", + mat4: "gl.uniformMatrix4fv(location, false, v)", + sampler2D: ` + if (cv !== v) + { + cu.value = v; + + gl.uniform1i(location, v); + }`, + samplerCube: ` + if (cv !== v) + { + cu.value = v; + + gl.uniform1i(location, v); + }`, + sampler2DArray: ` + if (cv !== v) + { + cu.value = v; + + gl.uniform1i(location, v); + }` + }; + const GLSL_TO_ARRAY_SETTERS = { + float: `gl.uniform1fv(location, v)`, + vec2: `gl.uniform2fv(location, v)`, + vec3: `gl.uniform3fv(location, v)`, + vec4: "gl.uniform4fv(location, v)", + mat4: "gl.uniformMatrix4fv(location, false, v)", + mat3: "gl.uniformMatrix3fv(location, false, v)", + mat2: "gl.uniformMatrix2fv(location, false, v)", + int: "gl.uniform1iv(location, v)", + ivec2: "gl.uniform2iv(location, v)", + ivec3: "gl.uniform3iv(location, v)", + ivec4: "gl.uniform4iv(location, v)", + uint: "gl.uniform1uiv(location, v)", + uvec2: "gl.uniform2uiv(location, v)", + uvec3: "gl.uniform3uiv(location, v)", + uvec4: "gl.uniform4uiv(location, v)", + bool: "gl.uniform1iv(location, v)", + bvec2: "gl.uniform2iv(location, v)", + bvec3: "gl.uniform3iv(location, v)", + bvec4: "gl.uniform4iv(location, v)", + sampler2D: "gl.uniform1iv(location, v)", + samplerCube: "gl.uniform1iv(location, v)", + sampler2DArray: "gl.uniform1iv(location, v)" + }; + function generateUniformsSync(group, uniformData) { + const funcFragments = [` + var v = null; + var cv = null; + var cu = null; + var t = 0; + var gl = renderer.gl; + `]; + for (const i in group.uniforms) { + const data = uniformData[i]; + if (!data) { + if (group.uniforms[i]?.group) { + if (group.uniforms[i].ubo) { + funcFragments.push(` + renderer.shader.syncUniformBufferGroup(uv.${i}, '${i}'); + `); + } else { + funcFragments.push(` + renderer.shader.syncUniformGroup(uv.${i}, syncData); + `); + } + } + continue; + } + const uniform = group.uniforms[i]; + let parsed = false; + for (let j = 0; j < uniformParsers.length; j++) { + if (uniformParsers[j].test(data, uniform)) { + funcFragments.push(uniformParsers[j].code(i, uniform)); + parsed = true; + break; + } + } + if (!parsed) { + const templateType = data.size === 1 && !data.isArray ? GLSL_TO_SINGLE_SETTERS_CACHED : GLSL_TO_ARRAY_SETTERS; + const template = templateType[data.type].replace("location", `ud["${i}"].location`); + funcFragments.push(` + cu = ud["${i}"]; + cv = cu.value; + v = uv["${i}"]; + ${template};`); + } + } + return new Function("ud", "uv", "renderer", "syncData", funcFragments.join("\n")); + } + + const fragTemplate$1 = [ + "precision mediump float;", + "void main(void){", + "float test = 0.1;", + "%forloop%", + "gl_FragColor = vec4(0.0);", + "}" + ].join("\n"); + function generateIfTestSrc(maxIfs) { + let src = ""; + for (let i = 0; i < maxIfs; ++i) { + if (i > 0) { + src += "\nelse "; + } + if (i < maxIfs - 1) { + src += `if(test == ${i}.0){}`; + } + } + return src; + } + function checkMaxIfStatementsInShader(maxIfs, gl) { + if (maxIfs === 0) { + throw new Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`"); + } + const shader = gl.createShader(gl.FRAGMENT_SHADER); + while (true) { + const fragmentSrc = fragTemplate$1.replace(/%forloop%/gi, generateIfTestSrc(maxIfs)); + gl.shaderSource(shader, fragmentSrc); + gl.compileShader(shader); + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + maxIfs = maxIfs / 2 | 0; + } else { + break; + } + } + return maxIfs; + } + + let unsafeEval; + function unsafeEvalSupported() { + if (typeof unsafeEval === "boolean") { + return unsafeEval; + } + try { + const func = new Function("param1", "param2", "param3", "return param1[param2] === param3;"); + unsafeEval = func({ a: "b" }, "a", "b") === true; + } catch (e) { + unsafeEval = false; + } + return unsafeEval; + } + + var defaultFragment$2 = "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n gl_FragColor *= texture2D(uSampler, vTextureCoord);\n}"; + + var defaultVertex$3 = "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void){\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}\n"; + + let UID$1 = 0; + const nameCache = {}; + class Program { + constructor(vertexSrc, fragmentSrc, name = "pixi-shader", extra = {}) { + this.extra = {}; + this.id = UID$1++; + this.vertexSrc = vertexSrc || Program.defaultVertexSrc; + this.fragmentSrc = fragmentSrc || Program.defaultFragmentSrc; + this.vertexSrc = this.vertexSrc.trim(); + this.fragmentSrc = this.fragmentSrc.trim(); + this.extra = extra; + if (this.vertexSrc.substring(0, 8) !== "#version") { + name = name.replace(/\s+/g, "-"); + if (nameCache[name]) { + nameCache[name]++; + name += `-${nameCache[name]}`; + } else { + nameCache[name] = 1; + } + this.vertexSrc = `#define SHADER_NAME ${name} +${this.vertexSrc}`; + this.fragmentSrc = `#define SHADER_NAME ${name} +${this.fragmentSrc}`; + this.vertexSrc = setPrecision(this.vertexSrc, settings.PRECISION_VERTEX, PRECISION.HIGH); + this.fragmentSrc = setPrecision(this.fragmentSrc, settings.PRECISION_FRAGMENT, getMaxFragmentPrecision()); + } + this.glPrograms = {}; + this.syncUniforms = null; + } + static get defaultVertexSrc() { + return defaultVertex$3; + } + static get defaultFragmentSrc() { + return defaultFragment$2; + } + static from(vertexSrc, fragmentSrc, name) { + const key = vertexSrc + fragmentSrc; + let program = ProgramCache[key]; + if (!program) { + ProgramCache[key] = program = new Program(vertexSrc, fragmentSrc, name); + } + return program; + } + } + + class Shader { + constructor(program, uniforms) { + this.uniformBindCount = 0; + this.program = program; + if (uniforms) { + if (uniforms instanceof UniformGroup) { + this.uniformGroup = uniforms; + } else { + this.uniformGroup = new UniformGroup(uniforms); + } + } else { + this.uniformGroup = new UniformGroup({}); + } + this.disposeRunner = new Runner("disposeShader"); + } + checkUniformExists(name, group) { + if (group.uniforms[name]) { + return true; + } + for (const i in group.uniforms) { + const uniform = group.uniforms[i]; + if (uniform.group) { + if (this.checkUniformExists(name, uniform)) { + return true; + } + } + } + return false; + } + destroy() { + this.uniformGroup = null; + this.disposeRunner.emit(this); + this.disposeRunner.destroy(); + } + get uniforms() { + return this.uniformGroup.uniforms; + } + static from(vertexSrc, fragmentSrc, uniforms) { + const program = Program.from(vertexSrc, fragmentSrc); + return new Shader(program, uniforms); + } + } + + const BLEND$1 = 0; + const OFFSET$1 = 1; + const CULLING$1 = 2; + const DEPTH_TEST$1 = 3; + const WINDING$1 = 4; + const DEPTH_MASK$1 = 5; + class State { + constructor() { + this.data = 0; + this.blendMode = BLEND_MODES.NORMAL; + this.polygonOffset = 0; + this.blend = true; + this.depthMask = true; + } + get blend() { + return !!(this.data & 1 << BLEND$1); + } + set blend(value) { + if (!!(this.data & 1 << BLEND$1) !== value) { + this.data ^= 1 << BLEND$1; + } + } + get offsets() { + return !!(this.data & 1 << OFFSET$1); + } + set offsets(value) { + if (!!(this.data & 1 << OFFSET$1) !== value) { + this.data ^= 1 << OFFSET$1; + } + } + get culling() { + return !!(this.data & 1 << CULLING$1); + } + set culling(value) { + if (!!(this.data & 1 << CULLING$1) !== value) { + this.data ^= 1 << CULLING$1; + } + } + get depthTest() { + return !!(this.data & 1 << DEPTH_TEST$1); + } + set depthTest(value) { + if (!!(this.data & 1 << DEPTH_TEST$1) !== value) { + this.data ^= 1 << DEPTH_TEST$1; + } + } + get depthMask() { + return !!(this.data & 1 << DEPTH_MASK$1); + } + set depthMask(value) { + if (!!(this.data & 1 << DEPTH_MASK$1) !== value) { + this.data ^= 1 << DEPTH_MASK$1; + } + } + get clockwiseFrontFace() { + return !!(this.data & 1 << WINDING$1); + } + set clockwiseFrontFace(value) { + if (!!(this.data & 1 << WINDING$1) !== value) { + this.data ^= 1 << WINDING$1; + } + } + get blendMode() { + return this._blendMode; + } + set blendMode(value) { + this.blend = value !== BLEND_MODES.NONE; + this._blendMode = value; + } + get polygonOffset() { + return this._polygonOffset; + } + set polygonOffset(value) { + this.offsets = !!value; + this._polygonOffset = value; + } + static for2d() { + const state = new State(); + state.depthTest = false; + state.blend = true; + return state; + } + } + + var defaultFragment$1 = "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n}\n"; + + var defaultVertex$2 = "attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n"; + + class Filter extends Shader { + constructor(vertexSrc, fragmentSrc, uniforms) { + const program = Program.from(vertexSrc || Filter.defaultVertexSrc, fragmentSrc || Filter.defaultFragmentSrc); + super(program, uniforms); + this.padding = 0; + this.resolution = settings.FILTER_RESOLUTION; + this.multisample = settings.FILTER_MULTISAMPLE; + this.enabled = true; + this.autoFit = true; + this.state = new State(); + } + apply(filterManager, input, output, clearMode, _currentState) { + filterManager.applyFilter(this, input, output, clearMode); + } + get blendMode() { + return this.state.blendMode; + } + set blendMode(value) { + this.state.blendMode = value; + } + get resolution() { + return this._resolution; + } + set resolution(value) { + this._resolution = value; + } + static get defaultVertexSrc() { + return defaultVertex$2; + } + static get defaultFragmentSrc() { + return defaultFragment$1; + } + } + + var vertex$4 = "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = aTextureCoord;\n vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\n}\n"; + + var fragment$7 = "varying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform sampler2D mask;\nuniform float alpha;\nuniform float npmAlpha;\nuniform vec4 maskClamp;\n\nvoid main(void)\n{\n float clip = step(3.5,\n step(maskClamp.x, vMaskCoord.x) +\n step(maskClamp.y, vMaskCoord.y) +\n step(vMaskCoord.x, maskClamp.z) +\n step(vMaskCoord.y, maskClamp.w));\n\n vec4 original = texture2D(uSampler, vTextureCoord);\n vec4 masky = texture2D(mask, vMaskCoord);\n float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);\n\n original *= (alphaMul * masky.r * alpha * clip);\n\n gl_FragColor = original;\n}\n"; + + const tempMat$1 = new Matrix(); + class TextureMatrix { + constructor(texture, clampMargin) { + this._texture = texture; + 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 = typeof clampMargin === "undefined" ? 0.5 : clampMargin; + this.isSimple = false; + } + get texture() { + return this._texture; + } + set texture(value) { + this._texture = value; + this._textureID = -1; + } + multiplyUvs(uvs, out) { + if (out === void 0) { + out = uvs; + } + const mat = this.mapCoord; + for (let i = 0; i < uvs.length; i += 2) { + const x = uvs[i]; + const 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(forceUpdate) { + const tex = this._texture; + if (!tex || !tex.valid) { + return false; + } + if (!forceUpdate && this._textureID === tex._updateID) { + return false; + } + this._textureID = tex._updateID; + this._updateID++; + const uvs = tex._uvs; + this.mapCoord.set(uvs.x1 - uvs.x0, uvs.y1 - uvs.y0, uvs.x3 - uvs.x0, uvs.y3 - uvs.y0, uvs.x0, uvs.y0); + const orig = tex.orig; + const trim = tex.trim; + if (trim) { + tempMat$1.set(orig.width / trim.width, 0, 0, orig.height / trim.height, -trim.x / trim.width, -trim.y / trim.height); + this.mapCoord.append(tempMat$1); + } + const texBase = tex.baseTexture; + const frame = this.uClampFrame; + const margin = this.clampMargin / texBase.resolution; + const offset = this.clampOffset; + frame[0] = (tex._frame.x + margin + offset) / texBase.width; + frame[1] = (tex._frame.y + margin + offset) / texBase.height; + frame[2] = (tex._frame.x + tex._frame.width - margin + offset) / texBase.width; + frame[3] = (tex._frame.y + tex._frame.height - margin + offset) / texBase.height; + this.uClampOffset[0] = offset / texBase.realWidth; + this.uClampOffset[1] = offset / texBase.realHeight; + this.isSimple = tex._frame.width === texBase.width && tex._frame.height === texBase.height && tex.rotate === 0; + return true; + } + } + + class SpriteMaskFilter extends Filter { + constructor(vertexSrc, fragmentSrc, uniforms) { + let sprite = null; + if (typeof vertexSrc !== "string" && fragmentSrc === void 0 && uniforms === void 0) { + sprite = vertexSrc; + vertexSrc = void 0; + fragmentSrc = void 0; + uniforms = void 0; + } + super(vertexSrc || vertex$4, fragmentSrc || fragment$7, uniforms); + this.maskSprite = sprite; + this.maskMatrix = new Matrix(); + } + get maskSprite() { + return this._maskSprite; + } + set maskSprite(value) { + this._maskSprite = value; + if (this._maskSprite) { + this._maskSprite.renderable = false; + } + } + apply(filterManager, input, output, clearMode) { + const maskSprite = this._maskSprite; + const tex = maskSprite._texture; + if (!tex.valid) { + return; + } + if (!tex.uvMatrix) { + tex.uvMatrix = new TextureMatrix(tex, 0); + } + tex.uvMatrix.update(); + this.uniforms.npmAlpha = tex.baseTexture.alphaMode ? 0 : 1; + this.uniforms.mask = tex; + this.uniforms.otherMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, maskSprite).prepend(tex.uvMatrix.mapCoord); + this.uniforms.alpha = maskSprite.worldAlpha; + this.uniforms.maskClamp = tex.uvMatrix.uClampFrame; + filterManager.applyFilter(this, input, output, clearMode); + } + } + + class MaskSystem { + constructor(renderer) { + this.renderer = renderer; + this.enableScissor = true; + this.alphaMaskPool = []; + this.maskDataPool = []; + this.maskStack = []; + this.alphaMaskIndex = 0; + } + setMaskStack(maskStack) { + this.maskStack = maskStack; + this.renderer.scissor.setMaskStack(maskStack); + this.renderer.stencil.setMaskStack(maskStack); + } + push(target, maskDataOrTarget) { + let maskData = maskDataOrTarget; + if (!maskData.isMaskData) { + const d = this.maskDataPool.pop() || new MaskData(); + d.pooled = true; + d.maskObject = maskDataOrTarget; + maskData = d; + } + const maskAbove = this.maskStack.length !== 0 ? this.maskStack[this.maskStack.length - 1] : null; + maskData.copyCountersOrReset(maskAbove); + maskData._colorMask = maskAbove ? maskAbove._colorMask : 15; + if (maskData.autoDetect) { + this.detect(maskData); + } + maskData._target = target; + if (maskData.type !== MASK_TYPES.SPRITE) { + this.maskStack.push(maskData); + } + if (maskData.enabled) { + switch (maskData.type) { + case MASK_TYPES.SCISSOR: + this.renderer.scissor.push(maskData); + break; + case MASK_TYPES.STENCIL: + this.renderer.stencil.push(maskData); + break; + case MASK_TYPES.SPRITE: + maskData.copyCountersOrReset(null); + this.pushSpriteMask(maskData); + break; + case MASK_TYPES.COLOR: + this.pushColorMask(maskData); + break; + default: + break; + } + } + if (maskData.type === MASK_TYPES.SPRITE) { + this.maskStack.push(maskData); + } + } + pop(target) { + const maskData = this.maskStack.pop(); + if (!maskData || maskData._target !== target) { + return; + } + if (maskData.enabled) { + switch (maskData.type) { + case MASK_TYPES.SCISSOR: + this.renderer.scissor.pop(maskData); + break; + case MASK_TYPES.STENCIL: + this.renderer.stencil.pop(maskData.maskObject); + break; + case MASK_TYPES.SPRITE: + this.popSpriteMask(maskData); + break; + case MASK_TYPES.COLOR: + this.popColorMask(maskData); + break; + default: + break; + } + } + maskData.reset(); + if (maskData.pooled) { + this.maskDataPool.push(maskData); + } + if (this.maskStack.length !== 0) { + const maskCurrent = this.maskStack[this.maskStack.length - 1]; + if (maskCurrent.type === MASK_TYPES.SPRITE && maskCurrent._filters) { + maskCurrent._filters[0].maskSprite = maskCurrent.maskObject; + } + } + } + detect(maskData) { + const maskObject = maskData.maskObject; + if (!maskObject) { + maskData.type = MASK_TYPES.COLOR; + } else if (maskObject.isSprite) { + maskData.type = MASK_TYPES.SPRITE; + } else if (this.enableScissor && this.renderer.scissor.testScissor(maskData)) { + maskData.type = MASK_TYPES.SCISSOR; + } else { + maskData.type = MASK_TYPES.STENCIL; + } + } + pushSpriteMask(maskData) { + const { maskObject } = maskData; + const target = maskData._target; + let alphaMaskFilter = maskData._filters; + if (!alphaMaskFilter) { + alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex]; + if (!alphaMaskFilter) { + alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex] = [new SpriteMaskFilter()]; + } + } + const renderer = this.renderer; + const renderTextureSystem = renderer.renderTexture; + let resolution; + let multisample; + if (renderTextureSystem.current) { + const renderTexture = renderTextureSystem.current; + resolution = maskData.resolution || renderTexture.resolution; + multisample = maskData.multisample ?? renderTexture.multisample; + } else { + resolution = maskData.resolution || renderer.resolution; + multisample = maskData.multisample ?? renderer.multisample; + } + alphaMaskFilter[0].resolution = resolution; + alphaMaskFilter[0].multisample = multisample; + alphaMaskFilter[0].maskSprite = maskObject; + const stashFilterArea = target.filterArea; + target.filterArea = maskObject.getBounds(true); + renderer.filter.push(target, alphaMaskFilter); + target.filterArea = stashFilterArea; + if (!maskData._filters) { + this.alphaMaskIndex++; + } + } + popSpriteMask(maskData) { + this.renderer.filter.pop(); + if (maskData._filters) { + maskData._filters[0].maskSprite = null; + } else { + this.alphaMaskIndex--; + this.alphaMaskPool[this.alphaMaskIndex][0].maskSprite = null; + } + } + pushColorMask(maskData) { + const currColorMask = maskData._colorMask; + const nextColorMask = maskData._colorMask = currColorMask & maskData.colorMask; + if (nextColorMask !== currColorMask) { + this.renderer.gl.colorMask((nextColorMask & 1) !== 0, (nextColorMask & 2) !== 0, (nextColorMask & 4) !== 0, (nextColorMask & 8) !== 0); + } + } + popColorMask(maskData) { + const currColorMask = maskData._colorMask; + const nextColorMask = this.maskStack.length > 0 ? this.maskStack[this.maskStack.length - 1]._colorMask : 15; + if (nextColorMask !== currColorMask) { + this.renderer.gl.colorMask((nextColorMask & 1) !== 0, (nextColorMask & 2) !== 0, (nextColorMask & 4) !== 0, (nextColorMask & 8) !== 0); + } + } + destroy() { + this.renderer = null; + } + } + MaskSystem.extension = { + type: ExtensionType.RendererSystem, + name: "mask" + }; + extensions$1.add(MaskSystem); + + class AbstractMaskSystem { + constructor(renderer) { + this.renderer = renderer; + this.maskStack = []; + this.glConst = 0; + } + getStackLength() { + return this.maskStack.length; + } + setMaskStack(maskStack) { + const { gl } = this.renderer; + const curStackLen = this.getStackLength(); + this.maskStack = maskStack; + const newStackLen = this.getStackLength(); + if (newStackLen !== curStackLen) { + if (newStackLen === 0) { + gl.disable(this.glConst); + } else { + gl.enable(this.glConst); + this._useCurrent(); + } + } + } + _useCurrent() { + } + destroy() { + this.renderer = null; + this.maskStack = null; + } + } + + const tempMatrix = new Matrix(); + const rectPool = []; + const _ScissorSystem = class extends AbstractMaskSystem { + constructor(renderer) { + super(renderer); + this.glConst = settings.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST; + } + getStackLength() { + const maskData = this.maskStack[this.maskStack.length - 1]; + if (maskData) { + return maskData._scissorCounter; + } + return 0; + } + calcScissorRect(maskData) { + if (maskData._scissorRectLocal) { + return; + } + const prevData = maskData._scissorRect; + const { maskObject } = maskData; + const { renderer } = this; + const renderTextureSystem = renderer.renderTexture; + const rect = maskObject.getBounds(true, rectPool.pop() ?? new Rectangle()); + this.roundFrameToPixels(rect, renderTextureSystem.current ? renderTextureSystem.current.resolution : renderer.resolution, renderTextureSystem.sourceFrame, renderTextureSystem.destinationFrame, renderer.projection.transform); + if (prevData) { + rect.fit(prevData); + } + maskData._scissorRectLocal = rect; + } + static isMatrixRotated(matrix) { + if (!matrix) { + return false; + } + const { a, b, c, d } = matrix; + return (Math.abs(b) > 1e-4 || Math.abs(c) > 1e-4) && (Math.abs(a) > 1e-4 || Math.abs(d) > 1e-4); + } + testScissor(maskData) { + const { maskObject } = maskData; + if (!maskObject.isFastRect || !maskObject.isFastRect()) { + return false; + } + if (_ScissorSystem.isMatrixRotated(maskObject.worldTransform)) { + return false; + } + if (_ScissorSystem.isMatrixRotated(this.renderer.projection.transform)) { + return false; + } + this.calcScissorRect(maskData); + const rect = maskData._scissorRectLocal; + return rect.width > 0 && rect.height > 0; + } + roundFrameToPixels(frame, resolution, bindingSourceFrame, bindingDestinationFrame, transform) { + if (_ScissorSystem.isMatrixRotated(transform)) { + return; + } + transform = transform ? tempMatrix.copyFrom(transform) : tempMatrix.identity(); + transform.translate(-bindingSourceFrame.x, -bindingSourceFrame.y).scale(bindingDestinationFrame.width / bindingSourceFrame.width, bindingDestinationFrame.height / bindingSourceFrame.height).translate(bindingDestinationFrame.x, bindingDestinationFrame.y); + this.renderer.filter.transformAABB(transform, frame); + frame.fit(bindingDestinationFrame); + frame.x = Math.round(frame.x * resolution); + frame.y = Math.round(frame.y * resolution); + frame.width = Math.round(frame.width * resolution); + frame.height = Math.round(frame.height * resolution); + } + push(maskData) { + if (!maskData._scissorRectLocal) { + this.calcScissorRect(maskData); + } + const { gl } = this.renderer; + if (!maskData._scissorRect) { + gl.enable(gl.SCISSOR_TEST); + } + maskData._scissorCounter++; + maskData._scissorRect = maskData._scissorRectLocal; + this._useCurrent(); + } + pop(maskData) { + const { gl } = this.renderer; + if (maskData) { + rectPool.push(maskData._scissorRectLocal); + } + if (this.getStackLength() > 0) { + this._useCurrent(); + } else { + gl.disable(gl.SCISSOR_TEST); + } + } + _useCurrent() { + const rect = this.maskStack[this.maskStack.length - 1]._scissorRect; + let y; + if (this.renderer.renderTexture.current) { + y = rect.y; + } else { + y = this.renderer.height - rect.height - rect.y; + } + this.renderer.gl.scissor(rect.x, y, rect.width, rect.height); + } + }; + let ScissorSystem = _ScissorSystem; + ScissorSystem.extension = { + type: ExtensionType.RendererSystem, + name: "scissor" + }; + extensions$1.add(ScissorSystem); + + class StencilSystem extends AbstractMaskSystem { + constructor(renderer) { + super(renderer); + this.glConst = settings.ADAPTER.getWebGLRenderingContext().STENCIL_TEST; + } + getStackLength() { + const maskData = this.maskStack[this.maskStack.length - 1]; + if (maskData) { + return maskData._stencilCounter; + } + return 0; + } + push(maskData) { + const maskObject = maskData.maskObject; + const { gl } = this.renderer; + const prevMaskCount = maskData._stencilCounter; + if (prevMaskCount === 0) { + this.renderer.framebuffer.forceStencil(); + gl.clearStencil(0); + gl.clear(gl.STENCIL_BUFFER_BIT); + gl.enable(gl.STENCIL_TEST); + } + maskData._stencilCounter++; + const colorMask = maskData._colorMask; + if (colorMask !== 0) { + maskData._colorMask = 0; + gl.colorMask(false, false, false, false); + } + gl.stencilFunc(gl.EQUAL, prevMaskCount, 4294967295); + gl.stencilOp(gl.KEEP, gl.KEEP, gl.INCR); + maskObject.renderable = true; + maskObject.render(this.renderer); + this.renderer.batch.flush(); + maskObject.renderable = false; + if (colorMask !== 0) { + maskData._colorMask = colorMask; + gl.colorMask((colorMask & 1) !== 0, (colorMask & 2) !== 0, (colorMask & 4) !== 0, (colorMask & 8) !== 0); + } + this._useCurrent(); + } + pop(maskObject) { + const gl = this.renderer.gl; + if (this.getStackLength() === 0) { + gl.disable(gl.STENCIL_TEST); + } else { + const maskData = this.maskStack.length !== 0 ? this.maskStack[this.maskStack.length - 1] : null; + const colorMask = maskData ? maskData._colorMask : 15; + if (colorMask !== 0) { + maskData._colorMask = 0; + gl.colorMask(false, false, false, false); + } + gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR); + maskObject.renderable = true; + maskObject.render(this.renderer); + this.renderer.batch.flush(); + maskObject.renderable = false; + if (colorMask !== 0) { + maskData._colorMask = colorMask; + gl.colorMask((colorMask & 1) !== 0, (colorMask & 2) !== 0, (colorMask & 4) !== 0, (colorMask & 8) !== 0); + } + this._useCurrent(); + } + } + _useCurrent() { + const gl = this.renderer.gl; + gl.stencilFunc(gl.EQUAL, this.getStackLength(), 4294967295); + gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP); + } + } + StencilSystem.extension = { + type: ExtensionType.RendererSystem, + name: "stencil" + }; + extensions$1.add(StencilSystem); + + class ProjectionSystem { + constructor(renderer) { + this.renderer = renderer; + this.destinationFrame = null; + this.sourceFrame = null; + this.defaultFrame = null; + this.projectionMatrix = new Matrix(); + this.transform = null; + } + update(destinationFrame, sourceFrame, resolution, root) { + this.destinationFrame = destinationFrame || this.destinationFrame || this.defaultFrame; + this.sourceFrame = sourceFrame || this.sourceFrame || destinationFrame; + this.calculateProjection(this.destinationFrame, this.sourceFrame, resolution, root); + if (this.transform) { + this.projectionMatrix.append(this.transform); + } + const renderer = this.renderer; + renderer.globalUniforms.uniforms.projectionMatrix = this.projectionMatrix; + renderer.globalUniforms.update(); + if (renderer.shader.shader) { + renderer.shader.syncUniformGroup(renderer.shader.shader.uniforms.globals); + } + } + calculateProjection(_destinationFrame, sourceFrame, _resolution, root) { + const pm = this.projectionMatrix; + const sign = !root ? 1 : -1; + pm.identity(); + pm.a = 1 / sourceFrame.width * 2; + pm.d = sign * (1 / sourceFrame.height * 2); + pm.tx = -1 - sourceFrame.x * pm.a; + pm.ty = -sign - sourceFrame.y * pm.d; + } + setTransform(_matrix) { + } + destroy() { + this.renderer = null; + } + } + ProjectionSystem.extension = { + type: ExtensionType.RendererSystem, + name: "projection" + }; + extensions$1.add(ProjectionSystem); + + const tempRect = new Rectangle(); + const tempRect2 = new Rectangle(); + class RenderTextureSystem { + constructor(renderer) { + this.renderer = renderer; + this.defaultMaskStack = []; + this.current = null; + this.sourceFrame = new Rectangle(); + this.destinationFrame = new Rectangle(); + this.viewportFrame = new Rectangle(); + } + bind(renderTexture = null, sourceFrame, destinationFrame) { + const renderer = this.renderer; + this.current = renderTexture; + let baseTexture; + let framebuffer; + let resolution; + if (renderTexture) { + baseTexture = renderTexture.baseTexture; + resolution = baseTexture.resolution; + if (!sourceFrame) { + tempRect.width = renderTexture.frame.width; + tempRect.height = renderTexture.frame.height; + sourceFrame = tempRect; + } + if (!destinationFrame) { + tempRect2.x = renderTexture.frame.x; + tempRect2.y = renderTexture.frame.y; + tempRect2.width = sourceFrame.width; + tempRect2.height = sourceFrame.height; + destinationFrame = tempRect2; + } + framebuffer = baseTexture.framebuffer; + } else { + resolution = renderer.resolution; + if (!sourceFrame) { + tempRect.width = renderer._view.screen.width; + tempRect.height = renderer._view.screen.height; + sourceFrame = tempRect; + } + if (!destinationFrame) { + destinationFrame = tempRect; + destinationFrame.width = sourceFrame.width; + destinationFrame.height = sourceFrame.height; + } + } + const viewportFrame = this.viewportFrame; + viewportFrame.x = destinationFrame.x * resolution; + viewportFrame.y = destinationFrame.y * resolution; + viewportFrame.width = destinationFrame.width * resolution; + viewportFrame.height = destinationFrame.height * resolution; + if (!renderTexture) { + viewportFrame.y = renderer.view.height - (viewportFrame.y + viewportFrame.height); + } + viewportFrame.ceil(); + this.renderer.framebuffer.bind(framebuffer, viewportFrame); + this.renderer.projection.update(destinationFrame, sourceFrame, resolution, !framebuffer); + if (renderTexture) { + this.renderer.mask.setMaskStack(baseTexture.maskStack); + } else { + this.renderer.mask.setMaskStack(this.defaultMaskStack); + } + this.sourceFrame.copyFrom(sourceFrame); + this.destinationFrame.copyFrom(destinationFrame); + } + clear(clearColor, mask) { + if (this.current) { + clearColor = clearColor || this.current.baseTexture.clearColor; + } else { + clearColor = clearColor || this.renderer.background.colorRgba; + } + const destinationFrame = this.destinationFrame; + const baseFrame = this.current ? this.current.baseTexture : this.renderer._view.screen; + const clearMask = destinationFrame.width !== baseFrame.width || destinationFrame.height !== baseFrame.height; + if (clearMask) { + let { x, y, width, height } = this.viewportFrame; + x = Math.round(x); + y = Math.round(y); + width = Math.round(width); + height = Math.round(height); + this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST); + this.renderer.gl.scissor(x, y, width, height); + } + this.renderer.framebuffer.clear(clearColor[0], clearColor[1], clearColor[2], clearColor[3], mask); + if (clearMask) { + this.renderer.scissor.pop(); + } + } + resize() { + this.bind(null); + } + reset() { + this.bind(null); + } + destroy() { + this.renderer = null; + } + } + RenderTextureSystem.extension = { + type: ExtensionType.RendererSystem, + name: "renderTexture" + }; + extensions$1.add(RenderTextureSystem); + + function uboUpdate(_ud, _uv, _renderer, _syncData, buffer) { + _renderer.buffer.update(buffer); + } + const UBO_TO_SINGLE_SETTERS = { + float: ` + data[offset] = v; + `, + vec2: ` + data[offset] = v[0]; + data[offset+1] = v[1]; + `, + vec3: ` + data[offset] = v[0]; + data[offset+1] = v[1]; + data[offset+2] = v[2]; + + `, + vec4: ` + data[offset] = v[0]; + data[offset+1] = v[1]; + data[offset+2] = v[2]; + data[offset+3] = v[3]; + `, + mat2: ` + data[offset] = v[0]; + data[offset+1] = v[1]; + + data[offset+4] = v[2]; + data[offset+5] = v[3]; + `, + mat3: ` + 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]; + `, + mat4: ` + for(var i = 0; i < 16; i++) + { + data[offset + i] = v[i]; + } + ` + }; + const GLSL_TO_STD40_SIZE = { + float: 4, + vec2: 8, + vec3: 12, + vec4: 16, + int: 4, + ivec2: 8, + ivec3: 12, + ivec4: 16, + uint: 4, + uvec2: 8, + uvec3: 12, + uvec4: 16, + bool: 4, + bvec2: 8, + bvec3: 12, + bvec4: 16, + mat2: 16 * 2, + mat3: 16 * 3, + mat4: 16 * 4 + }; + function createUBOElements(uniformData) { + const uboElements = uniformData.map((data) => ({ + data, + offset: 0, + dataLen: 0, + dirty: 0 + })); + let size = 0; + let chunkSize = 0; + let offset = 0; + for (let i = 0; i < uboElements.length; i++) { + const uboElement = uboElements[i]; + size = GLSL_TO_STD40_SIZE[uboElement.data.type]; + if (uboElement.data.size > 1) { + size = Math.max(size, 16) * uboElement.data.size; + } + uboElement.dataLen = size; + if (chunkSize % size !== 0 && chunkSize < 16) { + const lineUpValue = chunkSize % size % 16; + chunkSize += lineUpValue; + offset += lineUpValue; + } + if (chunkSize + size > 16) { + offset = Math.ceil(offset / 16) * 16; + uboElement.offset = offset; + offset += size; + chunkSize = size; + } else { + uboElement.offset = offset; + chunkSize += size; + offset += size; + } + } + offset = Math.ceil(offset / 16) * 16; + return { uboElements, size: offset }; + } + function getUBOData(uniforms, uniformData) { + const usedUniformDatas = []; + for (const i in uniforms) { + if (uniformData[i]) { + usedUniformDatas.push(uniformData[i]); + } + } + usedUniformDatas.sort((a, b) => a.index - b.index); + return usedUniformDatas; + } + function generateUniformBufferSync(group, uniformData) { + if (!group.autoManage) { + return { size: 0, syncFunc: uboUpdate }; + } + const usedUniformDatas = getUBOData(group.uniforms, uniformData); + const { uboElements, size } = createUBOElements(usedUniformDatas); + const funcFragments = [` + var v = null; + var v2 = null; + var cv = null; + var t = 0; + var gl = renderer.gl + var index = 0; + var data = buffer.data; + `]; + for (let i = 0; i < uboElements.length; i++) { + const uboElement = uboElements[i]; + const uniform = group.uniforms[uboElement.data.name]; + const name = uboElement.data.name; + let parsed = false; + for (let j = 0; j < uniformParsers.length; j++) { + const uniformParser = uniformParsers[j]; + if (uniformParser.codeUbo && uniformParser.test(uboElement.data, uniform)) { + funcFragments.push(`offset = ${uboElement.offset / 4};`, uniformParsers[j].codeUbo(uboElement.data.name, uniform)); + parsed = true; + break; + } + } + if (!parsed) { + if (uboElement.data.size > 1) { + const size2 = mapSize(uboElement.data.type); + const rowSize = Math.max(GLSL_TO_STD40_SIZE[uboElement.data.type] / 16, 1); + const elementSize = size2 / rowSize; + const remainder = (4 - elementSize % 4) % 4; + funcFragments.push(` + cv = ud.${name}.value; + v = uv.${name}; + offset = ${uboElement.offset / 4}; + + t = 0; + + for(var i=0; i < ${uboElement.data.size * rowSize}; i++) + { + for(var j = 0; j < ${elementSize}; j++) + { + data[offset++] = v[t++]; + } + offset += ${remainder}; + } + + `); + } else { + const template = UBO_TO_SINGLE_SETTERS[uboElement.data.type]; + funcFragments.push(` + cv = ud.${name}.value; + v = uv.${name}; + offset = ${uboElement.offset / 4}; + ${template}; + `); + } + } + } + funcFragments.push(` + renderer.buffer.update(buffer); + `); + return { + size, + syncFunc: new Function("ud", "uv", "renderer", "syncData", "buffer", funcFragments.join("\n")) + }; + } + + class IGLUniformData { + } + class GLProgram { + constructor(program, uniformData) { + this.program = program; + this.uniformData = uniformData; + this.uniformGroups = {}; + this.uniformDirtyGroups = {}; + this.uniformBufferBindings = {}; + } + destroy() { + this.uniformData = null; + this.uniformGroups = null; + this.uniformDirtyGroups = null; + this.uniformBufferBindings = null; + this.program = null; + } + } + + function getAttributeData(program, gl) { + const attributes = {}; + const totalAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES); + for (let i = 0; i < totalAttributes; i++) { + const attribData = gl.getActiveAttrib(program, i); + if (attribData.name.startsWith("gl_")) { + continue; + } + const type = mapType(gl, attribData.type); + const data = { + type, + name: attribData.name, + size: mapSize(type), + location: gl.getAttribLocation(program, attribData.name) + }; + attributes[attribData.name] = data; + } + return attributes; + } + + function getUniformData(program, gl) { + const uniforms = {}; + const totalUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS); + for (let i = 0; i < totalUniforms; i++) { + const uniformData = gl.getActiveUniform(program, i); + const name = uniformData.name.replace(/\[.*?\]$/, ""); + const isArray = !!uniformData.name.match(/\[.*?\]$/); + const type = mapType(gl, uniformData.type); + uniforms[name] = { + name, + index: i, + type, + size: uniformData.size, + isArray, + value: defaultValue(type, uniformData.size) + }; + } + return uniforms; + } + + function generateProgram(gl, program) { + const glVertShader = compileShader(gl, gl.VERTEX_SHADER, program.vertexSrc); + const glFragShader = compileShader(gl, gl.FRAGMENT_SHADER, program.fragmentSrc); + const webGLProgram = gl.createProgram(); + gl.attachShader(webGLProgram, glVertShader); + gl.attachShader(webGLProgram, glFragShader); + const transformFeedbackVaryings = program.extra?.transformFeedbackVaryings; + if (transformFeedbackVaryings) { + if (typeof gl.transformFeedbackVaryings !== "function") { + } else { + gl.transformFeedbackVaryings(webGLProgram, transformFeedbackVaryings.names, transformFeedbackVaryings.bufferMode === "separate" ? gl.SEPARATE_ATTRIBS : gl.INTERLEAVED_ATTRIBS); + } + } + gl.linkProgram(webGLProgram); + if (!gl.getProgramParameter(webGLProgram, gl.LINK_STATUS)) { + logProgramError(gl, webGLProgram, glVertShader, glFragShader); + } + program.attributeData = getAttributeData(webGLProgram, gl); + program.uniformData = getUniformData(webGLProgram, gl); + if (!/^[ \t]*#[ \t]*version[ \t]+300[ \t]+es[ \t]*$/m.test(program.vertexSrc)) { + const keys = Object.keys(program.attributeData); + keys.sort((a, b) => a > b ? 1 : -1); + for (let i = 0; i < keys.length; i++) { + program.attributeData[keys[i]].location = i; + gl.bindAttribLocation(webGLProgram, i, keys[i]); + } + gl.linkProgram(webGLProgram); + } + gl.deleteShader(glVertShader); + gl.deleteShader(glFragShader); + const uniformData = {}; + for (const i in program.uniformData) { + const data = program.uniformData[i]; + uniformData[i] = { + location: gl.getUniformLocation(webGLProgram, i), + value: defaultValue(data.type, data.size) + }; + } + const glProgram = new GLProgram(webGLProgram, uniformData); + return glProgram; + } + + let UID = 0; + const defaultSyncData = { textureCount: 0, uboCount: 0 }; + class ShaderSystem { + constructor(renderer) { + this.destroyed = false; + this.renderer = renderer; + this.systemCheck(); + this.gl = null; + this.shader = null; + this.program = null; + this.cache = {}; + this._uboCache = {}; + this.id = UID++; + } + systemCheck() { + if (!unsafeEvalSupported()) { + throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support."); + } + } + contextChange(gl) { + this.gl = gl; + this.reset(); + } + bind(shader, dontSync) { + shader.disposeRunner.add(this); + shader.uniforms.globals = this.renderer.globalUniforms; + const program = shader.program; + const glProgram = program.glPrograms[this.renderer.CONTEXT_UID] || this.generateProgram(shader); + this.shader = shader; + if (this.program !== program) { + this.program = program; + this.gl.useProgram(glProgram.program); + } + if (!dontSync) { + defaultSyncData.textureCount = 0; + defaultSyncData.uboCount = 0; + this.syncUniformGroup(shader.uniformGroup, defaultSyncData); + } + return glProgram; + } + setUniforms(uniforms) { + const shader = this.shader.program; + const glProgram = shader.glPrograms[this.renderer.CONTEXT_UID]; + shader.syncUniforms(glProgram.uniformData, uniforms, this.renderer); + } + syncUniformGroup(group, syncData) { + const glProgram = this.getGlProgram(); + if (!group.static || group.dirtyId !== glProgram.uniformDirtyGroups[group.id]) { + glProgram.uniformDirtyGroups[group.id] = group.dirtyId; + this.syncUniforms(group, glProgram, syncData); + } + } + syncUniforms(group, glProgram, syncData) { + const syncFunc = group.syncUniforms[this.shader.program.id] || this.createSyncGroups(group); + syncFunc(glProgram.uniformData, group.uniforms, this.renderer, syncData); + } + createSyncGroups(group) { + const id = this.getSignature(group, this.shader.program.uniformData, "u"); + if (!this.cache[id]) { + this.cache[id] = generateUniformsSync(group, this.shader.program.uniformData); + } + group.syncUniforms[this.shader.program.id] = this.cache[id]; + return group.syncUniforms[this.shader.program.id]; + } + syncUniformBufferGroup(group, name) { + const glProgram = this.getGlProgram(); + if (!group.static || group.dirtyId !== 0 || !glProgram.uniformGroups[group.id]) { + group.dirtyId = 0; + const syncFunc = glProgram.uniformGroups[group.id] || this.createSyncBufferGroup(group, glProgram, name); + group.buffer.update(); + syncFunc(glProgram.uniformData, group.uniforms, this.renderer, defaultSyncData, group.buffer); + } + this.renderer.buffer.bindBufferBase(group.buffer, glProgram.uniformBufferBindings[name]); + } + createSyncBufferGroup(group, glProgram, name) { + const { gl } = this.renderer; + this.renderer.buffer.bind(group.buffer); + const uniformBlockIndex = this.gl.getUniformBlockIndex(glProgram.program, name); + glProgram.uniformBufferBindings[name] = this.shader.uniformBindCount; + gl.uniformBlockBinding(glProgram.program, uniformBlockIndex, this.shader.uniformBindCount); + this.shader.uniformBindCount++; + const id = this.getSignature(group, this.shader.program.uniformData, "ubo"); + let uboData = this._uboCache[id]; + if (!uboData) { + uboData = this._uboCache[id] = generateUniformBufferSync(group, this.shader.program.uniformData); + } + if (group.autoManage) { + const data = new Float32Array(uboData.size / 4); + group.buffer.update(data); + } + glProgram.uniformGroups[group.id] = uboData.syncFunc; + return glProgram.uniformGroups[group.id]; + } + getSignature(group, uniformData, preFix) { + const uniforms = group.uniforms; + const strings = [`${preFix}-`]; + for (const i in uniforms) { + strings.push(i); + if (uniformData[i]) { + strings.push(uniformData[i].type); + } + } + return strings.join("-"); + } + getGlProgram() { + if (this.shader) { + return this.shader.program.glPrograms[this.renderer.CONTEXT_UID]; + } + return null; + } + generateProgram(shader) { + const gl = this.gl; + const program = shader.program; + const glProgram = generateProgram(gl, program); + program.glPrograms[this.renderer.CONTEXT_UID] = glProgram; + return glProgram; + } + reset() { + this.program = null; + this.shader = null; + } + disposeShader(shader) { + if (this.shader === shader) { + this.shader = null; + } + } + destroy() { + this.renderer = null; + this.destroyed = true; + } + } + ShaderSystem.extension = { + type: ExtensionType.RendererSystem, + name: "shader" + }; + extensions$1.add(ShaderSystem); + + function mapWebGLBlendModesToPixi(gl, array = []) { + array[BLEND_MODES.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.ADD] = [gl.ONE, gl.ONE]; + array[BLEND_MODES.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.SCREEN] = [gl.ONE, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.NONE] = [0, 0]; + array[BLEND_MODES.NORMAL_NPM] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.ADD_NPM] = [gl.SRC_ALPHA, gl.ONE, gl.ONE, gl.ONE]; + array[BLEND_MODES.SCREEN_NPM] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.SRC_IN] = [gl.DST_ALPHA, gl.ZERO]; + array[BLEND_MODES.SRC_OUT] = [gl.ONE_MINUS_DST_ALPHA, gl.ZERO]; + array[BLEND_MODES.SRC_ATOP] = [gl.DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.DST_OVER] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE]; + array[BLEND_MODES.DST_IN] = [gl.ZERO, gl.SRC_ALPHA]; + array[BLEND_MODES.DST_OUT] = [gl.ZERO, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.DST_ATOP] = [gl.ONE_MINUS_DST_ALPHA, gl.SRC_ALPHA]; + array[BLEND_MODES.XOR] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA]; + array[BLEND_MODES.SUBTRACT] = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.FUNC_REVERSE_SUBTRACT, gl.FUNC_ADD]; + return array; + } + + const BLEND = 0; + const OFFSET = 1; + const CULLING = 2; + const DEPTH_TEST = 3; + const WINDING = 4; + const DEPTH_MASK = 5; + const _StateSystem = class { + constructor() { + this.gl = null; + this.stateId = 0; + this.polygonOffset = 0; + this.blendMode = BLEND_MODES.NONE; + this._blendEq = false; + this.map = []; + this.map[BLEND] = this.setBlend; + this.map[OFFSET] = this.setOffset; + this.map[CULLING] = this.setCullFace; + this.map[DEPTH_TEST] = this.setDepthTest; + this.map[WINDING] = this.setFrontFace; + this.map[DEPTH_MASK] = this.setDepthMask; + this.checks = []; + this.defaultState = new State(); + this.defaultState.blend = true; + } + contextChange(gl) { + this.gl = gl; + this.blendModes = mapWebGLBlendModesToPixi(gl); + this.set(this.defaultState); + this.reset(); + } + set(state) { + state = state || this.defaultState; + if (this.stateId !== state.data) { + let diff = this.stateId ^ state.data; + let i = 0; + while (diff) { + if (diff & 1) { + this.map[i].call(this, !!(state.data & 1 << i)); + } + diff = 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(_StateSystem.checkBlendMode, value); + this.gl[value ? "enable" : "disable"](this.gl.BLEND); + } + setOffset(value) { + this.updateCheck(_StateSystem.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.gl[value ? "enable" : "disable"](this.gl.CULL_FACE); + } + setFrontFace(value) { + this.gl.frontFace(this.gl[value ? "CW" : "CCW"]); + } + setBlendMode(value) { + if (value === this.blendMode) { + return; + } + this.blendMode = value; + const mode = this.blendModes[value]; + const gl = this.gl; + if (mode.length === 2) { + gl.blendFunc(mode[0], mode[1]); + } else { + gl.blendFuncSeparate(mode[0], mode[1], mode[2], mode[3]); + } + if (mode.length === 6) { + this._blendEq = true; + gl.blendEquationSeparate(mode[4], mode[5]); + } else if (this._blendEq) { + this._blendEq = false; + gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD); + } + } + setPolygonOffset(value, scale) { + this.gl.polygonOffset(value, scale); + } + reset() { + this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, false); + this.forceState(this.defaultState); + this._blendEq = true; + this.blendMode = -1; + this.setBlendMode(0); + } + updateCheck(func, value) { + const index = this.checks.indexOf(func); + if (value && index === -1) { + this.checks.push(func); + } else if (!value && index !== -1) { + 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; + } + }; + let StateSystem = _StateSystem; + StateSystem.extension = { + type: ExtensionType.RendererSystem, + name: "state" + }; + extensions$1.add(StateSystem); + + class TextureGCSystem { + constructor(renderer) { + this.renderer = renderer; + this.count = 0; + this.checkCount = 0; + this.maxIdle = settings.GC_MAX_IDLE; + this.checkCountMax = settings.GC_MAX_CHECK_COUNT; + this.mode = settings.GC_MODE; + } + postrender() { + if (!this.renderer.objectRenderer.renderingToScreen) { + return; + } + this.count++; + if (this.mode === GC_MODES.MANUAL) { + return; + } + this.checkCount++; + if (this.checkCount > this.checkCountMax) { + this.checkCount = 0; + this.run(); + } + } + run() { + const tm = this.renderer.texture; + const managedTextures = tm.managedTextures; + let wasRemoved = false; + for (let i = 0; i < managedTextures.length; i++) { + const texture = managedTextures[i]; + if (!texture.framebuffer && this.count - texture.touched > this.maxIdle) { + tm.destroyTexture(texture, true); + managedTextures[i] = null; + wasRemoved = true; + } + } + if (wasRemoved) { + let j = 0; + for (let i = 0; i < managedTextures.length; i++) { + if (managedTextures[i] !== null) { + managedTextures[j++] = managedTextures[i]; + } + } + managedTextures.length = j; + } + } + unload(displayObject) { + const tm = this.renderer.texture; + const texture = displayObject._texture; + if (texture && !texture.framebuffer) { + tm.destroyTexture(texture); + } + for (let i = displayObject.children.length - 1; i >= 0; i--) { + this.unload(displayObject.children[i]); + } + } + destroy() { + this.renderer = null; + } + } + TextureGCSystem.extension = { + type: ExtensionType.RendererSystem, + name: "textureGC" + }; + extensions$1.add(TextureGCSystem); + + function mapTypeAndFormatToInternalFormat(gl) { + let table; + if ("WebGL2RenderingContext" in globalThis && gl instanceof globalThis.WebGL2RenderingContext) { + table = { + [TYPES.UNSIGNED_BYTE]: { + [FORMATS.RGBA]: gl.RGBA8, + [FORMATS.RGB]: gl.RGB8, + [FORMATS.RG]: gl.RG8, + [FORMATS.RED]: gl.R8, + [FORMATS.RGBA_INTEGER]: gl.RGBA8UI, + [FORMATS.RGB_INTEGER]: gl.RGB8UI, + [FORMATS.RG_INTEGER]: gl.RG8UI, + [FORMATS.RED_INTEGER]: gl.R8UI, + [FORMATS.ALPHA]: gl.ALPHA, + [FORMATS.LUMINANCE]: gl.LUMINANCE, + [FORMATS.LUMINANCE_ALPHA]: gl.LUMINANCE_ALPHA + }, + [TYPES.BYTE]: { + [FORMATS.RGBA]: gl.RGBA8_SNORM, + [FORMATS.RGB]: gl.RGB8_SNORM, + [FORMATS.RG]: gl.RG8_SNORM, + [FORMATS.RED]: gl.R8_SNORM, + [FORMATS.RGBA_INTEGER]: gl.RGBA8I, + [FORMATS.RGB_INTEGER]: gl.RGB8I, + [FORMATS.RG_INTEGER]: gl.RG8I, + [FORMATS.RED_INTEGER]: gl.R8I + }, + [TYPES.UNSIGNED_SHORT]: { + [FORMATS.RGBA_INTEGER]: gl.RGBA16UI, + [FORMATS.RGB_INTEGER]: gl.RGB16UI, + [FORMATS.RG_INTEGER]: gl.RG16UI, + [FORMATS.RED_INTEGER]: gl.R16UI, + [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT16 + }, + [TYPES.SHORT]: { + [FORMATS.RGBA_INTEGER]: gl.RGBA16I, + [FORMATS.RGB_INTEGER]: gl.RGB16I, + [FORMATS.RG_INTEGER]: gl.RG16I, + [FORMATS.RED_INTEGER]: gl.R16I + }, + [TYPES.UNSIGNED_INT]: { + [FORMATS.RGBA_INTEGER]: gl.RGBA32UI, + [FORMATS.RGB_INTEGER]: gl.RGB32UI, + [FORMATS.RG_INTEGER]: gl.RG32UI, + [FORMATS.RED_INTEGER]: gl.R32UI, + [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT24 + }, + [TYPES.INT]: { + [FORMATS.RGBA_INTEGER]: gl.RGBA32I, + [FORMATS.RGB_INTEGER]: gl.RGB32I, + [FORMATS.RG_INTEGER]: gl.RG32I, + [FORMATS.RED_INTEGER]: gl.R32I + }, + [TYPES.FLOAT]: { + [FORMATS.RGBA]: gl.RGBA32F, + [FORMATS.RGB]: gl.RGB32F, + [FORMATS.RG]: gl.RG32F, + [FORMATS.RED]: gl.R32F, + [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT32F + }, + [TYPES.HALF_FLOAT]: { + [FORMATS.RGBA]: gl.RGBA16F, + [FORMATS.RGB]: gl.RGB16F, + [FORMATS.RG]: gl.RG16F, + [FORMATS.RED]: gl.R16F + }, + [TYPES.UNSIGNED_SHORT_5_6_5]: { + [FORMATS.RGB]: gl.RGB565 + }, + [TYPES.UNSIGNED_SHORT_4_4_4_4]: { + [FORMATS.RGBA]: gl.RGBA4 + }, + [TYPES.UNSIGNED_SHORT_5_5_5_1]: { + [FORMATS.RGBA]: gl.RGB5_A1 + }, + [TYPES.UNSIGNED_INT_2_10_10_10_REV]: { + [FORMATS.RGBA]: gl.RGB10_A2, + [FORMATS.RGBA_INTEGER]: gl.RGB10_A2UI + }, + [TYPES.UNSIGNED_INT_10F_11F_11F_REV]: { + [FORMATS.RGB]: gl.R11F_G11F_B10F + }, + [TYPES.UNSIGNED_INT_5_9_9_9_REV]: { + [FORMATS.RGB]: gl.RGB9_E5 + }, + [TYPES.UNSIGNED_INT_24_8]: { + [FORMATS.DEPTH_STENCIL]: gl.DEPTH24_STENCIL8 + }, + [TYPES.FLOAT_32_UNSIGNED_INT_24_8_REV]: { + [FORMATS.DEPTH_STENCIL]: gl.DEPTH32F_STENCIL8 + } + }; + } else { + table = { + [TYPES.UNSIGNED_BYTE]: { + [FORMATS.RGBA]: gl.RGBA, + [FORMATS.RGB]: gl.RGB, + [FORMATS.ALPHA]: gl.ALPHA, + [FORMATS.LUMINANCE]: gl.LUMINANCE, + [FORMATS.LUMINANCE_ALPHA]: gl.LUMINANCE_ALPHA + }, + [TYPES.UNSIGNED_SHORT_5_6_5]: { + [FORMATS.RGB]: gl.RGB + }, + [TYPES.UNSIGNED_SHORT_4_4_4_4]: { + [FORMATS.RGBA]: gl.RGBA + }, + [TYPES.UNSIGNED_SHORT_5_5_5_1]: { + [FORMATS.RGBA]: gl.RGBA + } + }; + } + return table; + } + + class GLTexture { + constructor(texture) { + this.texture = texture; + this.width = -1; + this.height = -1; + this.dirtyId = -1; + this.dirtyStyleId = -1; + this.mipmap = false; + this.wrapMode = 33071; + this.type = TYPES.UNSIGNED_BYTE; + this.internalFormat = FORMATS.RGBA; + this.samplerType = 0; + } + } + + class TextureSystem { + constructor(renderer) { + this.renderer = renderer; + this.boundTextures = []; + this.currentLocation = -1; + this.managedTextures = []; + this._unknownBoundTextures = false; + this.unknownTexture = new BaseTexture(); + this.hasIntegerTextures = false; + } + contextChange() { + const gl = this.gl = this.renderer.gl; + this.CONTEXT_UID = this.renderer.CONTEXT_UID; + this.webGLVersion = this.renderer.context.webGLVersion; + this.internalFormats = mapTypeAndFormatToInternalFormat(gl); + const maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); + this.boundTextures.length = maxTextures; + for (let i = 0; i < maxTextures; i++) { + this.boundTextures[i] = null; + } + this.emptyTextures = {}; + const emptyTexture2D = new GLTexture(gl.createTexture()); + gl.bindTexture(gl.TEXTURE_2D, emptyTexture2D.texture); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array(4)); + this.emptyTextures[gl.TEXTURE_2D] = emptyTexture2D; + this.emptyTextures[gl.TEXTURE_CUBE_MAP] = new GLTexture(gl.createTexture()); + gl.bindTexture(gl.TEXTURE_CUBE_MAP, this.emptyTextures[gl.TEXTURE_CUBE_MAP].texture); + for (let i = 0; i < 6; i++) { + gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); + } + gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR); + for (let i = 0; i < this.boundTextures.length; i++) { + this.bind(null, i); + } + } + bind(texture, location = 0) { + const { gl } = this; + texture = texture?.castToBaseTexture(); + if (texture?.valid && !texture.parentTextureArray) { + texture.touched = this.renderer.textureGC.count; + const glTexture = texture._glTextures[this.CONTEXT_UID] || this.initTexture(texture); + if (this.boundTextures[location] !== texture) { + if (this.currentLocation !== location) { + this.currentLocation = location; + gl.activeTexture(gl.TEXTURE0 + location); + } + gl.bindTexture(texture.target, glTexture.texture); + } + if (glTexture.dirtyId !== texture.dirtyId) { + if (this.currentLocation !== location) { + this.currentLocation = location; + gl.activeTexture(gl.TEXTURE0 + location); + } + this.updateTexture(texture); + } else if (glTexture.dirtyStyleId !== texture.dirtyStyleId) { + this.updateTextureStyle(texture); + } + this.boundTextures[location] = texture; + } else { + if (this.currentLocation !== location) { + this.currentLocation = location; + gl.activeTexture(gl.TEXTURE0 + location); + } + gl.bindTexture(gl.TEXTURE_2D, this.emptyTextures[gl.TEXTURE_2D].texture); + this.boundTextures[location] = null; + } + } + reset() { + this._unknownBoundTextures = true; + this.hasIntegerTextures = false; + this.currentLocation = -1; + for (let i = 0; i < this.boundTextures.length; i++) { + this.boundTextures[i] = this.unknownTexture; + } + } + unbind(texture) { + const { gl, boundTextures } = this; + if (this._unknownBoundTextures) { + this._unknownBoundTextures = false; + for (let i = 0; i < boundTextures.length; i++) { + if (boundTextures[i] === this.unknownTexture) { + this.bind(null, i); + } + } + } + for (let i = 0; i < boundTextures.length; i++) { + if (boundTextures[i] === texture) { + if (this.currentLocation !== i) { + gl.activeTexture(gl.TEXTURE0 + i); + this.currentLocation = i; + } + gl.bindTexture(texture.target, this.emptyTextures[texture.target].texture); + boundTextures[i] = null; + } + } + } + ensureSamplerType(maxTextures) { + const { boundTextures, hasIntegerTextures, CONTEXT_UID } = this; + if (!hasIntegerTextures) { + return; + } + for (let i = maxTextures - 1; i >= 0; --i) { + const tex = boundTextures[i]; + if (tex) { + const glTexture = tex._glTextures[CONTEXT_UID]; + if (glTexture.samplerType !== SAMPLER_TYPES.FLOAT) { + this.renderer.texture.unbind(tex); + } + } + } + } + initTexture(texture) { + const glTexture = new GLTexture(this.gl.createTexture()); + glTexture.dirtyId = -1; + texture._glTextures[this.CONTEXT_UID] = glTexture; + this.managedTextures.push(texture); + texture.on("dispose", this.destroyTexture, this); + return glTexture; + } + initTextureType(texture, glTexture) { + glTexture.internalFormat = this.internalFormats[texture.type]?.[texture.format] ?? texture.format; + if (this.webGLVersion === 2 && texture.type === TYPES.HALF_FLOAT) { + glTexture.type = this.gl.HALF_FLOAT; + } else { + glTexture.type = texture.type; + } + } + updateTexture(texture) { + const glTexture = texture._glTextures[this.CONTEXT_UID]; + if (!glTexture) { + return; + } + const renderer = this.renderer; + this.initTextureType(texture, glTexture); + if (texture.resource?.upload(renderer, texture, glTexture)) { + if (glTexture.samplerType !== SAMPLER_TYPES.FLOAT) { + this.hasIntegerTextures = true; + } + } else { + const width = texture.realWidth; + const height = texture.realHeight; + const gl = renderer.gl; + if (glTexture.width !== width || glTexture.height !== height || glTexture.dirtyId < 0) { + glTexture.width = width; + glTexture.height = height; + gl.texImage2D(texture.target, 0, glTexture.internalFormat, width, height, 0, texture.format, glTexture.type, null); + } + } + if (texture.dirtyStyleId !== glTexture.dirtyStyleId) { + this.updateTextureStyle(texture); + } + glTexture.dirtyId = texture.dirtyId; + } + destroyTexture(texture, skipRemove) { + const { gl } = this; + texture = texture.castToBaseTexture(); + if (texture._glTextures[this.CONTEXT_UID]) { + this.unbind(texture); + gl.deleteTexture(texture._glTextures[this.CONTEXT_UID].texture); + texture.off("dispose", this.destroyTexture, this); + delete texture._glTextures[this.CONTEXT_UID]; + if (!skipRemove) { + const i = this.managedTextures.indexOf(texture); + if (i !== -1) { + removeItems(this.managedTextures, i, 1); + } + } + } + } + updateTextureStyle(texture) { + const glTexture = texture._glTextures[this.CONTEXT_UID]; + if (!glTexture) { + return; + } + if ((texture.mipmap === MIPMAP_MODES.POW2 || this.webGLVersion !== 2) && !texture.isPowerOfTwo) { + glTexture.mipmap = false; + } else { + glTexture.mipmap = texture.mipmap >= 1; + } + if (this.webGLVersion !== 2 && !texture.isPowerOfTwo) { + glTexture.wrapMode = WRAP_MODES.CLAMP; + } else { + glTexture.wrapMode = texture.wrapMode; + } + if (texture.resource?.style(this.renderer, texture, glTexture)) { + } else { + this.setStyle(texture, glTexture); + } + glTexture.dirtyStyleId = texture.dirtyStyleId; + } + setStyle(texture, glTexture) { + const gl = this.gl; + if (glTexture.mipmap && texture.mipmap !== MIPMAP_MODES.ON_MANUAL) { + gl.generateMipmap(texture.target); + } + gl.texParameteri(texture.target, gl.TEXTURE_WRAP_S, glTexture.wrapMode); + gl.texParameteri(texture.target, gl.TEXTURE_WRAP_T, glTexture.wrapMode); + if (glTexture.mipmap) { + gl.texParameteri(texture.target, gl.TEXTURE_MIN_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR_MIPMAP_LINEAR : gl.NEAREST_MIPMAP_NEAREST); + const anisotropicExt = this.renderer.context.extensions.anisotropicFiltering; + if (anisotropicExt && texture.anisotropicLevel > 0 && texture.scaleMode === SCALE_MODES.LINEAR) { + const level = Math.min(texture.anisotropicLevel, gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT)); + gl.texParameterf(texture.target, anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT, level); + } + } else { + gl.texParameteri(texture.target, gl.TEXTURE_MIN_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR : gl.NEAREST); + } + gl.texParameteri(texture.target, gl.TEXTURE_MAG_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR : gl.NEAREST); + } + destroy() { + this.renderer = null; + } + } + TextureSystem.extension = { + type: ExtensionType.RendererSystem, + name: "texture" + }; + extensions$1.add(TextureSystem); + + const tempTransform = new Transform(); + class GenerateTextureSystem { + constructor(renderer) { + this.renderer = renderer; + this._tempMatrix = new Matrix(); + } + generateTexture(displayObject, options) { + const { region: manualRegion, ...textureOptions } = options || {}; + const region = manualRegion || displayObject.getLocalBounds(null, true); + if (region.width === 0) + region.width = 1; + if (region.height === 0) + region.height = 1; + const renderTexture = RenderTexture.create({ + width: region.width, + height: region.height, + ...textureOptions + }); + this._tempMatrix.tx = -region.x; + this._tempMatrix.ty = -region.y; + const transform = displayObject.transform; + displayObject.transform = tempTransform; + this.renderer.render(displayObject, { + renderTexture, + transform: this._tempMatrix, + skipUpdateTransform: !!displayObject.parent, + blit: true + }); + displayObject.transform = transform; + return renderTexture; + } + destroy() { + } + } + GenerateTextureSystem.extension = { + type: [ + ExtensionType.RendererSystem, + ExtensionType.CanvasRendererSystem + ], + name: "textureGenerator" + }; + extensions$1.add(GenerateTextureSystem); + + class BackgroundSystem { + constructor() { + this.clearBeforeRender = true; + this._backgroundColor = 0; + this._backgroundColorRgba = [0, 0, 0, 1]; + this._backgroundColorString = "#000000"; + this.color = this._backgroundColor; + this.alpha = 1; + } + init(options) { + this.clearBeforeRender = options.clearBeforeRender; + if (options.color) { + this.color = typeof options.color === "string" ? string2hex(options.color) : options.color; + } + this.alpha = options.alpha; + } + get color() { + return this._backgroundColor; + } + set color(value) { + this._backgroundColor = value; + this._backgroundColorString = hex2string(value); + hex2rgb(value, this._backgroundColorRgba); + } + get alpha() { + return this._backgroundColorRgba[3]; + } + set alpha(value) { + this._backgroundColorRgba[3] = value; + } + get colorRgba() { + return this._backgroundColorRgba; + } + get colorString() { + return this._backgroundColorString; + } + destroy() { + } + } + BackgroundSystem.extension = { + type: [ + ExtensionType.RendererSystem, + ExtensionType.CanvasRendererSystem + ], + name: "background" + }; + extensions$1.add(BackgroundSystem); + + class ViewSystem { + constructor(renderer) { + this.renderer = renderer; + } + init(options) { + this.screen = new Rectangle(0, 0, options.width, options.height); + this.element = options.view || settings.ADAPTER.createCanvas(); + this.resolution = options.resolution || settings.RESOLUTION; + this.autoDensity = !!options.autoDensity; + } + resizeView(desiredScreenWidth, desiredScreenHeight) { + this.element.width = Math.round(desiredScreenWidth * this.resolution); + this.element.height = Math.round(desiredScreenHeight * this.resolution); + const screenWidth = this.element.width / this.resolution; + const screenHeight = this.element.height / this.resolution; + this.screen.width = screenWidth; + this.screen.height = screenHeight; + if (this.autoDensity) { + this.element.style.width = `${screenWidth}px`; + this.element.style.height = `${screenHeight}px`; + } + this.renderer.emit("resize", screenWidth, screenHeight); + this.renderer.runners.resize.emit(this.screen.width, this.screen.height); + } + destroy(removeView) { + if (removeView) { + this.element.parentNode?.removeChild(this.element); + } + this.renderer = null; + this.element = null; + this.screen = null; + } + } + ViewSystem.extension = { + type: [ + ExtensionType.RendererSystem, + ExtensionType.CanvasRendererSystem + ], + name: "_view" + }; + extensions$1.add(ViewSystem); + + class PluginSystem { + constructor(renderer) { + this.renderer = renderer; + this.plugins = {}; + } + init(staticMap) { + for (const o in staticMap) { + this.plugins[o] = new staticMap[o](this.renderer); + } + } + destroy() { + for (const o in this.plugins) { + this.plugins[o].destroy(); + this.plugins[o] = null; + } + } + } + PluginSystem.extension = { + type: [ + ExtensionType.RendererSystem, + ExtensionType.CanvasRendererSystem + ], + name: "_plugin" + }; + extensions$1.add(PluginSystem); + + class SystemManager extends eventemitter3 { + constructor() { + super(...arguments); + this.runners = {}; + this._systemsHash = {}; + } + setup(config) { + this.addRunners(...config.runners); + const priority = (config.priority ?? []).filter((key) => config.systems[key]); + const orderByPriority = [ + ...priority, + ...Object.keys(config.systems).filter((key) => !priority.includes(key)) + ]; + for (const i of orderByPriority) { + this.addSystem(config.systems[i], i); + } + } + addRunners(...runnerIds) { + runnerIds.forEach((runnerId) => { + this.runners[runnerId] = new Runner(runnerId); + }); + } + addSystem(ClassRef, name) { + const 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; + } + emitWithCustomOptions(runner, options) { + const systemHashKeys = Object.keys(this._systemsHash); + runner.items.forEach((system) => { + const systemName = systemHashKeys.find((systemId) => this._systemsHash[systemId] === system); + system[runner.name](options[systemName]); + }); + } + destroy() { + Object.values(this.runners).forEach((runner) => { + runner.destroy(); + }); + this._systemsHash = {}; + } + } + + class StartupSystem { + constructor(renderer) { + this.renderer = renderer; + } + run(options) { + const renderer = this.renderer; + renderer.emitWithCustomOptions(renderer.runners.init, options); + if (options.hello) { + console.log(`PixiJS ${"7.0.2"} - ${renderer.rendererLogId} - https://pixijs.com`); + } + renderer.resize(this.renderer.screen.width, this.renderer.screen.height); + } + destroy() { + } + } + StartupSystem.extension = { + type: [ + ExtensionType.RendererSystem, + ExtensionType.CanvasRendererSystem + ], + name: "startup" + }; + extensions$1.add(StartupSystem); + + class TransformFeedbackSystem { + constructor(renderer) { + this.renderer = renderer; + } + contextChange() { + this.gl = this.renderer.gl; + this.CONTEXT_UID = this.renderer.CONTEXT_UID; + } + bind(transformFeedback) { + const { gl, CONTEXT_UID } = this; + const glTransformFeedback = transformFeedback._glTransformFeedbacks[CONTEXT_UID] || this.createGLTransformFeedback(transformFeedback); + gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, glTransformFeedback); + } + unbind() { + const { gl } = this; + gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null); + } + beginTransformFeedback(drawMode, shader) { + const { gl, renderer } = this; + if (shader) { + renderer.shader.bind(shader); + } + gl.beginTransformFeedback(drawMode); + } + endTransformFeedback() { + const { gl } = this; + gl.endTransformFeedback(); + } + createGLTransformFeedback(tf) { + const { gl, renderer, CONTEXT_UID } = this; + const glTransformFeedback = gl.createTransformFeedback(); + tf._glTransformFeedbacks[CONTEXT_UID] = glTransformFeedback; + gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, glTransformFeedback); + for (let i = 0; i < tf.buffers.length; i++) { + const buffer = tf.buffers[i]; + if (!buffer) + continue; + renderer.buffer.update(buffer); + buffer._glBuffers[CONTEXT_UID].refCount++; + gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, i, buffer._glBuffers[CONTEXT_UID].buffer || null); + } + gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null); + tf.disposeRunner.add(this); + return glTransformFeedback; + } + disposeTransformFeedback(tf, contextLost) { + const glTF = tf._glTransformFeedbacks[this.CONTEXT_UID]; + const gl = this.gl; + tf.disposeRunner.remove(this); + const bufferSystem = this.renderer.buffer; + if (bufferSystem) { + for (let i = 0; i < tf.buffers.length; i++) { + const buffer = tf.buffers[i]; + if (!buffer) + continue; + const buf = buffer._glBuffers[this.CONTEXT_UID]; + if (buf) { + buf.refCount--; + if (buf.refCount === 0 && !contextLost) { + bufferSystem.dispose(buffer, contextLost); + } + } + } + } + if (!glTF) { + return; + } + if (!contextLost) { + gl.deleteTransformFeedback(glTF); + } + delete tf._glTransformFeedbacks[this.CONTEXT_UID]; + } + destroy() { + this.renderer = null; + } + } + TransformFeedbackSystem.extension = { + type: ExtensionType.RendererSystem, + name: "transformFeedback" + }; + extensions$1.add(TransformFeedbackSystem); + + const renderers = []; + extensions$1.handleByList(ExtensionType.Renderer, renderers); + function autoDetectRenderer(options) { + for (const RendererType of renderers) { + if (RendererType.test(options)) { + return new RendererType(options); + } + } + throw new Error("Unable to auto-detect a suitable renderer."); + } + + var $defaultVertex = "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}"; + + var $defaultFilterVertex = "attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n"; + + const defaultVertex$1 = $defaultVertex; + const defaultFilterVertex = $defaultFilterVertex; + + const _Renderer = class extends SystemManager { + constructor(options) { + super(); + options = Object.assign({}, settings.RENDER_OPTIONS, options); + this.gl = null; + this.CONTEXT_UID = 0; + this.globalUniforms = new UniformGroup({ + projectionMatrix: new Matrix() + }, true); + const systemConfig = { + runners: ["init", "destroy", "contextChange", "reset", "update", "postrender", "prerender", "resize"], + systems: _Renderer.__systems, + priority: [ + "_view", + "textureGenerator", + "background", + "_plugin", + "startup", + "context", + "state", + "texture", + "buffer", + "geometry", + "framebuffer", + "transformFeedback", + "mask", + "scissor", + "stencil", + "projection", + "textureGC", + "filter", + "renderTexture", + "batch", + "objectRenderer", + "_multisample" + ] + }; + this.setup(systemConfig); + const startupOptions = { + hello: options.hello, + _plugin: _Renderer.__plugins, + background: { + alpha: options.backgroundAlpha, + color: options.background ?? options.backgroundColor, + clearBeforeRender: options.clearBeforeRender + }, + _view: { + height: options.height, + width: options.width, + autoDensity: options.autoDensity, + resolution: options.resolution, + view: options.view + }, + context: { + antialias: options.antialias, + context: options.context, + powerPreference: options.powerPreference, + premultipliedAlpha: options.premultipliedAlpha ?? (options.useContextAlpha && options.useContextAlpha !== "notMultiplied"), + preserveDrawingBuffer: options.preserveDrawingBuffer + } + }; + this.startup.run(startupOptions); + } + static test(options) { + if (options?.forceCanvas) { + return false; + } + return isWebGLSupported(); + } + render(displayObject, options) { + this.objectRenderer.render(displayObject, options); + } + resize(desiredScreenWidth, desiredScreenHeight) { + this._view.resizeView(desiredScreenWidth, desiredScreenHeight); + } + reset() { + this.runners.reset.emit(); + return this; + } + clear() { + this.renderTexture.bind(); + this.renderTexture.clear(); + } + destroy(removeView = false) { + this.runners.destroy.items.reverse(); + this.emitWithCustomOptions(this.runners.destroy, { + _view: removeView + }); + super.destroy(); + } + get plugins() { + return this._plugin.plugins; + } + get multisample() { + return this._multisample.multisample; + } + get width() { + return this._view.element.width; + } + get height() { + return this._view.element.height; + } + get resolution() { + return this._view.resolution; + } + get autoDensity() { + return this._view.autoDensity; + } + get view() { + return this._view.element; + } + get screen() { + return this._view.screen; + } + get lastObjectRendered() { + return this.objectRenderer.lastObjectRendered; + } + get renderingToScreen() { + return this.objectRenderer.renderingToScreen; + } + get rendererLogId() { + return `WebGL ${this.context.webGLVersion}`; + } + get clearBeforeRender() { + return this.background.clearBeforeRender; + } + get useContextAlpha() { + return this.context.useContextAlpha; + } + get preserveDrawingBuffer() { + return this.context.preserveDrawingBuffer; + } + get backgroundColor() { + return this.background.color; + } + set backgroundColor(value) { + this.background.color = value; + } + get backgroundAlpha() { + return this.background.color; + } + set backgroundAlpha(value) { + this.background.alpha = value; + } + get powerPreference() { + return this.context.powerPreference; + } + generateTexture(displayObject, options) { + return this.textureGenerator.generateTexture(displayObject, options); + } + }; + let Renderer = _Renderer; + Renderer.extension = { + type: ExtensionType.Renderer, + priority: 1 + }; + Renderer.__plugins = {}; + Renderer.__systems = {}; + extensions$1.handleByMap(ExtensionType.RendererPlugin, Renderer.__plugins); + extensions$1.handleByMap(ExtensionType.RendererSystem, Renderer.__systems); + extensions$1.add(Renderer); + + class BatchDrawCall { + constructor() { + this.texArray = null; + this.blend = 0; + this.type = DRAW_MODES.TRIANGLES; + this.start = 0; + this.size = 0; + this.data = null; + } + } + + class BatchTextureArray { + constructor() { + this.elements = []; + this.ids = []; + this.count = 0; + } + clear() { + for (let i = 0; i < this.count; i++) { + this.elements[i] = null; + } + this.count = 0; + } + } + + class ViewableBuffer { + constructor(sizeOrBuffer) { + if (typeof sizeOrBuffer === "number") { + this.rawBinaryData = new ArrayBuffer(sizeOrBuffer); + } else if (sizeOrBuffer instanceof Uint8Array) { + this.rawBinaryData = sizeOrBuffer.buffer; + } else { + this.rawBinaryData = sizeOrBuffer; + } + this.uint32View = new Uint32Array(this.rawBinaryData); + this.float32View = new Float32Array(this.rawBinaryData); + } + get int8View() { + if (!this._int8View) { + this._int8View = new Int8Array(this.rawBinaryData); + } + return this._int8View; + } + get uint8View() { + if (!this._uint8View) { + this._uint8View = new Uint8Array(this.rawBinaryData); + } + return this._uint8View; + } + get int16View() { + if (!this._int16View) { + this._int16View = new Int16Array(this.rawBinaryData); + } + return this._int16View; + } + get uint16View() { + if (!this._uint16View) { + this._uint16View = new Uint16Array(this.rawBinaryData); + } + return this._uint16View; + } + get int32View() { + if (!this._int32View) { + this._int32View = new Int32Array(this.rawBinaryData); + } + return this._int32View; + } + 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`); + } + } + } + + class BatchShaderGenerator { + constructor(vertexSrc, fragTemplate) { + this.vertexSrc = vertexSrc; + this.fragTemplate = fragTemplate; + this.programCache = {}; + this.defaultGroupCache = {}; + if (!fragTemplate.includes("%count%")) { + throw new Error('Fragment template must contain "%count%".'); + } + if (!fragTemplate.includes("%forloop%")) { + throw new Error('Fragment template must contain "%forloop%".'); + } + } + generateShader(maxTextures) { + if (!this.programCache[maxTextures]) { + const sampleValues = new Int32Array(maxTextures); + for (let i = 0; i < maxTextures; i++) { + sampleValues[i] = i; + } + this.defaultGroupCache[maxTextures] = UniformGroup.from({ uSamplers: sampleValues }, true); + let fragmentSrc = this.fragTemplate; + fragmentSrc = fragmentSrc.replace(/%count%/gi, `${maxTextures}`); + fragmentSrc = fragmentSrc.replace(/%forloop%/gi, this.generateSampleSrc(maxTextures)); + this.programCache[maxTextures] = new Program(this.vertexSrc, fragmentSrc); + } + const uniforms = { + tint: new Float32Array([1, 1, 1, 1]), + translationMatrix: new Matrix(), + default: this.defaultGroupCache[maxTextures] + }; + return new Shader(this.programCache[maxTextures], uniforms); + } + generateSampleSrc(maxTextures) { + let src = ""; + src += "\n"; + src += "\n"; + for (let i = 0; i < maxTextures; i++) { + if (i > 0) { + src += "\nelse "; + } + if (i < maxTextures - 1) { + src += `if(vTextureId < ${i}.5)`; + } + src += "\n{"; + src += ` + color = texture2D(uSamplers[${i}], vTextureCoord);`; + src += "\n}"; + } + src += "\n"; + src += "\n"; + return src; + } + } + + class BatchGeometry extends Geometry { + constructor(_static = false) { + super(); + this._buffer = new Buffer(null, _static, false); + this._indexBuffer = new Buffer(null, _static, true); + this.addAttribute("aVertexPosition", this._buffer, 2, false, TYPES.FLOAT).addAttribute("aTextureCoord", this._buffer, 2, false, TYPES.FLOAT).addAttribute("aColor", this._buffer, 4, true, TYPES.UNSIGNED_BYTE).addAttribute("aTextureId", this._buffer, 1, true, TYPES.FLOAT).addIndex(this._indexBuffer); + } + } + + var defaultVertex = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform vec4 tint;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = aTextureCoord;\n vTextureId = aTextureId;\n vColor = aColor * tint;\n}\n"; + + var defaultFragment = "varying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\nuniform sampler2D uSamplers[%count%];\n\nvoid main(void){\n vec4 color;\n %forloop%\n gl_FragColor = color * vColor;\n}\n"; + + const _BatchRenderer = class extends ObjectRenderer { + constructor(renderer) { + super(renderer); + this.setShaderGenerator(); + this.geometryClass = BatchGeometry; + this.vertexSize = 6; + this.state = State.for2d(); + this.size = settings.SPRITE_BATCH_SIZE * 4; + this._vertexCount = 0; + this._indexCount = 0; + this._bufferedElements = []; + this._bufferedTextures = []; + this._bufferSize = 0; + this._shader = null; + this._packedGeometries = []; + this._packedGeometryPoolSize = 2; + this._flushId = 0; + this._aBuffers = {}; + this._iBuffers = {}; + this.MAX_TEXTURES = 1; + this.renderer.on("prerender", this.onPrerender, this); + renderer.runners.contextChange.add(this); + this._dcIndex = 0; + this._aIndex = 0; + this._iIndex = 0; + this._attributeBuffer = null; + this._indexBuffer = null; + this._tempBoundTextures = []; + } + static get defaultVertexSrc() { + return defaultVertex; + } + static get defaultFragmentTemplate() { + return defaultFragment; + } + setShaderGenerator({ + vertex = _BatchRenderer.defaultVertexSrc, + fragment = _BatchRenderer.defaultFragmentTemplate + } = {}) { + this.shaderGenerator = new BatchShaderGenerator(vertex, fragment); + } + contextChange() { + const gl = this.renderer.gl; + if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) { + this.MAX_TEXTURES = 1; + } else { + this.MAX_TEXTURES = Math.min(gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS), settings.SPRITE_MAX_TEXTURES); + this.MAX_TEXTURES = checkMaxIfStatementsInShader(this.MAX_TEXTURES, gl); + } + this._shader = this.shaderGenerator.generateShader(this.MAX_TEXTURES); + for (let i = 0; i < this._packedGeometryPoolSize; i++) { + this._packedGeometries[i] = new this.geometryClass(); + } + this.initFlushBuffers(); + } + initFlushBuffers() { + const { + _drawCallPool, + _textureArrayPool + } = _BatchRenderer; + const MAX_SPRITES = this.size / 4; + const MAX_TA = Math.floor(MAX_SPRITES / this.MAX_TEXTURES) + 1; + while (_drawCallPool.length < MAX_SPRITES) { + _drawCallPool.push(new BatchDrawCall()); + } + while (_textureArrayPool.length < MAX_TA) { + _textureArrayPool.push(new BatchTextureArray()); + } + for (let i = 0; i < this.MAX_TEXTURES; i++) { + this._tempBoundTextures[i] = null; + } + } + onPrerender() { + this._flushId = 0; + } + render(element) { + if (!element._texture.valid) { + return; + } + if (this._vertexCount + element.vertexData.length / 2 > this.size) { + this.flush(); + } + this._vertexCount += element.vertexData.length / 2; + this._indexCount += element.indices.length; + this._bufferedTextures[this._bufferSize] = element._texture.baseTexture; + this._bufferedElements[this._bufferSize++] = element; + } + buildTexturesAndDrawCalls() { + const { + _bufferedTextures: textures, + MAX_TEXTURES + } = this; + const textureArrays = _BatchRenderer._textureArrayPool; + const batch = this.renderer.batch; + const boundTextures = this._tempBoundTextures; + const touch = this.renderer.textureGC.count; + let TICK = ++BaseTexture._globalBatch; + let countTexArrays = 0; + let texArray = textureArrays[0]; + let start = 0; + batch.copyBoundTextures(boundTextures, MAX_TEXTURES); + for (let i = 0; i < this._bufferSize; ++i) { + const tex = textures[i]; + textures[i] = null; + if (tex._batchEnabled === TICK) { + continue; + } + if (texArray.count >= MAX_TEXTURES) { + batch.boundArray(texArray, boundTextures, TICK, MAX_TEXTURES); + this.buildDrawCalls(texArray, start, i); + start = i; + texArray = textureArrays[++countTexArrays]; + ++TICK; + } + tex._batchEnabled = TICK; + tex.touched = touch; + texArray.elements[texArray.count++] = tex; + } + if (texArray.count > 0) { + batch.boundArray(texArray, boundTextures, TICK, MAX_TEXTURES); + this.buildDrawCalls(texArray, start, this._bufferSize); + ++countTexArrays; + ++TICK; + } + for (let i = 0; i < boundTextures.length; i++) { + boundTextures[i] = null; + } + BaseTexture._globalBatch = TICK; + } + buildDrawCalls(texArray, start, finish) { + const { + _bufferedElements: elements, + _attributeBuffer, + _indexBuffer, + vertexSize + } = this; + const drawCalls = _BatchRenderer._drawCallPool; + let dcIndex = this._dcIndex; + let aIndex = this._aIndex; + let iIndex = this._iIndex; + let drawCall = drawCalls[dcIndex]; + drawCall.start = this._iIndex; + drawCall.texArray = texArray; + for (let i = start; i < finish; ++i) { + const sprite = elements[i]; + const tex = sprite._texture.baseTexture; + const spriteBlendMode = premultiplyBlendMode[tex.alphaMode ? 1 : 0][sprite.blendMode]; + elements[i] = null; + if (start < i && drawCall.blend !== spriteBlendMode) { + drawCall.size = iIndex - drawCall.start; + start = i; + drawCall = drawCalls[++dcIndex]; + drawCall.texArray = texArray; + drawCall.start = iIndex; + } + this.packInterleavedGeometry(sprite, _attributeBuffer, _indexBuffer, aIndex, iIndex); + aIndex += sprite.vertexData.length / 2 * vertexSize; + iIndex += sprite.indices.length; + drawCall.blend = spriteBlendMode; + } + if (start < finish) { + drawCall.size = iIndex - drawCall.start; + ++dcIndex; + } + this._dcIndex = dcIndex; + this._aIndex = aIndex; + this._iIndex = iIndex; + } + bindAndClearTexArray(texArray) { + const textureSystem = this.renderer.texture; + for (let j = 0; j < texArray.count; j++) { + textureSystem.bind(texArray.elements[j], texArray.ids[j]); + texArray.elements[j] = null; + } + texArray.count = 0; + } + updateGeometry() { + const { + _packedGeometries: packedGeometries, + _attributeBuffer: attributeBuffer, + _indexBuffer: indexBuffer + } = this; + if (!settings.CAN_UPLOAD_SAME_BUFFER) { + if (this._packedGeometryPoolSize <= this._flushId) { + this._packedGeometryPoolSize++; + packedGeometries[this._flushId] = new this.geometryClass(); + } + packedGeometries[this._flushId]._buffer.update(attributeBuffer.rawBinaryData); + packedGeometries[this._flushId]._indexBuffer.update(indexBuffer); + this.renderer.geometry.bind(packedGeometries[this._flushId]); + this.renderer.geometry.updateBuffers(); + this._flushId++; + } else { + packedGeometries[this._flushId]._buffer.update(attributeBuffer.rawBinaryData); + packedGeometries[this._flushId]._indexBuffer.update(indexBuffer); + this.renderer.geometry.updateBuffers(); + } + } + drawBatches() { + const dcCount = this._dcIndex; + const { gl, state: stateSystem } = this.renderer; + const drawCalls = _BatchRenderer._drawCallPool; + let curTexArray = null; + for (let i = 0; i < dcCount; i++) { + const { texArray, type, size, start, blend } = drawCalls[i]; + if (curTexArray !== texArray) { + curTexArray = texArray; + this.bindAndClearTexArray(texArray); + } + this.state.blendMode = blend; + stateSystem.set(this.state); + gl.drawElements(type, size, gl.UNSIGNED_SHORT, start * 2); + } + } + flush() { + if (this._vertexCount === 0) { + return; + } + this._attributeBuffer = this.getAttributeBuffer(this._vertexCount); + this._indexBuffer = this.getIndexBuffer(this._indexCount); + this._aIndex = 0; + this._iIndex = 0; + this._dcIndex = 0; + this.buildTexturesAndDrawCalls(); + this.updateGeometry(); + this.drawBatches(); + this._bufferSize = 0; + this._vertexCount = 0; + this._indexCount = 0; + } + start() { + this.renderer.state.set(this.state); + this.renderer.texture.ensureSamplerType(this.MAX_TEXTURES); + this.renderer.shader.bind(this._shader); + if (settings.CAN_UPLOAD_SAME_BUFFER) { + this.renderer.geometry.bind(this._packedGeometries[this._flushId]); + } + } + stop() { + this.flush(); + } + destroy() { + for (let i = 0; i < this._packedGeometryPoolSize; i++) { + if (this._packedGeometries[i]) { + this._packedGeometries[i].destroy(); + } + } + this.renderer.off("prerender", this.onPrerender, this); + this._aBuffers = null; + this._iBuffers = null; + this._packedGeometries = null; + this._attributeBuffer = null; + this._indexBuffer = null; + if (this._shader) { + this._shader.destroy(); + this._shader = null; + } + super.destroy(); + } + getAttributeBuffer(size) { + const roundedP2 = nextPow2(Math.ceil(size / 8)); + const roundedSizeIndex = log2(roundedP2); + const roundedSize = roundedP2 * 8; + if (this._aBuffers.length <= roundedSizeIndex) { + this._iBuffers.length = roundedSizeIndex + 1; + } + let buffer = this._aBuffers[roundedSize]; + if (!buffer) { + this._aBuffers[roundedSize] = buffer = new ViewableBuffer(roundedSize * this.vertexSize * 4); + } + return buffer; + } + getIndexBuffer(size) { + const roundedP2 = nextPow2(Math.ceil(size / 12)); + const roundedSizeIndex = log2(roundedP2); + const roundedSize = roundedP2 * 12; + if (this._iBuffers.length <= roundedSizeIndex) { + this._iBuffers.length = roundedSizeIndex + 1; + } + let buffer = this._iBuffers[roundedSizeIndex]; + if (!buffer) { + this._iBuffers[roundedSizeIndex] = buffer = new Uint16Array(roundedSize); + } + return buffer; + } + packInterleavedGeometry(element, attributeBuffer, indexBuffer, aIndex, iIndex) { + const { + uint32View, + float32View + } = attributeBuffer; + const packedVertices = aIndex / this.vertexSize; + const uvs = element.uvs; + const indicies = element.indices; + const vertexData = element.vertexData; + const textureId = element._texture.baseTexture._batchLocation; + const alpha = Math.min(element.worldAlpha, 1); + const argb = alpha < 1 && element._texture.baseTexture.alphaMode ? premultiplyTint(element._tintRGB, alpha) : element._tintRGB + (alpha * 255 << 24); + for (let i = 0; i < vertexData.length; i += 2) { + float32View[aIndex++] = vertexData[i]; + float32View[aIndex++] = vertexData[i + 1]; + float32View[aIndex++] = uvs[i]; + float32View[aIndex++] = uvs[i + 1]; + uint32View[aIndex++] = argb; + float32View[aIndex++] = textureId; + } + for (let i = 0; i < indicies.length; i++) { + indexBuffer[iIndex++] = packedVertices + indicies[i]; + } + } + }; + let BatchRenderer = _BatchRenderer; + BatchRenderer.extension = { + name: "batch", + type: ExtensionType.RendererPlugin + }; + BatchRenderer._drawCallPool = []; + BatchRenderer._textureArrayPool = []; + extensions$1.add(BatchRenderer); + + class TransformFeedback { + constructor() { + this._glTransformFeedbacks = {}; + this.buffers = []; + this.disposeRunner = new Runner("disposeTransformFeedback"); + } + bindBuffer(index, buffer) { + this.buffers[index] = buffer; + } + destroy() { + this.disposeRunner.emit(this, false); + } + } + + class GLBuffer { + constructor(buffer) { + this.buffer = buffer || null; + this.updateID = -1; + this.byteLength = -1; + this.refCount = 0; + } + } + + class BufferSystem { + constructor(renderer) { + this.renderer = renderer; + this.managedBuffers = {}; + this.boundBufferBases = {}; + } + destroy() { + this.renderer = null; + } + contextChange() { + this.disposeAll(true); + this.gl = this.renderer.gl; + this.CONTEXT_UID = this.renderer.CONTEXT_UID; + } + bind(buffer) { + const { gl, CONTEXT_UID } = this; + const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer); + gl.bindBuffer(buffer.type, glBuffer.buffer); + } + unbind(type) { + const { gl } = this; + gl.bindBuffer(type, null); + } + bindBufferBase(buffer, index) { + const { gl, CONTEXT_UID } = this; + if (this.boundBufferBases[index] !== buffer) { + const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer); + this.boundBufferBases[index] = buffer; + gl.bindBufferBase(gl.UNIFORM_BUFFER, index, glBuffer.buffer); + } + } + bindBufferRange(buffer, index, offset) { + const { gl, CONTEXT_UID } = this; + offset = offset || 0; + const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer); + gl.bindBufferRange(gl.UNIFORM_BUFFER, index || 0, glBuffer.buffer, offset * 256, 256); + } + update(buffer) { + const { gl, CONTEXT_UID } = this; + const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer); + if (buffer._updateID === glBuffer.updateID) { + return; + } + glBuffer.updateID = buffer._updateID; + gl.bindBuffer(buffer.type, glBuffer.buffer); + if (glBuffer.byteLength >= buffer.data.byteLength) { + gl.bufferSubData(buffer.type, 0, buffer.data); + } else { + const drawType = buffer.static ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW; + glBuffer.byteLength = buffer.data.byteLength; + gl.bufferData(buffer.type, buffer.data, drawType); + } + } + dispose(buffer, contextLost) { + if (!this.managedBuffers[buffer.id]) { + return; + } + delete this.managedBuffers[buffer.id]; + const glBuffer = buffer._glBuffers[this.CONTEXT_UID]; + const gl = this.gl; + buffer.disposeRunner.remove(this); + if (!glBuffer) { + return; + } + if (!contextLost) { + gl.deleteBuffer(glBuffer.buffer); + } + delete buffer._glBuffers[this.CONTEXT_UID]; + } + disposeAll(contextLost) { + const all = Object.keys(this.managedBuffers); + for (let i = 0; i < all.length; i++) { + this.dispose(this.managedBuffers[all[i]], contextLost); + } + } + createGLBuffer(buffer) { + const { CONTEXT_UID, gl } = this; + buffer._glBuffers[CONTEXT_UID] = new GLBuffer(gl.createBuffer()); + this.managedBuffers[buffer.id] = buffer; + buffer.disposeRunner.add(this); + return buffer._glBuffers[CONTEXT_UID]; + } + } + BufferSystem.extension = { + type: ExtensionType.RendererSystem, + name: "buffer" + }; + extensions$1.add(BufferSystem); + + class MultisampleSystem { + constructor(renderer) { + this.renderer = renderer; + } + contextChange(gl) { + let samples; + if (this.renderer.context.webGLVersion === 1) { + const framebuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + samples = gl.getParameter(gl.SAMPLES); + gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); + } else { + const framebuffer = gl.getParameter(gl.DRAW_FRAMEBUFFER_BINDING); + gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null); + samples = gl.getParameter(gl.SAMPLES); + gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, framebuffer); + } + if (samples >= MSAA_QUALITY.HIGH) { + this.multisample = MSAA_QUALITY.HIGH; + } else if (samples >= MSAA_QUALITY.MEDIUM) { + this.multisample = MSAA_QUALITY.MEDIUM; + } else if (samples >= MSAA_QUALITY.LOW) { + this.multisample = MSAA_QUALITY.LOW; + } else { + this.multisample = MSAA_QUALITY.NONE; + } + } + destroy() { + } + } + MultisampleSystem.extension = { + type: ExtensionType.RendererSystem, + name: "_multisample" + }; + extensions$1.add(MultisampleSystem); + + class ObjectRendererSystem { + constructor(renderer) { + this.renderer = renderer; + } + render(displayObject, options) { + const renderer = this.renderer; + let renderTexture; + let clear; + let transform; + let skipUpdateTransform; + if (options) { + renderTexture = options.renderTexture; + clear = options.clear; + transform = options.transform; + skipUpdateTransform = options.skipUpdateTransform; + } + this.renderingToScreen = !renderTexture; + renderer.runners.prerender.emit(); + renderer.emit("prerender"); + renderer.projection.transform = transform; + if (renderer.context.isLost) { + return; + } + if (!renderTexture) { + this.lastObjectRendered = displayObject; + } + if (!skipUpdateTransform) { + const cacheParent = displayObject.enableTempParent(); + displayObject.updateTransform(); + displayObject.disableTempParent(cacheParent); + } + renderer.renderTexture.bind(renderTexture); + renderer.batch.currentRenderer.start(); + if (clear ?? renderer.background.clearBeforeRender) { + renderer.renderTexture.clear(); + } + displayObject.render(renderer); + renderer.batch.currentRenderer.flush(); + if (renderTexture) { + if (options.blit) { + renderer.framebuffer.blit(); + } + renderTexture.baseTexture.update(); + } + renderer.runners.postrender.emit(); + renderer.projection.transform = null; + renderer.emit("postrender"); + } + destroy() { + this.renderer = null; + this.lastObjectRendered = null; + } + } + ObjectRendererSystem.extension = { + type: ExtensionType.RendererSystem, + name: "objectRenderer" + }; + extensions$1.add(ObjectRendererSystem); + + const VERSION = "7.0.2"; + + var fragment$6 = "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float uAlpha;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uAlpha;\n}\n"; + + class AlphaFilter extends Filter { + constructor(alpha = 1) { + super(defaultVertex$1, fragment$6, { uAlpha: 1 }); + this.alpha = alpha; + } + get alpha() { + return this.uniforms.uAlpha; + } + set alpha(value) { + this.uniforms.uAlpha = value; + } + } + + const vertTemplate = ` + attribute vec2 aVertexPosition; + + uniform mat3 projectionMatrix; + + uniform float strength; + + varying vec2 vBlurTexCoords[%size%]; + + uniform vec4 inputSize; + uniform vec4 outputFrame; + + vec4 filterVertexPosition( void ) + { + vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy; + + return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0); + } + + vec2 filterTextureCoord( void ) + { + return aVertexPosition * (outputFrame.zw * inputSize.zw); + } + + void main(void) + { + gl_Position = filterVertexPosition(); + + vec2 textureCoord = filterTextureCoord(); + %blur% + }`; + function generateBlurVertSource(kernelSize, x) { + const halfLength = Math.ceil(kernelSize / 2); + let vertSource = vertTemplate; + let blurLoop = ""; + let template; + if (x) { + template = "vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * strength, 0.0);"; + } else { + template = "vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * strength);"; + } + for (let i = 0; i < kernelSize; i++) { + let blur = template.replace("%index%", i.toString()); + blur = blur.replace("%sampleIndex%", `${i - (halfLength - 1)}.0`); + blurLoop += blur; + blurLoop += "\n"; + } + vertSource = vertSource.replace("%blur%", blurLoop); + vertSource = vertSource.replace("%size%", kernelSize.toString()); + return vertSource; + } + + const GAUSSIAN_VALUES = { + 5: [0.153388, 0.221461, 0.250301], + 7: [0.071303, 0.131514, 0.189879, 0.214607], + 9: [0.028532, 0.067234, 0.124009, 0.179044, 0.20236], + 11: [93e-4, 0.028002, 0.065984, 0.121703, 0.175713, 0.198596], + 13: [2406e-6, 9255e-6, 0.027867, 0.065666, 0.121117, 0.174868, 0.197641], + 15: [489e-6, 2403e-6, 9246e-6, 0.02784, 0.065602, 0.120999, 0.174697, 0.197448] + }; + const fragTemplate = [ + "varying vec2 vBlurTexCoords[%size%];", + "uniform sampler2D uSampler;", + "void main(void)", + "{", + " gl_FragColor = vec4(0.0);", + " %blur%", + "}" + ].join("\n"); + function generateBlurFragSource(kernelSize) { + const kernel = GAUSSIAN_VALUES[kernelSize]; + const halfLength = kernel.length; + let fragSource = fragTemplate; + let blurLoop = ""; + const template = "gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;"; + let value; + for (let i = 0; i < kernelSize; i++) { + let blur = template.replace("%index%", i.toString()); + value = i; + if (i >= halfLength) { + value = kernelSize - i - 1; + } + blur = blur.replace("%value%", kernel[value].toString()); + blurLoop += blur; + blurLoop += "\n"; + } + fragSource = fragSource.replace("%blur%", blurLoop); + fragSource = fragSource.replace("%size%", kernelSize.toString()); + return fragSource; + } + + class BlurFilterPass extends Filter { + constructor(horizontal, strength = 8, quality = 4, resolution = settings.FILTER_RESOLUTION, kernelSize = 5) { + const vertSrc = generateBlurVertSource(kernelSize, horizontal); + const fragSrc = generateBlurFragSource(kernelSize); + super(vertSrc, fragSrc); + this.horizontal = horizontal; + this.resolution = resolution; + this._quality = 0; + this.quality = quality; + this.blur = strength; + } + apply(filterManager, input, output, clearMode) { + if (output) { + if (this.horizontal) { + this.uniforms.strength = 1 / output.width * (output.width / input.width); + } else { + this.uniforms.strength = 1 / output.height * (output.height / input.height); + } + } else { + if (this.horizontal) { + this.uniforms.strength = 1 / filterManager.renderer.width * (filterManager.renderer.width / input.width); + } else { + this.uniforms.strength = 1 / filterManager.renderer.height * (filterManager.renderer.height / input.height); + } + } + this.uniforms.strength *= this.strength; + this.uniforms.strength /= this.passes; + if (this.passes === 1) { + filterManager.applyFilter(this, input, output, clearMode); + } else { + const renderTarget = filterManager.getFilterTexture(); + const renderer = filterManager.renderer; + let flip = input; + let flop = renderTarget; + this.state.blend = false; + filterManager.applyFilter(this, flip, flop, CLEAR_MODES.CLEAR); + for (let i = 1; i < this.passes - 1; i++) { + filterManager.bindAndClear(flip, CLEAR_MODES.BLIT); + this.uniforms.uSampler = flop; + const temp = flop; + flop = flip; + flip = temp; + renderer.shader.bind(this); + renderer.geometry.draw(5); + } + this.state.blend = true; + filterManager.applyFilter(this, flop, output, clearMode); + filterManager.returnFilterTexture(renderTarget); + } + } + get blur() { + return this.strength; + } + set blur(value) { + this.padding = 1 + Math.abs(value) * 2; + this.strength = value; + } + get quality() { + return this._quality; + } + set quality(value) { + this._quality = value; + this.passes = value; + } + } + + class BlurFilter extends Filter { + constructor(strength = 8, quality = 4, resolution = settings.FILTER_RESOLUTION, kernelSize = 5) { + super(); + this.blurXFilter = new BlurFilterPass(true, strength, quality, resolution, kernelSize); + this.blurYFilter = new BlurFilterPass(false, strength, quality, resolution, kernelSize); + this.resolution = resolution; + this.quality = quality; + this.blur = strength; + this.repeatEdgePixels = false; + } + apply(filterManager, input, output, clearMode) { + const xStrength = Math.abs(this.blurXFilter.strength); + const yStrength = Math.abs(this.blurYFilter.strength); + if (xStrength && yStrength) { + const renderTarget = filterManager.getFilterTexture(); + this.blurXFilter.apply(filterManager, input, renderTarget, CLEAR_MODES.CLEAR); + this.blurYFilter.apply(filterManager, renderTarget, output, clearMode); + filterManager.returnFilterTexture(renderTarget); + } else if (yStrength) { + this.blurYFilter.apply(filterManager, input, output, clearMode); + } else { + this.blurXFilter.apply(filterManager, input, output, clearMode); + } + } + updatePadding() { + if (this._repeatEdgePixels) { + this.padding = 0; + } else { + this.padding = Math.max(Math.abs(this.blurXFilter.strength), Math.abs(this.blurYFilter.strength)) * 2; + } + } + get blur() { + return this.blurXFilter.blur; + } + set blur(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 blurX() { + return this.blurXFilter.blur; + } + set blurX(value) { + this.blurXFilter.blur = value; + this.updatePadding(); + } + get blurY() { + return this.blurYFilter.blur; + } + set blurY(value) { + this.blurYFilter.blur = value; + this.updatePadding(); + } + get blendMode() { + return this.blurYFilter.blendMode; + } + set blendMode(value) { + this.blurYFilter.blendMode = value; + } + get repeatEdgePixels() { + return this._repeatEdgePixels; + } + set repeatEdgePixels(value) { + this._repeatEdgePixels = value; + this.updatePadding(); + } + } + + var fragment$5 = "varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform float m[20];\nuniform float uAlpha;\n\nvoid main(void)\n{\n vec4 c = texture2D(uSampler, vTextureCoord);\n\n if (uAlpha == 0.0) {\n gl_FragColor = c;\n return;\n }\n\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\n if (c.a > 0.0) {\n c.rgb /= c.a;\n }\n\n vec4 result;\n\n result.r = (m[0] * c.r);\n result.r += (m[1] * c.g);\n result.r += (m[2] * c.b);\n result.r += (m[3] * c.a);\n result.r += m[4];\n\n result.g = (m[5] * c.r);\n result.g += (m[6] * c.g);\n result.g += (m[7] * c.b);\n result.g += (m[8] * c.a);\n result.g += m[9];\n\n result.b = (m[10] * c.r);\n result.b += (m[11] * c.g);\n result.b += (m[12] * c.b);\n result.b += (m[13] * c.a);\n result.b += m[14];\n\n result.a = (m[15] * c.r);\n result.a += (m[16] * c.g);\n result.a += (m[17] * c.b);\n result.a += (m[18] * c.a);\n result.a += m[19];\n\n vec3 rgb = mix(c.rgb, result.rgb, uAlpha);\n\n // Premultiply alpha again.\n rgb *= result.a;\n\n gl_FragColor = vec4(rgb, result.a);\n}\n"; + + class ColorMatrixFilter extends Filter { + constructor() { + const uniforms = { + m: new Float32Array([ + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]), + uAlpha: 1 + }; + super(defaultFilterVertex, fragment$5, uniforms); + this.alpha = 1; + } + _loadMatrix(matrix, multiply = false) { + let newMatrix = matrix; + if (multiply) { + this._multiply(newMatrix, this.uniforms.m, matrix); + newMatrix = this._colorMatrix(newMatrix); + } + this.uniforms.m = newMatrix; + } + _multiply(out, a, b) { + 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]; + return out; + } + _colorMatrix(matrix) { + const m = new Float32Array(matrix); + m[4] /= 255; + m[9] /= 255; + m[14] /= 255; + m[19] /= 255; + return m; + } + brightness(b, multiply) { + const matrix = [ + b, + 0, + 0, + 0, + 0, + 0, + b, + 0, + 0, + 0, + 0, + 0, + b, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + tint(color, multiply) { + const r = color >> 16 & 255; + const g = color >> 8 & 255; + const b = color & 255; + const matrix = [ + r / 255, + 0, + 0, + 0, + 0, + 0, + g / 255, + 0, + 0, + 0, + 0, + 0, + b / 255, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + greyscale(scale, multiply) { + const matrix = [ + scale, + scale, + scale, + 0, + 0, + scale, + scale, + scale, + 0, + 0, + scale, + scale, + scale, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + blackAndWhite(multiply) { + const matrix = [ + 0.3, + 0.6, + 0.1, + 0, + 0, + 0.3, + 0.6, + 0.1, + 0, + 0, + 0.3, + 0.6, + 0.1, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + hue(rotation, multiply) { + rotation = (rotation || 0) / 180 * Math.PI; + const cosR = Math.cos(rotation); + const sinR = Math.sin(rotation); + const sqrt = Math.sqrt; + const w = 1 / 3; + const sqrW = sqrt(w); + const a00 = cosR + (1 - cosR) * w; + const a01 = w * (1 - cosR) - sqrW * sinR; + const a02 = w * (1 - cosR) + sqrW * sinR; + const a10 = w * (1 - cosR) + sqrW * sinR; + const a11 = cosR + w * (1 - cosR); + const a12 = w * (1 - cosR) - sqrW * sinR; + const a20 = w * (1 - cosR) - sqrW * sinR; + const a21 = w * (1 - cosR) + sqrW * sinR; + const a22 = cosR + w * (1 - cosR); + const matrix = [ + a00, + a01, + a02, + 0, + 0, + a10, + a11, + a12, + 0, + 0, + a20, + a21, + a22, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + contrast(amount, multiply) { + const v = (amount || 0) + 1; + const o = -0.5 * (v - 1); + const matrix = [ + v, + 0, + 0, + 0, + o, + 0, + v, + 0, + 0, + o, + 0, + 0, + v, + 0, + o, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + saturate(amount = 0, multiply) { + const x = amount * 2 / 3 + 1; + const y = (x - 1) * -0.5; + const matrix = [ + x, + y, + y, + 0, + 0, + y, + x, + y, + 0, + 0, + y, + y, + x, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + desaturate() { + this.saturate(-1); + } + negative(multiply) { + const matrix = [ + -1, + 0, + 0, + 1, + 0, + 0, + -1, + 0, + 1, + 0, + 0, + 0, + -1, + 1, + 0, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + sepia(multiply) { + const matrix = [ + 0.393, + 0.7689999, + 0.18899999, + 0, + 0, + 0.349, + 0.6859999, + 0.16799999, + 0, + 0, + 0.272, + 0.5339999, + 0.13099999, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + technicolor(multiply) { + const matrix = [ + 1.9125277891456083, + -0.8545344976951645, + -0.09155508482755585, + 0, + 11.793603434377337, + -0.3087833385928097, + 1.7658908555458428, + -0.10601743074722245, + 0, + -70.35205161461398, + -0.231103377548616, + -0.7501899197440212, + 1.847597816108189, + 0, + 30.950940869491138, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + polaroid(multiply) { + const matrix = [ + 1.438, + -0.062, + -0.062, + 0, + 0, + -0.122, + 1.378, + -0.122, + 0, + 0, + -0.016, + -0.016, + 1.483, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + toBGR(multiply) { + const matrix = [ + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + kodachrome(multiply) { + const matrix = [ + 1.1285582396593525, + -0.3967382283601348, + -0.03992559172921793, + 0, + 63.72958762196502, + -0.16404339962244616, + 1.0835251566291304, + -0.05498805115633132, + 0, + 24.732407896706203, + -0.16786010706155763, + -0.5603416277695248, + 1.6014850761964943, + 0, + 35.62982807460946, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + browni(multiply) { + const matrix = [ + 0.5997023498159715, + 0.34553243048391263, + -0.2708298674538042, + 0, + 47.43192855600873, + -0.037703249837783157, + 0.8609577587992641, + 0.15059552388459913, + 0, + -36.96841498319127, + 0.24113635128153335, + -0.07441037908422492, + 0.44972182064877153, + 0, + -7.562075277591283, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + vintage(multiply) { + const matrix = [ + 0.6279345635605994, + 0.3202183420819367, + -0.03965408211312453, + 0, + 9.651285835294123, + 0.02578397704808868, + 0.6441188644374771, + 0.03259127616149294, + 0, + 7.462829176470591, + 0.0466055556782719, + -0.0851232987247891, + 0.5241648018700465, + 0, + 5.159190588235296, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + colorTone(desaturation, toned, lightColor, darkColor, multiply) { + desaturation = desaturation || 0.2; + toned = toned || 0.15; + lightColor = lightColor || 16770432; + darkColor = darkColor || 3375104; + const lR = (lightColor >> 16 & 255) / 255; + const lG = (lightColor >> 8 & 255) / 255; + const lB = (lightColor & 255) / 255; + const dR = (darkColor >> 16 & 255) / 255; + const dG = (darkColor >> 8 & 255) / 255; + const dB = (darkColor & 255) / 255; + const matrix = [ + 0.3, + 0.59, + 0.11, + 0, + 0, + lR, + lG, + lB, + desaturation, + 0, + dR, + dG, + dB, + toned, + 0, + lR - dR, + lG - dG, + lB - dB, + 0, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + night(intensity, multiply) { + intensity = intensity || 0.1; + const matrix = [ + intensity * -2, + -intensity, + 0, + 0, + 0, + -intensity, + 0, + intensity, + 0, + 0, + 0, + intensity, + intensity * 2, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + predator(amount, multiply) { + const matrix = [ + 11.224130630493164 * amount, + -4.794486999511719 * amount, + -2.8746118545532227 * amount, + 0 * amount, + 0.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, + 0.8044459223747253 * amount, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + lsd(multiply) { + const matrix = [ + 2, + -0.4, + 0.5, + 0, + 0, + -0.5, + 2, + -0.4, + 0, + 0, + -0.4, + -0.5, + 3, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, multiply); + } + reset() { + const matrix = [ + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]; + this._loadMatrix(matrix, false); + } + get matrix() { + return this.uniforms.m; + } + set matrix(value) { + this.uniforms.m = value; + } + get alpha() { + return this.uniforms.uAlpha; + } + set alpha(value) { + this.uniforms.uAlpha = value; + } + } + ColorMatrixFilter.prototype.grayscale = ColorMatrixFilter.prototype.greyscale; + + var fragment$4 = "varying vec2 vFilterCoord;\nvarying vec2 vTextureCoord;\n\nuniform vec2 scale;\nuniform mat2 rotation;\nuniform sampler2D uSampler;\nuniform sampler2D mapSampler;\n\nuniform highp vec4 inputSize;\nuniform vec4 inputClamp;\n\nvoid main(void)\n{\n vec4 map = texture2D(mapSampler, vFilterCoord);\n\n map -= 0.5;\n map.xy = scale * inputSize.zw * (rotation * map.xy);\n\n gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw));\n}\n"; + + var vertex$3 = "attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\nuniform mat3 filterMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vFilterCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n\tgl_Position = filterVertexPosition();\n\tvTextureCoord = filterTextureCoord();\n\tvFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0) ).xy;\n}\n"; + + class DisplacementFilter extends Filter { + constructor(sprite, scale) { + const maskMatrix = new Matrix(); + sprite.renderable = false; + super(vertex$3, fragment$4, { + mapSampler: sprite._texture, + filterMatrix: maskMatrix, + scale: { x: 1, y: 1 }, + rotation: new Float32Array([1, 0, 0, 1]) + }); + this.maskSprite = sprite; + this.maskMatrix = maskMatrix; + if (scale === null || scale === void 0) { + scale = 20; + } + this.scale = new Point(scale, scale); + } + apply(filterManager, input, output, clearMode) { + this.uniforms.filterMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, this.maskSprite); + this.uniforms.scale.x = this.scale.x; + this.uniforms.scale.y = this.scale.y; + const wt = this.maskSprite.worldTransform; + const lenX = Math.sqrt(wt.a * wt.a + wt.b * wt.b); + const lenY = Math.sqrt(wt.c * wt.c + wt.d * wt.d); + if (lenX !== 0 && lenY !== 0) { + this.uniforms.rotation[0] = wt.a / lenX; + this.uniforms.rotation[1] = wt.b / lenX; + this.uniforms.rotation[2] = wt.c / lenY; + this.uniforms.rotation[3] = wt.d / lenY; + } + filterManager.applyFilter(this, input, output, clearMode); + } + get map() { + return this.uniforms.mapSampler; + } + set map(value) { + this.uniforms.mapSampler = value; + } + } + + var vertex$2 = "\nattribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvoid texcoords(vec2 fragCoord, vec2 inverseVP,\n out vec2 v_rgbNW, out vec2 v_rgbNE,\n out vec2 v_rgbSW, out vec2 v_rgbSE,\n out vec2 v_rgbM) {\n v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\n v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\n v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\n v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\n v_rgbM = vec2(fragCoord * inverseVP);\n}\n\nvoid main(void) {\n\n gl_Position = filterVertexPosition();\n\n vFragCoord = aVertexPosition * outputFrame.zw;\n\n texcoords(vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n}\n"; + + var fragment$3 = "varying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\nuniform sampler2D uSampler;\nuniform highp vec4 inputSize;\n\n\n/**\n Basic FXAA implementation based on the code on geeks3d.com with the\n modification that the texture2DLod stuff was removed since it's\n unsupported by WebGL.\n\n --\n\n From:\n https://github.com/mitsuhiko/webgl-meincraft\n\n Copyright (c) 2011 by Armin Ronacher.\n\n Some rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials provided\n with the distribution.\n\n * The names of the contributors may not be used to endorse or\n promote products derived from this software without specific\n prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#ifndef FXAA_REDUCE_MIN\n#define FXAA_REDUCE_MIN (1.0/ 128.0)\n#endif\n#ifndef FXAA_REDUCE_MUL\n#define FXAA_REDUCE_MUL (1.0 / 8.0)\n#endif\n#ifndef FXAA_SPAN_MAX\n#define FXAA_SPAN_MAX 8.0\n#endif\n\n//optimized version for mobile, where dependent\n//texture reads can be a bottleneck\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 inverseVP,\n vec2 v_rgbNW, vec2 v_rgbNE,\n vec2 v_rgbSW, vec2 v_rgbSE,\n vec2 v_rgbM) {\n vec4 color;\n vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\n vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\n vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\n vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\n vec4 texColor = texture2D(tex, v_rgbM);\n vec3 rgbM = texColor.xyz;\n vec3 luma = vec3(0.299, 0.587, 0.114);\n float lumaNW = dot(rgbNW, luma);\n float lumaNE = dot(rgbNE, luma);\n float lumaSW = dot(rgbSW, luma);\n float lumaSE = dot(rgbSE, luma);\n float lumaM = dot(rgbM, luma);\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n mediump vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * inverseVP;\n\n vec3 rgbA = 0.5 * (\n texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\n texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\n\n float lumaB = dot(rgbB, luma);\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\n color = vec4(rgbA, texColor.a);\n else\n color = vec4(rgbB, texColor.a);\n return color;\n}\n\nvoid main() {\n\n vec4 color;\n\n color = fxaa(uSampler, vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n\n gl_FragColor = color;\n}\n"; + + class FXAAFilter extends Filter { + constructor() { + super(vertex$2, fragment$3); + } + } + + var fragment$2 = "precision highp float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform float uNoise;\nuniform float uSeed;\nuniform sampler2D uSampler;\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 = texture2D(uSampler, 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 gl_FragColor = color;\n}\n"; + + class NoiseFilter extends Filter { + constructor(noise = 0.5, seed = Math.random()) { + super(defaultFilterVertex, fragment$2, { + uNoise: 0, + uSeed: 0 + }); + this.noise = noise; + this.seed = seed; + } + get noise() { + return this.uniforms.uNoise; + } + set noise(value) { + this.uniforms.uNoise = value; + } + get seed() { + return this.uniforms.uSeed; + } + set seed(value) { + this.uniforms.uSeed = value; + } + } + + settings.SORTABLE_CHILDREN = false; + + class Bounds { + constructor() { + this.minX = Infinity; + this.minY = Infinity; + this.maxX = -Infinity; + this.maxY = -Infinity; + this.rect = null; + this.updateID = -1; + } + isEmpty() { + return this.minX > this.maxX || this.minY > this.maxY; + } + clear() { + this.minX = Infinity; + this.minY = Infinity; + this.maxX = -Infinity; + this.maxY = -Infinity; + } + getRectangle(rect) { + if (this.minX > this.maxX || this.minY > this.maxY) { + return Rectangle.EMPTY; + } + rect = rect || new Rectangle(0, 0, 1, 1); + rect.x = this.minX; + rect.y = this.minY; + rect.width = this.maxX - this.minX; + rect.height = this.maxY - this.minY; + return rect; + } + addPoint(point) { + this.minX = Math.min(this.minX, point.x); + this.maxX = Math.max(this.maxX, point.x); + this.minY = Math.min(this.minY, point.y); + this.maxY = Math.max(this.maxY, point.y); + } + addPointMatrix(matrix, point) { + const { a, b, c, d, tx, ty } = matrix; + const x = a * point.x + c * point.y + tx; + const y = b * point.x + d * point.y + ty; + this.minX = Math.min(this.minX, x); + this.maxX = Math.max(this.maxX, x); + this.minY = Math.min(this.minY, y); + this.maxY = Math.max(this.maxY, y); + } + addQuad(vertices) { + let minX = this.minX; + let minY = this.minY; + let maxX = this.maxX; + let maxY = this.maxY; + let x = vertices[0]; + let y = vertices[1]; + minX = x < minX ? x : minX; + minY = y < minY ? y : minY; + maxX = x > maxX ? x : maxX; + maxY = y > maxY ? y : maxY; + x = vertices[2]; + y = vertices[3]; + minX = x < minX ? x : minX; + minY = y < minY ? y : minY; + maxX = x > maxX ? x : maxX; + maxY = y > maxY ? y : maxY; + x = vertices[4]; + y = vertices[5]; + minX = x < minX ? x : minX; + minY = y < minY ? y : minY; + maxX = x > maxX ? x : maxX; + maxY = y > maxY ? y : maxY; + x = vertices[6]; + y = vertices[7]; + minX = x < minX ? x : minX; + minY = y < minY ? y : minY; + maxX = x > maxX ? x : maxX; + maxY = y > maxY ? y : maxY; + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + } + addFrame(transform, x0, y0, x1, y1) { + this.addFrameMatrix(transform.worldTransform, x0, y0, x1, y1); + } + addFrameMatrix(matrix, x0, y0, x1, y1) { + const a = matrix.a; + const b = matrix.b; + const c = matrix.c; + const d = matrix.d; + const tx = matrix.tx; + const ty = matrix.ty; + let minX = this.minX; + let minY = this.minY; + let maxX = this.maxX; + let maxY = this.maxY; + let x = a * x0 + c * y0 + tx; + let y = b * x0 + d * y0 + ty; + minX = x < minX ? x : minX; + minY = y < minY ? y : minY; + maxX = x > maxX ? x : maxX; + maxY = y > maxY ? y : maxY; + x = a * x1 + c * y0 + tx; + y = b * x1 + d * y0 + ty; + minX = x < minX ? x : minX; + minY = y < minY ? y : minY; + maxX = x > maxX ? x : maxX; + maxY = y > maxY ? y : maxY; + x = a * x0 + c * y1 + tx; + y = b * x0 + d * y1 + ty; + minX = x < minX ? x : minX; + minY = y < minY ? y : minY; + maxX = x > maxX ? x : maxX; + maxY = y > maxY ? y : maxY; + x = a * x1 + c * y1 + tx; + y = b * x1 + d * y1 + ty; + minX = x < minX ? x : minX; + minY = y < minY ? y : minY; + maxX = x > maxX ? x : maxX; + maxY = y > maxY ? y : maxY; + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + } + addVertexData(vertexData, beginOffset, endOffset) { + let minX = this.minX; + let minY = this.minY; + let maxX = this.maxX; + let maxY = this.maxY; + for (let i = beginOffset; i < endOffset; i += 2) { + const x = vertexData[i]; + const y = vertexData[i + 1]; + minX = x < minX ? x : minX; + minY = y < minY ? y : minY; + maxX = x > maxX ? x : maxX; + maxY = y > maxY ? y : maxY; + } + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + } + addVertices(transform, vertices, beginOffset, endOffset) { + this.addVerticesMatrix(transform.worldTransform, vertices, beginOffset, endOffset); + } + addVerticesMatrix(matrix, vertices, beginOffset, endOffset, padX = 0, padY = padX) { + const a = matrix.a; + const b = matrix.b; + const c = matrix.c; + const d = matrix.d; + const tx = matrix.tx; + const ty = matrix.ty; + let minX = this.minX; + let minY = this.minY; + let maxX = this.maxX; + let maxY = this.maxY; + for (let i = beginOffset; i < endOffset; i += 2) { + const rawX = vertices[i]; + const rawY = vertices[i + 1]; + const x = a * rawX + c * rawY + tx; + const y = d * rawY + b * rawX + ty; + minX = Math.min(minX, x - padX); + maxX = Math.max(maxX, x + padX); + minY = Math.min(minY, y - padY); + maxY = Math.max(maxY, y + padY); + } + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + } + addBounds(bounds) { + const minX = this.minX; + const minY = this.minY; + const maxX = this.maxX; + const maxY = this.maxY; + this.minX = bounds.minX < minX ? bounds.minX : minX; + this.minY = bounds.minY < minY ? bounds.minY : minY; + this.maxX = bounds.maxX > maxX ? bounds.maxX : maxX; + this.maxY = bounds.maxY > maxY ? bounds.maxY : maxY; + } + addBoundsMask(bounds, mask) { + const _minX = bounds.minX > mask.minX ? bounds.minX : mask.minX; + const _minY = bounds.minY > mask.minY ? bounds.minY : mask.minY; + const _maxX = bounds.maxX < mask.maxX ? bounds.maxX : mask.maxX; + const _maxY = bounds.maxY < mask.maxY ? bounds.maxY : mask.maxY; + if (_minX <= _maxX && _minY <= _maxY) { + const minX = this.minX; + const minY = this.minY; + const maxX = this.maxX; + const maxY = this.maxY; + this.minX = _minX < minX ? _minX : minX; + this.minY = _minY < minY ? _minY : minY; + this.maxX = _maxX > maxX ? _maxX : maxX; + this.maxY = _maxY > maxY ? _maxY : maxY; + } + } + addBoundsMatrix(bounds, matrix) { + this.addFrameMatrix(matrix, bounds.minX, bounds.minY, bounds.maxX, bounds.maxY); + } + addBoundsArea(bounds, area) { + const _minX = bounds.minX > area.x ? bounds.minX : area.x; + const _minY = bounds.minY > area.y ? bounds.minY : area.y; + const _maxX = bounds.maxX < area.x + area.width ? bounds.maxX : area.x + area.width; + const _maxY = bounds.maxY < area.y + area.height ? bounds.maxY : area.y + area.height; + if (_minX <= _maxX && _minY <= _maxY) { + const minX = this.minX; + const minY = this.minY; + const maxX = this.maxX; + const maxY = this.maxY; + this.minX = _minX < minX ? _minX : minX; + this.minY = _minY < minY ? _minY : minY; + this.maxX = _maxX > maxX ? _maxX : maxX; + this.maxY = _maxY > maxY ? _maxY : maxY; + } + } + pad(paddingX = 0, paddingY = paddingX) { + if (!this.isEmpty()) { + this.minX -= paddingX; + this.maxX += paddingX; + this.minY -= paddingY; + this.maxY += paddingY; + } + } + addFramePad(x0, y0, x1, y1, padX, padY) { + x0 -= padX; + y0 -= padY; + x1 += padX; + y1 += padY; + this.minX = this.minX < x0 ? this.minX : x0; + this.maxX = this.maxX > x1 ? this.maxX : x1; + this.minY = this.minY < y0 ? this.minY : y0; + this.maxY = this.maxY > y1 ? this.maxY : y1; + } + } + + class DisplayObject extends eventemitter3 { + constructor() { + super(); + this.tempDisplayObjectParent = null; + this.transform = new Transform(); + this.alpha = 1; + this.visible = true; + this.renderable = true; + this.cullable = false; + this.cullArea = null; + this.parent = null; + this.worldAlpha = 1; + this._lastSortedIndex = 0; + this._zIndex = 0; + this.filterArea = null; + this.filters = null; + this._enabledFilters = null; + this._bounds = new Bounds(); + this._localBounds = null; + this._boundsID = 0; + this._boundsRect = null; + this._localBoundsRect = null; + this._mask = null; + this._maskRefCount = 0; + this._destroyed = false; + this.isSprite = false; + this.isMask = false; + } + static mixin(source) { + const keys = Object.keys(source); + for (let i = 0; i < keys.length; ++i) { + const propertyName = keys[i]; + Object.defineProperty(DisplayObject.prototype, propertyName, Object.getOwnPropertyDescriptor(source, propertyName)); + } + } + get destroyed() { + return this._destroyed; + } + _recursivePostUpdateTransform() { + if (this.parent) { + this.parent._recursivePostUpdateTransform(); + this.transform.updateTransform(this.parent.transform); + } else { + this.transform.updateTransform(this._tempDisplayObjectParent.transform); + } + } + updateTransform() { + this._boundsID++; + this.transform.updateTransform(this.parent.transform); + this.worldAlpha = this.alpha * this.parent.worldAlpha; + } + getBounds(skipUpdate, rect) { + if (!skipUpdate) { + if (!this.parent) { + this.parent = this._tempDisplayObjectParent; + this.updateTransform(); + this.parent = null; + } else { + this._recursivePostUpdateTransform(); + this.updateTransform(); + } + } + if (this._bounds.updateID !== this._boundsID) { + this.calculateBounds(); + this._bounds.updateID = this._boundsID; + } + if (!rect) { + if (!this._boundsRect) { + this._boundsRect = new Rectangle(); + } + rect = this._boundsRect; + } + return this._bounds.getRectangle(rect); + } + getLocalBounds(rect) { + if (!rect) { + if (!this._localBoundsRect) { + this._localBoundsRect = new Rectangle(); + } + rect = this._localBoundsRect; + } + if (!this._localBounds) { + this._localBounds = new Bounds(); + } + const transformRef = this.transform; + const parentRef = this.parent; + this.parent = null; + this.transform = this._tempDisplayObjectParent.transform; + const worldBounds = this._bounds; + const worldBoundsID = this._boundsID; + this._bounds = this._localBounds; + const bounds = this.getBounds(false, rect); + this.parent = parentRef; + this.transform = transformRef; + this._bounds = worldBounds; + this._bounds.updateID += this._boundsID - worldBoundsID; + return bounds; + } + toGlobal(position, point, skipUpdate = false) { + if (!skipUpdate) { + this._recursivePostUpdateTransform(); + if (!this.parent) { + this.parent = this._tempDisplayObjectParent; + this.displayObjectUpdateTransform(); + this.parent = null; + } else { + this.displayObjectUpdateTransform(); + } + } + return this.worldTransform.apply(position, point); + } + toLocal(position, from, point, skipUpdate) { + if (from) { + position = from.toGlobal(position, point, skipUpdate); + } + if (!skipUpdate) { + this._recursivePostUpdateTransform(); + if (!this.parent) { + this.parent = this._tempDisplayObjectParent; + this.displayObjectUpdateTransform(); + this.parent = null; + } else { + this.displayObjectUpdateTransform(); + } + } + return this.worldTransform.applyInverse(position, point); + } + setParent(container) { + if (!container || !container.addChild) { + throw new Error("setParent: Argument must be a Container"); + } + container.addChild(this); + return container; + } + removeFromParent() { + this.parent?.removeChild(this); + } + setTransform(x = 0, y = 0, scaleX = 1, scaleY = 1, rotation = 0, skewX = 0, skewY = 0, pivotX = 0, pivotY = 0) { + this.position.x = x; + this.position.y = y; + this.scale.x = !scaleX ? 1 : scaleX; + this.scale.y = !scaleY ? 1 : scaleY; + this.rotation = rotation; + this.skew.x = skewX; + this.skew.y = skewY; + this.pivot.x = pivotX; + this.pivot.y = pivotY; + return this; + } + destroy(_options) { + this.removeFromParent(); + this._destroyed = true; + this.transform = null; + this.parent = null; + this._bounds = null; + this.mask = null; + this.cullArea = null; + this.filters = null; + this.filterArea = null; + this.hitArea = null; + this.interactive = false; + this.interactiveChildren = false; + this.emit("destroyed"); + this.removeAllListeners(); + } + get _tempDisplayObjectParent() { + if (this.tempDisplayObjectParent === null) { + this.tempDisplayObjectParent = new TemporaryDisplayObject(); + } + return this.tempDisplayObjectParent; + } + enableTempParent() { + const myParent = this.parent; + this.parent = this._tempDisplayObjectParent; + return myParent; + } + disableTempParent(cacheParent) { + this.parent = cacheParent; + } + get x() { + return this.position.x; + } + set x(value) { + this.transform.position.x = value; + } + get y() { + return this.position.y; + } + set y(value) { + this.transform.position.y = value; + } + get worldTransform() { + return this.transform.worldTransform; + } + get localTransform() { + return this.transform.localTransform; + } + get position() { + return this.transform.position; + } + set position(value) { + this.transform.position.copyFrom(value); + } + get scale() { + return this.transform.scale; + } + set scale(value) { + this.transform.scale.copyFrom(value); + } + get pivot() { + return this.transform.pivot; + } + set pivot(value) { + this.transform.pivot.copyFrom(value); + } + get skew() { + return this.transform.skew; + } + set skew(value) { + this.transform.skew.copyFrom(value); + } + get rotation() { + return this.transform.rotation; + } + set rotation(value) { + this.transform.rotation = value; + } + get angle() { + return this.transform.rotation * RAD_TO_DEG; + } + set angle(value) { + this.transform.rotation = value * DEG_TO_RAD; + } + get zIndex() { + return this._zIndex; + } + set zIndex(value) { + this._zIndex = value; + if (this.parent) { + this.parent.sortDirty = true; + } + } + get worldVisible() { + let item = this; + do { + if (!item.visible) { + return false; + } + item = item.parent; + } while (item); + return true; + } + get mask() { + return this._mask; + } + set mask(value) { + if (this._mask === value) { + return; + } + if (this._mask) { + const maskObject = this._mask.isMaskData ? this._mask.maskObject : this._mask; + if (maskObject) { + maskObject._maskRefCount--; + if (maskObject._maskRefCount === 0) { + maskObject.renderable = true; + maskObject.isMask = false; + } + } + } + this._mask = value; + if (this._mask) { + const maskObject = this._mask.isMaskData ? this._mask.maskObject : this._mask; + if (maskObject) { + if (maskObject._maskRefCount === 0) { + maskObject.renderable = false; + maskObject.isMask = true; + } + maskObject._maskRefCount++; + } + } + } + } + class TemporaryDisplayObject extends DisplayObject { + constructor() { + super(...arguments); + this.sortDirty = null; + } + } + DisplayObject.prototype.displayObjectUpdateTransform = DisplayObject.prototype.updateTransform; + + function sortChildren(a, b) { + if (a.zIndex === b.zIndex) { + return a._lastSortedIndex - b._lastSortedIndex; + } + return a.zIndex - b.zIndex; + } + class Container extends DisplayObject { + constructor() { + super(); + this.children = []; + this.sortableChildren = settings.SORTABLE_CHILDREN; + this.sortDirty = false; + } + onChildrenChange(_length) { + } + addChild(...children) { + if (children.length > 1) { + for (let i = 0; i < children.length; i++) { + this.addChild(children[i]); + } + } else { + const child = children[0]; + if (child.parent) { + child.parent.removeChild(child); + } + child.parent = this; + this.sortDirty = true; + child.transform._parentID = -1; + this.children.push(child); + this._boundsID++; + this.onChildrenChange(this.children.length - 1); + this.emit("childAdded", child, this, this.children.length - 1); + child.emit("added", this); + } + return children[0]; + } + addChildAt(child, index) { + if (index < 0 || index > this.children.length) { + throw new Error(`${child}addChildAt: The index ${index} supplied is out of bounds ${this.children.length}`); + } + if (child.parent) { + child.parent.removeChild(child); + } + child.parent = this; + this.sortDirty = true; + child.transform._parentID = -1; + this.children.splice(index, 0, child); + this._boundsID++; + this.onChildrenChange(index); + child.emit("added", this); + this.emit("childAdded", child, this, index); + return child; + } + swapChildren(child, child2) { + if (child === child2) { + return; + } + const index1 = this.getChildIndex(child); + const index2 = this.getChildIndex(child2); + this.children[index1] = child2; + this.children[index2] = child; + this.onChildrenChange(index1 < index2 ? index1 : index2); + } + getChildIndex(child) { + const index = this.children.indexOf(child); + if (index === -1) { + throw new Error("The supplied DisplayObject must be a child of the caller"); + } + return index; + } + setChildIndex(child, index$1) { + if (index$1 < 0 || index$1 >= this.children.length) { + throw new Error(`The index ${index$1} supplied is out of bounds ${this.children.length}`); + } + const currentIndex = this.getChildIndex(child); + removeItems(this.children, currentIndex, 1); + this.children.splice(index$1, 0, child); + this.onChildrenChange(index$1); + } + getChildAt(index) { + if (index < 0 || index >= this.children.length) { + throw new Error(`getChildAt: Index (${index}) does not exist.`); + } + return this.children[index]; + } + removeChild(...children) { + if (children.length > 1) { + for (let i = 0; i < children.length; i++) { + this.removeChild(children[i]); + } + } else { + const child = children[0]; + const index$1 = this.children.indexOf(child); + if (index$1 === -1) + return null; + child.parent = null; + child.transform._parentID = -1; + removeItems(this.children, index$1, 1); + this._boundsID++; + this.onChildrenChange(index$1); + child.emit("removed", this); + this.emit("childRemoved", child, this, index$1); + } + return children[0]; + } + removeChildAt(index$1) { + const child = this.getChildAt(index$1); + child.parent = null; + child.transform._parentID = -1; + removeItems(this.children, index$1, 1); + this._boundsID++; + this.onChildrenChange(index$1); + child.emit("removed", this); + this.emit("childRemoved", child, this, index$1); + return child; + } + removeChildren(beginIndex = 0, endIndex = this.children.length) { + const begin = beginIndex; + const end = endIndex; + const range = end - begin; + let removed; + if (range > 0 && range <= end) { + removed = this.children.splice(begin, range); + for (let i = 0; i < removed.length; ++i) { + removed[i].parent = null; + if (removed[i].transform) { + removed[i].transform._parentID = -1; + } + } + this._boundsID++; + this.onChildrenChange(beginIndex); + for (let i = 0; i < removed.length; ++i) { + removed[i].emit("removed", this); + this.emit("childRemoved", removed[i], this, i); + } + return removed; + } else if (range === 0 && this.children.length === 0) { + return []; + } + throw new RangeError("removeChildren: numeric values are outside the acceptable range."); + } + sortChildren() { + let sortRequired = false; + for (let i = 0, j = this.children.length; i < j; ++i) { + const child = this.children[i]; + child._lastSortedIndex = i; + if (!sortRequired && child.zIndex !== 0) { + sortRequired = true; + } + } + if (sortRequired && this.children.length > 1) { + this.children.sort(sortChildren); + } + this.sortDirty = false; + } + updateTransform() { + if (this.sortableChildren && this.sortDirty) { + this.sortChildren(); + } + this._boundsID++; + this.transform.updateTransform(this.parent.transform); + this.worldAlpha = this.alpha * this.parent.worldAlpha; + for (let i = 0, j = this.children.length; i < j; ++i) { + const child = this.children[i]; + if (child.visible) { + child.updateTransform(); + } + } + } + calculateBounds() { + this._bounds.clear(); + this._calculateBounds(); + for (let i = 0; i < this.children.length; i++) { + const child = this.children[i]; + if (!child.visible || !child.renderable) { + continue; + } + child.calculateBounds(); + if (child._mask) { + const maskObject = child._mask.isMaskData ? child._mask.maskObject : child._mask; + if (maskObject) { + maskObject.calculateBounds(); + this._bounds.addBoundsMask(child._bounds, maskObject._bounds); + } else { + this._bounds.addBounds(child._bounds); + } + } else if (child.filterArea) { + this._bounds.addBoundsArea(child._bounds, child.filterArea); + } else { + this._bounds.addBounds(child._bounds); + } + } + this._bounds.updateID = this._boundsID; + } + getLocalBounds(rect, skipChildrenUpdate = false) { + const result = super.getLocalBounds(rect); + if (!skipChildrenUpdate) { + for (let i = 0, j = this.children.length; i < j; ++i) { + const child = this.children[i]; + if (child.visible) { + child.updateTransform(); + } + } + } + return result; + } + _calculateBounds() { + } + _renderWithCulling(renderer) { + const sourceFrame = renderer.renderTexture.sourceFrame; + if (!(sourceFrame.width > 0 && sourceFrame.height > 0)) { + return; + } + let bounds; + let transform; + if (this.cullArea) { + bounds = this.cullArea; + transform = this.worldTransform; + } else if (this._render !== Container.prototype._render) { + bounds = this.getBounds(true); + } + if (bounds && sourceFrame.intersects(bounds, transform)) { + this._render(renderer); + } else if (this.cullArea) { + return; + } + for (let i = 0, j = this.children.length; i < j; ++i) { + const child = this.children[i]; + const childCullable = child.cullable; + child.cullable = childCullable || !this.cullArea; + child.render(renderer); + child.cullable = childCullable; + } + } + render(renderer) { + if (!this.visible || this.worldAlpha <= 0 || !this.renderable) { + return; + } + if (this._mask || this.filters?.length) { + this.renderAdvanced(renderer); + } else if (this.cullable) { + this._renderWithCulling(renderer); + } else { + this._render(renderer); + for (let i = 0, j = this.children.length; i < j; ++i) { + this.children[i].render(renderer); + } + } + } + renderAdvanced(renderer) { + const filters = this.filters; + const mask = this._mask; + if (filters) { + if (!this._enabledFilters) { + this._enabledFilters = []; + } + this._enabledFilters.length = 0; + for (let i = 0; i < filters.length; i++) { + if (filters[i].enabled) { + this._enabledFilters.push(filters[i]); + } + } + } + const flush = filters && this._enabledFilters?.length || mask && (!mask.isMaskData || mask.enabled && (mask.autoDetect || mask.type !== MASK_TYPES.NONE)); + if (flush) { + renderer.batch.flush(); + } + if (filters && this._enabledFilters?.length) { + renderer.filter.push(this, this._enabledFilters); + } + if (mask) { + renderer.mask.push(this, this._mask); + } + if (this.cullable) { + this._renderWithCulling(renderer); + } else { + this._render(renderer); + for (let i = 0, j = this.children.length; i < j; ++i) { + this.children[i].render(renderer); + } + } + if (flush) { + renderer.batch.flush(); + } + if (mask) { + renderer.mask.pop(this); + } + if (filters && this._enabledFilters?.length) { + renderer.filter.pop(); + } + } + _render(_renderer) { + } + destroy(options) { + super.destroy(); + this.sortDirty = false; + const destroyChildren = typeof options === "boolean" ? options : options?.children; + const oldChildren = this.removeChildren(0, this.children.length); + if (destroyChildren) { + for (let i = 0; i < oldChildren.length; ++i) { + oldChildren[i].destroy(options); + } + } + } + get width() { + return this.scale.x * this.getLocalBounds().width; + } + set width(value) { + const width = this.getLocalBounds().width; + if (width !== 0) { + this.scale.x = value / width; + } else { + this.scale.x = 1; + } + this._width = value; + } + get height() { + return this.scale.y * this.getLocalBounds().height; + } + set height(value) { + const height = this.getLocalBounds().height; + if (height !== 0) { + this.scale.y = value / height; + } else { + this.scale.y = 1; + } + this._height = value; + } + } + Container.prototype.containerUpdateTransform = Container.prototype.updateTransform; + + const tempPoint$2 = new Point(); + const indices = new Uint16Array([0, 1, 2, 0, 2, 3]); + class Sprite extends Container { + constructor(texture) { + super(); + this._anchor = new ObservablePoint(this._onAnchorUpdate, this, texture ? texture.defaultAnchor.x : 0, texture ? texture.defaultAnchor.y : 0); + this._texture = null; + this._width = 0; + this._height = 0; + this._tint = null; + this._tintRGB = null; + this.tint = 16777215; + this.blendMode = BLEND_MODES.NORMAL; + this._cachedTint = 16777215; + this.uvs = null; + this.texture = texture || Texture.EMPTY; + this.vertexData = new Float32Array(8); + this.vertexTrimmedData = null; + this._transformID = -1; + this._textureID = -1; + this._transformTrimmedID = -1; + this._textureTrimmedID = -1; + this.indices = indices; + this.pluginName = "batch"; + this.isSprite = true; + this._roundPixels = settings.ROUND_PIXELS; + } + _onTextureUpdate() { + this._textureID = -1; + this._textureTrimmedID = -1; + this._cachedTint = 16777215; + if (this._width) { + this.scale.x = sign(this.scale.x) * this._width / this._texture.orig.width; + } + if (this._height) { + this.scale.y = sign(this.scale.y) * this._height / this._texture.orig.height; + } + } + _onAnchorUpdate() { + this._transformID = -1; + this._transformTrimmedID = -1; + } + calculateVertices() { + const texture = this._texture; + if (this._transformID === this.transform._worldID && this._textureID === texture._updateID) { + return; + } + if (this._textureID !== texture._updateID) { + this.uvs = this._texture._uvs.uvsFloat32; + } + this._transformID = this.transform._worldID; + this._textureID = texture._updateID; + const wt = this.transform.worldTransform; + const a = wt.a; + const b = wt.b; + const c = wt.c; + const d = wt.d; + const tx = wt.tx; + const ty = wt.ty; + const vertexData = this.vertexData; + const trim = texture.trim; + const orig = texture.orig; + const anchor = this._anchor; + let w0 = 0; + let w1 = 0; + let h0 = 0; + let h1 = 0; + if (trim) { + w1 = trim.x - anchor._x * orig.width; + w0 = w1 + trim.width; + h1 = trim.y - anchor._y * orig.height; + h0 = h1 + trim.height; + } else { + w1 = -anchor._x * orig.width; + w0 = w1 + orig.width; + h1 = -anchor._y * orig.height; + h0 = h1 + orig.height; + } + vertexData[0] = a * w1 + c * h1 + tx; + vertexData[1] = d * h1 + b * w1 + ty; + vertexData[2] = a * w0 + c * h1 + tx; + vertexData[3] = d * h1 + b * w0 + ty; + vertexData[4] = a * w0 + c * h0 + tx; + vertexData[5] = d * h0 + b * w0 + ty; + vertexData[6] = a * w1 + c * h0 + tx; + vertexData[7] = d * h0 + b * w1 + ty; + if (this._roundPixels) { + const resolution = settings.RESOLUTION; + for (let i = 0; i < vertexData.length; ++i) { + vertexData[i] = Math.round((vertexData[i] * resolution | 0) / resolution); + } + } + } + calculateTrimmedVertices() { + if (!this.vertexTrimmedData) { + this.vertexTrimmedData = new Float32Array(8); + } else if (this._transformTrimmedID === this.transform._worldID && this._textureTrimmedID === this._texture._updateID) { + return; + } + this._transformTrimmedID = this.transform._worldID; + this._textureTrimmedID = this._texture._updateID; + const texture = this._texture; + const vertexData = this.vertexTrimmedData; + const orig = texture.orig; + const anchor = this._anchor; + const wt = this.transform.worldTransform; + const a = wt.a; + const b = wt.b; + const c = wt.c; + const d = wt.d; + const tx = wt.tx; + const ty = wt.ty; + const w1 = -anchor._x * orig.width; + const w0 = w1 + orig.width; + const h1 = -anchor._y * orig.height; + const h0 = h1 + orig.height; + vertexData[0] = a * w1 + c * h1 + tx; + vertexData[1] = d * h1 + b * w1 + ty; + vertexData[2] = a * w0 + c * h1 + tx; + vertexData[3] = d * h1 + b * w0 + ty; + vertexData[4] = a * w0 + c * h0 + tx; + vertexData[5] = d * h0 + b * w0 + ty; + vertexData[6] = a * w1 + c * h0 + tx; + vertexData[7] = d * h0 + b * w1 + ty; + } + _render(renderer) { + this.calculateVertices(); + renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]); + renderer.plugins[this.pluginName].render(this); + } + _calculateBounds() { + const trim = this._texture.trim; + const orig = this._texture.orig; + if (!trim || trim.width === orig.width && trim.height === orig.height) { + this.calculateVertices(); + this._bounds.addQuad(this.vertexData); + } else { + this.calculateTrimmedVertices(); + this._bounds.addQuad(this.vertexTrimmedData); + } + } + getLocalBounds(rect) { + if (this.children.length === 0) { + if (!this._localBounds) { + this._localBounds = new Bounds(); + } + this._localBounds.minX = this._texture.orig.width * -this._anchor._x; + this._localBounds.minY = this._texture.orig.height * -this._anchor._y; + this._localBounds.maxX = this._texture.orig.width * (1 - this._anchor._x); + this._localBounds.maxY = this._texture.orig.height * (1 - this._anchor._y); + if (!rect) { + if (!this._localBoundsRect) { + this._localBoundsRect = new Rectangle(); + } + rect = this._localBoundsRect; + } + return this._localBounds.getRectangle(rect); + } + return super.getLocalBounds.call(this, rect); + } + containsPoint(point) { + this.worldTransform.applyInverse(point, tempPoint$2); + const width = this._texture.orig.width; + const height = this._texture.orig.height; + const x1 = -width * this.anchor.x; + let y1 = 0; + if (tempPoint$2.x >= x1 && tempPoint$2.x < x1 + width) { + y1 = -height * this.anchor.y; + if (tempPoint$2.y >= y1 && tempPoint$2.y < y1 + height) { + return true; + } + } + return false; + } + destroy(options) { + super.destroy(options); + this._texture.off("update", this._onTextureUpdate, this); + this._anchor = null; + const destroyTexture = typeof options === "boolean" ? options : options?.texture; + if (destroyTexture) { + const destroyBaseTexture = typeof options === "boolean" ? options : options?.baseTexture; + this._texture.destroy(!!destroyBaseTexture); + } + this._texture = null; + } + static from(source, options) { + const texture = source instanceof Texture ? source : Texture.from(source, options); + return new Sprite(texture); + } + set roundPixels(value) { + if (this._roundPixels !== value) { + this._transformID = -1; + } + this._roundPixels = value; + } + get roundPixels() { + return this._roundPixels; + } + get width() { + return Math.abs(this.scale.x) * this._texture.orig.width; + } + set width(value) { + const s = sign(this.scale.x) || 1; + this.scale.x = s * value / this._texture.orig.width; + this._width = value; + } + get height() { + return Math.abs(this.scale.y) * this._texture.orig.height; + } + set height(value) { + const s = sign(this.scale.y) || 1; + this.scale.y = s * value / this._texture.orig.height; + this._height = value; + } + get anchor() { + return this._anchor; + } + set anchor(value) { + this._anchor.copyFrom(value); + } + get tint() { + return this._tint; + } + set tint(value) { + this._tint = value; + this._tintRGB = (value >> 16) + (value & 65280) + ((value & 255) << 16); + } + get texture() { + return this._texture; + } + set texture(value) { + if (this._texture === value) { + return; + } + if (this._texture) { + this._texture.off("update", this._onTextureUpdate, this); + } + this._texture = value || Texture.EMPTY; + this._cachedTint = 16777215; + this._textureID = -1; + this._textureTrimmedID = -1; + if (value) { + if (value.baseTexture.valid) { + this._onTextureUpdate(); + } else { + value.once("update", this._onTextureUpdate, this); + } + } + } + } + + const _tempMatrix = new Matrix(); + DisplayObject.prototype._cacheAsBitmap = false; + DisplayObject.prototype._cacheData = null; + DisplayObject.prototype._cacheAsBitmapResolution = null; + DisplayObject.prototype._cacheAsBitmapMultisample = null; + class CacheData { + constructor() { + this.textureCacheId = null; + this.originalRender = null; + this.originalRenderCanvas = null; + this.originalCalculateBounds = null; + this.originalGetLocalBounds = null; + this.originalUpdateTransform = null; + this.originalDestroy = null; + this.originalMask = null; + this.originalFilterArea = null; + this.originalContainsPoint = null; + this.sprite = null; + } + } + Object.defineProperties(DisplayObject.prototype, { + cacheAsBitmapResolution: { + get() { + return this._cacheAsBitmapResolution; + }, + set(resolution) { + if (resolution === this._cacheAsBitmapResolution) { + return; + } + this._cacheAsBitmapResolution = resolution; + if (this.cacheAsBitmap) { + this.cacheAsBitmap = false; + this.cacheAsBitmap = true; + } + } + }, + cacheAsBitmapMultisample: { + get() { + return this._cacheAsBitmapMultisample; + }, + set(multisample) { + if (multisample === this._cacheAsBitmapMultisample) { + return; + } + this._cacheAsBitmapMultisample = multisample; + if (this.cacheAsBitmap) { + this.cacheAsBitmap = false; + this.cacheAsBitmap = true; + } + } + }, + cacheAsBitmap: { + get() { + return this._cacheAsBitmap; + }, + set(value) { + if (this._cacheAsBitmap === value) { + return; + } + this._cacheAsBitmap = value; + let data; + if (value) { + if (!this._cacheData) { + this._cacheData = new CacheData(); + } + data = this._cacheData; + data.originalRender = this.render; + data.originalRenderCanvas = this.renderCanvas; + data.originalUpdateTransform = this.updateTransform; + data.originalCalculateBounds = this.calculateBounds; + data.originalGetLocalBounds = this.getLocalBounds; + data.originalDestroy = this.destroy; + data.originalContainsPoint = this.containsPoint; + data.originalMask = this._mask; + data.originalFilterArea = this.filterArea; + this.render = this._renderCached; + this.renderCanvas = this._renderCachedCanvas; + this.destroy = this._cacheAsBitmapDestroy; + } else { + data = this._cacheData; + if (data.sprite) { + this._destroyCachedDisplayObject(); + } + this.render = data.originalRender; + this.renderCanvas = data.originalRenderCanvas; + this.calculateBounds = data.originalCalculateBounds; + this.getLocalBounds = data.originalGetLocalBounds; + this.destroy = data.originalDestroy; + this.updateTransform = data.originalUpdateTransform; + this.containsPoint = data.originalContainsPoint; + this._mask = data.originalMask; + this.filterArea = data.originalFilterArea; + } + } + } + }); + DisplayObject.prototype._renderCached = function _renderCached(renderer) { + if (!this.visible || this.worldAlpha <= 0 || !this.renderable) { + return; + } + this._initCachedDisplayObject(renderer); + this._cacheData.sprite.transform._worldID = this.transform._worldID; + this._cacheData.sprite.worldAlpha = this.worldAlpha; + this._cacheData.sprite._render(renderer); + }; + DisplayObject.prototype._initCachedDisplayObject = function _initCachedDisplayObject(renderer) { + if (this._cacheData?.sprite) { + return; + } + const cacheAlpha = this.alpha; + this.alpha = 1; + renderer.batch.flush(); + const bounds = this.getLocalBounds(null, true).clone(); + if (this.filters?.length) { + const padding = this.filters[0].padding; + bounds.pad(padding); + } + bounds.ceil(settings.RESOLUTION); + const cachedRenderTexture = renderer.renderTexture.current; + const cachedSourceFrame = renderer.renderTexture.sourceFrame.clone(); + const cachedDestinationFrame = renderer.renderTexture.destinationFrame.clone(); + const cachedProjectionTransform = renderer.projection.transform; + const renderTexture = RenderTexture.create({ + width: bounds.width, + height: bounds.height, + resolution: this.cacheAsBitmapResolution || renderer.resolution, + multisample: this.cacheAsBitmapMultisample ?? renderer.multisample + }); + const textureCacheId = `cacheAsBitmap_${uid()}`; + this._cacheData.textureCacheId = textureCacheId; + BaseTexture.addToCache(renderTexture.baseTexture, textureCacheId); + Texture.addToCache(renderTexture, textureCacheId); + const m = this.transform.localTransform.copyTo(_tempMatrix).invert().translate(-bounds.x, -bounds.y); + this.render = this._cacheData.originalRender; + renderer.render(this, { renderTexture, clear: true, transform: m, skipUpdateTransform: false }); + renderer.framebuffer.blit(); + renderer.projection.transform = cachedProjectionTransform; + renderer.renderTexture.bind(cachedRenderTexture, cachedSourceFrame, cachedDestinationFrame); + this.render = this._renderCached; + this.updateTransform = this.displayObjectUpdateTransform; + this.calculateBounds = this._calculateCachedBounds; + this.getLocalBounds = this._getCachedLocalBounds; + this._mask = null; + this.filterArea = null; + this.alpha = cacheAlpha; + const cachedSprite = new Sprite(renderTexture); + cachedSprite.transform.worldTransform = this.transform.worldTransform; + cachedSprite.anchor.x = -(bounds.x / bounds.width); + cachedSprite.anchor.y = -(bounds.y / bounds.height); + cachedSprite.alpha = cacheAlpha; + cachedSprite._bounds = this._bounds; + this._cacheData.sprite = cachedSprite; + this.transform._parentID = -1; + if (!this.parent) { + this.enableTempParent(); + this.updateTransform(); + this.disableTempParent(null); + } else { + this.updateTransform(); + } + this.containsPoint = cachedSprite.containsPoint.bind(cachedSprite); + }; + DisplayObject.prototype._renderCachedCanvas = function _renderCachedCanvas(renderer) { + if (!this.visible || this.worldAlpha <= 0 || !this.renderable) { + return; + } + this._initCachedDisplayObjectCanvas(renderer); + this._cacheData.sprite.worldAlpha = this.worldAlpha; + this._cacheData.sprite._renderCanvas(renderer); + }; + DisplayObject.prototype._initCachedDisplayObjectCanvas = function _initCachedDisplayObjectCanvas(renderer) { + if (this._cacheData?.sprite) { + return; + } + const bounds = this.getLocalBounds(null, true); + const cacheAlpha = this.alpha; + this.alpha = 1; + const cachedRenderTarget = renderer.canvasContext.activeContext; + const cachedProjectionTransform = renderer._projTransform; + bounds.ceil(settings.RESOLUTION); + const renderTexture = RenderTexture.create({ width: bounds.width, height: bounds.height }); + const textureCacheId = `cacheAsBitmap_${uid()}`; + this._cacheData.textureCacheId = textureCacheId; + BaseTexture.addToCache(renderTexture.baseTexture, textureCacheId); + Texture.addToCache(renderTexture, textureCacheId); + const m = _tempMatrix; + this.transform.localTransform.copyTo(m); + m.invert(); + m.tx -= bounds.x; + m.ty -= bounds.y; + this.renderCanvas = this._cacheData.originalRenderCanvas; + renderer.render(this, { renderTexture, clear: true, transform: m, skipUpdateTransform: false }); + renderer.canvasContext.activeContext = cachedRenderTarget; + renderer._projTransform = cachedProjectionTransform; + this.renderCanvas = this._renderCachedCanvas; + this.updateTransform = this.displayObjectUpdateTransform; + this.calculateBounds = this._calculateCachedBounds; + this.getLocalBounds = this._getCachedLocalBounds; + this._mask = null; + this.filterArea = null; + this.alpha = cacheAlpha; + const cachedSprite = new Sprite(renderTexture); + cachedSprite.transform.worldTransform = this.transform.worldTransform; + cachedSprite.anchor.x = -(bounds.x / bounds.width); + cachedSprite.anchor.y = -(bounds.y / bounds.height); + cachedSprite.alpha = cacheAlpha; + cachedSprite._bounds = this._bounds; + this._cacheData.sprite = cachedSprite; + this.transform._parentID = -1; + if (!this.parent) { + this.parent = renderer._tempDisplayObjectParent; + this.updateTransform(); + this.parent = null; + } else { + this.updateTransform(); + } + this.containsPoint = cachedSprite.containsPoint.bind(cachedSprite); + }; + DisplayObject.prototype._calculateCachedBounds = function _calculateCachedBounds() { + this._bounds.clear(); + this._cacheData.sprite.transform._worldID = this.transform._worldID; + this._cacheData.sprite._calculateBounds(); + this._bounds.updateID = this._boundsID; + }; + DisplayObject.prototype._getCachedLocalBounds = function _getCachedLocalBounds() { + return this._cacheData.sprite.getLocalBounds(null); + }; + DisplayObject.prototype._destroyCachedDisplayObject = function _destroyCachedDisplayObject() { + this._cacheData.sprite._texture.destroy(true); + this._cacheData.sprite = null; + BaseTexture.removeFromCache(this._cacheData.textureCacheId); + Texture.removeFromCache(this._cacheData.textureCacheId); + this._cacheData.textureCacheId = null; + }; + DisplayObject.prototype._cacheAsBitmapDestroy = function _cacheAsBitmapDestroy(options) { + this.cacheAsBitmap = false; + this.destroy(options); + }; + + DisplayObject.prototype.name = null; + Container.prototype.getChildByName = function getChildByName(name, deep) { + for (let i = 0, j = this.children.length; i < j; i++) { + if (this.children[i].name === name) { + return this.children[i]; + } + } + if (deep) { + for (let i = 0, j = this.children.length; i < j; i++) { + const child = this.children[i]; + if (!child.getChildByName) { + continue; + } + const target = child.getChildByName(name, true); + if (target) { + return target; + } + } + } + return null; + }; + + DisplayObject.prototype.getGlobalPosition = function getGlobalPosition(point = new Point(), skipUpdate = false) { + if (this.parent) { + this.parent.toGlobal(this.position, point, skipUpdate); + } else { + point.x = this.position.x; + point.y = this.position.y; + } + return point; + }; + + const accessibleTarget = { + accessible: false, + accessibleTitle: null, + accessibleHint: null, + tabIndex: 0, + _accessibleActive: false, + _accessibleDiv: null, + accessibleType: "button", + accessiblePointerEvents: "auto", + accessibleChildren: true, + renderId: -1 + }; + + class FederatedEvent { + constructor(manager) { + this.bubbles = true; + this.cancelBubble = true; + this.cancelable = false; + this.composed = false; + this.defaultPrevented = false; + this.eventPhase = FederatedEvent.prototype.NONE; + this.propagationStopped = false; + this.propagationImmediatelyStopped = false; + this.layer = new Point(); + this.page = new Point(); + this.AT_TARGET = 1; + this.BUBBLING_PHASE = 2; + this.CAPTURING_PHASE = 3; + this.NONE = 0; + 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() { + if (this.manager && (!this.path || this.path[this.path.length - 1] !== this.target)) { + this.path = this.target ? this.manager.propagationPath(this.target) : []; + } + return 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() { + if (this.nativeEvent instanceof Event && this.nativeEvent.cancelable) { + this.nativeEvent.preventDefault(); + } + this.defaultPrevented = true; + } + stopImmediatePropagation() { + this.propagationImmediatelyStopped = true; + } + stopPropagation() { + this.propagationStopped = true; + } + } + + 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; + } + 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 = false; + } + getCoalescedEvents() { + if (this.type === "pointermove" || this.type === "mousemove" || this.type === "touchmove") { + return [this]; + } + return []; + } + getPredictedEvents() { + throw new Error("getPredictedEvents is not supported!"); + } + } + + class FederatedWheelEvent extends FederatedMouseEvent { + constructor() { + super(...arguments); + this.DOM_DELTA_LINE = 0; + this.DOM_DELTA_PAGE = 1; + this.DOM_DELTA_PIXEL = 2; + } + } + + const PROPAGATION_LIMIT = 2048; + const tempHitLocation = new Point(); + const tempLocalMapping = new Point(); + class EventBoundary { + constructor(rootTarget) { + this.dispatch = new eventemitter3(); + this.moveOnAll = false; + this.mappingState = { + trackingData: {} + }; + this.eventPool = /* @__PURE__ */ new Map(); + 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) { + if (!this.mappingTable[type]) { + this.mappingTable[type] = []; + } + this.mappingTable[type].push({ + fn, + priority: 0 + }); + this.mappingTable[type].sort((a, b) => a.priority - b.priority); + } + dispatchEvent(e, type) { + e.propagationStopped = false; + e.propagationImmediatelyStopped = false; + this.propagate(e, type); + this.dispatch.emit(type || e.type, e); + } + mapEvent(e) { + if (!this.rootTarget) { + return; + } + const mappers = this.mappingTable[e.type]; + if (mappers) { + for (let i = 0, j = mappers.length; i < j; i++) { + mappers[i].fn(e); + } + } else { + console.warn(`[EventBoundary]: Event mapping not defined for ${e.type}`); + } + } + hitTest(x, y) { + const invertedPath = this.hitTestRecursive(this.rootTarget, this.rootTarget.interactive, tempHitLocation.set(x, y), this.hitTestFn, this.hitPruneFn); + return invertedPath && invertedPath[0]; + } + propagate(e, type) { + if (!e.target) { + return; + } + const composedPath = e.composedPath(); + e.eventPhase = e.CAPTURING_PHASE; + for (let i = 0, j = composedPath.length - 1; i < j; i++) { + e.currentTarget = composedPath[i]; + this.notifyTarget(e, type); + if (e.propagationStopped || e.propagationImmediatelyStopped) + return; + } + e.eventPhase = e.AT_TARGET; + e.currentTarget = e.target; + this.notifyTarget(e, type); + if (e.propagationStopped || e.propagationImmediatelyStopped) + return; + e.eventPhase = e.BUBBLING_PHASE; + for (let i = composedPath.length - 2; i >= 0; i--) { + e.currentTarget = composedPath[i]; + this.notifyTarget(e, type); + if (e.propagationStopped || e.propagationImmediatelyStopped) + return; + } + } + all(e, type, target = this.rootTarget) { + e.eventPhase = e.BUBBLING_PHASE; + const children = target.children; + if (children) { + for (let i = 0; i < children.length; i++) { + this.all(e, type, children[i]); + } + } + e.currentTarget = target; + this.notifyTarget(e, type); + } + propagationPath(target) { + const propagationPath = [target]; + for (let i = 0; i < PROPAGATION_LIMIT && target !== this.rootTarget; i++) { + if (!target.parent) { + throw new Error("Cannot find propagation path to disconnected target"); + } + propagationPath.push(target.parent); + target = target.parent; + } + propagationPath.reverse(); + return propagationPath; + } + hitTestRecursive(currentTarget, interactive, location, testFn, pruneFn) { + if (!currentTarget || !currentTarget.visible) { + return null; + } + if (pruneFn(currentTarget, location)) { + return null; + } + if (currentTarget.interactiveChildren && currentTarget.children) { + const children = currentTarget.children; + for (let i = children.length - 1; i >= 0; i--) { + const child = children[i]; + const nestedHit = this.hitTestRecursive(child, interactive || child.interactive, location, testFn, pruneFn); + if (nestedHit) { + if (nestedHit.length > 0 && !nestedHit[nestedHit.length - 1].parent) { + continue; + } + if (nestedHit.length > 0 || currentTarget.interactive) { + nestedHit.push(currentTarget); + } + return nestedHit; + } + } + } + if (interactive && testFn(currentTarget, location)) { + return currentTarget.interactive ? [currentTarget] : []; + } + return null; + } + hitPruneFn(displayObject, location) { + if (displayObject.hitArea) { + displayObject.worldTransform.applyInverse(location, tempLocalMapping); + if (!displayObject.hitArea.contains(tempLocalMapping.x, tempLocalMapping.y)) { + return true; + } + } + if (displayObject._mask) { + const maskObject = displayObject._mask.isMaskData ? displayObject._mask.maskObject : displayObject._mask; + if (maskObject && !maskObject.containsPoint?.(location)) { + return true; + } + } + return false; + } + hitTestFn(displayObject, location) { + if (displayObject.hitArea) { + return true; + } + if (displayObject.containsPoint) { + return displayObject.containsPoint(location); + } + return false; + } + notifyTarget(e, type) { + type = type ?? e.type; + const key = e.eventPhase === e.CAPTURING_PHASE || e.eventPhase === e.AT_TARGET ? `${type}capture` : type; + this.notifyListeners(e, key); + if (e.eventPhase === e.AT_TARGET) { + this.notifyListeners(e, type); + } + } + mapPointerDown(from) { + if (!(from instanceof FederatedPointerEvent)) { + console.warn("EventBoundary cannot map a non-pointer event as a pointer event"); + return; + } + const e = this.createPointerEvent(from); + this.dispatchEvent(e, "pointerdown"); + if (e.pointerType === "touch") { + this.dispatchEvent(e, "touchstart"); + } else if (e.pointerType === "mouse" || e.pointerType === "pen") { + const isRightButton = e.button === 2; + this.dispatchEvent(e, isRightButton ? "rightdown" : "mousedown"); + } + const trackingData = this.trackingData(from.pointerId); + trackingData.pressTargetsByButton[from.button] = e.composedPath(); + this.freeEvent(e); + } + mapPointerMove(from) { + if (!(from instanceof FederatedPointerEvent)) { + console.warn("EventBoundary cannot map a non-pointer event as a pointer event"); + return; + } + const e = this.createPointerEvent(from); + const isMouse = e.pointerType === "mouse" || e.pointerType === "pen"; + const trackingData = this.trackingData(from.pointerId); + const outTarget = this.findMountedTarget(trackingData.overTargets); + if (trackingData.overTargets && outTarget !== e.target) { + const outType = from.type === "mousemove" ? "mouseout" : "pointerout"; + const outEvent = this.createPointerEvent(from, outType, outTarget); + this.dispatchEvent(outEvent, "pointerout"); + if (isMouse) + this.dispatchEvent(outEvent, "mouseout"); + if (!e.composedPath().includes(outTarget)) { + const leaveEvent = this.createPointerEvent(from, "pointerleave", outTarget); + leaveEvent.eventPhase = leaveEvent.AT_TARGET; + while (leaveEvent.target && !e.composedPath().includes(leaveEvent.target)) { + leaveEvent.currentTarget = leaveEvent.target; + this.notifyTarget(leaveEvent); + if (isMouse) + this.notifyTarget(leaveEvent, "mouseleave"); + leaveEvent.target = leaveEvent.target.parent; + } + this.freeEvent(leaveEvent); + } + this.freeEvent(outEvent); + } + if (outTarget !== e.target) { + const overType = from.type === "mousemove" ? "mouseover" : "pointerover"; + const overEvent = this.clonePointerEvent(e, overType); + this.dispatchEvent(overEvent, "pointerover"); + if (isMouse) + this.dispatchEvent(overEvent, "mouseover"); + let overTargetAncestor = outTarget?.parent; + while (overTargetAncestor && overTargetAncestor !== this.rootTarget.parent) { + if (overTargetAncestor === e.target) + break; + overTargetAncestor = overTargetAncestor.parent; + } + const didPointerEnter = !overTargetAncestor || overTargetAncestor === this.rootTarget.parent; + if (didPointerEnter) { + const enterEvent = this.clonePointerEvent(e, "pointerenter"); + enterEvent.eventPhase = enterEvent.AT_TARGET; + while (enterEvent.target && enterEvent.target !== outTarget && enterEvent.target !== this.rootTarget.parent) { + enterEvent.currentTarget = enterEvent.target; + this.notifyTarget(enterEvent); + if (isMouse) + this.notifyTarget(enterEvent, "mouseenter"); + enterEvent.target = enterEvent.target.parent; + } + this.freeEvent(enterEvent); + } + this.freeEvent(overEvent); + } + const propagationMethod = this.moveOnAll ? "all" : "dispatchEvent"; + this[propagationMethod](e, "pointermove"); + if (e.pointerType === "touch") + this[propagationMethod](e, "touchmove"); + if (isMouse) { + this[propagationMethod](e, "mousemove"); + this.cursor = e.target?.cursor; + } + trackingData.overTargets = e.composedPath(); + this.freeEvent(e); + } + mapPointerOver(from) { + if (!(from instanceof FederatedPointerEvent)) { + console.warn("EventBoundary cannot map a non-pointer event as a pointer event"); + return; + } + const trackingData = this.trackingData(from.pointerId); + const e = this.createPointerEvent(from); + const isMouse = e.pointerType === "mouse" || e.pointerType === "pen"; + this.dispatchEvent(e, "pointerover"); + if (isMouse) + this.dispatchEvent(e, "mouseover"); + if (e.pointerType === "mouse") + this.cursor = e.target?.cursor; + const enterEvent = this.clonePointerEvent(e, "pointerenter"); + enterEvent.eventPhase = enterEvent.AT_TARGET; + while (enterEvent.target && enterEvent.target !== this.rootTarget.parent) { + enterEvent.currentTarget = enterEvent.target; + this.notifyTarget(enterEvent); + if (isMouse) + this.notifyTarget(enterEvent, "mouseenter"); + enterEvent.target = enterEvent.target.parent; + } + trackingData.overTargets = e.composedPath(); + this.freeEvent(e); + this.freeEvent(enterEvent); + } + mapPointerOut(from) { + if (!(from instanceof FederatedPointerEvent)) { + console.warn("EventBoundary cannot map a non-pointer event as a pointer event"); + return; + } + const trackingData = this.trackingData(from.pointerId); + if (trackingData.overTargets) { + const isMouse = from.pointerType === "mouse" || from.pointerType === "pen"; + const outTarget = this.findMountedTarget(trackingData.overTargets); + const outEvent = this.createPointerEvent(from, "pointerout", outTarget); + this.dispatchEvent(outEvent); + if (isMouse) + this.dispatchEvent(outEvent, "mouseout"); + const leaveEvent = this.createPointerEvent(from, "pointerleave", outTarget); + leaveEvent.eventPhase = leaveEvent.AT_TARGET; + while (leaveEvent.target && leaveEvent.target !== this.rootTarget.parent) { + leaveEvent.currentTarget = leaveEvent.target; + this.notifyTarget(leaveEvent); + if (isMouse) + this.notifyTarget(leaveEvent, "mouseleave"); + leaveEvent.target = leaveEvent.target.parent; + } + trackingData.overTargets = null; + this.freeEvent(outEvent); + this.freeEvent(leaveEvent); + } + this.cursor = null; + } + mapPointerUp(from) { + if (!(from instanceof FederatedPointerEvent)) { + console.warn("EventBoundary cannot map a non-pointer event as a pointer event"); + return; + } + const now = performance.now(); + const e = this.createPointerEvent(from); + this.dispatchEvent(e, "pointerup"); + if (e.pointerType === "touch") { + this.dispatchEvent(e, "touchend"); + } else if (e.pointerType === "mouse" || e.pointerType === "pen") { + const isRightButton = e.button === 2; + this.dispatchEvent(e, isRightButton ? "rightup" : "mouseup"); + } + const trackingData = this.trackingData(from.pointerId); + const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]); + let clickTarget = pressTarget; + if (pressTarget && !e.composedPath().includes(pressTarget)) { + let currentTarget = pressTarget; + while (currentTarget && !e.composedPath().includes(currentTarget)) { + e.currentTarget = currentTarget; + this.notifyTarget(e, "pointerupoutside"); + if (e.pointerType === "touch") { + this.notifyTarget(e, "touchendoutside"); + } else if (e.pointerType === "mouse" || e.pointerType === "pen") { + const isRightButton = e.button === 2; + this.notifyTarget(e, isRightButton ? "rightupoutside" : "mouseupoutside"); + } + currentTarget = currentTarget.parent; + } + delete trackingData.pressTargetsByButton[from.button]; + clickTarget = currentTarget; + } + if (clickTarget) { + const clickEvent = this.clonePointerEvent(e, "click"); + clickEvent.target = clickTarget; + clickEvent.path = null; + if (!trackingData.clicksByButton[from.button]) { + trackingData.clicksByButton[from.button] = { + clickCount: 0, + target: clickEvent.target, + timeStamp: now + }; + } + const clickHistory = trackingData.clicksByButton[from.button]; + if (clickHistory.target === clickEvent.target && now - clickHistory.timeStamp < 200) { + ++clickHistory.clickCount; + } else { + clickHistory.clickCount = 1; + } + clickHistory.target = clickEvent.target; + clickHistory.timeStamp = now; + clickEvent.detail = clickHistory.clickCount; + if (clickEvent.pointerType === "mouse") { + this.dispatchEvent(clickEvent, "click"); + } else if (clickEvent.pointerType === "touch") { + this.dispatchEvent(clickEvent, "tap"); + } + this.dispatchEvent(clickEvent, "pointertap"); + this.freeEvent(clickEvent); + } + this.freeEvent(e); + } + mapPointerUpOutside(from) { + if (!(from instanceof FederatedPointerEvent)) { + console.warn("EventBoundary cannot map a non-pointer event as a pointer event"); + return; + } + const trackingData = this.trackingData(from.pointerId); + const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]); + const e = this.createPointerEvent(from); + if (pressTarget) { + let currentTarget = pressTarget; + while (currentTarget) { + e.currentTarget = currentTarget; + this.notifyTarget(e, "pointerupoutside"); + if (e.pointerType === "touch") { + this.notifyTarget(e, "touchendoutside"); + } else if (e.pointerType === "mouse" || e.pointerType === "pen") { + this.notifyTarget(e, e.button === 2 ? "rightupoutside" : "mouseupoutside"); + } + currentTarget = currentTarget.parent; + } + delete trackingData.pressTargetsByButton[from.button]; + } + this.freeEvent(e); + } + mapWheel(from) { + if (!(from instanceof FederatedWheelEvent)) { + console.warn("EventBoundary cannot map a non-wheel event as a wheel event"); + return; + } + const wheelEvent = this.createWheelEvent(from); + this.dispatchEvent(wheelEvent); + this.freeEvent(wheelEvent); + } + findMountedTarget(propagationPath) { + if (!propagationPath) { + return null; + } + let currentTarget = propagationPath[0]; + for (let i = 1; i < propagationPath.length; i++) { + if (propagationPath[i].parent === currentTarget) { + currentTarget = propagationPath[i]; + } else { + break; + } + } + return currentTarget; + } + createPointerEvent(from, type, target) { + const event = this.allocateEvent(FederatedPointerEvent); + this.copyPointerData(from, event); + this.copyMouseData(from, event); + this.copyData(from, event); + event.nativeEvent = from.nativeEvent; + event.originalEvent = from; + event.target = target ?? this.hitTest(event.global.x, event.global.y); + if (typeof type === "string") { + event.type = type; + } + return event; + } + createWheelEvent(from) { + const event = this.allocateEvent(FederatedWheelEvent); + 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); + return event; + } + clonePointerEvent(from, type) { + const event = this.allocateEvent(FederatedPointerEvent); + 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 = type ?? event.type; + return event; + } + copyWheelData(from, to) { + to.deltaMode = from.deltaMode; + to.deltaX = from.deltaX; + to.deltaY = from.deltaY; + to.deltaZ = from.deltaZ; + } + copyPointerData(from, to) { + if (!(from instanceof FederatedPointerEvent && to instanceof FederatedPointerEvent)) + return; + 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) { + if (!(from instanceof FederatedMouseEvent && to instanceof FederatedMouseEvent)) + return; + 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.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) { + if (!this.mappingState.trackingData[id]) { + this.mappingState.trackingData[id] = { + pressTargetsByButton: {}, + clicksByButton: {}, + overTarget: null + }; + } + return this.mappingState.trackingData[id]; + } + allocateEvent(constructor) { + if (!this.eventPool.has(constructor)) { + this.eventPool.set(constructor, []); + } + const event = this.eventPool.get(constructor).pop() || new constructor(this); + event.eventPhase = event.NONE; + event.currentTarget = null; + event.path = null; + event.target = null; + return event; + } + freeEvent(event) { + if (event.manager !== this) + throw new Error("It is illegal to free an event not managed by this EventBoundary!"); + const constructor = event.constructor; + if (!this.eventPool.has(constructor)) { + this.eventPool.set(constructor, []); + } + this.eventPool.get(constructor).push(event); + } + notifyListeners(e, type) { + const listeners = e.currentTarget._events[type]; + if (!listeners) + return; + if ("fn" in listeners) { + listeners.fn.call(listeners.context, e); + } else { + for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++) { + listeners[i].fn.call(listeners[i].context, e); + } + } + } + } + + const MOUSE_POINTER_ID = 1; + const TOUCH_TO_POINTER = { + touchstart: "pointerdown", + touchend: "pointerup", + touchendoutside: "pointerupoutside", + touchmove: "pointermove", + touchcancel: "pointercancel" + }; + 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); + this.autoPreventDefault = true; + this.eventsAdded = false; + this.rootPointerEvent = new FederatedPointerEvent(null); + this.rootWheelEvent = new FederatedWheelEvent(null); + this.cursorStyles = { + default: "inherit", + pointer: "pointer" + }; + 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); + } + init() { + const { view, resolution } = this.renderer; + this.setTargetElement(view); + this.resolution = resolution; + } + destroy() { + this.setTargetElement(null); + this.renderer = null; + } + setCursor(mode) { + mode = mode || "default"; + let applyStyles = true; + if (globalThis.OffscreenCanvas && this.domElement instanceof OffscreenCanvas) { + applyStyles = false; + } + if (this.currentCursor === mode) { + return; + } + this.currentCursor = mode; + const style = this.cursorStyles[mode]; + if (style) { + switch (typeof style) { + case "string": + if (applyStyles) { + this.domElement.style.cursor = style; + } + break; + case "function": + style(mode); + break; + case "object": + if (applyStyles) { + Object.assign(this.domElement.style, style); + } + break; + } + } else if (applyStyles && typeof mode === "string" && !Object.prototype.hasOwnProperty.call(this.cursorStyles, mode)) { + this.domElement.style.cursor = mode; + } + } + onPointerDown(nativeEvent) { + this.rootBoundary.rootTarget = this.renderer.lastObjectRendered; + if (this.supportsTouchEvents && nativeEvent.pointerType === "touch") + return; + const events = this.normalizeToPointerData(nativeEvent); + if (this.autoPreventDefault && events[0].isNormalized) { + const cancelable = nativeEvent.cancelable || !("cancelable" in nativeEvent); + if (cancelable) { + nativeEvent.preventDefault(); + } + } + for (let i = 0, j = events.length; i < j; i++) { + const nativeEvent2 = events[i]; + const federatedEvent = this.bootstrapEvent(this.rootPointerEvent, nativeEvent2); + this.rootBoundary.mapEvent(federatedEvent); + } + this.setCursor(this.rootBoundary.cursor); + } + onPointerMove(nativeEvent) { + this.rootBoundary.rootTarget = this.renderer.lastObjectRendered; + if (this.supportsTouchEvents && nativeEvent.pointerType === "touch") + return; + const normalizedEvents = this.normalizeToPointerData(nativeEvent); + for (let i = 0, j = normalizedEvents.length; i < j; i++) { + const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]); + this.rootBoundary.mapEvent(event); + } + this.setCursor(this.rootBoundary.cursor); + } + onPointerUp(nativeEvent) { + this.rootBoundary.rootTarget = this.renderer.lastObjectRendered; + if (this.supportsTouchEvents && nativeEvent.pointerType === "touch") + return; + let target = nativeEvent.target; + if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) { + target = nativeEvent.composedPath()[0]; + } + const outside = target !== this.domElement ? "outside" : ""; + const normalizedEvents = this.normalizeToPointerData(nativeEvent); + for (let i = 0, j = normalizedEvents.length; i < j; i++) { + const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]); + event.type += outside; + this.rootBoundary.mapEvent(event); + } + this.setCursor(this.rootBoundary.cursor); + } + onPointerOverOut(nativeEvent) { + this.rootBoundary.rootTarget = this.renderer.lastObjectRendered; + if (this.supportsTouchEvents && nativeEvent.pointerType === "touch") + return; + const normalizedEvents = this.normalizeToPointerData(nativeEvent); + for (let i = 0, j = normalizedEvents.length; i < j; i++) { + const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]); + this.rootBoundary.mapEvent(event); + } + this.setCursor(this.rootBoundary.cursor); + } + onWheel(nativeEvent) { + const wheelEvent = this.normalizeWheelEvent(nativeEvent); + this.rootBoundary.rootTarget = this.renderer.lastObjectRendered; + this.rootBoundary.mapEvent(wheelEvent); + } + setTargetElement(element) { + this.removeEvents(); + this.domElement = element; + this.addEvents(); + } + addEvents() { + if (this.eventsAdded || !this.domElement) { + return; + } + const style = this.domElement.style; + if (style) { + if (globalThis.navigator.msPointerEnabled) { + style.msContentZooming = "none"; + style.msTouchAction = "none"; + } else if (this.supportsPointerEvents) { + style.touchAction = "none"; + } + } + if (this.supportsPointerEvents) { + globalThis.document.addEventListener("pointermove", this.onPointerMove, true); + this.domElement.addEventListener("pointerdown", this.onPointerDown, true); + this.domElement.addEventListener("pointerleave", this.onPointerOverOut, true); + this.domElement.addEventListener("pointerover", this.onPointerOverOut, true); + globalThis.addEventListener("pointerup", this.onPointerUp, true); + } else { + globalThis.document.addEventListener("mousemove", this.onPointerMove, true); + this.domElement.addEventListener("mousedown", this.onPointerDown, true); + this.domElement.addEventListener("mouseout", this.onPointerOverOut, true); + this.domElement.addEventListener("mouseover", this.onPointerOverOut, true); + globalThis.addEventListener("mouseup", this.onPointerUp, true); + } + if (this.supportsTouchEvents) { + this.domElement.addEventListener("touchstart", this.onPointerDown, true); + this.domElement.addEventListener("touchend", this.onPointerUp, true); + this.domElement.addEventListener("touchmove", this.onPointerMove, true); + } + this.domElement.addEventListener("wheel", this.onWheel, { + passive: true, + capture: true + }); + this.eventsAdded = true; + } + removeEvents() { + if (!this.eventsAdded || !this.domElement) { + return; + } + const style = this.domElement.style; + if (globalThis.navigator.msPointerEnabled) { + style.msContentZooming = ""; + style.msTouchAction = ""; + } else if (this.supportsPointerEvents) { + style.touchAction = ""; + } + if (this.supportsPointerEvents) { + globalThis.document.removeEventListener("pointermove", this.onPointerMove, true); + this.domElement.removeEventListener("pointerdown", this.onPointerDown, true); + this.domElement.removeEventListener("pointerleave", this.onPointerOverOut, true); + this.domElement.removeEventListener("pointerover", this.onPointerOverOut, true); + globalThis.removeEventListener("pointerup", this.onPointerUp, true); + } else { + globalThis.document.removeEventListener("mousemove", this.onPointerMove, true); + this.domElement.removeEventListener("mousedown", this.onPointerDown, true); + this.domElement.removeEventListener("mouseout", this.onPointerOverOut, true); + this.domElement.removeEventListener("mouseover", this.onPointerOverOut, true); + globalThis.removeEventListener("mouseup", this.onPointerUp, true); + } + if (this.supportsTouchEvents) { + this.domElement.removeEventListener("touchstart", this.onPointerDown, true); + this.domElement.removeEventListener("touchend", this.onPointerUp, true); + this.domElement.removeEventListener("touchmove", this.onPointerMove, true); + } + this.domElement.removeEventListener("wheel", this.onWheel, true); + this.domElement = null; + this.eventsAdded = false; + } + mapPositionToPoint(point, x, y) { + let rect; + if (!this.domElement.parentElement) { + rect = { + x: 0, + y: 0, + width: this.domElement.width, + height: this.domElement.height, + left: 0, + top: 0 + }; + } else { + rect = this.domElement.getBoundingClientRect(); + } + const 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) { + const normalizedEvents = []; + if (this.supportsTouchEvents && event instanceof TouchEvent) { + for (let i = 0, li = event.changedTouches.length; i < li; i++) { + const touch = event.changedTouches[i]; + if (typeof touch.button === "undefined") + touch.button = 0; + if (typeof touch.buttons === "undefined") + touch.buttons = 1; + if (typeof touch.isPrimary === "undefined") { + touch.isPrimary = event.touches.length === 1 && event.type === "touchstart"; + } + if (typeof touch.width === "undefined") + touch.width = touch.radiusX || 1; + if (typeof touch.height === "undefined") + touch.height = touch.radiusY || 1; + if (typeof touch.tiltX === "undefined") + touch.tiltX = 0; + if (typeof touch.tiltY === "undefined") + touch.tiltY = 0; + if (typeof touch.pointerType === "undefined") + touch.pointerType = "touch"; + if (typeof touch.pointerId === "undefined") + touch.pointerId = touch.identifier || 0; + if (typeof touch.pressure === "undefined") + touch.pressure = touch.force || 0.5; + if (typeof touch.twist === "undefined") + touch.twist = 0; + if (typeof touch.tangentialPressure === "undefined") + touch.tangentialPressure = 0; + if (typeof touch.layerX === "undefined") + touch.layerX = touch.offsetX = touch.clientX; + if (typeof touch.layerY === "undefined") + touch.layerY = touch.offsetY = touch.clientY; + touch.isNormalized = true; + touch.type = event.type; + normalizedEvents.push(touch); + } + } else if (!globalThis.MouseEvent || event instanceof MouseEvent && (!this.supportsPointerEvents || !(event instanceof globalThis.PointerEvent))) { + const tempEvent = event; + if (typeof tempEvent.isPrimary === "undefined") + tempEvent.isPrimary = true; + if (typeof tempEvent.width === "undefined") + tempEvent.width = 1; + if (typeof tempEvent.height === "undefined") + tempEvent.height = 1; + if (typeof tempEvent.tiltX === "undefined") + tempEvent.tiltX = 0; + if (typeof tempEvent.tiltY === "undefined") + tempEvent.tiltY = 0; + if (typeof tempEvent.pointerType === "undefined") + tempEvent.pointerType = "mouse"; + if (typeof tempEvent.pointerId === "undefined") + tempEvent.pointerId = MOUSE_POINTER_ID; + if (typeof tempEvent.pressure === "undefined") + tempEvent.pressure = 0.5; + if (typeof tempEvent.twist === "undefined") + tempEvent.twist = 0; + if (typeof tempEvent.tangentialPressure === "undefined") + tempEvent.tangentialPressure = 0; + tempEvent.isNormalized = true; + normalizedEvents.push(tempEvent); + } else { + normalizedEvents.push(event); + } + return normalizedEvents; + } + normalizeWheelEvent(nativeEvent) { + const event = this.rootWheelEvent; + this.transferMouseData(event, nativeEvent); + event.deltaMode = nativeEvent.deltaMode; + event.deltaX = nativeEvent.deltaX; + event.deltaY = nativeEvent.deltaY; + event.deltaZ = nativeEvent.deltaZ; + 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; + return event; + } + bootstrapEvent(event, nativeEvent) { + 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; + if (event.type === "pointerleave") { + event.type = "pointerout"; + } + if (event.type.startsWith("mouse")) { + event.type = event.type.replace("mouse", "pointer"); + } + if (event.type.startsWith("touch")) { + event.type = TOUCH_TO_POINTER[event.type] || event.type; + } + return 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: [ + ExtensionType.RendererSystem, + ExtensionType.CanvasRendererSystem + ] + }; + extensions$1.add(EventSystem); + + const FederatedDisplayObject = { + interactive: false, + interactiveChildren: true, + hitArea: null, + addEventListener(type, listener, options) { + const capture = typeof options === "boolean" && options || typeof options === "object" && options.capture; + const context = typeof listener === "function" ? void 0 : listener; + type = capture ? `${type}capture` : type; + listener = typeof listener === "function" ? listener : listener.handleEvent; + this.on(type, listener, context); + }, + removeEventListener(type, listener, options) { + const capture = typeof options === "boolean" && options || typeof options === "object" && options.capture; + const context = typeof listener === "function" ? void 0 : listener; + type = capture ? `${type}capture` : type; + listener = typeof listener === "function" ? listener : listener.handleEvent; + this.off(type, listener, context); + }, + dispatchEvent(e) { + if (!(e instanceof FederatedEvent)) { + throw new Error("DisplayObject cannot propagate events outside of the Federated Events API"); + } + e.defaultPrevented = false; + e.path = null; + e.target = this; + e.manager.dispatchEvent(e); + return !e.defaultPrevented; + } + }; + DisplayObject.mixin(FederatedDisplayObject); + + DisplayObject.mixin(accessibleTarget); + const KEY_CODE_TAB = 9; + const DIV_TOUCH_SIZE = 100; + const DIV_TOUCH_POS_X = 0; + const DIV_TOUCH_POS_Y = 0; + const DIV_TOUCH_ZINDEX = 2; + const DIV_HOOK_SIZE = 1; + const DIV_HOOK_POS_X = -1e3; + const DIV_HOOK_POS_Y = -1e3; + const DIV_HOOK_ZINDEX = 2; + class AccessibilityManager { + constructor(renderer) { + this.debug = false; + this._isActive = false; + this._isMobileAccessibility = false; + this.pool = []; + this.renderId = 0; + this.children = []; + this.androidUpdateCount = 0; + this.androidUpdateFrequency = 500; + this._hookDiv = null; + if (isMobile.tablet || isMobile.phone) { + this.createTouchHook(); + } + const div = document.createElement("div"); + div.style.width = `${DIV_TOUCH_SIZE}px`; + div.style.height = `${DIV_TOUCH_SIZE}px`; + div.style.position = "absolute"; + div.style.top = `${DIV_TOUCH_POS_X}px`; + div.style.left = `${DIV_TOUCH_POS_Y}px`; + div.style.zIndex = DIV_TOUCH_ZINDEX.toString(); + this.div = div; + this.renderer = renderer; + this._onKeyDown = this._onKeyDown.bind(this); + this._onMouseMove = this._onMouseMove.bind(this); + globalThis.addEventListener("keydown", this._onKeyDown, false); + } + get isActive() { + return this._isActive; + } + get isMobileAccessibility() { + return this._isMobileAccessibility; + } + createTouchHook() { + const hookDiv = document.createElement("button"); + hookDiv.style.width = `${DIV_HOOK_SIZE}px`; + hookDiv.style.height = `${DIV_HOOK_SIZE}px`; + hookDiv.style.position = "absolute"; + hookDiv.style.top = `${DIV_HOOK_POS_X}px`; + hookDiv.style.left = `${DIV_HOOK_POS_Y}px`; + hookDiv.style.zIndex = DIV_HOOK_ZINDEX.toString(); + hookDiv.style.backgroundColor = "#FF0000"; + hookDiv.title = "select to enable accessibility for this content"; + hookDiv.addEventListener("focus", () => { + this._isMobileAccessibility = true; + this.activate(); + this.destroyTouchHook(); + }); + document.body.appendChild(hookDiv); + this._hookDiv = hookDiv; + } + destroyTouchHook() { + if (!this._hookDiv) { + return; + } + document.body.removeChild(this._hookDiv); + this._hookDiv = null; + } + activate() { + if (this._isActive) { + return; + } + this._isActive = true; + globalThis.document.addEventListener("mousemove", this._onMouseMove, true); + globalThis.removeEventListener("keydown", this._onKeyDown, false); + this.renderer.on("postrender", this.update, this); + this.renderer.view.parentNode?.appendChild(this.div); + } + deactivate() { + if (!this._isActive || this._isMobileAccessibility) { + return; + } + this._isActive = false; + globalThis.document.removeEventListener("mousemove", this._onMouseMove, true); + globalThis.addEventListener("keydown", this._onKeyDown, false); + this.renderer.off("postrender", this.update); + this.div.parentNode?.removeChild(this.div); + } + updateAccessibleObjects(displayObject) { + if (!displayObject.visible || !displayObject.accessibleChildren) { + return; + } + if (displayObject.accessible && displayObject.interactive) { + if (!displayObject._accessibleActive) { + this.addChild(displayObject); + } + displayObject.renderId = this.renderId; + } + const children = displayObject.children; + if (children) { + for (let i = 0; i < children.length; i++) { + this.updateAccessibleObjects(children[i]); + } + } + } + update() { + const now = performance.now(); + if (isMobile.android.device && now < this.androidUpdateCount) { + return; + } + this.androidUpdateCount = now + this.androidUpdateFrequency; + if (!this.renderer.renderingToScreen) { + return; + } + if (this.renderer.lastObjectRendered) { + this.updateAccessibleObjects(this.renderer.lastObjectRendered); + } + const { x, y, width, height } = this.renderer.view.getBoundingClientRect(); + const { width: viewWidth, height: viewHeight, resolution } = this.renderer; + const sx = width / viewWidth * resolution; + const sy = height / viewHeight * resolution; + let div = this.div; + div.style.left = `${x}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.renderId !== this.renderId) { + child._accessibleActive = false; + removeItems(this.children, i, 1); + this.div.removeChild(child._accessibleDiv); + this.pool.push(child._accessibleDiv); + child._accessibleDiv = null; + i--; + } else { + div = child._accessibleDiv; + let hitArea = child.hitArea; + const wt = child.worldTransform; + if (child.hitArea) { + 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 { + hitArea = child.getBounds(); + this.capHitArea(hitArea); + 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`; + if (div.title !== child.accessibleTitle && child.accessibleTitle !== null) { + div.title = child.accessibleTitle; + } + if (div.getAttribute("aria-label") !== child.accessibleHint && child.accessibleHint !== null) { + div.setAttribute("aria-label", child.accessibleHint); + } + } + if (child.accessibleTitle !== div.title || child.tabIndex !== div.tabIndex) { + div.title = child.accessibleTitle; + div.tabIndex = child.tabIndex; + if (this.debug) + this.updateDebugHTML(div); + } + } + } + this.renderId++; + } + updateDebugHTML(div) { + div.innerHTML = `type: ${div.type}
title : ${div.title}
tabIndex: ${div.tabIndex}`; + } + capHitArea(hitArea) { + if (hitArea.x < 0) { + hitArea.width += hitArea.x; + hitArea.x = 0; + } + if (hitArea.y < 0) { + hitArea.height += hitArea.y; + hitArea.y = 0; + } + const { width: viewWidth, height: viewHeight } = this.renderer; + if (hitArea.x + hitArea.width > viewWidth) { + hitArea.width = viewWidth - hitArea.x; + } + if (hitArea.y + hitArea.height > viewHeight) { + hitArea.height = viewHeight - hitArea.y; + } + } + addChild(displayObject) { + let div = this.pool.pop(); + if (!div) { + div = document.createElement("button"); + div.style.width = `${DIV_TOUCH_SIZE}px`; + div.style.height = `${DIV_TOUCH_SIZE}px`; + div.style.backgroundColor = this.debug ? "rgba(255,255,255,0.5)" : "transparent"; + div.style.position = "absolute"; + div.style.zIndex = DIV_TOUCH_ZINDEX.toString(); + div.style.borderStyle = "none"; + if (navigator.userAgent.toLowerCase().includes("chrome")) { + div.setAttribute("aria-live", "off"); + } else { + div.setAttribute("aria-live", "polite"); + } + if (navigator.userAgent.match(/rv:.*Gecko\//)) { + div.setAttribute("aria-relevant", "additions"); + } else { + 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 = displayObject.accessiblePointerEvents; + div.type = displayObject.accessibleType; + if (displayObject.accessibleTitle && displayObject.accessibleTitle !== null) { + div.title = displayObject.accessibleTitle; + } else if (!displayObject.accessibleHint || displayObject.accessibleHint === null) { + div.title = `displayObject ${displayObject.tabIndex}`; + } + if (displayObject.accessibleHint && displayObject.accessibleHint !== null) { + div.setAttribute("aria-label", displayObject.accessibleHint); + } + if (this.debug) + this.updateDebugHTML(div); + displayObject._accessibleActive = true; + displayObject._accessibleDiv = div; + div.displayObject = displayObject; + this.children.push(displayObject); + this.div.appendChild(displayObject._accessibleDiv); + displayObject._accessibleDiv.tabIndex = displayObject.tabIndex; + } + _dispatchEvent(e, type) { + const { displayObject: target } = e.target; + const boundry = this.renderer.events.rootBoundary; + const event = Object.assign(new FederatedEvent(boundry), { target }); + boundry.rootTarget = this.renderer.lastObjectRendered; + type.forEach((type2) => boundry.dispatchEvent(event, type2)); + } + _onClick(e) { + this._dispatchEvent(e, ["click", "pointertap", "tap"]); + } + _onFocus(e) { + if (!e.target.getAttribute("aria-live")) { + e.target.setAttribute("aria-live", "assertive"); + } + this._dispatchEvent(e, ["mouseover"]); + } + _onFocusOut(e) { + if (!e.target.getAttribute("aria-live")) { + e.target.setAttribute("aria-live", "polite"); + } + this._dispatchEvent(e, ["mouseout"]); + } + _onKeyDown(e) { + if (e.keyCode !== KEY_CODE_TAB) { + return; + } + this.activate(); + } + _onMouseMove(e) { + if (e.movementX === 0 && e.movementY === 0) { + return; + } + this.deactivate(); + } + destroy() { + this.destroyTouchHook(); + this.div = null; + globalThis.document.removeEventListener("mousemove", this._onMouseMove, true); + globalThis.removeEventListener("keydown", this._onKeyDown); + this.pool = null; + this.children = null; + this.renderer = null; + } + } + AccessibilityManager.extension = { + name: "accessibility", + type: [ + ExtensionType.RendererPlugin, + ExtensionType.CanvasRendererPlugin + ] + }; + extensions$1.add(AccessibilityManager); + + const _Application = class { + constructor(options) { + this.stage = new Container(); + options = Object.assign({ + forceCanvas: false + }, options); + this.renderer = autoDetectRenderer(options); + _Application._plugins.forEach((plugin) => { + plugin.init.call(this, options); + }); + } + render() { + this.renderer.render(this.stage); + } + get view() { + return this.renderer.view; + } + get screen() { + return this.renderer.screen; + } + destroy(removeView, stageOptions) { + const plugins = _Application._plugins.slice(0); + plugins.reverse(); + plugins.forEach((plugin) => { + plugin.destroy.call(this); + }); + this.stage.destroy(stageOptions); + this.stage = null; + this.renderer.destroy(removeView); + this.renderer = null; + } + }; + let Application = _Application; + Application._plugins = []; + extensions$1.handleByList(ExtensionType.Application, Application._plugins); + + class ResizePlugin { + static init(options) { + Object.defineProperty(this, "resizeTo", { + set(dom) { + globalThis.removeEventListener("resize", this.queueResize); + this._resizeTo = dom; + if (dom) { + globalThis.addEventListener("resize", this.queueResize); + this.resize(); + } + }, + get() { + return this._resizeTo; + } + }); + this.queueResize = () => { + if (!this._resizeTo) { + return; + } + this.cancelResize(); + this._resizeId = requestAnimationFrame(() => this.resize()); + }; + this.cancelResize = () => { + if (this._resizeId) { + cancelAnimationFrame(this._resizeId); + this._resizeId = null; + } + }; + this.resize = () => { + if (!this._resizeTo) { + return; + } + this.cancelResize(); + let width; + let height; + if (this._resizeTo === globalThis.window) { + width = globalThis.innerWidth; + height = globalThis.innerHeight; + } else { + const { clientWidth, clientHeight } = this._resizeTo; + width = clientWidth; + height = 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 = ExtensionType.Application; + extensions$1.add(ResizePlugin); + + class BackgroundLoader { + constructor(loader, verbose = false) { + this._loader = loader; + this._assetList = []; + this._isLoading = false; + this._maxConcurrent = 1; + this.verbose = verbose; + } + add(assetUrls) { + assetUrls.forEach((a) => { + this._assetList.push(a); + }); + if (this.verbose) + console.log("[BackgroundLoader] assets: ", this._assetList); + if (this._isActive && !this._isLoading) { + this._next(); + } + } + async _next() { + if (this._assetList.length && this._isActive) { + this._isLoading = true; + const toLoad = []; + const 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 = false; + this._next(); + } + } + get active() { + return this._isActive; + } + set active(value) { + if (this._isActive === value) + return; + this._isActive = value; + if (value && !this._isLoading) { + this._next(); + } + } + } + + const convertToList = (input, transform) => { + if (!Array.isArray(input)) { + input = [input]; + } + if (!transform) { + return input; + } + return input.map((item) => { + if (typeof item === "string") { + return transform(item); + } + return item; + }); + }; + + function processX(base, ids, depth, result, tags) { + const id = ids[depth]; + for (let i = 0; i < id.length; i++) { + const value = id[i]; + if (depth < ids.length - 1) { + processX(base.replace(result[depth], value), ids, depth + 1, result, tags); + } else { + tags.push(base.replace(result[depth], value)); + } + } + } + function createStringVariations(string) { + const regex = /\{(.*?)\}/g; + const result = string.match(regex); + const tags = []; + if (result) { + const ids = []; + result.forEach((vars) => { + const split = vars.substring(1, vars.length - 1).split(","); + ids.push(split); + }); + processX(string, ids, 0, result, tags); + } else { + tags.push(string); + } + return tags; + } + + const isSingleItem = (item) => !Array.isArray(item); + + class CacheClass { + constructor() { + this._parsers = []; + this._cache = /* @__PURE__ */ new Map(); + this._cacheMap = /* @__PURE__ */ new Map(); + } + reset() { + this._cacheMap.clear(); + this._cache.clear(); + } + has(key) { + return this._cache.has(key); + } + get(key) { + const result = this._cache.get(key); + if (!result) { + } + return result; + } + set(key, value) { + const keys = convertToList(key); + let cacheableAssets; + for (let i = 0; i < this.parsers.length; i++) { + const parser = this.parsers[i]; + if (parser.test(value)) { + cacheableAssets = parser.getCacheableAssets(keys, value); + break; + } + } + if (!cacheableAssets) { + cacheableAssets = {}; + keys.forEach((key2) => { + cacheableAssets[key2] = value; + }); + } + const cacheKeys = Object.keys(cacheableAssets); + const cachedAssets = { + cacheKeys, + keys + }; + keys.forEach((key2) => { + this._cacheMap.set(key2, cachedAssets); + }); + cacheKeys.forEach((key2) => { + if (this._cache.has(key2) && this._cache.get(key2) !== value) { + } + this._cache.set(key2, cacheableAssets[key2]); + }); + if (value instanceof Texture) { + const texture = value; + keys.forEach((key2) => { + if (texture.baseTexture !== Texture.EMPTY.baseTexture) { + BaseTexture.addToCache(texture.baseTexture, key2); + } + Texture.addToCache(texture, key2); + }); + } + } + remove(key) { + this._cacheMap.get(key); + if (!this._cacheMap.has(key)) { + return; + } + const cacheMap = this._cacheMap.get(key); + const cacheKeys = cacheMap.cacheKeys; + cacheKeys.forEach((key2) => { + this._cache.delete(key2); + }); + cacheMap.keys.forEach((key2) => { + this._cacheMap.delete(key2); + }); + } + get parsers() { + return this._parsers; + } + } + const Cache = new CacheClass(); + + class Loader { + constructor() { + this._parsers = []; + this.promiseCache = {}; + } + reset() { + this.promiseCache = {}; + } + _getLoadPromiseAndParser(url, data) { + const result = { + promise: null, + parser: null + }; + result.promise = (async () => { + let asset = null; + for (let i = 0; i < this.parsers.length; i++) { + const parser = this.parsers[i]; + if (parser.load && parser.test?.(url, data, this)) { + asset = await parser.load(url, data, this); + result.parser = parser; + break; + } + } + if (!result.parser) { + return null; + } + for (let i = 0; i < this.parsers.length; i++) { + const parser = this.parsers[i]; + if (parser.parse) { + if (parser.parse && await parser.testParse?.(asset, data, this)) { + asset = await parser.parse(asset, data, this) || asset; + result.parser = parser; + } + } + } + return asset; + })(); + return result; + } + async load(assetsToLoadIn, onProgress) { + let count = 0; + const assets = {}; + const singleAsset = isSingleItem(assetsToLoadIn); + const assetsToLoad = convertToList(assetsToLoadIn, (item) => ({ + src: item + })); + const total = assetsToLoad.length; + const promises = assetsToLoad.map(async (asset) => { + const url = path.toAbsolute(asset.src); + if (!assets[asset.src]) { + try { + if (!this.promiseCache[url]) { + this.promiseCache[url] = this._getLoadPromiseAndParser(url, asset); + } + assets[asset.src] = await this.promiseCache[url].promise; + if (onProgress) + onProgress(++count / total); + } catch (e) { + delete this.promiseCache[url]; + delete assets[asset.src]; + throw new Error(`[Loader.load] Failed to load ${url}. +${e}`); + } + } + }); + await Promise.all(promises); + return singleAsset ? assets[assetsToLoad[0].src] : assets; + } + async unload(assetsToUnloadIn) { + const assetsToUnload = convertToList(assetsToUnloadIn, (item) => ({ + src: item + })); + const promises = assetsToUnload.map(async (asset) => { + const url = path.toAbsolute(asset.src); + const loadPromise = this.promiseCache[url]; + if (loadPromise) { + const loadedAsset = await loadPromise.promise; + loadPromise.parser?.unload?.(loadedAsset, asset, this); + delete this.promiseCache[url]; + } + }); + await Promise.all(promises); + } + get parsers() { + return this._parsers; + } + } + + class Resolver { + constructor() { + this._assetMap = {}; + this._preferredOrder = []; + this._parsers = []; + this._resolverHash = {}; + this._bundles = {}; + } + prefer(...preferOrders) { + preferOrders.forEach((prefer) => { + this._preferredOrder.push(prefer); + if (!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._preferredOrder = []; + this._resolverHash = {}; + this._assetMap = {}; + this._rootPath = null; + this._basePath = null; + this._manifest = null; + } + addManifest(manifest) { + if (this._manifest) { + } + this._manifest = manifest; + manifest.bundles.forEach((bundle) => { + this.addBundle(bundle.name, bundle.assets); + }); + } + addBundle(bundleId, assets) { + const assetNames = []; + if (Array.isArray(assets)) { + assets.forEach((asset) => { + if (typeof asset.name === "string") { + assetNames.push(asset.name); + } else { + assetNames.push(...asset.name); + } + this.add(asset.name, asset.srcs); + }); + } else { + Object.keys(assets).forEach((key) => { + assetNames.push(key); + this.add(key, assets[key]); + }); + } + this._bundles[bundleId] = assetNames; + } + add(keysIn, assetsIn, data) { + const keys = convertToList(keysIn); + keys.forEach((key) => { + if (this._assetMap[key]) { + } + }); + if (!Array.isArray(assetsIn)) { + if (typeof assetsIn === "string") { + assetsIn = createStringVariations(assetsIn); + } else { + assetsIn = [assetsIn]; + } + } + const assetMap = assetsIn.map((asset) => { + let formattedAsset = asset; + if (typeof asset === "string") { + let parsed = false; + for (let i = 0; i < this._parsers.length; i++) { + const parser = this._parsers[i]; + if (parser.test(asset)) { + formattedAsset = parser.parse(asset); + parsed = true; + break; + } + } + if (!parsed) { + formattedAsset = { + src: asset + }; + } + } + if (!formattedAsset.format) { + formattedAsset.format = formattedAsset.src.split(".").pop(); + } + if (!formattedAsset.alias) { + formattedAsset.alias = keys; + } + if (this._basePath || this._rootPath) { + formattedAsset.src = path.toAbsolute(formattedAsset.src, this._basePath, this._rootPath); + } + formattedAsset.data = formattedAsset.data ?? data; + return formattedAsset; + }); + keys.forEach((key) => { + this._assetMap[key] = assetMap; + }); + } + resolveBundle(bundleIds) { + const singleAsset = isSingleItem(bundleIds); + bundleIds = convertToList(bundleIds); + const out = {}; + bundleIds.forEach((bundleId) => { + const assetNames = this._bundles[bundleId]; + if (assetNames) { + out[bundleId] = this.resolve(assetNames); + } + }); + return singleAsset ? out[bundleIds[0]] : out; + } + resolveUrl(key) { + const result = this.resolve(key); + if (typeof key !== "string") { + const out = {}; + for (const i in result) { + out[i] = result[i].src; + } + return out; + } + return result.src; + } + resolve(keys) { + const singleAsset = isSingleItem(keys); + keys = convertToList(keys); + const result = {}; + keys.forEach((key) => { + if (!this._resolverHash[key]) { + if (this._assetMap[key]) { + let assets = this._assetMap[key]; + const preferredOrder = this._getPreferredOrder(assets); + const bestAsset = assets[0]; + preferredOrder?.priority.forEach((priorityKey) => { + preferredOrder.params[priorityKey].forEach((value) => { + const filteredAssets = assets.filter((asset) => { + if (asset[priorityKey]) { + return asset[priorityKey] === value; + } + return false; + }); + if (filteredAssets.length) { + assets = filteredAssets; + } + }); + }); + this._resolverHash[key] = assets[0] ?? bestAsset; + } else { + let src = key; + if (this._basePath || this._rootPath) { + src = path.toAbsolute(src, this._basePath, this._rootPath); + } + this._resolverHash[key] = { + src + }; + } + } + result[key] = this._resolverHash[key]; + }); + return singleAsset ? result[keys[0]] : result; + } + _getPreferredOrder(assets) { + for (let i = 0; i < assets.length; i++) { + const asset = assets[0]; + const preferred = this._preferredOrder.find((preference) => preference.params.format.includes(asset.format)); + if (preferred) { + return preferred; + } + } + return this._preferredOrder[0]; + } + } + + class AssetsClass { + constructor() { + this._detections = []; + this._initialized = false; + this.resolver = new Resolver(); + this.loader = new Loader(); + this.cache = Cache; + this._backgroundLoader = new BackgroundLoader(this.loader); + this._backgroundLoader.active = true; + this.reset(); + } + async init(options = {}) { + if (this._initialized) { + return; + } + this._initialized = true; + if (options.basePath) { + this.resolver.basePath = options.basePath; + } + if (options.manifest) { + let manifest = options.manifest; + if (typeof manifest === "string") { + manifest = await this.load(manifest); + } + this.resolver.addManifest(manifest); + } + const resolutionPref = options.texturePreference?.resolution ?? 1; + const resolution = typeof resolutionPref === "number" ? [resolutionPref] : resolutionPref; + let formats = []; + if (options.texturePreference?.format) { + const formatPref = options.texturePreference?.format; + formats = typeof formatPref === "string" ? [formatPref] : formatPref; + for (const detection of this._detections) { + if (!await detection.test()) { + formats = await detection.remove(formats); + } + } + } else { + for (const detection of this._detections) { + if (await detection.test()) { + formats = await detection.add(formats); + } + } + } + this.resolver.prefer({ + params: { + format: formats, + resolution + } + }); + } + add(keysIn, assetsIn, data) { + this.resolver.add(keysIn, assetsIn, data); + } + async load(urls, onProgress) { + if (!this._initialized) { + await this.init(); + } + const singleAsset = isSingleItem(urls); + const urlArray = convertToList(urls).map((url) => { + if (typeof url !== "string") { + this.resolver.add(url.src, url); + return url.src; + } + return url; + }); + const resolveResults = this.resolver.resolve(urlArray); + const out = await this._mapLoadToResolve(resolveResults, onProgress); + return singleAsset ? out[urlArray[0]] : out; + } + addBundle(bundleId, assets) { + this.resolver.addBundle(bundleId, assets); + } + async loadBundle(bundleIds, onProgress) { + if (!this._initialized) { + await this.init(); + } + let singleAsset = false; + if (typeof bundleIds === "string") { + singleAsset = true; + bundleIds = [bundleIds]; + } + const resolveResults = this.resolver.resolveBundle(bundleIds); + const out = {}; + const keys = Object.keys(resolveResults); + let count = 0; + let total = 0; + const _onProgress = () => { + onProgress?.(++count / total); + }; + const promises = keys.map((bundleId) => { + const resolveResult = resolveResults[bundleId]; + total += Object.keys(resolveResult).length; + return this._mapLoadToResolve(resolveResult, _onProgress).then((resolveResult2) => { + out[bundleId] = resolveResult2; + }); + }); + await Promise.all(promises); + return singleAsset ? out[bundleIds[0]] : out; + } + async backgroundLoad(urls) { + if (!this._initialized) { + await this.init(); + } + if (typeof urls === "string") { + urls = [urls]; + } + const resolveResults = this.resolver.resolve(urls); + this._backgroundLoader.add(Object.values(resolveResults)); + } + async backgroundLoadBundle(bundleIds) { + if (!this._initialized) { + await this.init(); + } + if (typeof bundleIds === "string") { + bundleIds = [bundleIds]; + } + const resolveResults = this.resolver.resolveBundle(bundleIds); + Object.values(resolveResults).forEach((resolveResult) => { + this._backgroundLoader.add(Object.values(resolveResult)); + }); + } + reset() { + this.resolver.reset(); + this.loader.reset(); + this.cache.reset(); + this._initialized = false; + } + get(keys) { + if (typeof keys === "string") { + return Cache.get(keys); + } + const assets = {}; + for (let i = 0; i < keys.length; i++) { + assets[i] = Cache.get(keys[i]); + } + return assets; + } + async _mapLoadToResolve(resolveResults, onProgress) { + const resolveArray = Object.values(resolveResults); + const resolveKeys = Object.keys(resolveResults); + this._backgroundLoader.active = false; + const loadedAssets = await this.loader.load(resolveArray, onProgress); + this._backgroundLoader.active = true; + const out = {}; + resolveArray.forEach((resolveResult, i) => { + const asset = loadedAssets[resolveResult.src]; + const keys = [resolveResult.src]; + if (resolveResult.alias) { + keys.push(...resolveResult.alias); + } + out[resolveKeys[i]] = asset; + Cache.set(keys, asset); + }); + return out; + } + async unload(urls) { + if (!this._initialized) { + await this.init(); + } + const urlArray = convertToList(urls).map((url) => typeof url !== "string" ? url.src : url); + const resolveResults = this.resolver.resolve(urlArray); + await this._unloadFromResolved(resolveResults); + } + async unloadBundle(bundleIds) { + if (!this._initialized) { + await this.init(); + } + bundleIds = convertToList(bundleIds); + const resolveResults = this.resolver.resolveBundle(bundleIds); + const promises = Object.keys(resolveResults).map((bundleId) => this._unloadFromResolved(resolveResults[bundleId])); + await Promise.all(promises); + } + async _unloadFromResolved(resolveResult) { + const resolveArray = Object.values(resolveResult); + resolveArray.forEach((resolveResult2) => { + Cache.remove(resolveResult2.src); + }); + await this.loader.unload(resolveArray); + } + get detections() { + return this._detections; + } + } + const Assets = new AssetsClass(); + extensions$1.handleByList(ExtensionType.LoadParser, Assets.loader.parsers).handleByList(ExtensionType.ResolveParser, Assets.resolver.parsers).handleByList(ExtensionType.CacheParser, Assets.cache.parsers).handleByList(ExtensionType.DetectionParser, Assets.detections); + + const assetKeyMap = { + loader: ExtensionType.LoadParser, + resolver: ExtensionType.ResolveParser, + cache: ExtensionType.CacheParser, + detection: ExtensionType.DetectionParser + }; + extensions$1.handle(ExtensionType.Asset, (extension) => { + const ref = extension.ref; + Object.entries(assetKeyMap).filter(([key]) => !!ref[key]).forEach(([key, type]) => extensions$1.add(Object.assign(ref[key], { extension: ref[key].extension ?? type }))); + }, (extension) => { + const ref = extension.ref; + Object.keys(assetKeyMap).filter((key) => !!ref[key]).forEach((key) => extensions$1.remove(ref[key])); + }); + + const cacheTextureArray = { + extension: ExtensionType.CacheParser, + test: (asset) => Array.isArray(asset) && asset.every((t) => t instanceof Texture), + getCacheableAssets: (keys, asset) => { + const out = {}; + keys.forEach((key) => { + asset.forEach((item, i) => { + out[key + (i === 0 ? "" : i + 1)] = item; + }); + }); + return out; + } + }; + extensions$1.add(cacheTextureArray); + + var LoaderParserPriority = /* @__PURE__ */ ((LoaderParserPriority2) => { + LoaderParserPriority2[LoaderParserPriority2["Low"] = 0] = "Low"; + LoaderParserPriority2[LoaderParserPriority2["Normal"] = 1] = "Normal"; + LoaderParserPriority2[LoaderParserPriority2["High"] = 2] = "High"; + return LoaderParserPriority2; + })(LoaderParserPriority || {}); + + const loadJson = { + extension: { + type: ExtensionType.LoadParser, + priority: LoaderParserPriority.Low + }, + test(url) { + return path.extname(url).includes(".json"); + }, + async load(url) { + const response = await settings.ADAPTER.fetch(url); + const json = await response.json(); + return json; + } + }; + extensions$1.add(loadJson); + + const loadTxt = { + extension: { + type: ExtensionType.LoadParser, + priority: LoaderParserPriority.Low + }, + test(url) { + return path.extname(url).includes(".txt"); + }, + async load(url) { + const response = await settings.ADAPTER.fetch(url); + const txt = await response.text(); + return txt; + } + }; + extensions$1.add(loadTxt); + + const validWeights = [ + "normal", + "bold", + "100", + "200", + "300", + "400", + "500", + "600", + "700", + "800", + "900" + ]; + const validFonts = ["woff", "woff2", "ttf", "otf"]; + function getFontFamilyName(url) { + const ext = path.extname(url); + const name = path.basename(url, ext); + const nameWithSpaces = name.replace(/(-|_)/g, " "); + const nameTitleCase = nameWithSpaces.toLowerCase().split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" "); + return nameTitleCase; + } + const loadWebFont = { + extension: { + type: ExtensionType.LoadParser, + priority: LoaderParserPriority.Low + }, + test(url) { + const tempURL = url.split("?")[0]; + const extension = tempURL.split(".").pop(); + return validFonts.includes(extension); + }, + async load(url, options) { + if (!globalThis.navigator.onLine) { + throw new Error("[loadWebFont] Cannot load font - navigator is offline"); + } + const fonts = settings.ADAPTER.getFontFaceSet(); + if (fonts) { + const fontFaces = []; + const name = options.data?.family ?? getFontFamilyName(url); + const weights = options.data?.weights?.filter((weight) => validWeights.includes(weight)) ?? ["normal"]; + const data = options.data ?? {}; + for (let i = 0; i < weights.length; i++) { + const weight = weights[i]; + const font = new FontFace(name, `url(${url})`, { + ...data, + weight + }); + await font.load(); + fonts.add(font); + fontFaces.push(font); + } + return fontFaces.length === 1 ? fontFaces[0] : fontFaces; + } + return null; + }, + unload(font) { + (Array.isArray(font) ? font : [font]).forEach((t) => settings.ADAPTER.getFontFaceSet().delete(t)); + } + }; + extensions$1.add(loadWebFont); + + let UUID = 0; + let MAX_WORKERS; + const WHITE_PNG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII="; + const checkImageBitmapCode = { + id: "checkImageBitmap", + code: ` + async function checkImageBitmap() + { + try + { + if (typeof createImageBitmap !== 'function') return false; + + const response = await fetch('${WHITE_PNG}'); + const imageBlob = await response.blob(); + const imageBitmap = await createImageBitmap(imageBlob); + + return imageBitmap.width === 1 && imageBitmap.height === 1; + } + catch (e) + { + return false; + } + } + checkImageBitmap().then((result) => { self.postMessage(result); }); + ` + }; + const workerCode = { + id: "loadImageBitmap", + code: ` + async function loadImageBitmap(url) + { + const response = await fetch(url); + + if (!response.ok) + { + throw new Error(\`[WorkerManager.loadImageBitmap] Failed to fetch \${url}: \` + + \`\${response.status} \${response.statusText}\`); + } + + const imageBlob = await response.blob(); + const imageBitmap = await createImageBitmap(imageBlob); + + return imageBitmap; + } + self.onmessage = async (event) => + { + try + { + const imageBitmap = await loadImageBitmap(event.data.data[0]); + + self.postMessage({ + data: imageBitmap, + uuid: event.data.uuid, + id: event.data.id, + }, [imageBitmap]); + } + catch(e) + { + self.postMessage({ + error: e, + uuid: event.data.uuid, + id: event.data.id, + }); + } + };` + }; + let workerURL; + class WorkerManagerClass { + constructor() { + this._initialized = false; + this._createdWorkers = 0; + this.workerPool = []; + this.queue = []; + this.resolveHash = {}; + } + isImageBitmapSupported() { + if (this._isImageBitmapSupported !== void 0) + return this._isImageBitmapSupported; + this._isImageBitmapSupported = new Promise((resolve) => { + const workerURL2 = URL.createObjectURL(new Blob([checkImageBitmapCode.code], { type: "application/javascript" })); + const worker = new Worker(workerURL2); + worker.addEventListener("message", (event) => { + worker.terminate(); + URL.revokeObjectURL(workerURL2); + resolve(event.data); + }); + }); + return this._isImageBitmapSupported; + } + loadImageBitmap(src) { + return this._run("loadImageBitmap", [src]); + } + async _initWorkers() { + if (this._initialized) + return; + this._initialized = true; + } + getWorker() { + if (MAX_WORKERS === void 0) { + MAX_WORKERS = navigator.hardwareConcurrency || 4; + } + let worker = this.workerPool.pop(); + if (!worker && this._createdWorkers < MAX_WORKERS) { + if (!workerURL) { + workerURL = URL.createObjectURL(new Blob([workerCode.code], { type: "application/javascript" })); + } + this._createdWorkers++; + worker = new Worker(workerURL); + worker.addEventListener("message", (event) => { + this.complete(event.data); + this.returnWorker(event.target); + this.next(); + }); + } + return worker; + } + returnWorker(worker) { + this.workerPool.push(worker); + } + complete(data) { + if (data.error !== void 0) { + this.resolveHash[data.uuid].reject(data.error); + } else { + this.resolveHash[data.uuid].resolve(data.data); + } + this.resolveHash[data.uuid] = null; + } + async _run(id, args) { + await this._initWorkers(); + const promise = new Promise((resolve, reject) => { + this.queue.push({ id, arguments: args, resolve, reject }); + }); + this.next(); + return promise; + } + next() { + if (!this.queue.length) + return; + const worker = this.getWorker(); + if (!worker) { + return; + } + const toDo = this.queue.pop(); + const id = toDo.id; + this.resolveHash[UUID] = { resolve: toDo.resolve, reject: toDo.reject }; + worker.postMessage({ + data: toDo.arguments, + uuid: UUID++, + id + }); + } + } + const WorkerManager = new WorkerManagerClass(); + + function checkExtension(url, extension) { + const tempURL = url.split("?")[0]; + const ext = path.extname(tempURL).toLowerCase(); + if (Array.isArray(extension)) { + return extension.includes(ext.toLowerCase()); + } + return ext.toLowerCase() === extension; + } + + function createTexture(base, loader, url) { + const texture = new Texture(base); + texture.baseTexture.on("dispose", () => { + delete loader.promiseCache[url]; + }); + return texture; + } + + const validImages$1 = [".jpg", ".png", ".jpeg", ".avif", ".webp"]; + async function loadImageBitmap(url) { + const response = await settings.ADAPTER.fetch(url); + if (!response.ok) { + throw new Error(`[loadImageBitmap] Failed to fetch ${url}: ${response.status} ${response.statusText}`); + } + const imageBlob = await response.blob(); + const imageBitmap = await createImageBitmap(imageBlob); + return imageBitmap; + } + const loadTextures = { + extension: { + type: ExtensionType.LoadParser, + priority: LoaderParserPriority.High + }, + config: { + preferWorkers: true + }, + test(url) { + let isValidBase64Suffix = false; + for (let i = 0; i < validImages$1.length; i++) { + if (url.startsWith(`data:image/${validImages$1[i].slice(1)}`)) { + isValidBase64Suffix = true; + break; + } + } + return isValidBase64Suffix || checkExtension(url, validImages$1); + }, + async load(url, asset, loader) { + let src = null; + if (globalThis.createImageBitmap) { + if (this.config.preferWorkers && await WorkerManager.isImageBitmapSupported()) { + src = await WorkerManager.loadImageBitmap(url); + } else { + src = await loadImageBitmap(url); + } + } else { + src = await new Promise((resolve) => { + src = new Image(); + src.crossOrigin = "anonymous"; + src.src = url; + if (src.complete) { + resolve(src); + } else { + src.onload = () => { + resolve(src); + }; + } + }); + } + const base = new BaseTexture(src, { + resolution: getResolutionOfUrl(url), + ...asset.data + }); + base.resource.src = url; + return createTexture(base, loader, url); + }, + unload(texture) { + texture.destroy(true); + } + }; + extensions$1.add(loadTextures); + + const loadSVG = { + extension: { + type: ExtensionType.LoadParser, + priority: LoaderParserPriority.High + }, + test(url) { + return path.extname(url).includes(".svg"); + }, + async testParse(data) { + return SVGResource.test(data); + }, + async parse(asset, data, loader) { + const src = new SVGResource(asset, data?.data?.resourceOptions); + const base = new BaseTexture(src, { + resolution: getResolutionOfUrl(asset), + ...data?.data + }); + base.resource.src = asset; + const texture = createTexture(base, loader, asset); + if (!data?.data?.resourceOptions?.autoLoad) { + await src.load(); + } + return texture; + }, + async load(url, _options) { + const response = await settings.ADAPTER.fetch(url); + return response.text(); + }, + unload: loadTextures.unload + }; + + const resolveTextureUrl = { + extension: ExtensionType.ResolveParser, + test: loadTextures.test, + parse: (value) => ({ + resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? "1"), + format: value.split(".").pop(), + src: value + }) + }; + extensions$1.add(resolveTextureUrl); + + const detectAvif = { + extension: { + type: ExtensionType.DetectionParser, + priority: 1 + }, + test: async () => { + if (!globalThis.createImageBitmap) + return false; + const avifData = "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="; + const blob = await settings.ADAPTER.fetch(avifData).then((r) => r.blob()); + return createImageBitmap(blob).then(() => true, () => false); + }, + add: async (formats) => [...formats, "avif"], + remove: async (formats) => formats.filter((f) => f !== "avif") + }; + extensions$1.add(detectAvif); + + const detectWebp = { + extension: { + type: ExtensionType.DetectionParser, + priority: 0 + }, + test: async () => { + if (!globalThis.createImageBitmap) + return false; + const webpData = "data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="; + const blob = await settings.ADAPTER.fetch(webpData).then((r) => r.blob()); + return createImageBitmap(blob).then(() => true, () => false); + }, + add: async (formats) => [...formats, "webp"], + remove: async (formats) => formats.filter((f) => f !== "webp") + }; + extensions$1.add(detectWebp); + + const imageFormats = ["png", "jpg", "jpeg"]; + const detectDefaults = { + extension: { + type: ExtensionType.DetectionParser, + priority: -1 + }, + test: () => Promise.resolve(true), + add: async (formats) => [...formats, ...imageFormats], + remove: async (formats) => formats.filter((f) => !imageFormats.includes(f)) + }; + extensions$1.add(detectDefaults); + + var INTERNAL_FORMATS = /* @__PURE__ */ ((INTERNAL_FORMATS2) => { + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGB_S3TC_DXT1_EXT"] = 33776] = "COMPRESSED_RGB_S3TC_DXT1_EXT"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGBA_S3TC_DXT1_EXT"] = 33777] = "COMPRESSED_RGBA_S3TC_DXT1_EXT"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGBA_S3TC_DXT3_EXT"] = 33778] = "COMPRESSED_RGBA_S3TC_DXT3_EXT"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGBA_S3TC_DXT5_EXT"] = 33779] = "COMPRESSED_RGBA_S3TC_DXT5_EXT"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"] = 35917] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"] = 35918] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"] = 35919] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_SRGB_S3TC_DXT1_EXT"] = 35916] = "COMPRESSED_SRGB_S3TC_DXT1_EXT"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_R11_EAC"] = 37488] = "COMPRESSED_R11_EAC"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_SIGNED_R11_EAC"] = 37489] = "COMPRESSED_SIGNED_R11_EAC"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RG11_EAC"] = 37490] = "COMPRESSED_RG11_EAC"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_SIGNED_RG11_EAC"] = 37491] = "COMPRESSED_SIGNED_RG11_EAC"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGB8_ETC2"] = 37492] = "COMPRESSED_RGB8_ETC2"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGBA8_ETC2_EAC"] = 37496] = "COMPRESSED_RGBA8_ETC2_EAC"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_SRGB8_ETC2"] = 37493] = "COMPRESSED_SRGB8_ETC2"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_SRGB8_ALPHA8_ETC2_EAC"] = 37497] = "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2"] = 37494] = "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2"] = 37495] = "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGB_PVRTC_4BPPV1_IMG"] = 35840] = "COMPRESSED_RGB_PVRTC_4BPPV1_IMG"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGBA_PVRTC_4BPPV1_IMG"] = 35842] = "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGB_PVRTC_2BPPV1_IMG"] = 35841] = "COMPRESSED_RGB_PVRTC_2BPPV1_IMG"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGBA_PVRTC_2BPPV1_IMG"] = 35843] = "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGB_ETC1_WEBGL"] = 36196] = "COMPRESSED_RGB_ETC1_WEBGL"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGB_ATC_WEBGL"] = 35986] = "COMPRESSED_RGB_ATC_WEBGL"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL"] = 35986] = "COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL"] = 34798] = "COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL"; + INTERNAL_FORMATS2[INTERNAL_FORMATS2["COMPRESSED_RGBA_ASTC_4x4_KHR"] = 37808] = "COMPRESSED_RGBA_ASTC_4x4_KHR"; + return INTERNAL_FORMATS2; + })(INTERNAL_FORMATS || {}); + const INTERNAL_FORMAT_TO_BYTES_PER_PIXEL = { + [33776 /* COMPRESSED_RGB_S3TC_DXT1_EXT */]: 0.5, + [33777 /* COMPRESSED_RGBA_S3TC_DXT1_EXT */]: 0.5, + [33778 /* COMPRESSED_RGBA_S3TC_DXT3_EXT */]: 1, + [33779 /* COMPRESSED_RGBA_S3TC_DXT5_EXT */]: 1, + [35916 /* COMPRESSED_SRGB_S3TC_DXT1_EXT */]: 0.5, + [35917 /* COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT */]: 0.5, + [35918 /* COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT */]: 1, + [35919 /* COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT */]: 1, + [37488 /* COMPRESSED_R11_EAC */]: 0.5, + [37489 /* COMPRESSED_SIGNED_R11_EAC */]: 0.5, + [37490 /* COMPRESSED_RG11_EAC */]: 1, + [37491 /* COMPRESSED_SIGNED_RG11_EAC */]: 1, + [37492 /* COMPRESSED_RGB8_ETC2 */]: 0.5, + [37496 /* COMPRESSED_RGBA8_ETC2_EAC */]: 1, + [37493 /* COMPRESSED_SRGB8_ETC2 */]: 0.5, + [37497 /* COMPRESSED_SRGB8_ALPHA8_ETC2_EAC */]: 1, + [37494 /* COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 */]: 0.5, + [37495 /* COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 */]: 0.5, + [35840 /* COMPRESSED_RGB_PVRTC_4BPPV1_IMG */]: 0.5, + [35842 /* COMPRESSED_RGBA_PVRTC_4BPPV1_IMG */]: 0.5, + [35841 /* COMPRESSED_RGB_PVRTC_2BPPV1_IMG */]: 0.25, + [35843 /* COMPRESSED_RGBA_PVRTC_2BPPV1_IMG */]: 0.25, + [36196 /* COMPRESSED_RGB_ETC1_WEBGL */]: 0.5, + [35986 /* COMPRESSED_RGB_ATC_WEBGL */]: 0.5, + [35986 /* COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL */]: 1, + [34798 /* COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL */]: 1, + [37808 /* COMPRESSED_RGBA_ASTC_4x4_KHR */]: 1 + }; + + class BlobResource extends BufferResource { + constructor(source, options = { width: 1, height: 1, autoLoad: true }) { + let origin; + let data; + if (typeof source === "string") { + origin = source; + data = new Uint8Array(); + } else { + origin = null; + data = source; + } + super(data, options); + this.origin = origin; + this.buffer = data ? new ViewableBuffer(data) : null; + if (this.origin && options.autoLoad !== false) { + this.load(); + } + if (data?.length) { + this.loaded = true; + this.onBlobLoaded(this.buffer.rawBinaryData); + } + } + onBlobLoaded(_data) { + } + async load() { + const response = await fetch(this.origin); + const blob = await response.blob(); + const arrayBuffer = await blob.arrayBuffer(); + this.data = new Uint32Array(arrayBuffer); + this.buffer = new ViewableBuffer(arrayBuffer); + this.loaded = true; + this.onBlobLoaded(arrayBuffer); + this.update(); + return this; + } + } + + class CompressedTextureResource extends BlobResource { + constructor(source, options) { + super(source, options); + this.format = options.format; + this.levels = options.levels || 1; + this._width = options.width; + this._height = options.height; + this._extension = CompressedTextureResource._formatToExtension(this.format); + if (options.levelBuffers || this.buffer) { + this._levelBuffers = options.levelBuffers || CompressedTextureResource._createLevelBuffers(source instanceof Uint8Array ? source : this.buffer.uint8View, this.format, this.levels, 4, 4, this.width, this.height); + } + } + upload(renderer, _texture, _glTexture) { + const gl = renderer.gl; + const extension = renderer.context.extensions[this._extension]; + if (!extension) { + throw new Error(`${this._extension} textures are not supported on the current machine`); + } + if (!this._levelBuffers) { + return false; + } + for (let i = 0, j = this.levels; i < j; i++) { + const { levelID, levelWidth, levelHeight, levelBuffer } = this._levelBuffers[i]; + gl.compressedTexImage2D(gl.TEXTURE_2D, levelID, this.format, levelWidth, levelHeight, 0, levelBuffer); + } + return true; + } + onBlobLoaded() { + this._levelBuffers = CompressedTextureResource._createLevelBuffers(this.buffer.uint8View, this.format, this.levels, 4, 4, this.width, this.height); + } + static _formatToExtension(format) { + if (format >= 33776 && format <= 33779) { + return "s3tc"; + } else if (format >= 37488 && format <= 37497) { + return "etc"; + } else if (format >= 35840 && format <= 35843) { + return "pvrtc"; + } else if (format >= 36196) { + return "etc1"; + } else if (format >= 35986 && format <= 34798) { + return "atc"; + } + throw new Error("Invalid (compressed) texture format given!"); + } + static _createLevelBuffers(buffer, format, levels, blockWidth, blockHeight, imageWidth, imageHeight) { + const buffers = new Array(levels); + let offset = buffer.byteOffset; + let levelWidth = imageWidth; + let levelHeight = imageHeight; + let alignedLevelWidth = levelWidth + blockWidth - 1 & ~(blockWidth - 1); + let alignedLevelHeight = levelHeight + blockHeight - 1 & ~(blockHeight - 1); + let levelSize = alignedLevelWidth * alignedLevelHeight * INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[format]; + for (let i = 0; i < levels; i++) { + buffers[i] = { + levelID: i, + levelWidth: levels > 1 ? levelWidth : alignedLevelWidth, + levelHeight: levels > 1 ? levelHeight : alignedLevelHeight, + levelBuffer: new Uint8Array(buffer.buffer, offset, levelSize) + }; + offset += levelSize; + levelWidth = levelWidth >> 1 || 1; + levelHeight = levelHeight >> 1 || 1; + alignedLevelWidth = levelWidth + blockWidth - 1 & ~(blockWidth - 1); + alignedLevelHeight = levelHeight + blockHeight - 1 & ~(blockHeight - 1); + levelSize = alignedLevelWidth * alignedLevelHeight * INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[format]; + } + return buffers; + } + } + + let storedGl; + let extensions; + function getCompressedTextureExtensions() { + extensions = { + s3tc: storedGl.getExtension("WEBGL_compressed_texture_s3tc"), + s3tc_sRGB: storedGl.getExtension("WEBGL_compressed_texture_s3tc_srgb"), + etc: storedGl.getExtension("WEBGL_compressed_texture_etc"), + etc1: storedGl.getExtension("WEBGL_compressed_texture_etc1"), + pvrtc: storedGl.getExtension("WEBGL_compressed_texture_pvrtc") || storedGl.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"), + atc: storedGl.getExtension("WEBGL_compressed_texture_atc"), + astc: storedGl.getExtension("WEBGL_compressed_texture_astc") + }; + } + const detectCompressedTextures = { + extension: { + type: ExtensionType.DetectionParser, + priority: 2 + }, + test: async () => { + const canvas = settings.ADAPTER.createCanvas(); + const gl = canvas.getContext("webgl"); + if (!gl) { + return false; + } + storedGl = gl; + return true; + }, + add: async (formats) => { + if (!extensions) + getCompressedTextureExtensions(); + const textureFormats = []; + for (const extensionName in extensions) { + const extension = extensions[extensionName]; + if (!extension) { + continue; + } + textureFormats.push(extensionName); + } + return [...textureFormats, ...formats]; + }, + remove: async (formats) => { + if (!extensions) + getCompressedTextureExtensions(); + return formats.filter((f) => !(f in extensions)); + } + }; + extensions$1.add(detectCompressedTextures); + + const DDS_MAGIC_SIZE = 4; + const DDS_HEADER_SIZE = 124; + const DDS_HEADER_PF_SIZE = 32; + const DDS_HEADER_DX10_SIZE = 20; + const DDS_MAGIC = 542327876; + const DDS_FIELDS = { + SIZE: 1, + FLAGS: 2, + HEIGHT: 3, + WIDTH: 4, + MIPMAP_COUNT: 7, + PIXEL_FORMAT: 19 + }; + const DDS_PF_FIELDS = { + SIZE: 0, + FLAGS: 1, + FOURCC: 2, + RGB_BITCOUNT: 3, + R_BIT_MASK: 4, + G_BIT_MASK: 5, + B_BIT_MASK: 6, + A_BIT_MASK: 7 + }; + const DDS_DX10_FIELDS = { + DXGI_FORMAT: 0, + RESOURCE_DIMENSION: 1, + MISC_FLAG: 2, + ARRAY_SIZE: 3, + MISC_FLAGS2: 4 + }; + var DXGI_FORMAT = /* @__PURE__ */ ((DXGI_FORMAT2) => { + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_UNKNOWN"] = 0] = "DXGI_FORMAT_UNKNOWN"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32G32B32A32_TYPELESS"] = 1] = "DXGI_FORMAT_R32G32B32A32_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32G32B32A32_FLOAT"] = 2] = "DXGI_FORMAT_R32G32B32A32_FLOAT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32G32B32A32_UINT"] = 3] = "DXGI_FORMAT_R32G32B32A32_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32G32B32A32_SINT"] = 4] = "DXGI_FORMAT_R32G32B32A32_SINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32G32B32_TYPELESS"] = 5] = "DXGI_FORMAT_R32G32B32_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32G32B32_FLOAT"] = 6] = "DXGI_FORMAT_R32G32B32_FLOAT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32G32B32_UINT"] = 7] = "DXGI_FORMAT_R32G32B32_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32G32B32_SINT"] = 8] = "DXGI_FORMAT_R32G32B32_SINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16G16B16A16_TYPELESS"] = 9] = "DXGI_FORMAT_R16G16B16A16_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16G16B16A16_FLOAT"] = 10] = "DXGI_FORMAT_R16G16B16A16_FLOAT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16G16B16A16_UNORM"] = 11] = "DXGI_FORMAT_R16G16B16A16_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16G16B16A16_UINT"] = 12] = "DXGI_FORMAT_R16G16B16A16_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16G16B16A16_SNORM"] = 13] = "DXGI_FORMAT_R16G16B16A16_SNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16G16B16A16_SINT"] = 14] = "DXGI_FORMAT_R16G16B16A16_SINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32G32_TYPELESS"] = 15] = "DXGI_FORMAT_R32G32_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32G32_FLOAT"] = 16] = "DXGI_FORMAT_R32G32_FLOAT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32G32_UINT"] = 17] = "DXGI_FORMAT_R32G32_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32G32_SINT"] = 18] = "DXGI_FORMAT_R32G32_SINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32G8X24_TYPELESS"] = 19] = "DXGI_FORMAT_R32G8X24_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_D32_FLOAT_S8X24_UINT"] = 20] = "DXGI_FORMAT_D32_FLOAT_S8X24_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS"] = 21] = "DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_X32_TYPELESS_G8X24_UINT"] = 22] = "DXGI_FORMAT_X32_TYPELESS_G8X24_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R10G10B10A2_TYPELESS"] = 23] = "DXGI_FORMAT_R10G10B10A2_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R10G10B10A2_UNORM"] = 24] = "DXGI_FORMAT_R10G10B10A2_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R10G10B10A2_UINT"] = 25] = "DXGI_FORMAT_R10G10B10A2_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R11G11B10_FLOAT"] = 26] = "DXGI_FORMAT_R11G11B10_FLOAT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8G8B8A8_TYPELESS"] = 27] = "DXGI_FORMAT_R8G8B8A8_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8G8B8A8_UNORM"] = 28] = "DXGI_FORMAT_R8G8B8A8_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8G8B8A8_UNORM_SRGB"] = 29] = "DXGI_FORMAT_R8G8B8A8_UNORM_SRGB"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8G8B8A8_UINT"] = 30] = "DXGI_FORMAT_R8G8B8A8_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8G8B8A8_SNORM"] = 31] = "DXGI_FORMAT_R8G8B8A8_SNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8G8B8A8_SINT"] = 32] = "DXGI_FORMAT_R8G8B8A8_SINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16G16_TYPELESS"] = 33] = "DXGI_FORMAT_R16G16_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16G16_FLOAT"] = 34] = "DXGI_FORMAT_R16G16_FLOAT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16G16_UNORM"] = 35] = "DXGI_FORMAT_R16G16_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16G16_UINT"] = 36] = "DXGI_FORMAT_R16G16_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16G16_SNORM"] = 37] = "DXGI_FORMAT_R16G16_SNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16G16_SINT"] = 38] = "DXGI_FORMAT_R16G16_SINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32_TYPELESS"] = 39] = "DXGI_FORMAT_R32_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_D32_FLOAT"] = 40] = "DXGI_FORMAT_D32_FLOAT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32_FLOAT"] = 41] = "DXGI_FORMAT_R32_FLOAT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32_UINT"] = 42] = "DXGI_FORMAT_R32_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R32_SINT"] = 43] = "DXGI_FORMAT_R32_SINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R24G8_TYPELESS"] = 44] = "DXGI_FORMAT_R24G8_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_D24_UNORM_S8_UINT"] = 45] = "DXGI_FORMAT_D24_UNORM_S8_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R24_UNORM_X8_TYPELESS"] = 46] = "DXGI_FORMAT_R24_UNORM_X8_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_X24_TYPELESS_G8_UINT"] = 47] = "DXGI_FORMAT_X24_TYPELESS_G8_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8G8_TYPELESS"] = 48] = "DXGI_FORMAT_R8G8_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8G8_UNORM"] = 49] = "DXGI_FORMAT_R8G8_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8G8_UINT"] = 50] = "DXGI_FORMAT_R8G8_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8G8_SNORM"] = 51] = "DXGI_FORMAT_R8G8_SNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8G8_SINT"] = 52] = "DXGI_FORMAT_R8G8_SINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16_TYPELESS"] = 53] = "DXGI_FORMAT_R16_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16_FLOAT"] = 54] = "DXGI_FORMAT_R16_FLOAT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_D16_UNORM"] = 55] = "DXGI_FORMAT_D16_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16_UNORM"] = 56] = "DXGI_FORMAT_R16_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16_UINT"] = 57] = "DXGI_FORMAT_R16_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16_SNORM"] = 58] = "DXGI_FORMAT_R16_SNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R16_SINT"] = 59] = "DXGI_FORMAT_R16_SINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8_TYPELESS"] = 60] = "DXGI_FORMAT_R8_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8_UNORM"] = 61] = "DXGI_FORMAT_R8_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8_UINT"] = 62] = "DXGI_FORMAT_R8_UINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8_SNORM"] = 63] = "DXGI_FORMAT_R8_SNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8_SINT"] = 64] = "DXGI_FORMAT_R8_SINT"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_A8_UNORM"] = 65] = "DXGI_FORMAT_A8_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R1_UNORM"] = 66] = "DXGI_FORMAT_R1_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R9G9B9E5_SHAREDEXP"] = 67] = "DXGI_FORMAT_R9G9B9E5_SHAREDEXP"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R8G8_B8G8_UNORM"] = 68] = "DXGI_FORMAT_R8G8_B8G8_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_G8R8_G8B8_UNORM"] = 69] = "DXGI_FORMAT_G8R8_G8B8_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC1_TYPELESS"] = 70] = "DXGI_FORMAT_BC1_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC1_UNORM"] = 71] = "DXGI_FORMAT_BC1_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC1_UNORM_SRGB"] = 72] = "DXGI_FORMAT_BC1_UNORM_SRGB"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC2_TYPELESS"] = 73] = "DXGI_FORMAT_BC2_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC2_UNORM"] = 74] = "DXGI_FORMAT_BC2_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC2_UNORM_SRGB"] = 75] = "DXGI_FORMAT_BC2_UNORM_SRGB"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC3_TYPELESS"] = 76] = "DXGI_FORMAT_BC3_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC3_UNORM"] = 77] = "DXGI_FORMAT_BC3_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC3_UNORM_SRGB"] = 78] = "DXGI_FORMAT_BC3_UNORM_SRGB"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC4_TYPELESS"] = 79] = "DXGI_FORMAT_BC4_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC4_UNORM"] = 80] = "DXGI_FORMAT_BC4_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC4_SNORM"] = 81] = "DXGI_FORMAT_BC4_SNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC5_TYPELESS"] = 82] = "DXGI_FORMAT_BC5_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC5_UNORM"] = 83] = "DXGI_FORMAT_BC5_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC5_SNORM"] = 84] = "DXGI_FORMAT_BC5_SNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_B5G6R5_UNORM"] = 85] = "DXGI_FORMAT_B5G6R5_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_B5G5R5A1_UNORM"] = 86] = "DXGI_FORMAT_B5G5R5A1_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_B8G8R8A8_UNORM"] = 87] = "DXGI_FORMAT_B8G8R8A8_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_B8G8R8X8_UNORM"] = 88] = "DXGI_FORMAT_B8G8R8X8_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM"] = 89] = "DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_B8G8R8A8_TYPELESS"] = 90] = "DXGI_FORMAT_B8G8R8A8_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_B8G8R8A8_UNORM_SRGB"] = 91] = "DXGI_FORMAT_B8G8R8A8_UNORM_SRGB"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_B8G8R8X8_TYPELESS"] = 92] = "DXGI_FORMAT_B8G8R8X8_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_B8G8R8X8_UNORM_SRGB"] = 93] = "DXGI_FORMAT_B8G8R8X8_UNORM_SRGB"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC6H_TYPELESS"] = 94] = "DXGI_FORMAT_BC6H_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC6H_UF16"] = 95] = "DXGI_FORMAT_BC6H_UF16"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC6H_SF16"] = 96] = "DXGI_FORMAT_BC6H_SF16"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC7_TYPELESS"] = 97] = "DXGI_FORMAT_BC7_TYPELESS"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC7_UNORM"] = 98] = "DXGI_FORMAT_BC7_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_BC7_UNORM_SRGB"] = 99] = "DXGI_FORMAT_BC7_UNORM_SRGB"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_AYUV"] = 100] = "DXGI_FORMAT_AYUV"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_Y410"] = 101] = "DXGI_FORMAT_Y410"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_Y416"] = 102] = "DXGI_FORMAT_Y416"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_NV12"] = 103] = "DXGI_FORMAT_NV12"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_P010"] = 104] = "DXGI_FORMAT_P010"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_P016"] = 105] = "DXGI_FORMAT_P016"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_420_OPAQUE"] = 106] = "DXGI_FORMAT_420_OPAQUE"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_YUY2"] = 107] = "DXGI_FORMAT_YUY2"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_Y210"] = 108] = "DXGI_FORMAT_Y210"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_Y216"] = 109] = "DXGI_FORMAT_Y216"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_NV11"] = 110] = "DXGI_FORMAT_NV11"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_AI44"] = 111] = "DXGI_FORMAT_AI44"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_IA44"] = 112] = "DXGI_FORMAT_IA44"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_P8"] = 113] = "DXGI_FORMAT_P8"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_A8P8"] = 114] = "DXGI_FORMAT_A8P8"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_B4G4R4A4_UNORM"] = 115] = "DXGI_FORMAT_B4G4R4A4_UNORM"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_P208"] = 116] = "DXGI_FORMAT_P208"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_V208"] = 117] = "DXGI_FORMAT_V208"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_V408"] = 118] = "DXGI_FORMAT_V408"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE"] = 119] = "DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE"] = 120] = "DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE"; + DXGI_FORMAT2[DXGI_FORMAT2["DXGI_FORMAT_FORCE_UINT"] = 121] = "DXGI_FORMAT_FORCE_UINT"; + return DXGI_FORMAT2; + })(DXGI_FORMAT || {}); + var D3D10_RESOURCE_DIMENSION = /* @__PURE__ */ ((D3D10_RESOURCE_DIMENSION2) => { + D3D10_RESOURCE_DIMENSION2[D3D10_RESOURCE_DIMENSION2["DDS_DIMENSION_TEXTURE1D"] = 2] = "DDS_DIMENSION_TEXTURE1D"; + D3D10_RESOURCE_DIMENSION2[D3D10_RESOURCE_DIMENSION2["DDS_DIMENSION_TEXTURE2D"] = 3] = "DDS_DIMENSION_TEXTURE2D"; + D3D10_RESOURCE_DIMENSION2[D3D10_RESOURCE_DIMENSION2["DDS_DIMENSION_TEXTURE3D"] = 6] = "DDS_DIMENSION_TEXTURE3D"; + return D3D10_RESOURCE_DIMENSION2; + })(D3D10_RESOURCE_DIMENSION || {}); + const PF_FLAGS = 1; + const DDPF_ALPHA = 2; + const DDPF_FOURCC = 4; + const DDPF_RGB = 64; + const DDPF_YUV = 512; + const DDPF_LUMINANCE = 131072; + const FOURCC_DXT1 = 827611204; + const FOURCC_DXT3 = 861165636; + const FOURCC_DXT5 = 894720068; + const FOURCC_DX10 = 808540228; + const DDS_RESOURCE_MISC_TEXTURECUBE = 4; + const FOURCC_TO_FORMAT = { + [FOURCC_DXT1]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT, + [FOURCC_DXT3]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT, + [FOURCC_DXT5]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT + }; + const DXGI_TO_FORMAT = { + [70 /* DXGI_FORMAT_BC1_TYPELESS */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT, + [71 /* DXGI_FORMAT_BC1_UNORM */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT, + [73 /* DXGI_FORMAT_BC2_TYPELESS */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT, + [74 /* DXGI_FORMAT_BC2_UNORM */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT, + [76 /* DXGI_FORMAT_BC3_TYPELESS */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT, + [77 /* DXGI_FORMAT_BC3_UNORM */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT, + [72 /* DXGI_FORMAT_BC1_UNORM_SRGB */]: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT, + [75 /* DXGI_FORMAT_BC2_UNORM_SRGB */]: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, + [78 /* DXGI_FORMAT_BC3_UNORM_SRGB */]: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT + }; + function parseDDS(arrayBuffer) { + const data = new Uint32Array(arrayBuffer); + const magicWord = data[0]; + if (magicWord !== DDS_MAGIC) { + throw new Error("Invalid DDS file magic word"); + } + const header = new Uint32Array(arrayBuffer, 0, DDS_HEADER_SIZE / Uint32Array.BYTES_PER_ELEMENT); + const height = header[DDS_FIELDS.HEIGHT]; + const width = header[DDS_FIELDS.WIDTH]; + const mipmapCount = header[DDS_FIELDS.MIPMAP_COUNT]; + const pixelFormat = new Uint32Array(arrayBuffer, DDS_FIELDS.PIXEL_FORMAT * Uint32Array.BYTES_PER_ELEMENT, DDS_HEADER_PF_SIZE / Uint32Array.BYTES_PER_ELEMENT); + const formatFlags = pixelFormat[PF_FLAGS]; + if (formatFlags & DDPF_FOURCC) { + const fourCC = pixelFormat[DDS_PF_FIELDS.FOURCC]; + if (fourCC !== FOURCC_DX10) { + const internalFormat2 = FOURCC_TO_FORMAT[fourCC]; + const dataOffset2 = DDS_MAGIC_SIZE + DDS_HEADER_SIZE; + const texData = new Uint8Array(arrayBuffer, dataOffset2); + const resource = new CompressedTextureResource(texData, { + format: internalFormat2, + width, + height, + levels: mipmapCount + }); + return [resource]; + } + const dx10Offset = DDS_MAGIC_SIZE + DDS_HEADER_SIZE; + const dx10Header = new Uint32Array(data.buffer, dx10Offset, DDS_HEADER_DX10_SIZE / Uint32Array.BYTES_PER_ELEMENT); + const dxgiFormat = dx10Header[DDS_DX10_FIELDS.DXGI_FORMAT]; + const resourceDimension = dx10Header[DDS_DX10_FIELDS.RESOURCE_DIMENSION]; + const miscFlag = dx10Header[DDS_DX10_FIELDS.MISC_FLAG]; + const arraySize = dx10Header[DDS_DX10_FIELDS.ARRAY_SIZE]; + const internalFormat = DXGI_TO_FORMAT[dxgiFormat]; + if (internalFormat === void 0) { + throw new Error(`DDSParser cannot parse texture data with DXGI format ${dxgiFormat}`); + } + if (miscFlag === DDS_RESOURCE_MISC_TEXTURECUBE) { + throw new Error("DDSParser does not support cubemap textures"); + } + if (resourceDimension === 6 /* DDS_DIMENSION_TEXTURE3D */) { + throw new Error("DDSParser does not supported 3D texture data"); + } + const imageBuffers = new Array(); + const dataOffset = DDS_MAGIC_SIZE + DDS_HEADER_SIZE + DDS_HEADER_DX10_SIZE; + if (arraySize === 1) { + imageBuffers.push(new Uint8Array(arrayBuffer, dataOffset)); + } else { + const pixelSize = INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[internalFormat]; + let imageSize = 0; + let levelWidth = width; + let levelHeight = height; + for (let i = 0; i < mipmapCount; i++) { + const alignedLevelWidth = Math.max(1, levelWidth + 3 & ~3); + const alignedLevelHeight = Math.max(1, levelHeight + 3 & ~3); + const levelSize = alignedLevelWidth * alignedLevelHeight * pixelSize; + imageSize += levelSize; + levelWidth = levelWidth >>> 1; + levelHeight = levelHeight >>> 1; + } + let imageOffset = dataOffset; + for (let i = 0; i < arraySize; i++) { + imageBuffers.push(new Uint8Array(arrayBuffer, imageOffset, imageSize)); + imageOffset += imageSize; + } + } + return imageBuffers.map((buffer) => new CompressedTextureResource(buffer, { + format: internalFormat, + width, + height, + levels: mipmapCount + })); + } + if (formatFlags & DDPF_RGB) { + throw new Error("DDSParser does not support uncompressed texture data."); + } + if (formatFlags & DDPF_YUV) { + throw new Error("DDSParser does not supported YUV uncompressed texture data."); + } + if (formatFlags & DDPF_LUMINANCE) { + throw new Error("DDSParser does not support single-channel (lumninance) texture data!"); + } + if (formatFlags & DDPF_ALPHA) { + 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!"); + } + + const FILE_IDENTIFIER = [171, 75, 84, 88, 32, 49, 49, 187, 13, 10, 26, 10]; + const ENDIANNESS = 67305985; + const KTX_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 + }; + const FILE_HEADER_SIZE = 64; + const TYPES_TO_BYTES_PER_COMPONENT = { + [TYPES.UNSIGNED_BYTE]: 1, + [TYPES.UNSIGNED_SHORT]: 2, + [TYPES.INT]: 4, + [TYPES.UNSIGNED_INT]: 4, + [TYPES.FLOAT]: 4, + [TYPES.HALF_FLOAT]: 8 + }; + const FORMATS_TO_COMPONENTS = { + [FORMATS.RGBA]: 4, + [FORMATS.RGB]: 3, + [FORMATS.RG]: 2, + [FORMATS.RED]: 1, + [FORMATS.LUMINANCE]: 1, + [FORMATS.LUMINANCE_ALPHA]: 2, + [FORMATS.ALPHA]: 1 + }; + const TYPES_TO_BYTES_PER_PIXEL = { + [TYPES.UNSIGNED_SHORT_4_4_4_4]: 2, + [TYPES.UNSIGNED_SHORT_5_5_5_1]: 2, + [TYPES.UNSIGNED_SHORT_5_6_5]: 2 + }; + function parseKTX(url, arrayBuffer, loadKeyValueData = false) { + const dataView = new DataView(arrayBuffer); + if (!validate(url, dataView)) { + return null; + } + const littleEndian = dataView.getUint32(KTX_FIELDS.ENDIANNESS, true) === ENDIANNESS; + const glType = dataView.getUint32(KTX_FIELDS.GL_TYPE, littleEndian); + const glFormat = dataView.getUint32(KTX_FIELDS.GL_FORMAT, littleEndian); + const glInternalFormat = dataView.getUint32(KTX_FIELDS.GL_INTERNAL_FORMAT, littleEndian); + const pixelWidth = dataView.getUint32(KTX_FIELDS.PIXEL_WIDTH, littleEndian); + const pixelHeight = dataView.getUint32(KTX_FIELDS.PIXEL_HEIGHT, littleEndian) || 1; + const pixelDepth = dataView.getUint32(KTX_FIELDS.PIXEL_DEPTH, littleEndian) || 1; + const numberOfArrayElements = dataView.getUint32(KTX_FIELDS.NUMBER_OF_ARRAY_ELEMENTS, littleEndian) || 1; + const numberOfFaces = dataView.getUint32(KTX_FIELDS.NUMBER_OF_FACES, littleEndian); + const numberOfMipmapLevels = dataView.getUint32(KTX_FIELDS.NUMBER_OF_MIPMAP_LEVELS, littleEndian); + const bytesOfKeyValueData = dataView.getUint32(KTX_FIELDS.BYTES_OF_KEY_VALUE_DATA, littleEndian); + if (pixelHeight === 0 || pixelDepth !== 1) { + throw new Error("Only 2D textures are supported"); + } + if (numberOfFaces !== 1) { + throw new Error("CubeTextures are not supported by KTXLoader yet!"); + } + if (numberOfArrayElements !== 1) { + throw new Error("WebGL does not support array textures"); + } + const blockWidth = 4; + const blockHeight = 4; + const alignedWidth = pixelWidth + 3 & ~3; + const alignedHeight = pixelHeight + 3 & ~3; + const imageBuffers = new Array(numberOfArrayElements); + let imagePixels = pixelWidth * pixelHeight; + if (glType === 0) { + imagePixels = alignedWidth * alignedHeight; + } + let imagePixelByteSize; + if (glType !== 0) { + if (TYPES_TO_BYTES_PER_COMPONENT[glType]) { + imagePixelByteSize = TYPES_TO_BYTES_PER_COMPONENT[glType] * FORMATS_TO_COMPONENTS[glFormat]; + } else { + imagePixelByteSize = TYPES_TO_BYTES_PER_PIXEL[glType]; + } + } else { + imagePixelByteSize = INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[glInternalFormat]; + } + if (imagePixelByteSize === void 0) { + throw new Error("Unable to resolve the pixel format stored in the *.ktx file!"); + } + const kvData = loadKeyValueData ? parseKvData(dataView, bytesOfKeyValueData, littleEndian) : null; + const imageByteSize = imagePixels * imagePixelByteSize; + let mipByteSize = imageByteSize; + let mipWidth = pixelWidth; + let mipHeight = pixelHeight; + let alignedMipWidth = alignedWidth; + let alignedMipHeight = alignedHeight; + let imageOffset = FILE_HEADER_SIZE + bytesOfKeyValueData; + for (let mipmapLevel = 0; mipmapLevel < numberOfMipmapLevels; mipmapLevel++) { + const imageSize = dataView.getUint32(imageOffset, littleEndian); + let elementOffset = imageOffset + 4; + for (let arrayElement = 0; arrayElement < numberOfArrayElements; arrayElement++) { + let mips = imageBuffers[arrayElement]; + if (!mips) { + mips = imageBuffers[arrayElement] = new Array(numberOfMipmapLevels); + } + mips[mipmapLevel] = { + levelID: mipmapLevel, + levelWidth: numberOfMipmapLevels > 1 || glType !== 0 ? mipWidth : alignedMipWidth, + levelHeight: numberOfMipmapLevels > 1 || glType !== 0 ? mipHeight : alignedMipHeight, + levelBuffer: new Uint8Array(arrayBuffer, elementOffset, mipByteSize) + }; + elementOffset += mipByteSize; + } + imageOffset += imageSize + 4; + imageOffset = imageOffset % 4 !== 0 ? imageOffset + 4 - imageOffset % 4 : imageOffset; + mipWidth = mipWidth >> 1 || 1; + mipHeight = mipHeight >> 1 || 1; + alignedMipWidth = mipWidth + blockWidth - 1 & ~(blockWidth - 1); + alignedMipHeight = mipHeight + blockHeight - 1 & ~(blockHeight - 1); + mipByteSize = alignedMipWidth * alignedMipHeight * imagePixelByteSize; + } + if (glType !== 0) { + return { + uncompressed: imageBuffers.map((levelBuffers) => { + let buffer = levelBuffers[0].levelBuffer; + let convertToInt = false; + if (glType === TYPES.FLOAT) { + buffer = new Float32Array(levelBuffers[0].levelBuffer.buffer, levelBuffers[0].levelBuffer.byteOffset, levelBuffers[0].levelBuffer.byteLength / 4); + } else if (glType === TYPES.UNSIGNED_INT) { + convertToInt = true; + buffer = new Uint32Array(levelBuffers[0].levelBuffer.buffer, levelBuffers[0].levelBuffer.byteOffset, levelBuffers[0].levelBuffer.byteLength / 4); + } else if (glType === TYPES.INT) { + convertToInt = true; + buffer = new Int32Array(levelBuffers[0].levelBuffer.buffer, levelBuffers[0].levelBuffer.byteOffset, levelBuffers[0].levelBuffer.byteLength / 4); + } + return { + resource: new BufferResource(buffer, { + width: levelBuffers[0].levelWidth, + height: levelBuffers[0].levelHeight + }), + type: glType, + format: convertToInt ? convertFormatToInteger(glFormat) : glFormat + }; + }), + kvData + }; + } + return { + compressed: imageBuffers.map((levelBuffers) => new CompressedTextureResource(null, { + format: glInternalFormat, + width: pixelWidth, + height: pixelHeight, + levels: numberOfMipmapLevels, + levelBuffers + })), + kvData + }; + } + function validate(url, dataView) { + for (let i = 0; i < FILE_IDENTIFIER.length; i++) { + if (dataView.getUint8(i) !== FILE_IDENTIFIER[i]) { + return false; + } + } + return true; + } + function convertFormatToInteger(format) { + switch (format) { + case FORMATS.RGBA: + return FORMATS.RGBA_INTEGER; + case FORMATS.RGB: + return FORMATS.RGB_INTEGER; + case FORMATS.RG: + return FORMATS.RG_INTEGER; + case FORMATS.RED: + return FORMATS.RED_INTEGER; + default: + return format; + } + } + function parseKvData(dataView, bytesOfKeyValueData, littleEndian) { + const kvData = /* @__PURE__ */ new Map(); + let bytesIntoKeyValueData = 0; + while (bytesIntoKeyValueData < bytesOfKeyValueData) { + const keyAndValueByteSize = dataView.getUint32(FILE_HEADER_SIZE + bytesIntoKeyValueData, littleEndian); + const keyAndValueByteOffset = FILE_HEADER_SIZE + bytesIntoKeyValueData + 4; + const valuePadding = 3 - (keyAndValueByteSize + 3) % 4; + if (keyAndValueByteSize === 0 || keyAndValueByteSize > bytesOfKeyValueData - bytesIntoKeyValueData) { + console.error("KTXLoader: keyAndValueByteSize out of bounds"); + break; + } + let keyNulByte = 0; + for (; keyNulByte < keyAndValueByteSize; keyNulByte++) { + if (dataView.getUint8(keyAndValueByteOffset + keyNulByte) === 0) { + break; + } + } + if (keyNulByte === -1) { + console.error("KTXLoader: Failed to find null byte terminating kvData key"); + break; + } + const key = new TextDecoder().decode(new Uint8Array(dataView.buffer, keyAndValueByteOffset, keyNulByte)); + const value = new DataView(dataView.buffer, keyAndValueByteOffset + keyNulByte + 1, keyAndValueByteSize - keyNulByte - 1); + kvData.set(key, value); + bytesIntoKeyValueData += 4 + keyAndValueByteSize + valuePadding; + } + return kvData; + } + + const loadDDS = { + extension: { + type: ExtensionType.LoadParser, + priority: LoaderParserPriority.High + }, + test(url) { + return checkExtension(url, ".dds"); + }, + async load(url, asset, loader) { + const response = await settings.ADAPTER.fetch(url); + const arrayBuffer = await response.arrayBuffer(); + const resources = parseDDS(arrayBuffer); + const textures = resources.map((resource) => { + const base = new BaseTexture(resource, { + mipmap: MIPMAP_MODES.OFF, + alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA, + resolution: getResolutionOfUrl(url), + ...asset.data + }); + return createTexture(base, loader, url); + }); + return textures.length === 1 ? textures[0] : textures; + }, + unload(texture) { + if (Array.isArray(texture)) { + texture.forEach((t) => t.destroy(true)); + } else { + texture.destroy(true); + } + } + }; + extensions$1.add(loadDDS); + + const loadKTX = { + extension: { + type: ExtensionType.LoadParser, + priority: LoaderParserPriority.High + }, + test(url) { + return checkExtension(url, ".ktx"); + }, + async load(url, asset, loader) { + const response = await settings.ADAPTER.fetch(url); + const arrayBuffer = await response.arrayBuffer(); + const { compressed, uncompressed, kvData } = parseKTX(url, arrayBuffer); + const resources = compressed ?? uncompressed; + const options = { + mipmap: MIPMAP_MODES.OFF, + alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA, + resolution: getResolutionOfUrl(url), + ...asset.data + }; + const textures = resources.map((resource) => { + if (resources === uncompressed) { + Object.assign(options, { + type: resource.type, + format: resource.format + }); + } + const base = new BaseTexture(resource, options); + base.ktxKeyValueData = kvData; + return createTexture(base, loader, url); + }); + return textures.length === 1 ? textures[0] : textures; + }, + unload(texture) { + if (Array.isArray(texture)) { + texture.forEach((t) => t.destroy(true)); + } else { + texture.destroy(true); + } + } + }; + extensions$1.add(loadKTX); + + const resolveCompressedTextureUrl = { + extension: ExtensionType.ResolveParser, + test: (value) => { + const temp = value.split("?")[0]; + const extension = temp.split(".").pop(); + return ["basis", "ktx", "dds"].includes(extension); + }, + parse: (value) => { + const temp = value.split("?")[0]; + const extension = temp.split(".").pop(); + if (extension === "ktx") { + const extensions2 = [ + ".s3tc.ktx", + ".s3tc_sRGB.ktx", + ".etc.ktx", + ".etc1.ktx", + ".pvrt.ktx", + ".atc.ktx", + ".astc.ktx" + ]; + if (extensions2.some((ext) => value.endsWith(ext))) { + return { + resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? "1"), + format: extensions2.find((ext) => value.endsWith(ext)), + src: value + }; + } + } + return { + resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? "1"), + format: value.split(".").pop(), + src: value + }; + } + }; + extensions$1.add(resolveCompressedTextureUrl); + + const TEMP_RECT = new Rectangle(); + const BYTES_PER_PIXEL = 4; + const _Extract = class { + constructor(renderer) { + this.renderer = renderer; + } + async image(target, format, quality) { + const image = new Image(); + image.src = await this.base64(target, format, quality); + return image; + } + async base64(target, format, quality) { + const canvas = this.canvas(target); + if (canvas.toDataURL !== void 0) { + return canvas.toDataURL(format, quality); + } + if (canvas.convertToBlob !== void 0) { + const blob = await canvas.convertToBlob({ type: format, quality }); + return await new Promise((resolve) => { + const reader = new FileReader(); + reader.onload = () => resolve(reader.result); + reader.readAsDataURL(blob); + }); + } + throw new Error("Extract.base64() requires ICanvas.toDataURL or ICanvas.convertToBlob to be implemented"); + } + canvas(target, frame) { + const renderer = this.renderer; + let resolution; + let flipY = false; + let renderTexture; + let generated = false; + if (target) { + if (target instanceof RenderTexture) { + renderTexture = target; + } else { + renderTexture = this.renderer.generateTexture(target); + generated = true; + } + } + if (renderTexture) { + resolution = renderTexture.baseTexture.resolution; + frame = frame ?? renderTexture.frame; + flipY = false; + renderer.renderTexture.bind(renderTexture); + } else { + resolution = renderer.resolution; + if (!frame) { + frame = TEMP_RECT; + frame.width = renderer.width; + frame.height = renderer.height; + } + flipY = true; + renderer.renderTexture.bind(null); + } + const width = Math.round(frame.width * resolution); + const height = Math.round(frame.height * resolution); + let canvasBuffer = new CanvasRenderTarget(width, height, 1); + const webglPixels = new Uint8Array(BYTES_PER_PIXEL * width * height); + const gl = renderer.gl; + gl.readPixels(Math.round(frame.x * resolution), Math.round(frame.y * resolution), width, height, gl.RGBA, gl.UNSIGNED_BYTE, webglPixels); + const canvasData = canvasBuffer.context.getImageData(0, 0, width, height); + _Extract.arrayPostDivide(webglPixels, canvasData.data); + canvasBuffer.context.putImageData(canvasData, 0, 0); + if (flipY) { + const target2 = new CanvasRenderTarget(canvasBuffer.width, canvasBuffer.height, 1); + target2.context.scale(1, -1); + target2.context.drawImage(canvasBuffer.canvas, 0, -height); + canvasBuffer.destroy(); + canvasBuffer = target2; + } + if (generated) { + renderTexture.destroy(true); + } + return canvasBuffer.canvas; + } + pixels(target, frame) { + const renderer = this.renderer; + let resolution; + let renderTexture; + let generated = false; + if (target) { + if (target instanceof RenderTexture) { + renderTexture = target; + } else { + renderTexture = this.renderer.generateTexture(target); + generated = true; + } + } + if (renderTexture) { + resolution = renderTexture.baseTexture.resolution; + frame = frame ?? renderTexture.frame; + renderer.renderTexture.bind(renderTexture); + } else { + resolution = renderer.resolution; + if (!frame) { + frame = TEMP_RECT; + frame.width = renderer.width; + frame.height = renderer.height; + } + renderer.renderTexture.bind(null); + } + const width = Math.round(frame.width * resolution); + const height = Math.round(frame.height * resolution); + const webglPixels = new Uint8Array(BYTES_PER_PIXEL * width * height); + const gl = renderer.gl; + gl.readPixels(Math.round(frame.x * resolution), Math.round(frame.y * resolution), width, height, gl.RGBA, gl.UNSIGNED_BYTE, webglPixels); + if (generated) { + renderTexture.destroy(true); + } + _Extract.arrayPostDivide(webglPixels, webglPixels); + return webglPixels; + } + destroy() { + this.renderer = null; + } + static arrayPostDivide(pixels, out) { + for (let i = 0; i < pixels.length; i += 4) { + const alpha = out[i + 3] = pixels[i + 3]; + if (alpha !== 0) { + out[i] = Math.round(Math.min(pixels[i] * 255 / alpha, 255)); + out[i + 1] = Math.round(Math.min(pixels[i + 1] * 255 / alpha, 255)); + out[i + 2] = Math.round(Math.min(pixels[i + 2] * 255 / alpha, 255)); + } else { + out[i] = pixels[i]; + out[i + 1] = pixels[i + 1]; + out[i + 2] = pixels[i + 2]; + } + } + } + }; + let Extract = _Extract; + Extract.extension = { + name: "extract", + type: ExtensionType.RendererSystem + }; + extensions$1.add(Extract); + + var LINE_JOIN = /* @__PURE__ */ ((LINE_JOIN2) => { + LINE_JOIN2["MITER"] = "miter"; + LINE_JOIN2["BEVEL"] = "bevel"; + LINE_JOIN2["ROUND"] = "round"; + return LINE_JOIN2; + })(LINE_JOIN || {}); + var LINE_CAP = /* @__PURE__ */ ((LINE_CAP2) => { + LINE_CAP2["BUTT"] = "butt"; + LINE_CAP2["ROUND"] = "round"; + LINE_CAP2["SQUARE"] = "square"; + return LINE_CAP2; + })(LINE_CAP || {}); + const GRAPHICS_CURVES = { + adaptive: true, + maxLength: 10, + minSegments: 8, + maxSegments: 2048, + epsilon: 1e-4, + _segmentsCount(length, defaultSegments = 20) { + if (!this.adaptive || !length || isNaN(length)) { + return defaultSegments; + } + let result = Math.ceil(length / this.maxLength); + if (result < this.minSegments) { + result = this.minSegments; + } else if (result > this.maxSegments) { + result = this.maxSegments; + } + return result; + } + }; + + class FillStyle { + constructor() { + this.color = 16777215; + this.alpha = 1; + this.texture = Texture.WHITE; + this.matrix = null; + this.visible = false; + this.reset(); + } + clone() { + const obj = new FillStyle(); + obj.color = this.color; + obj.alpha = this.alpha; + obj.texture = this.texture; + obj.matrix = this.matrix; + obj.visible = this.visible; + return obj; + } + reset() { + this.color = 16777215; + this.alpha = 1; + this.texture = Texture.WHITE; + this.matrix = null; + this.visible = false; + } + destroy() { + this.texture = null; + this.matrix = null; + } + } + + function fixOrientation(points, hole = false) { + const m = points.length; + if (m < 6) { + return; + } + let area = 0; + for (let i = 0, x1 = points[m - 2], y1 = points[m - 1]; i < m; i += 2) { + const x2 = points[i]; + const y2 = points[i + 1]; + area += (x2 - x1) * (y2 + y1); + x1 = x2; + y1 = y2; + } + if (!hole && area > 0 || hole && area <= 0) { + const n = m / 2; + for (let i = n + n % 2; i < m; i += 2) { + const i1 = m - i - 2; + const i2 = m - i - 1; + const i3 = i; + const i4 = i + 1; + [points[i1], points[i3]] = [points[i3], points[i1]]; + [points[i2], points[i4]] = [points[i4], points[i2]]; + } + } + } + const buildPoly = { + build(graphicsData) { + graphicsData.points = graphicsData.shape.points.slice(); + }, + triangulate(graphicsData, graphicsGeometry) { + let points = graphicsData.points; + const holes = graphicsData.holes; + const verts = graphicsGeometry.points; + const indices = graphicsGeometry.indices; + if (points.length >= 6) { + fixOrientation(points, false); + const holeArray = []; + for (let i = 0; i < holes.length; i++) { + const hole = holes[i]; + fixOrientation(hole.points, true); + holeArray.push(points.length / 2); + points = points.concat(hole.points); + } + const triangles = earcut_1(points, holeArray, 2); + if (!triangles) { + return; + } + const vertPos = verts.length / 2; + for (let i = 0; i < triangles.length; i += 3) { + indices.push(triangles[i] + vertPos); + indices.push(triangles[i + 1] + vertPos); + indices.push(triangles[i + 2] + vertPos); + } + for (let i = 0; i < points.length; i++) { + verts.push(points[i]); + } + } + } + }; + + const buildCircle = { + build(graphicsData) { + const points = graphicsData.points; + let x; + let y; + let dx; + let dy; + let rx; + let ry; + if (graphicsData.type === SHAPES.CIRC) { + const circle = graphicsData.shape; + x = circle.x; + y = circle.y; + rx = ry = circle.radius; + dx = dy = 0; + } else if (graphicsData.type === SHAPES.ELIP) { + const ellipse = graphicsData.shape; + x = ellipse.x; + y = ellipse.y; + rx = ellipse.width; + ry = ellipse.height; + dx = dy = 0; + } else { + const roundedRect = graphicsData.shape; + const halfWidth = roundedRect.width / 2; + const halfHeight = roundedRect.height / 2; + x = roundedRect.x + halfWidth; + y = roundedRect.y + halfHeight; + rx = ry = Math.max(0, Math.min(roundedRect.radius, Math.min(halfWidth, halfHeight))); + dx = halfWidth - rx; + dy = halfHeight - ry; + } + if (!(rx >= 0 && ry >= 0 && dx >= 0 && dy >= 0)) { + points.length = 0; + return; + } + const n = Math.ceil(2.3 * Math.sqrt(rx + ry)); + const m = n * 8 + (dx ? 4 : 0) + (dy ? 4 : 0); + points.length = m; + if (m === 0) { + return; + } + if (n === 0) { + points.length = 8; + points[0] = points[6] = x + dx; + points[1] = points[3] = y + dy; + points[2] = points[4] = x - dx; + points[5] = points[7] = y - dy; + return; + } + let j1 = 0; + let j2 = n * 4 + (dx ? 2 : 0) + 2; + let j3 = j2; + let j4 = m; + { + const x0 = dx + rx; + const y0 = dy; + const x1 = x + x0; + const x2 = x - x0; + const y1 = y + y0; + points[j1++] = x1; + points[j1++] = y1; + points[--j2] = y1; + points[--j2] = x2; + if (dy) { + const y2 = y - y0; + points[j3++] = x2; + points[j3++] = y2; + points[--j4] = y2; + points[--j4] = x1; + } + } + for (let i = 1; i < n; i++) { + const a = Math.PI / 2 * (i / n); + const x0 = dx + Math.cos(a) * rx; + const y0 = dy + Math.sin(a) * ry; + const x1 = x + x0; + const x2 = x - x0; + const y1 = y + y0; + const y2 = y - y0; + points[j1++] = x1; + points[j1++] = y1; + points[--j2] = y1; + points[--j2] = x2; + points[j3++] = x2; + points[j3++] = y2; + points[--j4] = y2; + points[--j4] = x1; + } + { + const x0 = dx; + const y0 = dy + ry; + const x1 = x + x0; + const x2 = x - x0; + const y1 = y + y0; + const y2 = y - y0; + points[j1++] = x1; + points[j1++] = y1; + points[--j4] = y2; + points[--j4] = x1; + if (dx) { + points[j1++] = x2; + points[j1++] = y1; + points[--j4] = y2; + points[--j4] = x2; + } + } + }, + triangulate(graphicsData, graphicsGeometry) { + const points = graphicsData.points; + const verts = graphicsGeometry.points; + const indices = graphicsGeometry.indices; + if (points.length === 0) { + return; + } + let vertPos = verts.length / 2; + const center = vertPos; + let x; + let y; + if (graphicsData.type !== SHAPES.RREC) { + const circle = graphicsData.shape; + x = circle.x; + y = circle.y; + } else { + const roundedRect = graphicsData.shape; + x = roundedRect.x + roundedRect.width / 2; + y = roundedRect.y + roundedRect.height / 2; + } + const matrix = graphicsData.matrix; + verts.push(graphicsData.matrix ? matrix.a * x + matrix.c * y + matrix.tx : x, graphicsData.matrix ? matrix.b * x + matrix.d * y + matrix.ty : y); + vertPos++; + verts.push(points[0], points[1]); + for (let i = 2; i < points.length; i += 2) { + verts.push(points[i], points[i + 1]); + indices.push(vertPos++, center, vertPos); + } + indices.push(center + 1, center, vertPos); + } + }; + + const buildRectangle = { + build(graphicsData) { + const rectData = graphicsData.shape; + const x = rectData.x; + const y = rectData.y; + const width = rectData.width; + const height = rectData.height; + const points = graphicsData.points; + points.length = 0; + if (!(width >= 0 && height >= 0)) { + return; + } + points.push(x, y, x + width, y, x + width, y + height, x, y + height); + }, + triangulate(graphicsData, graphicsGeometry) { + const points = graphicsData.points; + const verts = graphicsGeometry.points; + if (points.length === 0) { + return; + } + const vertPos = verts.length / 2; + verts.push(points[0], points[1], points[2], points[3], points[6], points[7], points[4], points[5]); + graphicsGeometry.indices.push(vertPos, vertPos + 1, vertPos + 2, vertPos + 1, vertPos + 2, vertPos + 3); + } + }; + + const buildRoundedRectangle = { + build(graphicsData) { + buildCircle.build(graphicsData); + }, + triangulate(graphicsData, graphicsGeometry) { + buildCircle.triangulate(graphicsData, graphicsGeometry); + } + }; + + function square(x, y, nx, ny, innerWeight, outerWeight, clockwise, verts) { + const ix = x - nx * innerWeight; + const iy = y - ny * innerWeight; + const ox = x + nx * outerWeight; + const oy = y + ny * outerWeight; + let exx; + let eyy; + if (clockwise) { + exx = ny; + eyy = -nx; + } else { + exx = -ny; + eyy = nx; + } + const eix = ix + exx; + const eiy = iy + eyy; + const eox = ox + exx; + const eoy = oy + eyy; + verts.push(eix, eiy); + verts.push(eox, eoy); + return 2; + } + function round(cx, cy, sx, sy, ex, ey, verts, clockwise) { + const cx2p0x = sx - cx; + const cy2p0y = sy - cy; + let angle0 = Math.atan2(cx2p0x, cy2p0y); + let angle1 = Math.atan2(ex - cx, ey - cy); + if (clockwise && angle0 < angle1) { + angle0 += Math.PI * 2; + } else if (!clockwise && angle0 > angle1) { + angle1 += Math.PI * 2; + } + let startAngle = angle0; + const angleDiff = angle1 - angle0; + const absAngleDiff = Math.abs(angleDiff); + const radius = Math.sqrt(cx2p0x * cx2p0x + cy2p0y * cy2p0y); + const segCount = (15 * absAngleDiff * Math.sqrt(radius) / Math.PI >> 0) + 1; + const angleInc = angleDiff / segCount; + startAngle += angleInc; + if (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 segCount * 2; + } + function buildNonNativeLine(graphicsData, graphicsGeometry) { + const shape = graphicsData.shape; + let points = graphicsData.points || shape.points.slice(); + const eps = graphicsGeometry.closePointEps; + if (points.length === 0) { + return; + } + const style = graphicsData.lineStyle; + const firstPoint = new Point(points[0], points[1]); + const lastPoint = new Point(points[points.length - 2], points[points.length - 1]); + const closedShape = shape.type !== SHAPES.POLY || shape.closeStroke; + const closedPath = Math.abs(firstPoint.x - lastPoint.x) < eps && Math.abs(firstPoint.y - lastPoint.y) < eps; + if (closedShape) { + points = points.slice(); + if (closedPath) { + points.pop(); + points.pop(); + lastPoint.set(points[points.length - 2], points[points.length - 1]); + } + const midPointX = (firstPoint.x + lastPoint.x) * 0.5; + const midPointY = (lastPoint.y + firstPoint.y) * 0.5; + points.unshift(midPointX, midPointY); + points.push(midPointX, midPointY); + } + const verts = graphicsGeometry.points; + const length = points.length / 2; + let indexCount = points.length; + const indexStart = verts.length / 2; + const width = style.width / 2; + const widthSquared = width * width; + const miterLimitSquared = style.miterLimit * style.miterLimit; + let x0 = points[0]; + let y0 = points[1]; + let x1 = points[2]; + let y1 = points[3]; + let x2 = 0; + let y2 = 0; + let perpx = -(y0 - y1); + let perpy = x0 - x1; + let perp1x = 0; + let perp1y = 0; + let dist = Math.sqrt(perpx * perpx + perpy * perpy); + perpx /= dist; + perpy /= dist; + perpx *= width; + perpy *= width; + const ratio = style.alignment; + const innerWeight = (1 - ratio) * 2; + const outerWeight = ratio * 2; + if (!closedShape) { + if (style.cap === LINE_CAP.ROUND) { + indexCount += round(x0 - perpx * (innerWeight - outerWeight) * 0.5, y0 - perpy * (innerWeight - outerWeight) * 0.5, x0 - perpx * innerWeight, y0 - perpy * innerWeight, x0 + perpx * outerWeight, y0 + perpy * outerWeight, verts, true) + 2; + } else if (style.cap === LINE_CAP.SQUARE) { + indexCount += square(x0, y0, perpx, perpy, innerWeight, outerWeight, true, 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[(i - 1) * 2]; + y0 = points[(i - 1) * 2 + 1]; + x1 = points[i * 2]; + y1 = points[i * 2 + 1]; + x2 = points[(i + 1) * 2]; + y2 = points[(i + 1) * 2 + 1]; + perpx = -(y0 - y1); + perpy = x0 - x1; + dist = Math.sqrt(perpx * perpx + perpy * perpy); + perpx /= dist; + perpy /= dist; + perpx *= width; + perpy *= width; + perp1x = -(y1 - y2); + perp1y = x1 - x2; + dist = Math.sqrt(perp1x * perp1x + perp1y * perp1y); + perp1x /= dist; + perp1y /= dist; + perp1x *= width; + perp1y *= width; + const dx0 = x1 - x0; + const dy0 = y0 - y1; + const dx1 = x1 - x2; + const dy1 = y2 - y1; + const dot = dx0 * dx1 + dy0 * dy1; + const cross = dy0 * dx1 - dy1 * dx0; + const clockwise = cross < 0; + if (Math.abs(cross) < 1e-3 * Math.abs(dot)) { + verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight); + verts.push(x1 + perpx * outerWeight, y1 + perpy * outerWeight); + if (dot >= 0) { + if (style.join === LINE_JOIN.ROUND) { + indexCount += round(x1, y1, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, verts, false) + 4; + } else { + indexCount += 2; + } + verts.push(x1 - perp1x * outerWeight, y1 - perp1y * outerWeight); + verts.push(x1 + perp1x * innerWeight, y1 + perp1y * innerWeight); + } + continue; + } + const c1 = (-perpx + x0) * (-perpy + y1) - (-perpx + x1) * (-perpy + y0); + const c2 = (-perp1x + x2) * (-perp1y + y1) - (-perp1x + x1) * (-perp1y + y2); + const px = (dx0 * c2 - dx1 * c1) / cross; + const py = (dy1 * c1 - dy0 * c2) / cross; + const pdist = (px - x1) * (px - x1) + (py - y1) * (py - y1); + const imx = x1 + (px - x1) * innerWeight; + const imy = y1 + (py - y1) * innerWeight; + const omx = x1 - (px - x1) * outerWeight; + const omy = y1 - (py - y1) * outerWeight; + const smallerInsideSegmentSq = Math.min(dx0 * dx0 + dy0 * dy0, dx1 * dx1 + dy1 * dy1); + const insideWeight = clockwise ? innerWeight : outerWeight; + const smallerInsideDiagonalSq = smallerInsideSegmentSq + insideWeight * insideWeight * widthSquared; + const insideMiterOk = pdist <= smallerInsideDiagonalSq; + if (insideMiterOk) { + if (style.join === LINE_JOIN.BEVEL || pdist / widthSquared > miterLimitSquared) { + if (clockwise) { + verts.push(imx, imy); + verts.push(x1 + perpx * outerWeight, y1 + perpy * outerWeight); + verts.push(imx, imy); + verts.push(x1 + perp1x * outerWeight, y1 + perp1y * outerWeight); + } else { + verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight); + verts.push(omx, omy); + verts.push(x1 - perp1x * innerWeight, y1 - perp1y * innerWeight); + verts.push(omx, omy); + } + indexCount += 2; + } else if (style.join === LINE_JOIN.ROUND) { + if (clockwise) { + verts.push(imx, 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, true) + 4; + verts.push(imx, imy); + verts.push(x1 + perp1x * outerWeight, y1 + perp1y * outerWeight); + } else { + verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight); + verts.push(omx, omy); + indexCount += round(x1, y1, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, verts, false) + 4; + verts.push(x1 - perp1x * innerWeight, y1 - perp1y * innerWeight); + verts.push(omx, omy); + } + } else { + verts.push(imx, imy); + verts.push(omx, omy); + } + } else { + verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight); + verts.push(x1 + perpx * outerWeight, y1 + perpy * outerWeight); + if (style.join === LINE_JOIN.ROUND) { + if (clockwise) { + indexCount += round(x1, y1, x1 + perpx * outerWeight, y1 + perpy * outerWeight, x1 + perp1x * outerWeight, y1 + perp1y * outerWeight, verts, true) + 2; + } else { + indexCount += round(x1, y1, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, verts, false) + 2; + } + } else if (style.join === LINE_JOIN.MITER && pdist / widthSquared <= miterLimitSquared) { + if (clockwise) { + verts.push(omx, omy); + verts.push(omx, omy); + } else { + verts.push(imx, imy); + verts.push(imx, imy); + } + indexCount += 2; + } + verts.push(x1 - perp1x * innerWeight, y1 - perp1y * innerWeight); + verts.push(x1 + perp1x * outerWeight, y1 + perp1y * outerWeight); + indexCount += 2; + } + } + x0 = points[(length - 2) * 2]; + y0 = points[(length - 2) * 2 + 1]; + x1 = points[(length - 1) * 2]; + y1 = points[(length - 1) * 2 + 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); + if (!closedShape) { + if (style.cap === LINE_CAP.ROUND) { + indexCount += round(x1 - perpx * (innerWeight - outerWeight) * 0.5, y1 - perpy * (innerWeight - outerWeight) * 0.5, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 + perpx * outerWeight, y1 + perpy * outerWeight, verts, false) + 2; + } else if (style.cap === LINE_CAP.SQUARE) { + indexCount += square(x1, y1, perpx, perpy, innerWeight, outerWeight, false, verts); + } + } + const indices = graphicsGeometry.indices; + const eps2 = GRAPHICS_CURVES.epsilon * GRAPHICS_CURVES.epsilon; + for (let i = indexStart; i < indexCount + indexStart - 2; ++i) { + x0 = verts[i * 2]; + y0 = verts[i * 2 + 1]; + x1 = verts[(i + 1) * 2]; + y1 = verts[(i + 1) * 2 + 1]; + x2 = verts[(i + 2) * 2]; + y2 = verts[(i + 2) * 2 + 1]; + if (Math.abs(x0 * (y1 - y2) + x1 * (y2 - y0) + x2 * (y0 - y1)) < eps2) { + continue; + } + indices.push(i, i + 1, i + 2); + } + } + function buildNativeLine(graphicsData, graphicsGeometry) { + let i = 0; + const shape = graphicsData.shape; + const points = graphicsData.points || shape.points; + const closedShape = shape.type !== SHAPES.POLY || shape.closeStroke; + if (points.length === 0) + return; + const verts = graphicsGeometry.points; + const indices = graphicsGeometry.indices; + const length = points.length / 2; + const startIndex = verts.length / 2; + let currentIndex = startIndex; + verts.push(points[0], points[1]); + for (i = 1; i < length; i++) { + verts.push(points[i * 2], points[i * 2 + 1]); + indices.push(currentIndex, currentIndex + 1); + currentIndex++; + } + if (closedShape) { + indices.push(currentIndex, startIndex); + } + } + function buildLine(graphicsData, graphicsGeometry) { + if (graphicsData.lineStyle.native) { + buildNativeLine(graphicsData, graphicsGeometry); + } else { + buildNonNativeLine(graphicsData, graphicsGeometry); + } + } + + class ArcUtils { + static curveTo(x1, y1, x2, y2, radius, points) { + const fromX = points[points.length - 2]; + const fromY = points[points.length - 1]; + const a1 = fromY - y1; + const b1 = fromX - x1; + const a2 = y2 - y1; + const b2 = x2 - x1; + const mm = Math.abs(a1 * b2 - b1 * a2); + if (mm < 1e-8 || radius === 0) { + if (points[points.length - 2] !== x1 || points[points.length - 1] !== y1) { + points.push(x1, y1); + } + return null; + } + const dd = a1 * a1 + b1 * b1; + const cc = a2 * a2 + b2 * b2; + const tt = a1 * a2 + b1 * b2; + const k1 = radius * Math.sqrt(dd) / mm; + const k2 = radius * Math.sqrt(cc) / mm; + const j1 = k1 * tt / dd; + const j2 = k2 * tt / cc; + const cx = k1 * b2 + k2 * b1; + const cy = k1 * a2 + k2 * a1; + const px = b1 * (k2 + j1); + const py = a1 * (k2 + j1); + const qx = b2 * (k1 + j2); + const qy = a2 * (k1 + j2); + const startAngle = Math.atan2(py - cy, px - cx); + const endAngle = Math.atan2(qy - cy, qx - cx); + return { + cx: cx + x1, + cy: cy + y1, + radius, + startAngle, + endAngle, + anticlockwise: b1 * a2 > b2 * a1 + }; + } + static arc(_startX, _startY, cx, cy, radius, startAngle, endAngle, _anticlockwise, points) { + const sweep = endAngle - startAngle; + const n = GRAPHICS_CURVES._segmentsCount(Math.abs(sweep) * radius, Math.ceil(Math.abs(sweep) / PI_2) * 40); + const theta = sweep / (n * 2); + const theta2 = theta * 2; + const cTheta = Math.cos(theta); + const sTheta = Math.sin(theta); + const segMinus = n - 1; + const remainder = segMinus % 1 / segMinus; + for (let i = 0; i <= segMinus; ++i) { + const real = i + remainder * i; + const angle = theta + startAngle + theta2 * real; + const c = Math.cos(angle); + const s = -Math.sin(angle); + points.push((cTheta * c + sTheta * s) * radius + cx, (cTheta * -s + sTheta * c) * radius + cy); + } + } + } + + class BezierUtils { + static curveLength(fromX, fromY, cpX, cpY, cpX2, cpY2, toX, toY) { + const n = 10; + let result = 0; + let t = 0; + let t2 = 0; + let t3 = 0; + let nt = 0; + let nt2 = 0; + let nt3 = 0; + let x = 0; + let y = 0; + let dx = 0; + let dy = 0; + let prevX = fromX; + let prevY = fromY; + for (let i = 1; i <= n; ++i) { + t = i / n; + t2 = t * t; + t3 = t2 * t; + nt = 1 - t; + nt2 = nt * nt; + nt3 = nt2 * nt; + x = nt3 * fromX + 3 * nt2 * t * cpX + 3 * nt * t2 * cpX2 + t3 * toX; + y = nt3 * fromY + 3 * nt2 * t * cpY + 3 * nt * t2 * cpY2 + t3 * toY; + dx = prevX - x; + dy = prevY - y; + prevX = x; + prevY = y; + result += Math.sqrt(dx * dx + dy * dy); + } + return result; + } + static curveTo(cpX, cpY, cpX2, cpY2, toX, toY, points) { + const fromX = points[points.length - 2]; + const fromY = points[points.length - 1]; + points.length -= 2; + const n = GRAPHICS_CURVES._segmentsCount(BezierUtils.curveLength(fromX, fromY, cpX, cpY, cpX2, cpY2, toX, toY)); + let dt = 0; + let dt2 = 0; + let dt3 = 0; + let t2 = 0; + let t3 = 0; + points.push(fromX, fromY); + for (let i = 1, j = 0; i <= n; ++i) { + j = i / n; + dt = 1 - j; + dt2 = dt * dt; + dt3 = dt2 * dt; + t2 = j * j; + t3 = t2 * j; + points.push(dt3 * fromX + 3 * dt2 * j * cpX + 3 * dt * t2 * cpX2 + t3 * toX, dt3 * fromY + 3 * dt2 * j * cpY + 3 * dt * t2 * cpY2 + t3 * toY); + } + } + } + + class QuadraticUtils { + static curveLength(fromX, fromY, cpX, cpY, toX, toY) { + const ax = fromX - 2 * cpX + toX; + const ay = fromY - 2 * cpY + toY; + const bx = 2 * cpX - 2 * fromX; + const by = 2 * cpY - 2 * fromY; + const a = 4 * (ax * ax + ay * ay); + const b = 4 * (ax * bx + ay * by); + const c = bx * bx + by * by; + const s = 2 * Math.sqrt(a + b + c); + const a2 = Math.sqrt(a); + const a32 = 2 * a * a2; + const c2 = 2 * Math.sqrt(c); + const ba = b / a2; + return (a32 * s + a2 * b * (s - c2) + (4 * c * a - b * b) * Math.log((2 * a2 + ba + s) / (ba + c2))) / (4 * a32); + } + static curveTo(cpX, cpY, toX, toY, points) { + const fromX = points[points.length - 2]; + const fromY = points[points.length - 1]; + const n = GRAPHICS_CURVES._segmentsCount(QuadraticUtils.curveLength(fromX, fromY, cpX, cpY, toX, toY)); + let xa = 0; + let ya = 0; + for (let i = 1; i <= n; ++i) { + const j = i / n; + xa = fromX + (cpX - fromX) * j; + ya = fromY + (cpY - fromY) * j; + points.push(xa + (cpX + (toX - cpX) * j - xa) * j, ya + (cpY + (toY - cpY) * j - ya) * j); + } + } + } + + class BatchPart { + constructor() { + this.reset(); + } + begin(style, startIndex, attribStart) { + this.reset(); + this.style = style; + this.start = startIndex; + this.attribStart = attribStart; + } + end(endIndex, endAttrib) { + this.attribSize = endAttrib - this.attribStart; + this.size = endIndex - this.start; + } + reset() { + this.style = null; + this.size = 0; + this.start = 0; + this.attribStart = 0; + this.attribSize = 0; + } + } + + const FILL_COMMANDS = { + [SHAPES.POLY]: buildPoly, + [SHAPES.CIRC]: buildCircle, + [SHAPES.ELIP]: buildCircle, + [SHAPES.RECT]: buildRectangle, + [SHAPES.RREC]: buildRoundedRectangle + }; + const BATCH_POOL = []; + const DRAW_CALL_POOL = []; + + class GraphicsData { + constructor(shape, fillStyle = null, lineStyle = null, matrix = null) { + this.points = []; + this.holes = []; + this.shape = shape; + this.lineStyle = lineStyle; + this.fillStyle = fillStyle; + this.matrix = matrix; + this.type = shape.type; + } + clone() { + return new GraphicsData(this.shape, this.fillStyle, this.lineStyle, this.matrix); + } + destroy() { + this.shape = null; + this.holes.length = 0; + this.holes = null; + this.points.length = 0; + this.points = null; + this.lineStyle = null; + this.fillStyle = null; + } + } + + const tmpPoint = new Point(); + const _GraphicsGeometry = class extends BatchGeometry { + constructor() { + super(); + this.closePointEps = 1e-4; + this.boundsPadding = 0; + this.uvsFloat32 = null; + this.indicesUint16 = null; + this.batchable = false; + this.points = []; + this.colors = []; + this.uvs = []; + this.indices = []; + this.textureIds = []; + this.graphicsData = []; + this.drawCalls = []; + this.batchDirty = -1; + this.batches = []; + this.dirty = 0; + this.cacheDirty = -1; + this.clearDirty = 0; + this.shapeIndex = 0; + this._bounds = new Bounds(); + this.boundsDirty = -1; + } + get bounds() { + this.updateBatches(); + if (this.boundsDirty !== this.dirty) { + this.boundsDirty = this.dirty; + this.calculateBounds(); + } + return this._bounds; + } + invalidate() { + this.boundsDirty = -1; + this.dirty++; + this.batchDirty++; + this.shapeIndex = 0; + this.points.length = 0; + this.colors.length = 0; + this.uvs.length = 0; + this.indices.length = 0; + this.textureIds.length = 0; + for (let i = 0; i < this.drawCalls.length; i++) { + this.drawCalls[i].texArray.clear(); + DRAW_CALL_POOL.push(this.drawCalls[i]); + } + this.drawCalls.length = 0; + for (let i = 0; i < this.batches.length; i++) { + const batchPart = this.batches[i]; + batchPart.reset(); + BATCH_POOL.push(batchPart); + } + this.batches.length = 0; + } + clear() { + if (this.graphicsData.length > 0) { + this.invalidate(); + this.clearDirty++; + this.graphicsData.length = 0; + } + return this; + } + drawShape(shape, fillStyle = null, lineStyle = null, matrix = null) { + const data = new GraphicsData(shape, fillStyle, lineStyle, matrix); + this.graphicsData.push(data); + this.dirty++; + return this; + } + drawHole(shape, matrix = null) { + if (!this.graphicsData.length) { + return null; + } + const data = new GraphicsData(shape, null, null, matrix); + const lastShape = this.graphicsData[this.graphicsData.length - 1]; + data.lineStyle = lastShape.lineStyle; + lastShape.holes.push(data); + this.dirty++; + return this; + } + destroy() { + super.destroy(); + for (let i = 0; i < this.graphicsData.length; ++i) { + this.graphicsData[i].destroy(); + } + this.points.length = 0; + this.points = null; + this.colors.length = 0; + this.colors = null; + this.uvs.length = 0; + this.uvs = null; + this.indices.length = 0; + this.indices = null; + this.indexBuffer.destroy(); + this.indexBuffer = null; + this.graphicsData.length = 0; + this.graphicsData = null; + this.drawCalls.length = 0; + this.drawCalls = null; + this.batches.length = 0; + this.batches = null; + this._bounds = null; + } + containsPoint(point) { + const graphicsData = this.graphicsData; + for (let i = 0; i < graphicsData.length; ++i) { + const data = graphicsData[i]; + if (!data.fillStyle.visible) { + continue; + } + if (data.shape) { + if (data.matrix) { + data.matrix.applyInverse(point, tmpPoint); + } else { + tmpPoint.copyFrom(point); + } + if (data.shape.contains(tmpPoint.x, tmpPoint.y)) { + let hitHole = false; + if (data.holes) { + for (let i2 = 0; i2 < data.holes.length; i2++) { + const hole = data.holes[i2]; + if (hole.shape.contains(tmpPoint.x, tmpPoint.y)) { + hitHole = true; + break; + } + } + } + if (!hitHole) { + return true; + } + } + } + } + return false; + } + updateBatches() { + if (!this.graphicsData.length) { + this.batchable = true; + return; + } + if (!this.validateBatching()) { + return; + } + this.cacheDirty = this.dirty; + const uvs = this.uvs; + const graphicsData = this.graphicsData; + let batchPart = null; + let currentStyle = null; + if (this.batches.length > 0) { + batchPart = this.batches[this.batches.length - 1]; + currentStyle = batchPart.style; + } + for (let i = this.shapeIndex; i < graphicsData.length; i++) { + this.shapeIndex++; + const data = graphicsData[i]; + const fillStyle = data.fillStyle; + const lineStyle = data.lineStyle; + const command = FILL_COMMANDS[data.type]; + command.build(data); + if (data.matrix) { + this.transformPoints(data.points, data.matrix); + } + if (fillStyle.visible || lineStyle.visible) { + this.processHoles(data.holes); + } + for (let j = 0; j < 2; j++) { + const style = j === 0 ? fillStyle : lineStyle; + if (!style.visible) + continue; + const nextTexture = style.texture.baseTexture; + const index2 = this.indices.length; + const attribIndex = this.points.length / 2; + nextTexture.wrapMode = WRAP_MODES.REPEAT; + if (j === 0) { + this.processFill(data); + } else { + this.processLine(data); + } + const size = this.points.length / 2 - attribIndex; + if (size === 0) + continue; + if (batchPart && !this._compareStyles(currentStyle, style)) { + batchPart.end(index2, attribIndex); + batchPart = null; + } + if (!batchPart) { + batchPart = BATCH_POOL.pop() || new BatchPart(); + batchPart.begin(style, index2, attribIndex); + this.batches.push(batchPart); + currentStyle = style; + } + this.addUvs(this.points, uvs, style.texture, attribIndex, size, style.matrix); + } + } + const index = this.indices.length; + const attrib = this.points.length / 2; + if (batchPart) { + batchPart.end(index, attrib); + } + if (this.batches.length === 0) { + this.batchable = true; + return; + } + const need32 = attrib > 65535; + if (this.indicesUint16 && this.indices.length === this.indicesUint16.length && need32 === this.indicesUint16.BYTES_PER_ELEMENT > 2) { + this.indicesUint16.set(this.indices); + } else { + this.indicesUint16 = need32 ? new Uint32Array(this.indices) : new Uint16Array(this.indices); + } + this.batchable = this.isBatchable(); + if (this.batchable) { + this.packBatches(); + } else { + this.buildDrawCalls(); + } + } + _compareStyles(styleA, styleB) { + if (!styleA || !styleB) { + return false; + } + if (styleA.texture.baseTexture !== styleB.texture.baseTexture) { + return false; + } + if (styleA.color + styleA.alpha !== styleB.color + styleB.alpha) { + return false; + } + if (!!styleA.native !== !!styleB.native) { + return false; + } + return true; + } + validateBatching() { + if (this.dirty === this.cacheDirty || !this.graphicsData.length) { + return false; + } + for (let i = 0, l = this.graphicsData.length; i < l; i++) { + const data = this.graphicsData[i]; + const fill = data.fillStyle; + const line = data.lineStyle; + if (fill && !fill.texture.baseTexture.valid) + return false; + if (line && !line.texture.baseTexture.valid) + return false; + } + return true; + } + packBatches() { + this.batchDirty++; + this.uvsFloat32 = new Float32Array(this.uvs); + const batches = this.batches; + for (let i = 0, l = batches.length; i < l; i++) { + const batch = batches[i]; + for (let j = 0; j < batch.size; j++) { + const index = batch.start + j; + this.indicesUint16[index] = this.indicesUint16[index] - batch.attribStart; + } + } + } + isBatchable() { + if (this.points.length > 65535 * 2) { + return false; + } + const batches = this.batches; + for (let i = 0; i < batches.length; i++) { + if (batches[i].style.native) { + return false; + } + } + return this.points.length < _GraphicsGeometry.BATCHABLE_SIZE * 2; + } + buildDrawCalls() { + let TICK = ++BaseTexture._globalBatch; + for (let i = 0; i < this.drawCalls.length; i++) { + this.drawCalls[i].texArray.clear(); + DRAW_CALL_POOL.push(this.drawCalls[i]); + } + this.drawCalls.length = 0; + const colors = this.colors; + const textureIds = this.textureIds; + let currentGroup = DRAW_CALL_POOL.pop(); + if (!currentGroup) { + currentGroup = new BatchDrawCall(); + currentGroup.texArray = new BatchTextureArray(); + } + currentGroup.texArray.count = 0; + currentGroup.start = 0; + currentGroup.size = 0; + currentGroup.type = DRAW_MODES.TRIANGLES; + let textureCount = 0; + let currentTexture = null; + let textureId = 0; + let native = false; + let drawMode = DRAW_MODES.TRIANGLES; + let index = 0; + this.drawCalls.push(currentGroup); + for (let i = 0; i < this.batches.length; i++) { + const data = this.batches[i]; + const MAX_TEXTURES = 8; + const style = data.style; + const nextTexture = style.texture.baseTexture; + if (native !== !!style.native) { + native = !!style.native; + drawMode = native ? DRAW_MODES.LINES : DRAW_MODES.TRIANGLES; + currentTexture = null; + textureCount = MAX_TEXTURES; + TICK++; + } + if (currentTexture !== nextTexture) { + currentTexture = nextTexture; + if (nextTexture._batchEnabled !== TICK) { + if (textureCount === MAX_TEXTURES) { + TICK++; + textureCount = 0; + if (currentGroup.size > 0) { + currentGroup = DRAW_CALL_POOL.pop(); + if (!currentGroup) { + currentGroup = new BatchDrawCall(); + currentGroup.texArray = new BatchTextureArray(); + } + this.drawCalls.push(currentGroup); + } + currentGroup.start = index; + currentGroup.size = 0; + currentGroup.texArray.count = 0; + currentGroup.type = drawMode; + } + nextTexture.touched = 1; + nextTexture._batchEnabled = TICK; + nextTexture._batchLocation = textureCount; + nextTexture.wrapMode = WRAP_MODES.REPEAT; + currentGroup.texArray.elements[currentGroup.texArray.count++] = nextTexture; + textureCount++; + } + } + currentGroup.size += data.size; + index += data.size; + textureId = nextTexture._batchLocation; + this.addColors(colors, style.color, style.alpha, data.attribSize, data.attribStart); + this.addTextureIds(textureIds, textureId, data.attribSize, data.attribStart); + } + BaseTexture._globalBatch = TICK; + this.packAttributes(); + } + packAttributes() { + const verts = this.points; + const uvs = this.uvs; + const colors = this.colors; + const textureIds = this.textureIds; + const glPoints = new ArrayBuffer(verts.length * 3 * 4); + const f32 = new Float32Array(glPoints); + const u32 = new Uint32Array(glPoints); + let p = 0; + for (let i = 0; i < verts.length / 2; i++) { + f32[p++] = verts[i * 2]; + f32[p++] = verts[i * 2 + 1]; + f32[p++] = uvs[i * 2]; + f32[p++] = uvs[i * 2 + 1]; + u32[p++] = colors[i]; + f32[p++] = textureIds[i]; + } + this._buffer.update(glPoints); + this._indexBuffer.update(this.indicesUint16); + } + processFill(data) { + if (data.holes.length) { + buildPoly.triangulate(data, this); + } else { + const command = FILL_COMMANDS[data.type]; + command.triangulate(data, this); + } + } + processLine(data) { + buildLine(data, this); + for (let i = 0; i < data.holes.length; i++) { + buildLine(data.holes[i], this); + } + } + processHoles(holes) { + for (let i = 0; i < holes.length; i++) { + const hole = holes[i]; + const command = FILL_COMMANDS[hole.type]; + command.build(hole); + if (hole.matrix) { + this.transformPoints(hole.points, hole.matrix); + } + } + } + calculateBounds() { + const bounds = this._bounds; + bounds.clear(); + bounds.addVertexData(this.points, 0, this.points.length); + bounds.pad(this.boundsPadding, this.boundsPadding); + } + transformPoints(points, matrix) { + for (let i = 0; i < points.length / 2; i++) { + const x = points[i * 2]; + const y = points[i * 2 + 1]; + points[i * 2] = matrix.a * x + matrix.c * y + matrix.tx; + points[i * 2 + 1] = matrix.b * x + matrix.d * y + matrix.ty; + } + } + addColors(colors, color, alpha, size, offset = 0) { + const rgb = (color >> 16) + (color & 65280) + ((color & 255) << 16); + const rgba = premultiplyTint(rgb, alpha); + colors.length = Math.max(colors.length, offset + size); + for (let i = 0; i < size; i++) { + colors[offset + i] = rgba; + } + } + addTextureIds(textureIds, id, size, offset = 0) { + textureIds.length = Math.max(textureIds.length, offset + size); + for (let i = 0; i < size; i++) { + textureIds[offset + i] = id; + } + } + addUvs(verts, uvs, texture, start, size, matrix = null) { + let index = 0; + const uvsStart = uvs.length; + const frame = texture.frame; + while (index < size) { + let x = verts[(start + index) * 2]; + let y = verts[(start + index) * 2 + 1]; + if (matrix) { + const nx = matrix.a * x + matrix.c * y + matrix.tx; + y = matrix.b * x + matrix.d * y + matrix.ty; + x = nx; + } + index++; + uvs.push(x / frame.width, y / frame.height); + } + const baseTexture = texture.baseTexture; + if (frame.width < baseTexture.width || frame.height < baseTexture.height) { + this.adjustUvs(uvs, texture, uvsStart, size); + } + } + adjustUvs(uvs, texture, start, size) { + const baseTexture = texture.baseTexture; + const eps = 1e-6; + const finish = start + size * 2; + const frame = texture.frame; + const scaleX = frame.width / baseTexture.width; + const scaleY = frame.height / baseTexture.height; + let offsetX = frame.x / frame.width; + let offsetY = frame.y / frame.height; + let minX = Math.floor(uvs[start] + eps); + let minY = Math.floor(uvs[start + 1] + eps); + for (let i = start + 2; i < finish; i += 2) { + minX = Math.min(minX, Math.floor(uvs[i] + eps)); + minY = Math.min(minY, Math.floor(uvs[i + 1] + eps)); + } + offsetX -= minX; + offsetY -= minY; + for (let i = start; i < finish; i += 2) { + uvs[i] = (uvs[i] + offsetX) * scaleX; + uvs[i + 1] = (uvs[i + 1] + offsetY) * scaleY; + } + } + }; + let GraphicsGeometry = _GraphicsGeometry; + GraphicsGeometry.BATCHABLE_SIZE = 100; + + class LineStyle extends FillStyle { + constructor() { + super(...arguments); + this.width = 0; + this.alignment = 0.5; + this.native = false; + this.cap = LINE_CAP.BUTT; + this.join = LINE_JOIN.MITER; + this.miterLimit = 10; + } + clone() { + const obj = new LineStyle(); + obj.color = this.color; + obj.alpha = this.alpha; + obj.texture = this.texture; + obj.matrix = this.matrix; + obj.visible = this.visible; + obj.width = this.width; + obj.alignment = this.alignment; + obj.native = this.native; + obj.cap = this.cap; + obj.join = this.join; + obj.miterLimit = this.miterLimit; + return obj; + } + reset() { + super.reset(); + this.color = 0; + this.alignment = 0.5; + this.width = 0; + this.native = false; + } + } + + const temp = new Float32Array(3); + const DEFAULT_SHADERS = {}; + const _Graphics = class extends Container { + constructor(geometry = null) { + super(); + this.shader = null; + this.pluginName = "batch"; + this.currentPath = null; + this.batches = []; + this.batchTint = -1; + this.batchDirty = -1; + this.vertexData = null; + this._fillStyle = new FillStyle(); + this._lineStyle = new LineStyle(); + this._matrix = null; + this._holeMode = false; + this.state = State.for2d(); + this._geometry = geometry || new GraphicsGeometry(); + this._geometry.refCount++; + this._transformID = -1; + this.tint = 16777215; + this.blendMode = BLEND_MODES.NORMAL; + } + get geometry() { + return this._geometry; + } + clone() { + this.finishPoly(); + return new _Graphics(this._geometry); + } + set blendMode(value) { + this.state.blendMode = value; + } + get blendMode() { + return this.state.blendMode; + } + get tint() { + return this._tint; + } + set tint(value) { + this._tint = value; + } + get fill() { + return this._fillStyle; + } + get line() { + return this._lineStyle; + } + lineStyle(options = null, color = 0, alpha = 1, alignment = 0.5, native = false) { + if (typeof options === "number") { + options = { width: options, color, alpha, alignment, native }; + } + return this.lineTextureStyle(options); + } + lineTextureStyle(options) { + options = Object.assign({ + width: 0, + texture: Texture.WHITE, + color: options?.texture ? 16777215 : 0, + alpha: 1, + matrix: null, + alignment: 0.5, + native: false, + cap: LINE_CAP.BUTT, + join: LINE_JOIN.MITER, + miterLimit: 10 + }, options); + if (this.currentPath) { + this.startPoly(); + } + const visible = options.width > 0 && options.alpha > 0; + if (!visible) { + this._lineStyle.reset(); + } else { + if (options.matrix) { + options.matrix = options.matrix.clone(); + options.matrix.invert(); + } + Object.assign(this._lineStyle, { visible }, options); + } + return this; + } + startPoly() { + if (this.currentPath) { + const points = this.currentPath.points; + const len = this.currentPath.points.length; + if (len > 2) { + this.drawShape(this.currentPath); + this.currentPath = new Polygon(); + this.currentPath.closeStroke = false; + this.currentPath.points.push(points[len - 2], points[len - 1]); + } + } else { + this.currentPath = new Polygon(); + this.currentPath.closeStroke = false; + } + } + finishPoly() { + if (this.currentPath) { + if (this.currentPath.points.length > 2) { + this.drawShape(this.currentPath); + this.currentPath = null; + } else { + this.currentPath.points.length = 0; + } + } + } + moveTo(x, y) { + this.startPoly(); + this.currentPath.points[0] = x; + this.currentPath.points[1] = y; + return this; + } + lineTo(x, y) { + if (!this.currentPath) { + this.moveTo(0, 0); + } + const points = this.currentPath.points; + const fromX = points[points.length - 2]; + const fromY = points[points.length - 1]; + if (fromX !== x || fromY !== y) { + points.push(x, y); + } + return this; + } + _initCurve(x = 0, y = 0) { + if (this.currentPath) { + if (this.currentPath.points.length === 0) { + this.currentPath.points = [x, y]; + } + } else { + this.moveTo(x, y); + } + } + quadraticCurveTo(cpX, cpY, toX, toY) { + this._initCurve(); + const points = this.currentPath.points; + if (points.length === 0) { + this.moveTo(0, 0); + } + QuadraticUtils.curveTo(cpX, cpY, toX, toY, points); + return this; + } + bezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY) { + this._initCurve(); + BezierUtils.curveTo(cpX, cpY, cpX2, cpY2, toX, toY, this.currentPath.points); + return this; + } + arcTo(x1, y1, x2, y2, radius) { + this._initCurve(x1, y1); + const points = this.currentPath.points; + const result = ArcUtils.curveTo(x1, y1, x2, y2, radius, points); + if (result) { + const { cx, cy, radius: radius2, startAngle, endAngle, anticlockwise } = result; + this.arc(cx, cy, radius2, startAngle, endAngle, anticlockwise); + } + return this; + } + arc(cx, cy, radius, startAngle, endAngle, anticlockwise = false) { + if (startAngle === endAngle) { + return this; + } + if (!anticlockwise && endAngle <= startAngle) { + endAngle += PI_2; + } else if (anticlockwise && startAngle <= endAngle) { + startAngle += PI_2; + } + const sweep = endAngle - startAngle; + if (sweep === 0) { + return this; + } + const startX = cx + Math.cos(startAngle) * radius; + const startY = cy + Math.sin(startAngle) * radius; + const eps = this._geometry.closePointEps; + let points = this.currentPath ? this.currentPath.points : null; + if (points) { + const xDiff = Math.abs(points[points.length - 2] - startX); + const yDiff = Math.abs(points[points.length - 1] - startY); + if (xDiff < eps && yDiff < eps) { + } else { + points.push(startX, startY); + } + } else { + this.moveTo(startX, startY); + points = this.currentPath.points; + } + ArcUtils.arc(startX, startY, cx, cy, radius, startAngle, endAngle, anticlockwise, points); + return this; + } + beginFill(color = 0, alpha = 1) { + return this.beginTextureFill({ texture: Texture.WHITE, color, alpha }); + } + beginTextureFill(options) { + options = Object.assign({ + texture: Texture.WHITE, + color: 16777215, + alpha: 1, + matrix: null + }, options); + if (this.currentPath) { + this.startPoly(); + } + const visible = options.alpha > 0; + if (!visible) { + this._fillStyle.reset(); + } else { + if (options.matrix) { + options.matrix = options.matrix.clone(); + options.matrix.invert(); + } + Object.assign(this._fillStyle, { visible }, options); + } + return this; + } + endFill() { + this.finishPoly(); + this._fillStyle.reset(); + return this; + } + drawRect(x, y, width, height) { + return this.drawShape(new Rectangle(x, y, width, height)); + } + drawRoundedRect(x, y, width, height, radius) { + return this.drawShape(new RoundedRectangle(x, y, width, height, radius)); + } + drawCircle(x, y, radius) { + return this.drawShape(new Circle(x, y, radius)); + } + drawEllipse(x, y, width, height) { + return this.drawShape(new Ellipse(x, y, width, height)); + } + drawPolygon(...path) { + let points; + let closeStroke = true; + const poly = path[0]; + if (poly.points) { + closeStroke = poly.closeStroke; + points = poly.points; + } else if (Array.isArray(path[0])) { + points = path[0]; + } else { + points = path; + } + const shape = new Polygon(points); + shape.closeStroke = closeStroke; + this.drawShape(shape); + return this; + } + drawShape(shape) { + if (!this._holeMode) { + this._geometry.drawShape(shape, this._fillStyle.clone(), this._lineStyle.clone(), this._matrix); + } else { + this._geometry.drawHole(shape, this._matrix); + } + return this; + } + clear() { + this._geometry.clear(); + this._lineStyle.reset(); + this._fillStyle.reset(); + this._boundsID++; + this._matrix = null; + this._holeMode = false; + this.currentPath = null; + return this; + } + isFastRect() { + const data = this._geometry.graphicsData; + return data.length === 1 && data[0].shape.type === SHAPES.RECT && !data[0].matrix && !data[0].holes.length && !(data[0].lineStyle.visible && data[0].lineStyle.width); + } + _render(renderer) { + this.finishPoly(); + const geometry = this._geometry; + geometry.updateBatches(); + if (geometry.batchable) { + if (this.batchDirty !== geometry.batchDirty) { + this._populateBatches(); + } + this._renderBatched(renderer); + } else { + renderer.batch.flush(); + this._renderDirect(renderer); + } + } + _populateBatches() { + const geometry = this._geometry; + const blendMode = this.blendMode; + const len = geometry.batches.length; + this.batchTint = -1; + this._transformID = -1; + this.batchDirty = geometry.batchDirty; + this.batches.length = len; + this.vertexData = new Float32Array(geometry.points); + for (let i = 0; i < len; i++) { + const gI = geometry.batches[i]; + const color = gI.style.color; + const vertexData = new Float32Array(this.vertexData.buffer, gI.attribStart * 4 * 2, gI.attribSize * 2); + const uvs = new Float32Array(geometry.uvsFloat32.buffer, gI.attribStart * 4 * 2, gI.attribSize * 2); + const indices = new Uint16Array(geometry.indicesUint16.buffer, gI.start * 2, gI.size); + const batch = { + vertexData, + blendMode, + indices, + uvs, + _batchRGB: hex2rgb(color), + _tintRGB: color, + _texture: gI.style.texture, + alpha: gI.style.alpha, + worldAlpha: 1 + }; + this.batches[i] = batch; + } + } + _renderBatched(renderer) { + if (!this.batches.length) { + return; + } + renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]); + this.calculateVertices(); + this.calculateTints(); + for (let i = 0, l = this.batches.length; i < l; i++) { + const batch = this.batches[i]; + batch.worldAlpha = this.worldAlpha * batch.alpha; + renderer.plugins[this.pluginName].render(batch); + } + } + _renderDirect(renderer) { + const shader = this._resolveDirectShader(renderer); + const geometry = this._geometry; + const tint = this.tint; + const worldAlpha = this.worldAlpha; + const uniforms = shader.uniforms; + const drawCalls = geometry.drawCalls; + uniforms.translationMatrix = this.transform.worldTransform; + uniforms.tint[0] = (tint >> 16 & 255) / 255 * worldAlpha; + uniforms.tint[1] = (tint >> 8 & 255) / 255 * worldAlpha; + uniforms.tint[2] = (tint & 255) / 255 * worldAlpha; + uniforms.tint[3] = worldAlpha; + renderer.shader.bind(shader); + renderer.geometry.bind(geometry, shader); + renderer.state.set(this.state); + for (let i = 0, l = drawCalls.length; i < l; i++) { + this._renderDrawCallDirect(renderer, geometry.drawCalls[i]); + } + } + _renderDrawCallDirect(renderer, drawCall) { + const { texArray, type, size, start } = drawCall; + const groupTextureCount = texArray.count; + for (let j = 0; j < groupTextureCount; j++) { + renderer.texture.bind(texArray.elements[j], j); + } + renderer.geometry.draw(type, size, start); + } + _resolveDirectShader(renderer) { + let shader = this.shader; + const pluginName = this.pluginName; + if (!shader) { + if (!DEFAULT_SHADERS[pluginName]) { + const { MAX_TEXTURES } = renderer.plugins[pluginName]; + const sampleValues = new Int32Array(MAX_TEXTURES); + for (let i = 0; i < MAX_TEXTURES; i++) { + sampleValues[i] = i; + } + const uniforms = { + tint: new Float32Array([1, 1, 1, 1]), + translationMatrix: new Matrix(), + default: UniformGroup.from({ uSamplers: sampleValues }, true) + }; + const program = renderer.plugins[pluginName]._shader.program; + DEFAULT_SHADERS[pluginName] = new Shader(program, uniforms); + } + shader = DEFAULT_SHADERS[pluginName]; + } + return shader; + } + _calculateBounds() { + this.finishPoly(); + const geometry = this._geometry; + if (!geometry.graphicsData.length) { + return; + } + const { minX, minY, maxX, maxY } = geometry.bounds; + this._bounds.addFrame(this.transform, minX, minY, maxX, maxY); + } + containsPoint(point) { + this.worldTransform.applyInverse(point, _Graphics._TEMP_POINT); + return this._geometry.containsPoint(_Graphics._TEMP_POINT); + } + calculateTints() { + if (this.batchTint !== this.tint) { + this.batchTint = this.tint; + const tintRGB = hex2rgb(this.tint, temp); + for (let i = 0; i < this.batches.length; i++) { + const batch = this.batches[i]; + const batchTint = batch._batchRGB; + const r = tintRGB[0] * batchTint[0] * 255; + const g = tintRGB[1] * batchTint[1] * 255; + const b = tintRGB[2] * batchTint[2] * 255; + const color = (r << 16) + (g << 8) + (b | 0); + batch._tintRGB = (color >> 16) + (color & 65280) + ((color & 255) << 16); + } + } + } + calculateVertices() { + const wtID = this.transform._worldID; + if (this._transformID === wtID) { + return; + } + this._transformID = wtID; + const wt = this.transform.worldTransform; + const a = wt.a; + const b = wt.b; + const c = wt.c; + const d = wt.d; + const tx = wt.tx; + const ty = wt.ty; + const data = this._geometry.points; + const vertexData = this.vertexData; + let count = 0; + for (let i = 0; i < data.length; i += 2) { + const x = data[i]; + const y = data[i + 1]; + vertexData[count++] = a * x + c * y + tx; + vertexData[count++] = d * y + b * x + ty; + } + } + closePath() { + const currentPath = this.currentPath; + if (currentPath) { + currentPath.closeStroke = true; + this.finishPoly(); + } + return this; + } + setMatrix(matrix) { + this._matrix = matrix; + return this; + } + beginHole() { + this.finishPoly(); + this._holeMode = true; + return this; + } + endHole() { + this.finishPoly(); + this._holeMode = false; + return this; + } + destroy(options) { + this._geometry.refCount--; + if (this._geometry.refCount === 0) { + this._geometry.dispose(); + } + this._matrix = null; + this.currentPath = null; + this._lineStyle.destroy(); + this._lineStyle = null; + this._fillStyle.destroy(); + this._fillStyle = null; + this._geometry = null; + this.shader = null; + this.vertexData = null; + this.batches.length = 0; + this.batches = null; + super.destroy(options); + } + }; + let Graphics = _Graphics; + Graphics._TEMP_POINT = new Point(); + + const graphicsUtils = { + buildPoly, + buildCircle, + buildRectangle, + buildRoundedRectangle, + buildLine, + ArcUtils, + BezierUtils, + QuadraticUtils, + BatchPart, + FILL_COMMANDS, + BATCH_POOL, + DRAW_CALL_POOL + }; + + class MeshBatchUvs { + constructor(uvBuffer, uvMatrix) { + this.uvBuffer = uvBuffer; + this.uvMatrix = uvMatrix; + this.data = null; + this._bufferUpdateId = -1; + this._textureUpdateId = -1; + this._updateID = 0; + } + update(forceUpdate) { + if (!forceUpdate && this._bufferUpdateId === this.uvBuffer._updateID && this._textureUpdateId === this.uvMatrix._updateID) { + return; + } + this._bufferUpdateId = this.uvBuffer._updateID; + this._textureUpdateId = this.uvMatrix._updateID; + const data = this.uvBuffer.data; + if (!this.data || this.data.length !== data.length) { + this.data = new Float32Array(data.length); + } + this.uvMatrix.multiplyUvs(data, this.data); + this._updateID++; + } + } + + const tempPoint$1 = new Point(); + const tempPolygon = new Polygon(); + const _Mesh = class extends Container { + constructor(geometry, shader, state, drawMode = DRAW_MODES.TRIANGLES) { + super(); + this.geometry = geometry; + this.shader = shader; + this.state = state || State.for2d(); + this.drawMode = drawMode; + this.start = 0; + this.size = 0; + this.uvs = null; + this.indices = null; + this.vertexData = new Float32Array(1); + this.vertexDirty = -1; + this._transformID = -1; + this._roundPixels = settings.ROUND_PIXELS; + this.batchUvs = null; + } + get geometry() { + return this._geometry; + } + set geometry(value) { + if (this._geometry === value) { + return; + } + if (this._geometry) { + this._geometry.refCount--; + if (this._geometry.refCount === 0) { + this._geometry.dispose(); + } + } + this._geometry = value; + if (this._geometry) { + this._geometry.refCount++; + } + this.vertexDirty = -1; + } + get uvBuffer() { + return this.geometry.buffers[1]; + } + get verticesBuffer() { + return this.geometry.buffers[0]; + } + set material(value) { + this.shader = value; + } + get material() { + return this.shader; + } + set blendMode(value) { + this.state.blendMode = value; + } + get blendMode() { + return this.state.blendMode; + } + set roundPixels(value) { + if (this._roundPixels !== value) { + this._transformID = -1; + } + this._roundPixels = value; + } + get roundPixels() { + return this._roundPixels; + } + get tint() { + return "tint" in this.shader ? this.shader.tint : null; + } + set tint(value) { + this.shader.tint = value; + } + get texture() { + return "texture" in this.shader ? this.shader.texture : null; + } + set texture(value) { + this.shader.texture = value; + } + _render(renderer) { + const vertices = this.geometry.buffers[0].data; + const shader = this.shader; + if (shader.batchable && this.drawMode === DRAW_MODES.TRIANGLES && vertices.length < _Mesh.BATCHABLE_SIZE * 2) { + this._renderToBatch(renderer); + } else { + this._renderDefault(renderer); + } + } + _renderDefault(renderer) { + const shader = this.shader; + shader.alpha = this.worldAlpha; + if (shader.update) { + shader.update(); + } + renderer.batch.flush(); + shader.uniforms.translationMatrix = this.transform.worldTransform.toArray(true); + renderer.shader.bind(shader); + renderer.state.set(this.state); + renderer.geometry.bind(this.geometry, shader); + renderer.geometry.draw(this.drawMode, this.size, this.start, this.geometry.instanceCount); + } + _renderToBatch(renderer) { + const geometry = this.geometry; + const shader = this.shader; + if (shader.uvMatrix) { + shader.uvMatrix.update(); + this.calculateUvs(); + } + this.calculateVertices(); + this.indices = geometry.indexBuffer.data; + this._tintRGB = shader._tintRGB; + this._texture = shader.texture; + const pluginName = this.material.pluginName; + renderer.batch.setObjectRenderer(renderer.plugins[pluginName]); + renderer.plugins[pluginName].render(this); + } + calculateVertices() { + const geometry = this.geometry; + const verticesBuffer = geometry.buffers[0]; + const vertices = verticesBuffer.data; + const vertexDirtyId = verticesBuffer._updateID; + if (vertexDirtyId === this.vertexDirty && this._transformID === this.transform._worldID) { + return; + } + this._transformID = this.transform._worldID; + if (this.vertexData.length !== vertices.length) { + this.vertexData = new Float32Array(vertices.length); + } + const wt = this.transform.worldTransform; + const a = wt.a; + const b = wt.b; + const c = wt.c; + const d = wt.d; + const tx = wt.tx; + const ty = wt.ty; + const vertexData = this.vertexData; + for (let i = 0; i < vertexData.length / 2; i++) { + const x = vertices[i * 2]; + const y = vertices[i * 2 + 1]; + vertexData[i * 2] = a * x + c * y + tx; + vertexData[i * 2 + 1] = b * x + d * y + ty; + } + if (this._roundPixels) { + const resolution = settings.RESOLUTION; + for (let i = 0; i < vertexData.length; ++i) { + vertexData[i] = Math.round((vertexData[i] * resolution | 0) / resolution); + } + } + this.vertexDirty = vertexDirtyId; + } + calculateUvs() { + const geomUvs = this.geometry.buffers[1]; + const shader = this.shader; + if (!shader.uvMatrix.isSimple) { + if (!this.batchUvs) { + this.batchUvs = new MeshBatchUvs(geomUvs, shader.uvMatrix); + } + this.batchUvs.update(); + this.uvs = this.batchUvs.data; + } else { + this.uvs = geomUvs.data; + } + } + _calculateBounds() { + this.calculateVertices(); + this._bounds.addVertexData(this.vertexData, 0, this.vertexData.length); + } + containsPoint(point) { + if (!this.getBounds().contains(point.x, point.y)) { + return false; + } + this.worldTransform.applyInverse(point, tempPoint$1); + const vertices = this.geometry.getBuffer("aVertexPosition").data; + const points = tempPolygon.points; + const indices = this.geometry.getIndex().data; + const len = indices.length; + const step = this.drawMode === 4 ? 3 : 1; + for (let i = 0; i + 2 < len; i += step) { + const ind0 = indices[i] * 2; + const ind1 = indices[i + 1] * 2; + const ind2 = indices[i + 2] * 2; + points[0] = vertices[ind0]; + points[1] = vertices[ind0 + 1]; + points[2] = vertices[ind1]; + points[3] = vertices[ind1 + 1]; + points[4] = vertices[ind2]; + points[5] = vertices[ind2 + 1]; + if (tempPolygon.contains(tempPoint$1.x, tempPoint$1.y)) { + return true; + } + } + return false; + } + destroy(options) { + super.destroy(options); + if (this._cachedTexture) { + this._cachedTexture.destroy(); + this._cachedTexture = null; + } + this.geometry = null; + this.shader = null; + this.state = null; + this.uvs = null; + this.indices = null; + this.vertexData = null; + } + }; + let Mesh = _Mesh; + Mesh.BATCHABLE_SIZE = 100; + + var fragment$1 = "varying vec2 vTextureCoord;\nuniform vec4 uColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\n}\n"; + + var vertex$1 = "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTextureMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\n}\n"; + + class MeshMaterial extends Shader { + constructor(uSampler, options) { + const uniforms = { + uSampler, + alpha: 1, + uTextureMatrix: Matrix.IDENTITY, + uColor: new Float32Array([1, 1, 1, 1]) + }; + options = Object.assign({ + tint: 16777215, + alpha: 1, + pluginName: "batch" + }, options); + if (options.uniforms) { + Object.assign(uniforms, options.uniforms); + } + super(options.program || Program.from(vertex$1, fragment$1), uniforms); + this._colorDirty = false; + this.uvMatrix = new TextureMatrix(uSampler); + this.batchable = options.program === void 0; + this.pluginName = options.pluginName; + this.tint = options.tint; + this.alpha = options.alpha; + } + get texture() { + return this.uniforms.uSampler; + } + set texture(value) { + if (this.uniforms.uSampler !== value) { + if (!this.uniforms.uSampler.baseTexture.alphaMode !== !value.baseTexture.alphaMode) { + this._colorDirty = true; + } + this.uniforms.uSampler = value; + this.uvMatrix.texture = value; + } + } + set alpha(value) { + if (value === this._alpha) + return; + this._alpha = value; + this._colorDirty = true; + } + get alpha() { + return this._alpha; + } + set tint(value) { + if (value === this._tint) + return; + this._tint = value; + this._tintRGB = (value >> 16) + (value & 65280) + ((value & 255) << 16); + this._colorDirty = true; + } + get tint() { + return this._tint; + } + update() { + if (this._colorDirty) { + this._colorDirty = false; + const baseTexture = this.texture.baseTexture; + premultiplyTintToRgba(this._tint, this._alpha, this.uniforms.uColor, baseTexture.alphaMode); + } + if (this.uvMatrix.update()) { + this.uniforms.uTextureMatrix = this.uvMatrix.mapCoord; + } + } + } + + class MeshGeometry extends Geometry { + constructor(vertices, uvs, index) { + super(); + const verticesBuffer = new Buffer(vertices); + const uvsBuffer = new Buffer(uvs, true); + const indexBuffer = new Buffer(index, true, true); + this.addAttribute("aVertexPosition", verticesBuffer, 2, false, TYPES.FLOAT).addAttribute("aTextureCoord", uvsBuffer, 2, false, TYPES.FLOAT).addIndex(indexBuffer); + this._updateId = -1; + } + get vertexDirtyId() { + return this.buffers[0]._updateID; + } + } + + class PlaneGeometry extends MeshGeometry { + constructor(width = 100, height = 100, segWidth = 10, segHeight = 10) { + super(); + this.segWidth = segWidth; + this.segHeight = segHeight; + this.width = width; + this.height = height; + this.build(); + } + build() { + const total = this.segWidth * this.segHeight; + const verts = []; + const uvs = []; + const indices = []; + const segmentsX = this.segWidth - 1; + const segmentsY = this.segHeight - 1; + const sizeX = this.width / segmentsX; + const sizeY = this.height / segmentsY; + for (let i = 0; i < total; i++) { + const x = i % this.segWidth; + const y = i / this.segWidth | 0; + verts.push(x * sizeX, y * sizeY); + uvs.push(x / segmentsX, y / segmentsY); + } + const totalSub = segmentsX * segmentsY; + for (let i = 0; i < totalSub; i++) { + const xpos = i % segmentsX; + const ypos = i / segmentsX | 0; + const value = ypos * this.segWidth + xpos; + const value2 = ypos * this.segWidth + xpos + 1; + const value3 = (ypos + 1) * this.segWidth + xpos; + const value4 = (ypos + 1) * this.segWidth + xpos + 1; + indices.push(value, value2, value3, value2, value4, value3); + } + this.buffers[0].data = new Float32Array(verts); + this.buffers[1].data = new Float32Array(uvs); + this.indexBuffer.data = new Uint16Array(indices); + this.buffers[0].update(); + this.buffers[1].update(); + this.indexBuffer.update(); + } + } + + class RopeGeometry extends MeshGeometry { + constructor(width = 200, points, textureScale = 0) { + super(new Float32Array(points.length * 4), new Float32Array(points.length * 4), new Uint16Array((points.length - 1) * 6)); + this.points = points; + this._width = width; + this.textureScale = textureScale; + this.build(); + } + get width() { + return this._width; + } + build() { + const points = this.points; + if (!points) + return; + const vertexBuffer = this.getBuffer("aVertexPosition"); + const uvBuffer = this.getBuffer("aTextureCoord"); + const indexBuffer = this.getIndex(); + if (points.length < 1) { + return; + } + if (vertexBuffer.data.length / 4 !== points.length) { + vertexBuffer.data = new Float32Array(points.length * 4); + uvBuffer.data = new Float32Array(points.length * 4); + indexBuffer.data = new Uint16Array((points.length - 1) * 6); + } + const uvs = uvBuffer.data; + const indices = indexBuffer.data; + uvs[0] = 0; + uvs[1] = 0; + uvs[2] = 0; + uvs[3] = 1; + let amount = 0; + let prev = points[0]; + const textureWidth = this._width * this.textureScale; + const total = points.length; + for (let i = 0; i < total; i++) { + const index = i * 4; + if (this.textureScale > 0) { + const dx = prev.x - points[i].x; + const dy = prev.y - points[i].y; + const distance = Math.sqrt(dx * dx + dy * dy); + prev = points[i]; + amount += distance / textureWidth; + } else { + amount = i / (total - 1); + } + uvs[index] = amount; + uvs[index + 1] = 0; + uvs[index + 2] = amount; + uvs[index + 3] = 1; + } + let indexCount = 0; + for (let i = 0; i < total - 1; i++) { + const index = i * 2; + indices[indexCount++] = index; + indices[indexCount++] = index + 1; + indices[indexCount++] = index + 2; + indices[indexCount++] = index + 2; + indices[indexCount++] = index + 1; + indices[indexCount++] = index + 3; + } + uvBuffer.update(); + indexBuffer.update(); + this.updateVertices(); + } + updateVertices() { + const points = this.points; + if (points.length < 1) { + return; + } + let lastPoint = points[0]; + let nextPoint; + let perpX = 0; + let perpY = 0; + const vertices = this.buffers[0].data; + const total = points.length; + for (let i = 0; i < total; i++) { + const point = points[i]; + const index = i * 4; + if (i < points.length - 1) { + nextPoint = points[i + 1]; + } else { + nextPoint = point; + } + perpY = -(nextPoint.x - lastPoint.x); + perpX = nextPoint.y - lastPoint.y; + let ratio = (1 - i / (total - 1)) * 10; + if (ratio > 1) { + ratio = 1; + } + const perpLength = Math.sqrt(perpX * perpX + perpY * perpY); + const num = this.textureScale > 0 ? this.textureScale * this._width / 2 : this._width / 2; + perpX /= perpLength; + perpY /= perpLength; + perpX *= num; + perpY *= num; + vertices[index] = point.x + perpX; + vertices[index + 1] = point.y + perpY; + vertices[index + 2] = point.x - perpX; + vertices[index + 3] = point.y - perpY; + lastPoint = point; + } + this.buffers[0].update(); + } + update() { + if (this.textureScale > 0) { + this.build(); + } else { + this.updateVertices(); + } + } + } + + class SimpleRope extends Mesh { + constructor(texture, points, textureScale = 0) { + const ropeGeometry = new RopeGeometry(texture.height, points, textureScale); + const meshMaterial = new MeshMaterial(texture); + if (textureScale > 0) { + texture.baseTexture.wrapMode = WRAP_MODES.REPEAT; + } + super(ropeGeometry, meshMaterial); + this.autoUpdate = true; + } + _render(renderer) { + const geometry = this.geometry; + if (this.autoUpdate || geometry._width !== this.shader.texture.height) { + geometry._width = this.shader.texture.height; + geometry.update(); + } + super._render(renderer); + } + } + + class SimplePlane extends Mesh { + constructor(texture, verticesX, verticesY) { + const planeGeometry = new PlaneGeometry(texture.width, texture.height, verticesX, verticesY); + const meshMaterial = new MeshMaterial(Texture.WHITE); + super(planeGeometry, meshMaterial); + this.texture = texture; + this.autoResize = true; + } + textureUpdated() { + this._textureID = this.shader.texture._updateID; + const geometry = this.geometry; + const { width, height } = this.shader.texture; + if (this.autoResize && (geometry.width !== width || geometry.height !== height)) { + geometry.width = this.shader.texture.width; + geometry.height = this.shader.texture.height; + geometry.build(); + } + } + set texture(value) { + if (this.shader.texture === value) { + return; + } + this.shader.texture = value; + this._textureID = -1; + if (value.baseTexture.valid) { + this.textureUpdated(); + } else { + value.once("update", this.textureUpdated, this); + } + } + get texture() { + return this.shader.texture; + } + _render(renderer) { + if (this._textureID !== this.shader.texture._updateID) { + this.textureUpdated(); + } + super._render(renderer); + } + destroy(options) { + this.shader.texture.off("update", this.textureUpdated, this); + super.destroy(options); + } + } + + class SimpleMesh extends Mesh { + constructor(texture = Texture.EMPTY, vertices, uvs, indices, drawMode) { + const geometry = new MeshGeometry(vertices, uvs, indices); + geometry.getBuffer("aVertexPosition").static = false; + const meshMaterial = new MeshMaterial(texture); + super(geometry, meshMaterial, null, drawMode); + this.autoUpdate = true; + } + get vertices() { + return this.geometry.getBuffer("aVertexPosition").data; + } + set vertices(value) { + this.geometry.getBuffer("aVertexPosition").data = value; + } + _render(renderer) { + if (this.autoUpdate) { + this.geometry.getBuffer("aVertexPosition").update(); + } + super._render(renderer); + } + } + + const DEFAULT_BORDER_SIZE = 10; + class NineSlicePlane extends SimplePlane { + constructor(texture, leftWidth = DEFAULT_BORDER_SIZE, topHeight = DEFAULT_BORDER_SIZE, rightWidth = DEFAULT_BORDER_SIZE, bottomHeight = DEFAULT_BORDER_SIZE) { + super(Texture.WHITE, 4, 4); + this._origWidth = texture.orig.width; + this._origHeight = texture.orig.height; + this._width = this._origWidth; + this._height = this._origHeight; + this._leftWidth = leftWidth; + this._rightWidth = rightWidth; + this._topHeight = topHeight; + this._bottomHeight = bottomHeight; + this.texture = texture; + } + textureUpdated() { + this._textureID = this.shader.texture._updateID; + this._refresh(); + } + get vertices() { + return this.geometry.getBuffer("aVertexPosition").data; + } + set vertices(value) { + this.geometry.getBuffer("aVertexPosition").data = value; + } + updateHorizontalVertices() { + const vertices = this.vertices; + const scale = this._getMinScale(); + vertices[9] = vertices[11] = vertices[13] = vertices[15] = this._topHeight * scale; + vertices[17] = vertices[19] = vertices[21] = vertices[23] = this._height - this._bottomHeight * scale; + vertices[25] = vertices[27] = vertices[29] = vertices[31] = this._height; + } + updateVerticalVertices() { + const vertices = this.vertices; + const scale = this._getMinScale(); + vertices[2] = vertices[10] = vertices[18] = vertices[26] = this._leftWidth * scale; + vertices[4] = vertices[12] = vertices[20] = vertices[28] = this._width - this._rightWidth * scale; + vertices[6] = vertices[14] = vertices[22] = vertices[30] = this._width; + } + _getMinScale() { + const w = this._leftWidth + this._rightWidth; + const scaleW = this._width > w ? 1 : this._width / w; + const h = this._topHeight + this._bottomHeight; + const scaleH = this._height > h ? 1 : this._height / h; + const scale = Math.min(scaleW, scaleH); + return scale; + } + get width() { + return this._width; + } + set width(value) { + this._width = value; + this._refresh(); + } + get height() { + return this._height; + } + set height(value) { + this._height = value; + this._refresh(); + } + get leftWidth() { + return this._leftWidth; + } + set leftWidth(value) { + this._leftWidth = value; + this._refresh(); + } + get rightWidth() { + return this._rightWidth; + } + set rightWidth(value) { + this._rightWidth = value; + this._refresh(); + } + get topHeight() { + return this._topHeight; + } + set topHeight(value) { + this._topHeight = value; + this._refresh(); + } + get bottomHeight() { + return this._bottomHeight; + } + set bottomHeight(value) { + this._bottomHeight = value; + this._refresh(); + } + _refresh() { + const texture = this.texture; + const uvs = this.geometry.buffers[1].data; + this._origWidth = texture.orig.width; + this._origHeight = texture.orig.height; + const _uvw = 1 / this._origWidth; + const _uvh = 1 / this._origHeight; + 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; + uvs[2] = uvs[10] = uvs[18] = uvs[26] = _uvw * this._leftWidth; + uvs[4] = uvs[12] = uvs[20] = uvs[28] = 1 - _uvw * this._rightWidth; + uvs[9] = uvs[11] = uvs[13] = uvs[15] = _uvh * this._topHeight; + uvs[17] = uvs[19] = uvs[21] = uvs[23] = 1 - _uvh * this._bottomHeight; + this.updateHorizontalVertices(); + this.updateVerticalVertices(); + this.geometry.buffers[0].update(); + this.geometry.buffers[1].update(); + } + } + + class ParticleContainer extends Container { + constructor(maxSize = 1500, properties, batchSize = 16384, autoResize = false) { + super(); + const maxBatchSize = 16384; + if (batchSize > maxBatchSize) { + batchSize = maxBatchSize; + } + this._properties = [false, true, false, false, false]; + this._maxSize = maxSize; + this._batchSize = batchSize; + this._buffers = null; + this._bufferUpdateIDs = []; + this._updateID = 0; + this.interactiveChildren = false; + this.blendMode = BLEND_MODES.NORMAL; + this.autoResize = autoResize; + this.roundPixels = true; + this.baseTexture = null; + this.setProperties(properties); + this._tint = 0; + this.tintRgb = new Float32Array(4); + this.tint = 16777215; + } + setProperties(properties) { + if (properties) { + this._properties[0] = "vertices" in properties || "scale" in properties ? !!properties.vertices || !!properties.scale : this._properties[0]; + this._properties[1] = "position" in properties ? !!properties.position : this._properties[1]; + this._properties[2] = "rotation" in properties ? !!properties.rotation : this._properties[2]; + this._properties[3] = "uvs" in properties ? !!properties.uvs : this._properties[3]; + this._properties[4] = "tint" in properties || "alpha" in properties ? !!properties.tint || !!properties.alpha : this._properties[4]; + } + } + updateTransform() { + this.displayObjectUpdateTransform(); + } + get tint() { + return this._tint; + } + set tint(value) { + this._tint = value; + hex2rgb(value, this.tintRgb); + } + render(renderer) { + if (!this.visible || this.worldAlpha <= 0 || !this.children.length || !this.renderable) { + return; + } + if (!this.baseTexture) { + this.baseTexture = this.children[0]._texture.baseTexture; + if (!this.baseTexture.valid) { + this.baseTexture.once("update", () => this.onChildrenChange(0)); + } + } + renderer.batch.setObjectRenderer(renderer.plugins.particle); + renderer.plugins.particle.render(this); + } + onChildrenChange(smallestChildIndex) { + const bufferIndex = Math.floor(smallestChildIndex / this._batchSize); + while (this._bufferUpdateIDs.length < bufferIndex) { + this._bufferUpdateIDs.push(0); + } + this._bufferUpdateIDs[bufferIndex] = ++this._updateID; + } + dispose() { + if (this._buffers) { + for (let i = 0; i < this._buffers.length; ++i) { + this._buffers[i].destroy(); + } + this._buffers = null; + } + } + destroy(options) { + super.destroy(options); + this.dispose(); + this._properties = null; + this._buffers = null; + this._bufferUpdateIDs = null; + } + } + + class ParticleBuffer { + constructor(properties, dynamicPropertyFlags, size) { + this.geometry = new Geometry(); + this.indexBuffer = null; + this.size = size; + this.dynamicProperties = []; + this.staticProperties = []; + for (let i = 0; i < properties.length; ++i) { + let property = properties[i]; + property = { + attributeName: property.attributeName, + size: property.size, + uploadFunction: property.uploadFunction, + type: property.type || TYPES.FLOAT, + offset: property.offset + }; + if (dynamicPropertyFlags[i]) { + this.dynamicProperties.push(property); + } else { + this.staticProperties.push(property); + } + } + this.staticStride = 0; + this.staticBuffer = null; + this.staticData = null; + this.staticDataUint32 = null; + this.dynamicStride = 0; + this.dynamicBuffer = null; + this.dynamicData = null; + this.dynamicDataUint32 = null; + this._updateID = 0; + this.initBuffers(); + } + initBuffers() { + const geometry = this.geometry; + let dynamicOffset = 0; + this.indexBuffer = new Buffer(createIndicesForQuads(this.size), true, true); + geometry.addIndex(this.indexBuffer); + this.dynamicStride = 0; + for (let i = 0; i < this.dynamicProperties.length; ++i) { + const property = this.dynamicProperties[i]; + property.offset = dynamicOffset; + dynamicOffset += property.size; + this.dynamicStride += property.size; + } + const dynBuffer = new ArrayBuffer(this.size * this.dynamicStride * 4 * 4); + this.dynamicData = new Float32Array(dynBuffer); + this.dynamicDataUint32 = new Uint32Array(dynBuffer); + this.dynamicBuffer = new Buffer(this.dynamicData, false, false); + let staticOffset = 0; + this.staticStride = 0; + for (let i = 0; i < this.staticProperties.length; ++i) { + const property = this.staticProperties[i]; + property.offset = staticOffset; + staticOffset += property.size; + this.staticStride += property.size; + } + const statBuffer = new ArrayBuffer(this.size * this.staticStride * 4 * 4); + this.staticData = new Float32Array(statBuffer); + this.staticDataUint32 = new Uint32Array(statBuffer); + this.staticBuffer = new Buffer(this.staticData, true, false); + for (let i = 0; i < this.dynamicProperties.length; ++i) { + const property = this.dynamicProperties[i]; + geometry.addAttribute(property.attributeName, this.dynamicBuffer, 0, property.type === TYPES.UNSIGNED_BYTE, property.type, this.dynamicStride * 4, property.offset * 4); + } + for (let i = 0; i < this.staticProperties.length; ++i) { + const property = this.staticProperties[i]; + geometry.addAttribute(property.attributeName, this.staticBuffer, 0, property.type === TYPES.UNSIGNED_BYTE, property.type, this.staticStride * 4, property.offset * 4); + } + } + uploadDynamic(children, startIndex, amount) { + for (let i = 0; i < this.dynamicProperties.length; i++) { + const property = this.dynamicProperties[i]; + property.uploadFunction(children, startIndex, amount, property.type === TYPES.UNSIGNED_BYTE ? this.dynamicDataUint32 : this.dynamicData, this.dynamicStride, property.offset); + } + this.dynamicBuffer._updateID++; + } + uploadStatic(children, startIndex, amount) { + for (let i = 0; i < this.staticProperties.length; i++) { + const property = this.staticProperties[i]; + property.uploadFunction(children, startIndex, amount, property.type === TYPES.UNSIGNED_BYTE ? this.staticDataUint32 : this.staticData, this.staticStride, property.offset); + } + this.staticBuffer._updateID++; + } + destroy() { + this.indexBuffer = null; + this.dynamicProperties = null; + this.dynamicBuffer = null; + this.dynamicData = null; + this.dynamicDataUint32 = null; + this.staticProperties = null; + this.staticBuffer = null; + this.staticData = null; + this.staticDataUint32 = null; + this.geometry.destroy(); + } + } + + var fragment = "varying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n vec4 color = texture2D(uSampler, vTextureCoord) * vColor;\n gl_FragColor = color;\n}"; + + var vertex = "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nattribute vec2 aPositionCoord;\nattribute float aRotation;\n\nuniform mat3 translationMatrix;\nuniform vec4 uColor;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nvoid main(void){\n float x = (aVertexPosition.x) * cos(aRotation) - (aVertexPosition.y) * sin(aRotation);\n float y = (aVertexPosition.x) * sin(aRotation) + (aVertexPosition.y) * cos(aRotation);\n\n vec2 v = vec2(x, y);\n v = v + aPositionCoord;\n\n gl_Position = vec4((translationMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = aTextureCoord;\n vColor = aColor * uColor;\n}\n"; + + class ParticleRenderer extends ObjectRenderer { + constructor(renderer) { + super(renderer); + this.shader = null; + this.properties = null; + this.tempMatrix = new Matrix(); + this.properties = [ + { + attributeName: "aVertexPosition", + size: 2, + uploadFunction: this.uploadVertices, + offset: 0 + }, + { + attributeName: "aPositionCoord", + size: 2, + uploadFunction: this.uploadPosition, + offset: 0 + }, + { + attributeName: "aRotation", + size: 1, + uploadFunction: this.uploadRotation, + offset: 0 + }, + { + attributeName: "aTextureCoord", + size: 2, + uploadFunction: this.uploadUvs, + offset: 0 + }, + { + attributeName: "aColor", + size: 1, + type: TYPES.UNSIGNED_BYTE, + uploadFunction: this.uploadTint, + offset: 0 + } + ]; + this.shader = Shader.from(vertex, fragment, {}); + this.state = State.for2d(); + } + render(container) { + const children = container.children; + const maxSize = container._maxSize; + const batchSize = container._batchSize; + const renderer = this.renderer; + let totalChildren = children.length; + if (totalChildren === 0) { + return; + } else if (totalChildren > maxSize && !container.autoResize) { + totalChildren = maxSize; + } + let buffers = container._buffers; + if (!buffers) { + buffers = container._buffers = this.generateBuffers(container); + } + const baseTexture = children[0]._texture.baseTexture; + const premultiplied = baseTexture.alphaMode > 0; + this.state.blendMode = correctBlendMode(container.blendMode, premultiplied); + renderer.state.set(this.state); + const gl = renderer.gl; + const m = container.worldTransform.copyTo(this.tempMatrix); + m.prepend(renderer.globalUniforms.uniforms.projectionMatrix); + this.shader.uniforms.translationMatrix = m.toArray(true); + this.shader.uniforms.uColor = premultiplyRgba(container.tintRgb, container.worldAlpha, this.shader.uniforms.uColor, premultiplied); + this.shader.uniforms.uSampler = baseTexture; + this.renderer.shader.bind(this.shader); + let updateStatic = false; + for (let i = 0, j = 0; i < totalChildren; i += batchSize, j += 1) { + let amount = totalChildren - i; + if (amount > batchSize) { + amount = batchSize; + } + if (j >= buffers.length) { + buffers.push(this._generateOneMoreBuffer(container)); + } + const buffer = buffers[j]; + buffer.uploadDynamic(children, i, amount); + const bid = container._bufferUpdateIDs[j] || 0; + updateStatic = updateStatic || buffer._updateID < bid; + if (updateStatic) { + buffer._updateID = container._updateID; + buffer.uploadStatic(children, i, amount); + } + renderer.geometry.bind(buffer.geometry); + gl.drawElements(gl.TRIANGLES, amount * 6, gl.UNSIGNED_SHORT, 0); + } + } + generateBuffers(container) { + const buffers = []; + const size = container._maxSize; + const batchSize = container._batchSize; + const dynamicPropertyFlags = container._properties; + for (let i = 0; i < size; i += batchSize) { + buffers.push(new ParticleBuffer(this.properties, dynamicPropertyFlags, batchSize)); + } + return buffers; + } + _generateOneMoreBuffer(container) { + const batchSize = container._batchSize; + const dynamicPropertyFlags = container._properties; + return new ParticleBuffer(this.properties, dynamicPropertyFlags, batchSize); + } + uploadVertices(children, startIndex, amount, array, stride, offset) { + let w0 = 0; + let w1 = 0; + let h0 = 0; + let h1 = 0; + for (let i = 0; i < amount; ++i) { + const sprite = children[startIndex + i]; + const texture = sprite._texture; + const sx = sprite.scale.x; + const sy = sprite.scale.y; + const trim = texture.trim; + const orig = texture.orig; + if (trim) { + w1 = trim.x - sprite.anchor.x * orig.width; + w0 = w1 + trim.width; + h1 = trim.y - sprite.anchor.y * orig.height; + h0 = h1 + trim.height; + } else { + w0 = orig.width * (1 - sprite.anchor.x); + w1 = orig.width * -sprite.anchor.x; + h0 = orig.height * (1 - sprite.anchor.y); + h1 = orig.height * -sprite.anchor.y; + } + array[offset] = w1 * sx; + array[offset + 1] = h1 * sy; + array[offset + stride] = w0 * sx; + array[offset + stride + 1] = h1 * sy; + array[offset + stride * 2] = w0 * sx; + array[offset + stride * 2 + 1] = h0 * sy; + array[offset + stride * 3] = w1 * sx; + array[offset + stride * 3 + 1] = h0 * sy; + offset += stride * 4; + } + } + uploadPosition(children, startIndex, amount, array, stride, offset) { + for (let i = 0; i < amount; i++) { + const spritePosition = children[startIndex + i].position; + array[offset] = spritePosition.x; + array[offset + 1] = spritePosition.y; + array[offset + stride] = spritePosition.x; + array[offset + stride + 1] = spritePosition.y; + array[offset + stride * 2] = spritePosition.x; + array[offset + stride * 2 + 1] = spritePosition.y; + array[offset + stride * 3] = spritePosition.x; + array[offset + stride * 3 + 1] = spritePosition.y; + offset += stride * 4; + } + } + uploadRotation(children, startIndex, amount, array, stride, offset) { + for (let i = 0; i < amount; i++) { + const spriteRotation = children[startIndex + i].rotation; + array[offset] = spriteRotation; + array[offset + stride] = spriteRotation; + array[offset + stride * 2] = spriteRotation; + array[offset + stride * 3] = spriteRotation; + offset += stride * 4; + } + } + uploadUvs(children, startIndex, amount, array, stride, offset) { + for (let i = 0; i < amount; ++i) { + const textureUvs = children[startIndex + i]._texture._uvs; + if (textureUvs) { + array[offset] = textureUvs.x0; + array[offset + 1] = textureUvs.y0; + array[offset + stride] = textureUvs.x1; + array[offset + stride + 1] = textureUvs.y1; + array[offset + stride * 2] = textureUvs.x2; + array[offset + stride * 2 + 1] = textureUvs.y2; + array[offset + stride * 3] = textureUvs.x3; + array[offset + stride * 3 + 1] = textureUvs.y3; + offset += stride * 4; + } else { + array[offset] = 0; + array[offset + 1] = 0; + array[offset + stride] = 0; + array[offset + stride + 1] = 0; + array[offset + stride * 2] = 0; + array[offset + stride * 2 + 1] = 0; + array[offset + stride * 3] = 0; + array[offset + stride * 3 + 1] = 0; + offset += stride * 4; + } + } + } + uploadTint(children, startIndex, amount, array, stride, offset) { + for (let i = 0; i < amount; ++i) { + const sprite = children[startIndex + i]; + const premultiplied = sprite._texture.baseTexture.alphaMode > 0; + const alpha = sprite.alpha; + const argb = alpha < 1 && premultiplied ? premultiplyTint(sprite._tintRGB, alpha) : sprite._tintRGB + (alpha * 255 << 24); + array[offset] = argb; + array[offset + stride] = argb; + array[offset + stride * 2] = argb; + array[offset + stride * 3] = argb; + offset += stride * 4; + } + } + destroy() { + super.destroy(); + if (this.shader) { + this.shader.destroy(); + this.shader = null; + } + this.tempMatrix = null; + } + } + ParticleRenderer.extension = { + name: "particle", + type: ExtensionType.RendererPlugin + }; + extensions$1.add(ParticleRenderer); + + settings.UPLOADS_PER_FRAME = 4; + + var TEXT_GRADIENT = /* @__PURE__ */ ((TEXT_GRADIENT2) => { + TEXT_GRADIENT2[TEXT_GRADIENT2["LINEAR_VERTICAL"] = 0] = "LINEAR_VERTICAL"; + TEXT_GRADIENT2[TEXT_GRADIENT2["LINEAR_HORIZONTAL"] = 1] = "LINEAR_HORIZONTAL"; + return TEXT_GRADIENT2; + })(TEXT_GRADIENT || {}); + + const defaultStyle = { + align: "left", + breakWords: false, + dropShadow: false, + dropShadowAlpha: 1, + dropShadowAngle: Math.PI / 6, + dropShadowBlur: 0, + dropShadowColor: "black", + dropShadowDistance: 5, + fill: "black", + fillGradientType: TEXT_GRADIENT.LINEAR_VERTICAL, + fillGradientStops: [], + fontFamily: "Arial", + fontSize: 26, + fontStyle: "normal", + fontVariant: "normal", + fontWeight: "normal", + letterSpacing: 0, + lineHeight: 0, + lineJoin: "miter", + miterLimit: 10, + padding: 0, + stroke: "black", + strokeThickness: 0, + textBaseline: "alphabetic", + trim: false, + whiteSpace: "pre", + wordWrap: false, + wordWrapWidth: 100, + leading: 0 + }; + const genericFontFamilies = [ + "serif", + "sans-serif", + "monospace", + "cursive", + "fantasy", + "system-ui" + ]; + class TextStyle { + constructor(style) { + this.styleID = 0; + this.reset(); + deepCopyProperties(this, style, style); + } + clone() { + const clonedProperties = {}; + deepCopyProperties(clonedProperties, this, defaultStyle); + return new TextStyle(clonedProperties); + } + reset() { + deepCopyProperties(this, defaultStyle, defaultStyle); + } + get align() { + return this._align; + } + set align(align) { + if (this._align !== align) { + this._align = align; + this.styleID++; + } + } + get breakWords() { + return this._breakWords; + } + set breakWords(breakWords) { + if (this._breakWords !== breakWords) { + this._breakWords = breakWords; + this.styleID++; + } + } + get dropShadow() { + return this._dropShadow; + } + set dropShadow(dropShadow) { + if (this._dropShadow !== dropShadow) { + this._dropShadow = dropShadow; + this.styleID++; + } + } + get dropShadowAlpha() { + return this._dropShadowAlpha; + } + set dropShadowAlpha(dropShadowAlpha) { + if (this._dropShadowAlpha !== dropShadowAlpha) { + this._dropShadowAlpha = dropShadowAlpha; + this.styleID++; + } + } + get dropShadowAngle() { + return this._dropShadowAngle; + } + set dropShadowAngle(dropShadowAngle) { + if (this._dropShadowAngle !== dropShadowAngle) { + this._dropShadowAngle = dropShadowAngle; + this.styleID++; + } + } + get dropShadowBlur() { + return this._dropShadowBlur; + } + set dropShadowBlur(dropShadowBlur) { + if (this._dropShadowBlur !== dropShadowBlur) { + this._dropShadowBlur = dropShadowBlur; + this.styleID++; + } + } + get dropShadowColor() { + return this._dropShadowColor; + } + set dropShadowColor(dropShadowColor) { + const outputColor = getColor(dropShadowColor); + if (this._dropShadowColor !== outputColor) { + this._dropShadowColor = outputColor; + this.styleID++; + } + } + get dropShadowDistance() { + return this._dropShadowDistance; + } + set dropShadowDistance(dropShadowDistance) { + if (this._dropShadowDistance !== dropShadowDistance) { + this._dropShadowDistance = dropShadowDistance; + this.styleID++; + } + } + get fill() { + return this._fill; + } + set fill(fill) { + const outputColor = getColor(fill); + if (this._fill !== outputColor) { + this._fill = outputColor; + this.styleID++; + } + } + get fillGradientType() { + return this._fillGradientType; + } + set fillGradientType(fillGradientType) { + if (this._fillGradientType !== fillGradientType) { + this._fillGradientType = fillGradientType; + this.styleID++; + } + } + get fillGradientStops() { + return this._fillGradientStops; + } + set fillGradientStops(fillGradientStops) { + if (!areArraysEqual(this._fillGradientStops, fillGradientStops)) { + this._fillGradientStops = fillGradientStops; + this.styleID++; + } + } + get fontFamily() { + return this._fontFamily; + } + set fontFamily(fontFamily) { + if (this.fontFamily !== fontFamily) { + this._fontFamily = fontFamily; + this.styleID++; + } + } + get fontSize() { + return this._fontSize; + } + set fontSize(fontSize) { + if (this._fontSize !== fontSize) { + this._fontSize = fontSize; + this.styleID++; + } + } + get fontStyle() { + return this._fontStyle; + } + set fontStyle(fontStyle) { + if (this._fontStyle !== fontStyle) { + this._fontStyle = fontStyle; + this.styleID++; + } + } + get fontVariant() { + return this._fontVariant; + } + set fontVariant(fontVariant) { + if (this._fontVariant !== fontVariant) { + this._fontVariant = fontVariant; + this.styleID++; + } + } + get fontWeight() { + return this._fontWeight; + } + set fontWeight(fontWeight) { + if (this._fontWeight !== fontWeight) { + this._fontWeight = fontWeight; + this.styleID++; + } + } + get letterSpacing() { + return this._letterSpacing; + } + set letterSpacing(letterSpacing) { + if (this._letterSpacing !== letterSpacing) { + this._letterSpacing = letterSpacing; + this.styleID++; + } + } + get lineHeight() { + return this._lineHeight; + } + set lineHeight(lineHeight) { + if (this._lineHeight !== lineHeight) { + this._lineHeight = lineHeight; + this.styleID++; + } + } + get leading() { + return this._leading; + } + set leading(leading) { + if (this._leading !== leading) { + this._leading = leading; + this.styleID++; + } + } + get lineJoin() { + return this._lineJoin; + } + set lineJoin(lineJoin) { + if (this._lineJoin !== lineJoin) { + this._lineJoin = lineJoin; + this.styleID++; + } + } + get miterLimit() { + return this._miterLimit; + } + set miterLimit(miterLimit) { + if (this._miterLimit !== miterLimit) { + this._miterLimit = miterLimit; + this.styleID++; + } + } + get padding() { + return this._padding; + } + set padding(padding) { + if (this._padding !== padding) { + this._padding = padding; + this.styleID++; + } + } + get stroke() { + return this._stroke; + } + set stroke(stroke) { + const outputColor = getColor(stroke); + if (this._stroke !== outputColor) { + this._stroke = outputColor; + this.styleID++; + } + } + get strokeThickness() { + return this._strokeThickness; + } + set strokeThickness(strokeThickness) { + if (this._strokeThickness !== strokeThickness) { + this._strokeThickness = strokeThickness; + this.styleID++; + } + } + get textBaseline() { + return this._textBaseline; + } + set textBaseline(textBaseline) { + if (this._textBaseline !== textBaseline) { + this._textBaseline = textBaseline; + this.styleID++; + } + } + get trim() { + return this._trim; + } + set trim(trim) { + if (this._trim !== trim) { + this._trim = trim; + this.styleID++; + } + } + get whiteSpace() { + return this._whiteSpace; + } + set whiteSpace(whiteSpace) { + if (this._whiteSpace !== whiteSpace) { + this._whiteSpace = whiteSpace; + this.styleID++; + } + } + get wordWrap() { + return this._wordWrap; + } + set wordWrap(wordWrap) { + if (this._wordWrap !== wordWrap) { + this._wordWrap = wordWrap; + this.styleID++; + } + } + get wordWrapWidth() { + return this._wordWrapWidth; + } + set wordWrapWidth(wordWrapWidth) { + if (this._wordWrapWidth !== wordWrapWidth) { + this._wordWrapWidth = wordWrapWidth; + this.styleID++; + } + } + toFontString() { + const fontSizeString = typeof this.fontSize === "number" ? `${this.fontSize}px` : this.fontSize; + let fontFamilies = this.fontFamily; + if (!Array.isArray(this.fontFamily)) { + fontFamilies = this.fontFamily.split(","); + } + for (let i = fontFamilies.length - 1; i >= 0; i--) { + let fontFamily = fontFamilies[i].trim(); + if (!/([\"\'])[^\'\"]+\1/.test(fontFamily) && !genericFontFamilies.includes(fontFamily)) { + fontFamily = `"${fontFamily}"`; + } + fontFamilies[i] = fontFamily; + } + return `${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${fontSizeString} ${fontFamilies.join(",")}`; + } + } + function getSingleColor(color) { + if (typeof color === "number") { + return hex2string(color); + } else if (typeof color === "string") { + if (color.startsWith("0x")) { + color = color.replace("0x", "#"); + } + } + return color; + } + function getColor(color) { + if (!Array.isArray(color)) { + return getSingleColor(color); + } else { + for (let i = 0; i < color.length; ++i) { + color[i] = getSingleColor(color[i]); + } + return color; + } + } + function areArraysEqual(array1, array2) { + if (!Array.isArray(array1) || !Array.isArray(array2)) { + return false; + } + if (array1.length !== array2.length) { + return false; + } + for (let i = 0; i < array1.length; ++i) { + if (array1[i] !== array2[i]) { + return false; + } + } + return true; + } + function deepCopyProperties(target, source, propertyObj) { + for (const prop in propertyObj) { + if (Array.isArray(source[prop])) { + target[prop] = source[prop].slice(); + } else { + target[prop] = source[prop]; + } + } + } + + const contextSettings = { + willReadFrequently: true + }; + class TextMetrics { + 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, wordWrap, canvas = TextMetrics._canvas) { + wordWrap = wordWrap === void 0 || wordWrap === null ? style.wordWrap : wordWrap; + const font = style.toFontString(); + const fontProperties = TextMetrics.measureFont(font); + if (fontProperties.fontSize === 0) { + fontProperties.fontSize = style.fontSize; + fontProperties.ascent = style.fontSize; + } + const context = canvas.getContext("2d", contextSettings); + context.font = font; + const outputText = wordWrap ? TextMetrics.wordWrap(text, style, canvas) : text; + const lines = outputText.split(/(?:\r\n|\r|\n)/); + const lineWidths = new Array(lines.length); + let maxLineWidth = 0; + for (let i = 0; i < lines.length; i++) { + const lineWidth = context.measureText(lines[i]).width + (lines[i].length - 1) * style.letterSpacing; + lineWidths[i] = lineWidth; + maxLineWidth = Math.max(maxLineWidth, lineWidth); + } + let width = maxLineWidth + style.strokeThickness; + if (style.dropShadow) { + width += style.dropShadowDistance; + } + const lineHeight = style.lineHeight || fontProperties.fontSize + style.strokeThickness; + let height = Math.max(lineHeight, fontProperties.fontSize + style.strokeThickness) + (lines.length - 1) * (lineHeight + style.leading); + if (style.dropShadow) { + height += style.dropShadowDistance; + } + return new TextMetrics(text, style, width, height, lines, lineWidths, lineHeight + style.leading, maxLineWidth, fontProperties); + } + static wordWrap(text, style, canvas = TextMetrics._canvas) { + const context = canvas.getContext("2d", contextSettings); + let width = 0; + let line = ""; + let lines = ""; + const cache = /* @__PURE__ */ Object.create(null); + const { letterSpacing, whiteSpace } = style; + const collapseSpaces = TextMetrics.collapseSpaces(whiteSpace); + const collapseNewlines = TextMetrics.collapseNewlines(whiteSpace); + let canPrependSpaces = !collapseSpaces; + const wordWrapWidth = style.wordWrapWidth + letterSpacing; + const tokens = TextMetrics.tokenize(text); + for (let i = 0; i < tokens.length; i++) { + let token = tokens[i]; + if (TextMetrics.isNewline(token)) { + if (!collapseNewlines) { + lines += TextMetrics.addLine(line); + canPrependSpaces = !collapseSpaces; + line = ""; + width = 0; + continue; + } + token = " "; + } + if (collapseSpaces) { + const currIsBreakingSpace = TextMetrics.isBreakingSpace(token); + const lastIsBreakingSpace = TextMetrics.isBreakingSpace(line[line.length - 1]); + if (currIsBreakingSpace && lastIsBreakingSpace) { + continue; + } + } + const tokenWidth = TextMetrics.getFromCache(token, letterSpacing, cache, context); + if (tokenWidth > wordWrapWidth) { + if (line !== "") { + lines += TextMetrics.addLine(line); + line = ""; + width = 0; + } + if (TextMetrics.canBreakWords(token, style.breakWords)) { + const characters = TextMetrics.wordWrapSplit(token); + for (let j = 0; j < characters.length; j++) { + let char = characters[j]; + let k = 1; + while (characters[j + k]) { + const nextChar = characters[j + k]; + const lastChar = char[char.length - 1]; + if (!TextMetrics.canBreakChars(lastChar, nextChar, token, j, style.breakWords)) { + char += nextChar; + } else { + break; + } + k++; + } + j += char.length - 1; + const characterWidth = TextMetrics.getFromCache(char, letterSpacing, cache, context); + if (characterWidth + width > wordWrapWidth) { + lines += TextMetrics.addLine(line); + canPrependSpaces = false; + line = ""; + width = 0; + } + line += char; + width += characterWidth; + } + } else { + if (line.length > 0) { + lines += TextMetrics.addLine(line); + line = ""; + width = 0; + } + const isLastToken = i === tokens.length - 1; + lines += TextMetrics.addLine(token, !isLastToken); + canPrependSpaces = false; + line = ""; + width = 0; + } + } else { + if (tokenWidth + width > wordWrapWidth) { + canPrependSpaces = false; + lines += TextMetrics.addLine(line); + line = ""; + width = 0; + } + if (line.length > 0 || !TextMetrics.isBreakingSpace(token) || canPrependSpaces) { + line += token; + width += tokenWidth; + } + } + } + lines += TextMetrics.addLine(line, false); + return lines; + } + static addLine(line, newLine = true) { + line = TextMetrics.trimRight(line); + line = newLine ? `${line} +` : line; + return line; + } + static getFromCache(key, letterSpacing, cache, context) { + let width = cache[key]; + if (typeof width !== "number") { + const spacing = key.length * letterSpacing; + width = context.measureText(key).width + spacing; + cache[key] = width; + } + return width; + } + static collapseSpaces(whiteSpace) { + return whiteSpace === "normal" || whiteSpace === "pre-line"; + } + static collapseNewlines(whiteSpace) { + return whiteSpace === "normal"; + } + static trimRight(text) { + if (typeof text !== "string") { + return ""; + } + for (let i = text.length - 1; i >= 0; i--) { + const char = text[i]; + if (!TextMetrics.isBreakingSpace(char)) { + break; + } + text = text.slice(0, -1); + } + return text; + } + static isNewline(char) { + if (typeof char !== "string") { + return false; + } + return TextMetrics._newlines.includes(char.charCodeAt(0)); + } + static isBreakingSpace(char, _nextChar) { + if (typeof char !== "string") { + return false; + } + return TextMetrics._breakingSpaces.includes(char.charCodeAt(0)); + } + static tokenize(text) { + const tokens = []; + let token = ""; + if (typeof text !== "string") { + return tokens; + } + for (let i = 0; i < text.length; i++) { + const char = text[i]; + const nextChar = text[i + 1]; + if (TextMetrics.isBreakingSpace(char, nextChar) || TextMetrics.isNewline(char)) { + if (token !== "") { + tokens.push(token); + token = ""; + } + tokens.push(char); + continue; + } + token += char; + } + if (token !== "") { + tokens.push(token); + } + return tokens; + } + static canBreakWords(_token, breakWords) { + return breakWords; + } + static canBreakChars(_char, _nextChar, _token, _index, _breakWords) { + return true; + } + static wordWrapSplit(token) { + return token.split(""); + } + static measureFont(font) { + if (TextMetrics._fonts[font]) { + return TextMetrics._fonts[font]; + } + const properties = { + ascent: 0, + descent: 0, + fontSize: 0 + }; + const canvas = TextMetrics._canvas; + const context = TextMetrics._context; + context.font = font; + const metricsString = TextMetrics.METRICS_STRING + TextMetrics.BASELINE_SYMBOL; + const width = Math.ceil(context.measureText(metricsString).width); + let baseline = Math.ceil(context.measureText(TextMetrics.BASELINE_SYMBOL).width); + const height = Math.ceil(TextMetrics.HEIGHT_MULTIPLIER * baseline); + baseline = baseline * TextMetrics.BASELINE_MULTIPLIER | 0; + canvas.width = width; + canvas.height = height; + context.fillStyle = "#f00"; + context.fillRect(0, 0, width, height); + context.font = font; + context.textBaseline = "alphabetic"; + context.fillStyle = "#000"; + context.fillText(metricsString, 0, baseline); + const imagedata = context.getImageData(0, 0, width, height).data; + const pixels = imagedata.length; + const line = width * 4; + let i = 0; + let idx = 0; + let stop = false; + for (i = 0; i < baseline; ++i) { + for (let j = 0; j < line; j += 4) { + if (imagedata[idx + j] !== 255) { + stop = true; + break; + } + } + if (!stop) { + idx += line; + } else { + break; + } + } + properties.ascent = baseline - i; + idx = pixels - line; + stop = false; + for (i = height; i > baseline; --i) { + for (let j = 0; j < line; j += 4) { + if (imagedata[idx + j] !== 255) { + stop = true; + break; + } + } + if (!stop) { + idx -= line; + } else { + break; + } + } + properties.descent = i - baseline; + properties.fontSize = properties.ascent + properties.descent; + TextMetrics._fonts[font] = properties; + return properties; + } + static clearMetrics(font = "") { + if (font) { + delete TextMetrics._fonts[font]; + } else { + TextMetrics._fonts = {}; + } + } + static get _canvas() { + if (!TextMetrics.__canvas) { + let canvas; + try { + const c = new OffscreenCanvas(0, 0); + const context = c.getContext("2d", contextSettings); + if (context?.measureText) { + TextMetrics.__canvas = c; + return c; + } + canvas = settings.ADAPTER.createCanvas(); + } catch (ex) { + canvas = settings.ADAPTER.createCanvas(); + } + canvas.width = canvas.height = 10; + TextMetrics.__canvas = canvas; + } + return TextMetrics.__canvas; + } + static get _context() { + if (!TextMetrics.__context) { + TextMetrics.__context = TextMetrics._canvas.getContext("2d", contextSettings); + } + return TextMetrics.__context; + } + } + TextMetrics._fonts = {}; + TextMetrics.METRICS_STRING = "|\xC9q\xC5"; + TextMetrics.BASELINE_SYMBOL = "M"; + TextMetrics.BASELINE_MULTIPLIER = 1.4; + TextMetrics.HEIGHT_MULTIPLIER = 2; + TextMetrics._newlines = [ + 10, + 13 + ]; + TextMetrics._breakingSpaces = [ + 9, + 32, + 8192, + 8193, + 8194, + 8195, + 8196, + 8197, + 8198, + 8200, + 8201, + 8202, + 8287, + 12288 + ]; + + const defaultDestroyOptions = { + texture: true, + children: false, + baseTexture: true + }; + const _Text = class extends Sprite { + constructor(text, style, canvas) { + let ownCanvas = false; + if (!canvas) { + canvas = settings.ADAPTER.createCanvas(); + ownCanvas = true; + } + canvas.width = 3; + canvas.height = 3; + const texture = Texture.from(canvas); + texture.orig = new Rectangle(); + texture.trim = new Rectangle(); + super(texture); + this._ownCanvas = ownCanvas; + this.canvas = canvas; + this.context = canvas.getContext("2d", { + willReadFrequently: true + }); + this._resolution = settings.RESOLUTION; + this._autoResolution = true; + this._text = null; + this._style = null; + this._styleListener = null; + this._font = ""; + this.text = text; + this.style = style; + this.localStyleID = -1; + } + updateText(respectDirty) { + const style = this._style; + if (this.localStyleID !== style.styleID) { + this.dirty = true; + this.localStyleID = style.styleID; + } + if (!this.dirty && respectDirty) { + return; + } + this._font = this._style.toFontString(); + const context = this.context; + const measured = TextMetrics.measureText(this._text || " ", this._style, this._style.wordWrap, this.canvas); + const width = measured.width; + const height = measured.height; + const lines = measured.lines; + const lineHeight = measured.lineHeight; + const lineWidths = measured.lineWidths; + const maxLineWidth = measured.maxLineWidth; + const fontProperties = measured.fontProperties; + this.canvas.width = Math.ceil(Math.ceil(Math.max(1, width) + style.padding * 2) * this._resolution); + this.canvas.height = Math.ceil(Math.ceil(Math.max(1, height) + style.padding * 2) * this._resolution); + context.scale(this._resolution, this._resolution); + context.clearRect(0, 0, this.canvas.width, this.canvas.height); + context.font = this._font; + context.lineWidth = style.strokeThickness; + context.textBaseline = style.textBaseline; + context.lineJoin = style.lineJoin; + context.miterLimit = style.miterLimit; + let linePositionX; + let linePositionY; + const passesCount = style.dropShadow ? 2 : 1; + for (let i = 0; i < passesCount; ++i) { + const isShadowPass = style.dropShadow && i === 0; + const dsOffsetText = isShadowPass ? Math.ceil(Math.max(1, height) + style.padding * 2) : 0; + const dsOffsetShadow = dsOffsetText * this._resolution; + if (isShadowPass) { + context.fillStyle = "black"; + context.strokeStyle = "black"; + const dropShadowColor = style.dropShadowColor; + const rgb = hex2rgb(typeof dropShadowColor === "number" ? dropShadowColor : string2hex(dropShadowColor)); + const dropShadowBlur = style.dropShadowBlur * this._resolution; + const dropShadowDistance = style.dropShadowDistance * this._resolution; + context.shadowColor = `rgba(${rgb[0] * 255},${rgb[1] * 255},${rgb[2] * 255},${style.dropShadowAlpha})`; + context.shadowBlur = dropShadowBlur; + context.shadowOffsetX = Math.cos(style.dropShadowAngle) * dropShadowDistance; + context.shadowOffsetY = Math.sin(style.dropShadowAngle) * dropShadowDistance + dsOffsetShadow; + } else { + context.fillStyle = this._generateFillStyle(style, lines, measured); + context.strokeStyle = style.stroke; + context.shadowColor = "black"; + context.shadowBlur = 0; + context.shadowOffsetX = 0; + context.shadowOffsetY = 0; + } + let linePositionYShift = (lineHeight - fontProperties.fontSize) / 2; + if (lineHeight - fontProperties.fontSize < 0) { + linePositionYShift = 0; + } + for (let i2 = 0; i2 < lines.length; i2++) { + linePositionX = style.strokeThickness / 2; + linePositionY = style.strokeThickness / 2 + i2 * lineHeight + fontProperties.ascent + linePositionYShift; + if (style.align === "right") { + linePositionX += maxLineWidth - lineWidths[i2]; + } else if (style.align === "center") { + linePositionX += (maxLineWidth - lineWidths[i2]) / 2; + } + if (style.stroke && style.strokeThickness) { + this.drawLetterSpacing(lines[i2], linePositionX + style.padding, linePositionY + style.padding - dsOffsetText, true); + } + if (style.fill) { + this.drawLetterSpacing(lines[i2], linePositionX + style.padding, linePositionY + style.padding - dsOffsetText); + } + } + } + this.updateTexture(); + } + drawLetterSpacing(text, x, y, isStroke = false) { + const style = this._style; + const letterSpacing = style.letterSpacing; + const supportLetterSpacing = _Text.experimentalLetterSpacing && ("letterSpacing" in CanvasRenderingContext2D.prototype || "textLetterSpacing" in CanvasRenderingContext2D.prototype); + if (letterSpacing === 0 || supportLetterSpacing) { + if (supportLetterSpacing) { + this.context.letterSpacing = letterSpacing; + this.context.textLetterSpacing = letterSpacing; + } + if (isStroke) { + this.context.strokeText(text, x, y); + } else { + this.context.fillText(text, x, y); + } + return; + } + let currentPosition = x; + const stringArray = Array.from ? Array.from(text) : text.split(""); + let previousWidth = this.context.measureText(text).width; + let currentWidth = 0; + for (let i = 0; i < stringArray.length; ++i) { + const currentChar = stringArray[i]; + if (isStroke) { + this.context.strokeText(currentChar, currentPosition, y); + } else { + this.context.fillText(currentChar, currentPosition, y); + } + let textStr = ""; + for (let j = i + 1; j < stringArray.length; ++j) { + textStr += stringArray[j]; + } + currentWidth = this.context.measureText(textStr).width; + currentPosition += previousWidth - currentWidth + letterSpacing; + previousWidth = currentWidth; + } + } + updateTexture() { + const canvas = this.canvas; + if (this._style.trim) { + const trimmed = trimCanvas(canvas); + if (trimmed.data) { + canvas.width = trimmed.width; + canvas.height = trimmed.height; + this.context.putImageData(trimmed.data, 0, 0); + } + } + const texture = this._texture; + const style = this._style; + const padding = style.trim ? 0 : style.padding; + const baseTexture = texture.baseTexture; + texture.trim.width = texture._frame.width = canvas.width / this._resolution; + texture.trim.height = texture._frame.height = canvas.height / this._resolution; + texture.trim.x = -padding; + texture.trim.y = -padding; + texture.orig.width = texture._frame.width - padding * 2; + texture.orig.height = texture._frame.height - padding * 2; + this._onTextureUpdate(); + baseTexture.setRealSize(canvas.width, canvas.height, this._resolution); + texture.updateUvs(); + this.dirty = false; + } + _render(renderer) { + if (this._autoResolution && this._resolution !== renderer.resolution) { + this._resolution = renderer.resolution; + this.dirty = true; + } + this.updateText(true); + super._render(renderer); + } + updateTransform() { + this.updateText(true); + super.updateTransform(); + } + getBounds(skipUpdate, rect) { + this.updateText(true); + if (this._textureID === -1) { + skipUpdate = false; + } + return super.getBounds(skipUpdate, rect); + } + getLocalBounds(rect) { + this.updateText(true); + return super.getLocalBounds.call(this, rect); + } + _calculateBounds() { + this.calculateVertices(); + this._bounds.addQuad(this.vertexData); + } + _generateFillStyle(style, lines, metrics) { + const fillStyle = style.fill; + if (!Array.isArray(fillStyle)) { + return fillStyle; + } else if (fillStyle.length === 1) { + return fillStyle[0]; + } + let gradient; + const dropShadowCorrection = style.dropShadow ? style.dropShadowDistance : 0; + const padding = style.padding || 0; + const width = this.canvas.width / this._resolution - dropShadowCorrection - padding * 2; + const height = this.canvas.height / this._resolution - dropShadowCorrection - padding * 2; + const fill = fillStyle.slice(); + const fillGradientStops = style.fillGradientStops.slice(); + if (!fillGradientStops.length) { + const lengthPlus1 = fill.length + 1; + for (let i = 1; i < lengthPlus1; ++i) { + fillGradientStops.push(i / lengthPlus1); + } + } + fill.unshift(fillStyle[0]); + fillGradientStops.unshift(0); + fill.push(fillStyle[fillStyle.length - 1]); + fillGradientStops.push(1); + if (style.fillGradientType === TEXT_GRADIENT.LINEAR_VERTICAL) { + gradient = this.context.createLinearGradient(width / 2, padding, width / 2, height + padding); + const textHeight = metrics.fontProperties.fontSize + style.strokeThickness; + for (let i = 0; i < lines.length; i++) { + const lastLineBottom = metrics.lineHeight * (i - 1) + textHeight; + const thisLineTop = metrics.lineHeight * i; + let thisLineGradientStart = thisLineTop; + if (i > 0 && lastLineBottom > thisLineTop) { + thisLineGradientStart = (thisLineTop + lastLineBottom) / 2; + } + const thisLineBottom = thisLineTop + textHeight; + const nextLineTop = metrics.lineHeight * (i + 1); + let thisLineGradientEnd = thisLineBottom; + if (i + 1 < lines.length && nextLineTop < thisLineBottom) { + thisLineGradientEnd = (thisLineBottom + nextLineTop) / 2; + } + const gradStopLineHeight = (thisLineGradientEnd - thisLineGradientStart) / height; + for (let j = 0; j < fill.length; j++) { + let lineStop = 0; + if (typeof fillGradientStops[j] === "number") { + lineStop = fillGradientStops[j]; + } else { + lineStop = j / fill.length; + } + let globalStop = Math.min(1, Math.max(0, thisLineGradientStart / height + lineStop * gradStopLineHeight)); + globalStop = Number(globalStop.toFixed(5)); + gradient.addColorStop(globalStop, fill[j]); + } + } + } else { + gradient = this.context.createLinearGradient(padding, height / 2, width + padding, height / 2); + const totalIterations = fill.length + 1; + let currentIteration = 1; + for (let i = 0; i < fill.length; i++) { + let stop; + if (typeof fillGradientStops[i] === "number") { + stop = fillGradientStops[i]; + } else { + stop = currentIteration / totalIterations; + } + gradient.addColorStop(stop, fill[i]); + currentIteration++; + } + } + return gradient; + } + destroy(options) { + if (typeof options === "boolean") { + options = { children: options }; + } + options = Object.assign({}, defaultDestroyOptions, options); + super.destroy(options); + if (this._ownCanvas) { + this.canvas.height = this.canvas.width = 0; + } + this.context = null; + this.canvas = null; + this._style = null; + } + get width() { + this.updateText(true); + return Math.abs(this.scale.x) * this._texture.orig.width; + } + set width(value) { + this.updateText(true); + const s = sign(this.scale.x) || 1; + this.scale.x = s * value / this._texture.orig.width; + this._width = value; + } + get height() { + this.updateText(true); + return Math.abs(this.scale.y) * this._texture.orig.height; + } + set height(value) { + this.updateText(true); + const s = sign(this.scale.y) || 1; + this.scale.y = s * value / this._texture.orig.height; + this._height = value; + } + get style() { + return this._style; + } + set style(style) { + style = style || {}; + if (style instanceof TextStyle) { + this._style = style; + } else { + this._style = new TextStyle(style); + } + this.localStyleID = -1; + this.dirty = true; + } + get text() { + return this._text; + } + set text(text) { + text = String(text === null || text === void 0 ? "" : text); + if (this._text === text) { + return; + } + this._text = text; + this.dirty = true; + } + get resolution() { + return this._resolution; + } + set resolution(value) { + this._autoResolution = false; + if (this._resolution === value) { + return; + } + this._resolution = value; + this.dirty = true; + } + }; + let Text = _Text; + Text.experimentalLetterSpacing = false; + + class CountLimiter { + constructor(maxItemsPerFrame) { + this.maxItemsPerFrame = maxItemsPerFrame; + this.itemsLeft = 0; + } + beginFrame() { + this.itemsLeft = this.maxItemsPerFrame; + } + allowedToUpload() { + return this.itemsLeft-- > 0; + } + } + + function findMultipleBaseTextures(item, queue) { + let result = false; + if (item?._textures?.length) { + for (let i = 0; i < item._textures.length; i++) { + if (item._textures[i] instanceof Texture) { + const baseTexture = item._textures[i].baseTexture; + if (!queue.includes(baseTexture)) { + queue.push(baseTexture); + result = true; + } + } + } + } + return result; + } + function findBaseTexture(item, queue) { + if (item.baseTexture instanceof BaseTexture) { + const texture = item.baseTexture; + if (!queue.includes(texture)) { + queue.push(texture); + } + return true; + } + return false; + } + function findTexture(item, queue) { + if (item._texture && item._texture instanceof Texture) { + const texture = item._texture.baseTexture; + if (!queue.includes(texture)) { + queue.push(texture); + } + return true; + } + return false; + } + function drawText(_helper, item) { + if (item instanceof Text) { + item.updateText(true); + return true; + } + return false; + } + function calculateTextStyle(_helper, item) { + if (item instanceof TextStyle) { + const font = item.toFontString(); + TextMetrics.measureFont(font); + return true; + } + return false; + } + function findText(item, queue) { + if (item instanceof Text) { + if (!queue.includes(item.style)) { + queue.push(item.style); + } + if (!queue.includes(item)) { + queue.push(item); + } + const texture = item._texture.baseTexture; + if (!queue.includes(texture)) { + queue.push(texture); + } + return true; + } + return false; + } + function findTextStyle(item, queue) { + if (item instanceof TextStyle) { + if (!queue.includes(item)) { + queue.push(item); + } + return true; + } + return false; + } + class BasePrepare { + constructor(renderer) { + this.limiter = new CountLimiter(settings.UPLOADS_PER_FRAME); + this.renderer = renderer; + this.uploadHookHelper = null; + this.queue = []; + this.addHooks = []; + this.uploadHooks = []; + this.completes = []; + this.ticking = false; + this.delayedTick = () => { + if (!this.queue) { + return; + } + this.prepareItems(); + }; + this.registerFindHook(findText); + this.registerFindHook(findTextStyle); + this.registerFindHook(findMultipleBaseTextures); + this.registerFindHook(findBaseTexture); + this.registerFindHook(findTexture); + this.registerUploadHook(drawText); + this.registerUploadHook(calculateTextStyle); + } + upload(item) { + return new Promise((resolve) => { + if (item) { + this.add(item); + } + if (this.queue.length) { + this.completes.push(resolve); + if (!this.ticking) { + this.ticking = true; + Ticker.system.addOnce(this.tick, this, UPDATE_PRIORITY.UTILITY); + } + } else { + resolve(); + } + }); + } + tick() { + setTimeout(this.delayedTick, 0); + } + prepareItems() { + this.limiter.beginFrame(); + while (this.queue.length && this.limiter.allowedToUpload()) { + const item = this.queue[0]; + let uploaded = false; + if (item && !item._destroyed) { + for (let i = 0, len = this.uploadHooks.length; i < len; i++) { + if (this.uploadHooks[i](this.uploadHookHelper, item)) { + this.queue.shift(); + uploaded = true; + break; + } + } + } + if (!uploaded) { + this.queue.shift(); + } + } + if (!this.queue.length) { + this.ticking = false; + const completes = this.completes.slice(0); + this.completes.length = 0; + for (let i = 0, len = completes.length; i < len; i++) { + completes[i](); + } + } else { + Ticker.system.addOnce(this.tick, this, UPDATE_PRIORITY.UTILITY); + } + } + registerFindHook(addHook) { + if (addHook) { + this.addHooks.push(addHook); + } + return this; + } + registerUploadHook(uploadHook) { + if (uploadHook) { + this.uploadHooks.push(uploadHook); + } + return this; + } + add(item) { + for (let i = 0, len = this.addHooks.length; i < len; i++) { + if (this.addHooks[i](item, this.queue)) { + break; + } + } + if (item instanceof Container) { + for (let i = item.children.length - 1; i >= 0; i--) { + this.add(item.children[i]); + } + } + return this; + } + destroy() { + if (this.ticking) { + Ticker.system.remove(this.tick, this); + } + this.ticking = false; + this.addHooks = null; + this.uploadHooks = null; + this.renderer = null; + this.completes = null; + this.queue = null; + this.limiter = null; + this.uploadHookHelper = null; + } + } + + function uploadBaseTextures(renderer, item) { + if (item instanceof BaseTexture) { + if (!item._glTextures[renderer.CONTEXT_UID]) { + renderer.texture.bind(item); + } + return true; + } + return false; + } + function uploadGraphics(renderer, item) { + if (!(item instanceof Graphics)) { + return false; + } + const { geometry } = item; + item.finishPoly(); + geometry.updateBatches(); + const { batches } = geometry; + for (let i = 0; i < batches.length; i++) { + const { texture } = batches[i].style; + if (texture) { + uploadBaseTextures(renderer, texture.baseTexture); + } + } + if (!geometry.batchable) { + renderer.geometry.bind(geometry, item._resolveDirectShader(renderer)); + } + return true; + } + function findGraphics(item, queue) { + if (item instanceof Graphics) { + queue.push(item); + return true; + } + return false; + } + class Prepare extends BasePrepare { + constructor(renderer) { + super(renderer); + this.uploadHookHelper = this.renderer; + this.registerFindHook(findGraphics); + this.registerUploadHook(uploadBaseTextures); + this.registerUploadHook(uploadGraphics); + } + } + Prepare.extension = { + name: "prepare", + type: ExtensionType.RendererSystem + }; + extensions$1.add(Prepare); + + class TimeLimiter { + constructor(maxMilliseconds) { + this.maxMilliseconds = maxMilliseconds; + this.frameStart = 0; + } + beginFrame() { + this.frameStart = Date.now(); + } + allowedToUpload() { + return Date.now() - this.frameStart < this.maxMilliseconds; + } + } + + const _Spritesheet = class { + constructor(texture, data, resolutionFilename = null) { + this.linkedSheets = []; + this._texture = texture instanceof Texture ? texture : null; + this.baseTexture = texture instanceof BaseTexture ? texture : this._texture.baseTexture; + this.textures = {}; + this.animations = {}; + this.data = data; + const resource = this.baseTexture.resource; + this.resolution = this._updateResolution(resolutionFilename || (resource ? resource.url : null)); + this._frames = this.data.frames; + this._frameKeys = Object.keys(this._frames); + this._batchIndex = 0; + this._callback = null; + } + _updateResolution(resolutionFilename = null) { + const { scale } = this.data.meta; + let resolution = getResolutionOfUrl(resolutionFilename, null); + if (resolution === null) { + resolution = parseFloat(scale ?? "1"); + } + if (resolution !== 1) { + this.baseTexture.setResolution(resolution); + } + return resolution; + } + parse() { + return new Promise((resolve) => { + this._callback = resolve; + this._batchIndex = 0; + if (this._frameKeys.length <= _Spritesheet.BATCH_SIZE) { + this._processFrames(0); + this._processAnimations(); + this._parseComplete(); + } else { + this._nextBatch(); + } + }); + } + _processFrames(initialFrameIndex) { + let frameIndex = initialFrameIndex; + const maxFrames = _Spritesheet.BATCH_SIZE; + while (frameIndex - initialFrameIndex < maxFrames && frameIndex < this._frameKeys.length) { + const i = this._frameKeys[frameIndex]; + const data = this._frames[i]; + const rect = data.frame; + if (rect) { + let frame = null; + let trim = null; + const sourceSize = data.trimmed !== false && data.sourceSize ? data.sourceSize : data.frame; + const orig = new Rectangle(0, 0, Math.floor(sourceSize.w) / this.resolution, Math.floor(sourceSize.h) / this.resolution); + if (data.rotated) { + frame = 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); + } else { + frame = 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); + } + if (data.trimmed !== false && 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(this.baseTexture, frame, orig, trim, data.rotated ? 2 : 0, data.anchor); + Texture.addToCache(this.textures[i], i); + } + frameIndex++; + } + } + _processAnimations() { + const animations = this.data.animations || {}; + for (const animName in animations) { + this.animations[animName] = []; + for (let i = 0; i < animations[animName].length; i++) { + const frameName = animations[animName][i]; + this.animations[animName].push(this.textures[frameName]); + } + } + } + _parseComplete() { + const 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(() => { + if (this._batchIndex * _Spritesheet.BATCH_SIZE < this._frameKeys.length) { + this._nextBatch(); + } else { + this._processAnimations(); + this._parseComplete(); + } + }, 0); + } + destroy(destroyBase = false) { + for (const i in this.textures) { + this.textures[i].destroy(); + } + this._frames = null; + this._frameKeys = null; + this.data = null; + this.textures = null; + if (destroyBase) { + this._texture?.destroy(); + this.baseTexture.destroy(); + } + this._texture = null; + this.baseTexture = null; + this.linkedSheets = []; + } + }; + let Spritesheet = _Spritesheet; + Spritesheet.BATCH_SIZE = 1e3; + + const validImages = ["jpg", "png", "jpeg", "avif", "webp"]; + function getCacheableAssets(keys, asset, ignoreMultiPack) { + const out = {}; + keys.forEach((key) => { + out[key] = asset; + }); + Object.keys(asset.textures).forEach((key) => { + out[key] = asset.textures[key]; + }); + if (!ignoreMultiPack) { + const basePath = path.dirname(keys[0]); + asset.linkedSheets.forEach((item, i) => { + const out2 = getCacheableAssets([`${basePath}/${asset.data.meta.related_multi_packs[i]}`], item, true); + Object.assign(out, out2); + }); + } + return out; + } + const spritesheetAsset = { + extension: ExtensionType.Asset, + cache: { + test: (asset) => asset instanceof Spritesheet, + getCacheableAssets: (keys, asset) => getCacheableAssets(keys, asset, false) + }, + resolver: { + test: (value) => { + const tempURL = value.split("?")[0]; + const split = tempURL.split("."); + const extension = split.pop(); + const format = split.pop(); + return extension === "json" && validImages.includes(format); + }, + parse: (value) => { + const split = value.split("."); + return { + resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? "1"), + format: split[split.length - 2], + src: value + }; + } + }, + loader: { + extension: { + type: ExtensionType.LoadParser, + priority: LoaderParserPriority.Normal + }, + async testParse(asset, options) { + return path.extname(options.src).includes(".json") && !!asset.frames; + }, + async parse(asset, options, loader) { + let basePath = path.dirname(options.src); + if (basePath && basePath.lastIndexOf("/") !== basePath.length - 1) { + basePath += "/"; + } + const imagePath = basePath + asset.meta.image; + const assets = await loader.load([imagePath]); + const texture = assets[imagePath]; + const spritesheet = new Spritesheet(texture.baseTexture, asset, options.src); + await spritesheet.parse(); + const multiPacks = asset?.meta?.related_multi_packs; + if (Array.isArray(multiPacks)) { + const promises = []; + for (const item of multiPacks) { + if (typeof item !== "string") { + continue; + } + const itemUrl = basePath + item; + if (options.data?.ignoreMultiPack) { + continue; + } + promises.push(loader.load({ + src: itemUrl, + data: { + ignoreMultiPack: true + } + })); + } + const res = await Promise.all(promises); + spritesheet.linkedSheets = res; + res.forEach((item) => { + item.linkedSheets = [spritesheet].concat(spritesheet.linkedSheets.filter((sp) => sp !== item)); + }); + } + return spritesheet; + }, + unload(spritesheet) { + spritesheet.destroy(true); + } + } + }; + extensions$1.add(spritesheetAsset); + + class AnimatedSprite extends Sprite { + constructor(textures, autoUpdate = true) { + super(textures[0] instanceof Texture ? textures[0] : textures[0].texture); + this._textures = null; + this._durations = null; + this._autoUpdate = autoUpdate; + this._isConnectedToTicker = false; + this.animationSpeed = 1; + this.loop = true; + this.updateAnchor = false; + this.onComplete = null; + this.onFrameChange = null; + this.onLoop = null; + this._currentTime = 0; + this._playing = false; + this._previousFrame = null; + this.textures = textures; + } + stop() { + if (!this._playing) { + return; + } + this._playing = false; + if (this._autoUpdate && this._isConnectedToTicker) { + Ticker.shared.remove(this.update, this); + this._isConnectedToTicker = false; + } + } + play() { + if (this._playing) { + return; + } + this._playing = true; + if (this._autoUpdate && !this._isConnectedToTicker) { + Ticker.shared.add(this.update, this, UPDATE_PRIORITY.HIGH); + this._isConnectedToTicker = true; + } + } + gotoAndStop(frameNumber) { + this.stop(); + this.currentFrame = frameNumber; + } + gotoAndPlay(frameNumber) { + this.currentFrame = frameNumber; + this.play(); + } + update(deltaTime) { + if (!this._playing) { + return; + } + const elapsed = this.animationSpeed * deltaTime; + const previousFrame = this.currentFrame; + if (this._durations !== null) { + let lag = this._currentTime % 1 * this._durations[this.currentFrame]; + lag += elapsed / 60 * 1e3; + while (lag < 0) { + this._currentTime--; + lag += this._durations[this.currentFrame]; + } + const sign = Math.sign(this.animationSpeed * deltaTime); + this._currentTime = Math.floor(this._currentTime); + while (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; + } + if (this._currentTime < 0 && !this.loop) { + this.gotoAndStop(0); + if (this.onComplete) { + this.onComplete(); + } + } else if (this._currentTime >= this._textures.length && !this.loop) { + this.gotoAndStop(this._textures.length - 1); + if (this.onComplete) { + this.onComplete(); + } + } else if (previousFrame !== this.currentFrame) { + if (this.loop && this.onLoop) { + if (this.animationSpeed > 0 && this.currentFrame < previousFrame) { + this.onLoop(); + } else if (this.animationSpeed < 0 && this.currentFrame > previousFrame) { + this.onLoop(); + } + } + this.updateTexture(); + } + } + updateTexture() { + const currentFrame = this.currentFrame; + if (this._previousFrame === currentFrame) { + return; + } + this._previousFrame = currentFrame; + this._texture = this._textures[currentFrame]; + this._textureID = -1; + this._textureTrimmedID = -1; + this._cachedTint = 16777215; + this.uvs = this._texture._uvs.uvsFloat32; + if (this.updateAnchor) { + this._anchor.copyFrom(this._texture.defaultAnchor); + } + if (this.onFrameChange) { + this.onFrameChange(this.currentFrame); + } + } + destroy(options) { + this.stop(); + super.destroy(options); + this.onComplete = null; + this.onFrameChange = null; + this.onLoop = null; + } + static fromFrames(frames) { + const textures = []; + for (let i = 0; i < frames.length; ++i) { + textures.push(Texture.from(frames[i])); + } + return new AnimatedSprite(textures); + } + static fromImages(images) { + const 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; + if (currentFrame < 0) { + currentFrame += this._textures.length; + } + return 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}.`); + } + const previousFrame = this.currentFrame; + this._currentTime = value; + if (previousFrame !== this.currentFrame) { + this.updateTexture(); + } + } + get playing() { + return this._playing; + } + get autoUpdate() { + return this._autoUpdate; + } + set autoUpdate(value) { + if (value !== this._autoUpdate) { + this._autoUpdate = value; + if (!this._autoUpdate && this._isConnectedToTicker) { + Ticker.shared.remove(this.update, this); + this._isConnectedToTicker = false; + } else if (this._autoUpdate && !this._isConnectedToTicker && this._playing) { + Ticker.shared.add(this.update, this); + this._isConnectedToTicker = true; + } + } + } + } + + const tempPoint = new Point(); + class TilingSprite extends Sprite { + constructor(texture, width = 100, height = 100) { + super(texture); + this.tileTransform = new Transform(); + this._width = width; + this._height = height; + this.uvMatrix = this.texture.uvMatrix || new TextureMatrix(texture); + this.pluginName = "tilingSprite"; + this.uvRespectAnchor = false; + } + get clampMargin() { + return this.uvMatrix.clampMargin; + } + set clampMargin(value) { + this.uvMatrix.clampMargin = value; + this.uvMatrix.update(true); + } + get tileScale() { + return this.tileTransform.scale; + } + set tileScale(value) { + this.tileTransform.scale.copyFrom(value); + } + get tilePosition() { + return this.tileTransform.position; + } + set tilePosition(value) { + this.tileTransform.position.copyFrom(value); + } + _onTextureUpdate() { + if (this.uvMatrix) { + this.uvMatrix.texture = this._texture; + } + this._cachedTint = 16777215; + } + _render(renderer) { + const texture = this._texture; + if (!texture || !texture.valid) { + return; + } + this.tileTransform.updateLocalTransform(); + this.uvMatrix.update(); + renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]); + renderer.plugins[this.pluginName].render(this); + } + _calculateBounds() { + const minX = this._width * -this._anchor._x; + const minY = this._height * -this._anchor._y; + const maxX = this._width * (1 - this._anchor._x); + const maxY = this._height * (1 - this._anchor._y); + this._bounds.addFrame(this.transform, minX, minY, maxX, maxY); + } + getLocalBounds(rect) { + if (this.children.length === 0) { + this._bounds.minX = this._width * -this._anchor._x; + this._bounds.minY = this._height * -this._anchor._y; + this._bounds.maxX = this._width * (1 - this._anchor._x); + this._bounds.maxY = this._height * (1 - this._anchor._y); + if (!rect) { + if (!this._localBoundsRect) { + this._localBoundsRect = new Rectangle(); + } + rect = this._localBoundsRect; + } + return this._bounds.getRectangle(rect); + } + return super.getLocalBounds.call(this, rect); + } + containsPoint(point) { + this.worldTransform.applyInverse(point, tempPoint); + const width = this._width; + const height = this._height; + const x1 = -width * this.anchor._x; + if (tempPoint.x >= x1 && tempPoint.x < x1 + width) { + const y1 = -height * this.anchor._y; + if (tempPoint.y >= y1 && tempPoint.y < y1 + height) { + return true; + } + } + return false; + } + destroy(options) { + super.destroy(options); + this.tileTransform = null; + this.uvMatrix = null; + } + static from(source, options) { + const texture = source instanceof Texture ? source : Texture.from(source, options); + return new TilingSprite(texture, options.width, options.height); + } + get width() { + return this._width; + } + set width(value) { + this._width = value; + } + get height() { + return this._height; + } + set height(value) { + this._height = value; + } + } + + var fragmentSimpleSrc = "#version 100\n#define SHADER_NAME Tiling-Sprite-Simple-100\n\nprecision lowp float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\n\nvoid main(void)\n{\n vec4 texSample = texture2D(uSampler, vTextureCoord);\n gl_FragColor = texSample * uColor;\n}\n"; + + var gl1VertexSrc = "#version 100\n#define SHADER_NAME Tiling-Sprite-100\n\nprecision lowp float;\n\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n"; + + var gl1FragmentSrc = "#version 100\n#ifdef GL_EXT_shader_texture_lod\n #extension GL_EXT_shader_texture_lod : enable\n#endif\n#define SHADER_NAME Tiling-Sprite-100\n\nprecision lowp float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n vec2 unclamped = coord;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n #ifdef GL_EXT_shader_texture_lod\n vec4 texSample = unclamped == coord\n ? texture2D(uSampler, coord) \n : texture2DLodEXT(uSampler, coord, 0);\n #else\n vec4 texSample = texture2D(uSampler, coord);\n #endif\n\n gl_FragColor = texSample * uColor;\n}\n"; + + var gl2VertexSrc = "#version 300 es\n#define SHADER_NAME Tiling-Sprite-300\n\nprecision lowp float;\n\nin vec2 aVertexPosition;\nin vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nout vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n"; + + var gl2FragmentSrc = "#version 300 es\n#define SHADER_NAME Tiling-Sprite-100\n\nprecision lowp float;\n\nin vec2 vTextureCoord;\n\nout vec4 fragmentColor;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n vec2 unclamped = coord;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n vec4 texSample = texture(uSampler, coord, unclamped == coord ? 0.0f : -32.0f);// lod-bias very negative to force lod 0\n\n fragmentColor = texSample * uColor;\n}\n"; + + const tempMat = new Matrix(); + class TilingSpriteRenderer extends ObjectRenderer { + constructor(renderer) { + super(renderer); + renderer.runners.contextChange.add(this); + this.quad = new QuadUv(); + this.state = State.for2d(); + } + contextChange() { + const renderer = this.renderer; + const uniforms = { globals: renderer.globalUniforms }; + this.simpleShader = Shader.from(gl1VertexSrc, fragmentSimpleSrc, uniforms); + this.shader = renderer.context.webGLVersion > 1 ? Shader.from(gl2VertexSrc, gl2FragmentSrc, uniforms) : Shader.from(gl1VertexSrc, gl1FragmentSrc, uniforms); + } + render(ts) { + const renderer = this.renderer; + const quad = this.quad; + let vertices = quad.vertices; + vertices[0] = vertices[6] = ts._width * -ts.anchor.x; + vertices[1] = vertices[3] = ts._height * -ts.anchor.y; + vertices[2] = vertices[4] = ts._width * (1 - ts.anchor.x); + vertices[5] = vertices[7] = ts._height * (1 - ts.anchor.y); + const anchorX = ts.uvRespectAnchor ? ts.anchor.x : 0; + const anchorY = ts.uvRespectAnchor ? ts.anchor.y : 0; + vertices = quad.uvs; + vertices[0] = vertices[6] = -anchorX; + vertices[1] = vertices[3] = -anchorY; + vertices[2] = vertices[4] = 1 - anchorX; + vertices[5] = vertices[7] = 1 - anchorY; + quad.invalidate(); + const tex = ts._texture; + const baseTex = tex.baseTexture; + const premultiplied = baseTex.alphaMode > 0; + const lt = ts.tileTransform.localTransform; + const uv = ts.uvMatrix; + let isSimple = baseTex.isPowerOfTwo && tex.frame.width === baseTex.width && tex.frame.height === baseTex.height; + if (isSimple) { + if (!baseTex._glTextures[renderer.CONTEXT_UID]) { + if (baseTex.wrapMode === WRAP_MODES.CLAMP) { + baseTex.wrapMode = WRAP_MODES.REPEAT; + } + } else { + isSimple = baseTex.wrapMode !== WRAP_MODES.CLAMP; + } + } + const shader = isSimple ? this.simpleShader : this.shader; + const w = tex.width; + const h = tex.height; + const W = ts._width; + const H = ts._height; + tempMat.set(lt.a * w / W, lt.b * w / H, lt.c * h / W, lt.d * h / H, lt.tx / W, lt.ty / H); + tempMat.invert(); + if (isSimple) { + tempMat.prepend(uv.mapCoord); + } else { + shader.uniforms.uMapCoord = uv.mapCoord.toArray(true); + shader.uniforms.uClampFrame = uv.uClampFrame; + shader.uniforms.uClampOffset = uv.uClampOffset; + } + shader.uniforms.uTransform = tempMat.toArray(true); + shader.uniforms.uColor = premultiplyTintToRgba(ts.tint, ts.worldAlpha, shader.uniforms.uColor, premultiplied); + shader.uniforms.translationMatrix = ts.transform.worldTransform.toArray(true); + shader.uniforms.uSampler = tex; + renderer.shader.bind(shader); + renderer.geometry.bind(quad); + this.state.blendMode = correctBlendMode(ts.blendMode, premultiplied); + renderer.state.set(this.state); + renderer.geometry.draw(this.renderer.gl.TRIANGLES, 6, 0); + } + } + TilingSpriteRenderer.extension = { + name: "tilingSprite", + type: ExtensionType.RendererPlugin + }; + extensions$1.add(TilingSpriteRenderer); + + class BitmapFontData { + constructor() { + this.info = []; + this.common = []; + this.page = []; + this.char = []; + this.kerning = []; + this.distanceField = []; + } + } + + class TextFormat { + static test(data) { + return typeof data === "string" && data.startsWith("info face="); + } + static parse(txt) { + const items = txt.match(/^[a-z]+\s+.+$/gm); + const rawData = { + info: [], + common: [], + page: [], + char: [], + chars: [], + kerning: [], + kernings: [], + distanceField: [] + }; + for (const i in items) { + const name = items[i].match(/^[a-z]+/gm)[0]; + const attributeList = items[i].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm); + const itemData = {}; + for (const i2 in attributeList) { + const split = attributeList[i2].split("="); + const key = split[0]; + const strValue = split[1].replace(/"/gm, ""); + const floatValue = parseFloat(strValue); + const value = isNaN(floatValue) ? strValue : floatValue; + itemData[key] = value; + } + rawData[name].push(itemData); + } + const font = new BitmapFontData(); + rawData.info.forEach((info) => font.info.push({ + face: info.face, + size: parseInt(info.size, 10) + })); + rawData.common.forEach((common) => font.common.push({ + lineHeight: parseInt(common.lineHeight, 10) + })); + rawData.page.forEach((page) => font.page.push({ + id: parseInt(page.id, 10), + file: page.file + })); + rawData.char.forEach((char) => font.char.push({ + id: parseInt(char.id, 10), + page: parseInt(char.page, 10), + x: parseInt(char.x, 10), + y: parseInt(char.y, 10), + width: parseInt(char.width, 10), + height: parseInt(char.height, 10), + xoffset: parseInt(char.xoffset, 10), + yoffset: parseInt(char.yoffset, 10), + xadvance: parseInt(char.xadvance, 10) + })); + rawData.kerning.forEach((kerning) => font.kerning.push({ + first: parseInt(kerning.first, 10), + second: parseInt(kerning.second, 10), + amount: parseInt(kerning.amount, 10) + })); + rawData.distanceField.forEach((df) => font.distanceField.push({ + distanceRange: parseInt(df.distanceRange, 10), + fieldType: df.fieldType + })); + return font; + } + } + + class XMLFormat { + static test(data) { + return data instanceof XMLDocument && data.getElementsByTagName("page").length && data.getElementsByTagName("info")[0].getAttribute("face") !== null; + } + static parse(xml) { + const data = new BitmapFontData(); + const info = xml.getElementsByTagName("info"); + const common = xml.getElementsByTagName("common"); + const page = xml.getElementsByTagName("page"); + const char = xml.getElementsByTagName("char"); + const kerning = xml.getElementsByTagName("kerning"); + const distanceField = xml.getElementsByTagName("distanceField"); + for (let i = 0; i < info.length; i++) { + data.info.push({ + face: info[i].getAttribute("face"), + size: parseInt(info[i].getAttribute("size"), 10) + }); + } + for (let i = 0; i < common.length; i++) { + data.common.push({ + lineHeight: parseInt(common[i].getAttribute("lineHeight"), 10) + }); + } + for (let i = 0; i < page.length; i++) { + data.page.push({ + id: parseInt(page[i].getAttribute("id"), 10) || 0, + file: page[i].getAttribute("file") + }); + } + for (let i = 0; i < char.length; i++) { + const letter = char[i]; + data.char.push({ + id: parseInt(letter.getAttribute("id"), 10), + page: parseInt(letter.getAttribute("page"), 10) || 0, + x: parseInt(letter.getAttribute("x"), 10), + y: parseInt(letter.getAttribute("y"), 10), + width: parseInt(letter.getAttribute("width"), 10), + height: parseInt(letter.getAttribute("height"), 10), + xoffset: parseInt(letter.getAttribute("xoffset"), 10), + yoffset: parseInt(letter.getAttribute("yoffset"), 10), + xadvance: parseInt(letter.getAttribute("xadvance"), 10) + }); + } + for (let i = 0; i < kerning.length; i++) { + data.kerning.push({ + first: parseInt(kerning[i].getAttribute("first"), 10), + second: parseInt(kerning[i].getAttribute("second"), 10), + amount: parseInt(kerning[i].getAttribute("amount"), 10) + }); + } + for (let i = 0; i < distanceField.length; i++) { + data.distanceField.push({ + fieldType: distanceField[i].getAttribute("fieldType"), + distanceRange: parseInt(distanceField[i].getAttribute("distanceRange"), 10) + }); + } + return data; + } + } + + class XMLStringFormat { + static test(data) { + if (typeof data === "string" && data.includes("")) { + const xml = new globalThis.DOMParser().parseFromString(data, "text/xml"); + return XMLFormat.test(xml); + } + return false; + } + static parse(xmlTxt) { + const xml = new globalThis.DOMParser().parseFromString(xmlTxt, "text/xml"); + return XMLFormat.parse(xml); + } + } + + const formats = [ + TextFormat, + XMLFormat, + XMLStringFormat + ]; + function autoDetectFormat(data) { + for (let i = 0; i < formats.length; i++) { + if (formats[i].test(data)) { + return formats[i]; + } + } + return null; + } + + function generateFillStyle(canvas, context, style, resolution, lines, metrics) { + const fillStyle = style.fill; + if (!Array.isArray(fillStyle)) { + return fillStyle; + } else if (fillStyle.length === 1) { + return fillStyle[0]; + } + let gradient; + const dropShadowCorrection = style.dropShadow ? style.dropShadowDistance : 0; + const padding = style.padding || 0; + const width = canvas.width / resolution - dropShadowCorrection - padding * 2; + const height = canvas.height / resolution - dropShadowCorrection - padding * 2; + const fill = fillStyle.slice(); + const fillGradientStops = style.fillGradientStops.slice(); + if (!fillGradientStops.length) { + const lengthPlus1 = fill.length + 1; + for (let i = 1; i < lengthPlus1; ++i) { + fillGradientStops.push(i / lengthPlus1); + } + } + fill.unshift(fillStyle[0]); + fillGradientStops.unshift(0); + fill.push(fillStyle[fillStyle.length - 1]); + fillGradientStops.push(1); + if (style.fillGradientType === TEXT_GRADIENT.LINEAR_VERTICAL) { + gradient = context.createLinearGradient(width / 2, padding, width / 2, height + padding); + let lastIterationStop = 0; + const textHeight = metrics.fontProperties.fontSize + style.strokeThickness; + const gradStopLineHeight = textHeight / height; + for (let i = 0; i < lines.length; i++) { + const thisLineTop = metrics.lineHeight * i; + for (let j = 0; j < fill.length; j++) { + let lineStop = 0; + if (typeof fillGradientStops[j] === "number") { + lineStop = fillGradientStops[j]; + } else { + lineStop = j / fill.length; + } + const globalStop = thisLineTop / height + lineStop * gradStopLineHeight; + let clampedStop = Math.max(lastIterationStop, globalStop); + clampedStop = Math.min(clampedStop, 1); + gradient.addColorStop(clampedStop, fill[j]); + lastIterationStop = clampedStop; + } + } + } else { + gradient = context.createLinearGradient(padding, height / 2, width + padding, height / 2); + const totalIterations = fill.length + 1; + let currentIteration = 1; + for (let i = 0; i < fill.length; i++) { + let stop; + if (typeof fillGradientStops[i] === "number") { + stop = fillGradientStops[i]; + } else { + stop = currentIteration / totalIterations; + } + gradient.addColorStop(stop, fill[i]); + currentIteration++; + } + } + return gradient; + } + + function drawGlyph(canvas, context, metrics, x, y, resolution, style) { + const char = metrics.text; + const fontProperties = metrics.fontProperties; + context.translate(x, y); + context.scale(resolution, resolution); + const tx = style.strokeThickness / 2; + const ty = -(style.strokeThickness / 2); + context.font = style.toFontString(); + context.lineWidth = style.strokeThickness; + context.textBaseline = style.textBaseline; + context.lineJoin = style.lineJoin; + context.miterLimit = style.miterLimit; + context.fillStyle = generateFillStyle(canvas, context, style, resolution, [char], metrics); + context.strokeStyle = style.stroke; + if (style.dropShadow) { + const dropShadowColor = style.dropShadowColor; + const rgb = hex2rgb(typeof dropShadowColor === "number" ? dropShadowColor : string2hex(dropShadowColor)); + const dropShadowBlur = style.dropShadowBlur * resolution; + const dropShadowDistance = style.dropShadowDistance * resolution; + context.shadowColor = `rgba(${rgb[0] * 255},${rgb[1] * 255},${rgb[2] * 255},${style.dropShadowAlpha})`; + context.shadowBlur = dropShadowBlur; + context.shadowOffsetX = Math.cos(style.dropShadowAngle) * dropShadowDistance; + context.shadowOffsetY = Math.sin(style.dropShadowAngle) * dropShadowDistance; + } else { + context.shadowColor = "black"; + context.shadowBlur = 0; + context.shadowOffsetX = 0; + context.shadowOffsetY = 0; + } + if (style.stroke && style.strokeThickness) { + context.strokeText(char, tx, ty + metrics.lineHeight - fontProperties.descent); + } + if (style.fill) { + context.fillText(char, tx, ty + metrics.lineHeight - fontProperties.descent); + } + context.setTransform(1, 0, 0, 1, 0, 0); + context.fillStyle = "rgba(0, 0, 0, 0)"; + } + + function splitTextToCharacters(text) { + return Array.from ? Array.from(text) : text.split(""); + } + + function resolveCharacters(chars) { + if (typeof chars === "string") { + chars = [chars]; + } + const result = []; + for (let i = 0, j = chars.length; i < j; i++) { + const item = chars[i]; + if (Array.isArray(item)) { + if (item.length !== 2) { + throw new Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${item.length}.`); + } + const startCode = item[0].charCodeAt(0); + const 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(...splitTextToCharacters(item)); + } + } + if (result.length === 0) { + throw new Error("[BitmapFont]: Empty set when resolving characters."); + } + return result; + } + + function extractCharCode(str) { + return str.codePointAt ? str.codePointAt(0) : str.charCodeAt(0); + } + + const _BitmapFont = class { + constructor(data, textures, ownsTextures) { + const [info] = data.info; + const [common] = data.common; + const [page] = data.page; + const [distanceField] = data.distanceField; + const res = getResolutionOfUrl(page.file); + const pageTextures = {}; + this._ownsTextures = ownsTextures; + this.font = info.face; + this.size = info.size; + this.lineHeight = common.lineHeight / res; + this.chars = {}; + this.pageTextures = pageTextures; + for (let i = 0; i < data.page.length; i++) { + const { id, file } = data.page[i]; + pageTextures[id] = textures instanceof Array ? textures[i] : textures[file]; + if (distanceField?.fieldType && distanceField.fieldType !== "none") { + pageTextures[id].baseTexture.alphaMode = ALPHA_MODES.NO_PREMULTIPLIED_ALPHA; + pageTextures[id].baseTexture.mipmap = MIPMAP_MODES.OFF; + } + } + for (let i = 0; i < data.char.length; i++) { + const { id, page: page2 } = data.char[i]; + let { x, y, width, height, xoffset, yoffset, xadvance } = data.char[i]; + x /= res; + y /= res; + width /= res; + height /= res; + xoffset /= res; + yoffset /= res; + xadvance /= res; + const rect = new Rectangle(x + pageTextures[page2].frame.x / res, y + pageTextures[page2].frame.y / res, width, height); + this.chars[id] = { + xOffset: xoffset, + yOffset: yoffset, + xAdvance: xadvance, + kerning: {}, + texture: new Texture(pageTextures[page2].baseTexture, rect), + page: page2 + }; + } + for (let i = 0; i < data.kerning.length; i++) { + let { first, second, amount } = data.kerning[i]; + first /= res; + second /= res; + amount /= res; + if (this.chars[second]) { + this.chars[second].kerning[first] = amount; + } + } + this.distanceFieldRange = distanceField?.distanceRange; + this.distanceFieldType = distanceField?.fieldType?.toLowerCase() ?? "none"; + } + destroy() { + for (const id in this.chars) { + this.chars[id].texture.destroy(); + this.chars[id].texture = null; + } + for (const id in this.pageTextures) { + if (this._ownsTextures) { + this.pageTextures[id].destroy(true); + } + this.pageTextures[id] = null; + } + this.chars = null; + this.pageTextures = null; + } + static install(data, textures, ownsTextures) { + let fontData; + if (data instanceof BitmapFontData) { + fontData = data; + } else { + const format = autoDetectFormat(data); + if (!format) { + throw new Error("Unrecognized data format for font."); + } + fontData = format.parse(data); + } + if (textures instanceof Texture) { + textures = [textures]; + } + const font = new _BitmapFont(fontData, textures, ownsTextures); + _BitmapFont.available[font.font] = font; + return font; + } + static uninstall(name) { + const font = _BitmapFont.available[name]; + if (!font) { + throw new Error(`No font found named '${name}'`); + } + font.destroy(); + delete _BitmapFont.available[name]; + } + static from(name, textStyle, options) { + if (!name) { + throw new Error("[BitmapFont] Property `name` is required."); + } + const { + chars, + padding, + resolution, + textureWidth, + textureHeight, + ...baseOptions + } = Object.assign({}, _BitmapFont.defaultOptions, options); + const charsList = resolveCharacters(chars); + const style = textStyle instanceof TextStyle ? textStyle : new TextStyle(textStyle); + const lineWidth = textureWidth; + const fontData = new BitmapFontData(); + fontData.info[0] = { + face: style.fontFamily, + size: style.fontSize + }; + fontData.common[0] = { + lineHeight: style.fontSize + }; + let positionX = 0; + let positionY = 0; + let canvas; + let context; + let baseTexture; + let maxCharHeight = 0; + const baseTextures = []; + const textures = []; + for (let i = 0; i < charsList.length; i++) { + if (!canvas) { + canvas = settings.ADAPTER.createCanvas(); + canvas.width = textureWidth; + canvas.height = textureHeight; + context = canvas.getContext("2d"); + baseTexture = new BaseTexture(canvas, { resolution, ...baseOptions }); + baseTextures.push(baseTexture); + textures.push(new Texture(baseTexture)); + fontData.page.push({ + id: textures.length - 1, + file: "" + }); + } + const character = charsList[i]; + const metrics = TextMetrics.measureText(character, style, false, canvas); + const width = metrics.width; + const height = Math.ceil(metrics.height); + const textureGlyphWidth = Math.ceil((style.fontStyle === "italic" ? 2 : 1) * width); + if (positionY >= textureHeight - height * resolution) { + if (positionY === 0) { + throw new Error(`[BitmapFont] textureHeight ${textureHeight}px is too small (fontFamily: '${style.fontFamily}', fontSize: ${style.fontSize}px, char: '${character}')`); + } + --i; + canvas = null; + context = null; + baseTexture = null; + positionY = 0; + positionX = 0; + maxCharHeight = 0; + continue; + } + maxCharHeight = Math.max(height + metrics.fontProperties.descent, maxCharHeight); + if (textureGlyphWidth * resolution + positionX >= lineWidth) { + if (positionX === 0) { + throw new Error(`[BitmapFont] textureWidth ${textureWidth}px is too small (fontFamily: '${style.fontFamily}', fontSize: ${style.fontSize}px, char: '${character}')`); + } + --i; + positionY += maxCharHeight * resolution; + positionY = Math.ceil(positionY); + positionX = 0; + maxCharHeight = 0; + continue; + } + drawGlyph(canvas, context, metrics, positionX, positionY, resolution, style); + const id = extractCharCode(metrics.text); + fontData.char.push({ + id, + page: textures.length - 1, + x: positionX / resolution, + y: positionY / resolution, + width: textureGlyphWidth, + height, + xoffset: 0, + yoffset: 0, + xadvance: Math.ceil(width - (style.dropShadow ? style.dropShadowDistance : 0) - (style.stroke ? style.strokeThickness : 0)) + }); + positionX += (textureGlyphWidth + 2 * padding) * resolution; + positionX = Math.ceil(positionX); + } + for (let i = 0, len = charsList.length; i < len; i++) { + const first = charsList[i]; + for (let j = 0; j < len; j++) { + const second = charsList[j]; + const c1 = context.measureText(first).width; + const c2 = context.measureText(second).width; + const total = context.measureText(first + second).width; + const amount = total - (c1 + c2); + if (amount) { + fontData.kerning.push({ + first: extractCharCode(first), + second: extractCharCode(second), + amount + }); + } + } + } + const font = new _BitmapFont(fontData, textures, true); + if (_BitmapFont.available[name] !== void 0) { + _BitmapFont.uninstall(name); + } + _BitmapFont.available[name] = font; + return font; + } + }; + let BitmapFont = _BitmapFont; + BitmapFont.ALPHA = [["a", "z"], ["A", "Z"], " "]; + BitmapFont.NUMERIC = [["0", "9"]]; + BitmapFont.ALPHANUMERIC = [["a", "z"], ["A", "Z"], ["0", "9"], " "]; + BitmapFont.ASCII = [[" ", "~"]]; + BitmapFont.defaultOptions = { + resolution: 1, + textureWidth: 512, + textureHeight: 512, + padding: 4, + chars: _BitmapFont.ALPHANUMERIC + }; + BitmapFont.available = {}; + + var msdfFrag = "// Pixi texture info\r\nvarying vec2 vTextureCoord;\r\nuniform sampler2D uSampler;\r\n\r\n// Tint\r\nuniform vec4 uColor;\r\n\r\n// on 2D applications fwidth is screenScale / glyphAtlasScale * distanceFieldRange\r\nuniform float uFWidth;\r\n\r\nvoid main(void) {\r\n\r\n // To stack MSDF and SDF we need a non-pre-multiplied-alpha texture.\r\n vec4 texColor = texture2D(uSampler, vTextureCoord);\r\n\r\n // MSDF\r\n float median = texColor.r + texColor.g + texColor.b -\r\n min(texColor.r, min(texColor.g, texColor.b)) -\r\n max(texColor.r, max(texColor.g, texColor.b));\r\n // SDF\r\n median = min(median, texColor.a);\r\n\r\n float screenPxDistance = uFWidth * (median - 0.5);\r\n float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\r\n if (median < 0.01) {\r\n alpha = 0.0;\r\n } else if (median > 0.99) {\r\n alpha = 1.0;\r\n }\r\n\r\n // NPM Textures, NPM outputs\r\n gl_FragColor = vec4(uColor.rgb, uColor.a * alpha);\r\n\r\n}\r\n"; + + var msdfVert = "// Mesh material default fragment\r\nattribute vec2 aVertexPosition;\r\nattribute vec2 aTextureCoord;\r\n\r\nuniform mat3 projectionMatrix;\r\nuniform mat3 translationMatrix;\r\nuniform mat3 uTextureMatrix;\r\n\r\nvarying vec2 vTextureCoord;\r\n\r\nvoid main(void)\r\n{\r\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\r\n\r\n vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\r\n}\r\n"; + + const pageMeshDataDefaultPageMeshData = []; + const pageMeshDataMSDFPageMeshData = []; + const charRenderDataPool = []; + const _BitmapText = class extends Container { + constructor(text, style = {}) { + super(); + this._tint = 16777215; + const { align, tint, maxWidth, letterSpacing, fontName, fontSize } = Object.assign({}, _BitmapText.styleDefaults, style); + if (!BitmapFont.available[fontName]) { + throw new Error(`Missing BitmapFont "${fontName}"`); + } + this._activePagesMeshData = []; + this._textWidth = 0; + this._textHeight = 0; + this._align = align; + this._tint = tint; + this._font = void 0; + this._fontName = fontName; + this._fontSize = fontSize; + this.text = text; + this._maxWidth = maxWidth; + this._maxLineHeight = 0; + this._letterSpacing = letterSpacing; + this._anchor = new ObservablePoint(() => { + this.dirty = true; + }, this, 0, 0); + this._roundPixels = settings.ROUND_PIXELS; + this.dirty = true; + this._resolution = settings.RESOLUTION; + this._autoResolution = true; + this._textureCache = {}; + } + updateText() { + const data = BitmapFont.available[this._fontName]; + const fontSize = this.fontSize; + const scale = fontSize / data.size; + const pos = new Point(); + const chars = []; + const lineWidths = []; + const lineSpaces = []; + const text = this._text.replace(/(?:\r\n|\r)/g, "\n") || " "; + const charsInput = splitTextToCharacters(text); + const maxWidth = this._maxWidth * data.size / fontSize; + const pageMeshDataPool = data.distanceFieldType === "none" ? pageMeshDataDefaultPageMeshData : pageMeshDataMSDFPageMeshData; + let prevCharCode = null; + let lastLineWidth = 0; + let maxLineWidth = 0; + let line = 0; + let lastBreakPos = -1; + let lastBreakWidth = 0; + let spacesRemoved = 0; + let maxLineHeight = 0; + let spaceCount = 0; + for (let i = 0; i < charsInput.length; i++) { + const char = charsInput[i]; + const charCode = extractCharCode(char); + if (/(?:\s)/.test(char)) { + lastBreakPos = i; + lastBreakWidth = lastLineWidth; + spaceCount++; + } + if (char === "\r" || char === "\n") { + lineWidths.push(lastLineWidth); + lineSpaces.push(-1); + maxLineWidth = Math.max(maxLineWidth, lastLineWidth); + ++line; + ++spacesRemoved; + pos.x = 0; + pos.y += data.lineHeight; + prevCharCode = null; + spaceCount = 0; + continue; + } + const charData = data.chars[charCode]; + if (!charData) { + continue; + } + if (prevCharCode && charData.kerning[prevCharCode]) { + pos.x += charData.kerning[prevCharCode]; + } + const charRenderData = charRenderDataPool.pop() || { + texture: Texture.EMPTY, + line: 0, + charCode: 0, + prevSpaces: 0, + position: new Point() + }; + charRenderData.texture = charData.texture; + charRenderData.line = line; + charRenderData.charCode = charCode; + charRenderData.position.x = pos.x + charData.xOffset + this._letterSpacing / 2; + charRenderData.position.y = pos.y + charData.yOffset; + charRenderData.prevSpaces = spaceCount; + chars.push(charRenderData); + lastLineWidth = charRenderData.position.x + Math.max(charData.xAdvance - charData.xOffset, charData.texture.orig.width); + pos.x += charData.xAdvance + this._letterSpacing; + maxLineHeight = Math.max(maxLineHeight, charData.yOffset + charData.texture.height); + prevCharCode = charCode; + if (lastBreakPos !== -1 && maxWidth > 0 && pos.x > maxWidth) { + ++spacesRemoved; + removeItems(chars, 1 + lastBreakPos - spacesRemoved, 1 + i - lastBreakPos); + i = lastBreakPos; + lastBreakPos = -1; + lineWidths.push(lastBreakWidth); + lineSpaces.push(chars.length > 0 ? chars[chars.length - 1].prevSpaces : 0); + maxLineWidth = Math.max(maxLineWidth, lastBreakWidth); + line++; + pos.x = 0; + pos.y += data.lineHeight; + prevCharCode = null; + spaceCount = 0; + } + } + const lastChar = charsInput[charsInput.length - 1]; + if (lastChar !== "\r" && lastChar !== "\n") { + if (/(?:\s)/.test(lastChar)) { + lastLineWidth = lastBreakWidth; + } + lineWidths.push(lastLineWidth); + maxLineWidth = Math.max(maxLineWidth, lastLineWidth); + lineSpaces.push(-1); + } + const lineAlignOffsets = []; + for (let i = 0; i <= line; i++) { + let alignOffset = 0; + if (this._align === "right") { + alignOffset = maxLineWidth - lineWidths[i]; + } else if (this._align === "center") { + alignOffset = (maxLineWidth - lineWidths[i]) / 2; + } else if (this._align === "justify") { + alignOffset = lineSpaces[i] < 0 ? 0 : (maxLineWidth - lineWidths[i]) / lineSpaces[i]; + } + lineAlignOffsets.push(alignOffset); + } + const lenChars = chars.length; + const pagesMeshData = {}; + const newPagesMeshData = []; + const activePagesMeshData = this._activePagesMeshData; + pageMeshDataPool.push(...activePagesMeshData); + for (let i = 0; i < lenChars; i++) { + const texture = chars[i].texture; + const baseTextureUid = texture.baseTexture.uid; + if (!pagesMeshData[baseTextureUid]) { + let pageMeshData = pageMeshDataPool.pop(); + if (!pageMeshData) { + const geometry = new MeshGeometry(); + let material; + let meshBlendMode; + if (data.distanceFieldType === "none") { + material = new MeshMaterial(Texture.EMPTY); + meshBlendMode = BLEND_MODES.NORMAL; + } else { + material = new MeshMaterial(Texture.EMPTY, { program: Program.from(msdfVert, msdfFrag), uniforms: { uFWidth: 0 } }); + meshBlendMode = BLEND_MODES.NORMAL_NPM; + } + const mesh = new Mesh(geometry, material); + mesh.blendMode = meshBlendMode; + pageMeshData = { + index: 0, + indexCount: 0, + vertexCount: 0, + uvsCount: 0, + total: 0, + mesh, + vertices: null, + uvs: null, + indices: null + }; + } + pageMeshData.index = 0; + pageMeshData.indexCount = 0; + pageMeshData.vertexCount = 0; + pageMeshData.uvsCount = 0; + pageMeshData.total = 0; + const { _textureCache } = this; + _textureCache[baseTextureUid] = _textureCache[baseTextureUid] || new Texture(texture.baseTexture); + pageMeshData.mesh.texture = _textureCache[baseTextureUid]; + pageMeshData.mesh.tint = this._tint; + newPagesMeshData.push(pageMeshData); + pagesMeshData[baseTextureUid] = pageMeshData; + } + pagesMeshData[baseTextureUid].total++; + } + for (let i = 0; i < activePagesMeshData.length; i++) { + if (!newPagesMeshData.includes(activePagesMeshData[i])) { + this.removeChild(activePagesMeshData[i].mesh); + } + } + for (let i = 0; i < newPagesMeshData.length; i++) { + if (newPagesMeshData[i].mesh.parent !== this) { + this.addChild(newPagesMeshData[i].mesh); + } + } + this._activePagesMeshData = newPagesMeshData; + for (const i in pagesMeshData) { + const pageMeshData = pagesMeshData[i]; + const total = pageMeshData.total; + if (!(pageMeshData.indices?.length > 6 * total) || pageMeshData.vertices.length < Mesh.BATCHABLE_SIZE * 2) { + pageMeshData.vertices = new Float32Array(4 * 2 * total); + pageMeshData.uvs = new Float32Array(4 * 2 * total); + pageMeshData.indices = new Uint16Array(6 * total); + } else { + const total2 = pageMeshData.total; + const vertices = pageMeshData.vertices; + for (let i2 = total2 * 4 * 2; i2 < vertices.length; i2++) { + vertices[i2] = 0; + } + } + pageMeshData.mesh.size = 6 * total; + } + for (let i = 0; i < lenChars; i++) { + const char = chars[i]; + let offset = char.position.x + lineAlignOffsets[char.line] * (this._align === "justify" ? char.prevSpaces : 1); + if (this._roundPixels) { + offset = Math.round(offset); + } + const xPos = offset * scale; + const yPos = char.position.y * scale; + const texture = char.texture; + const pageMesh = pagesMeshData[texture.baseTexture.uid]; + const textureFrame = texture.frame; + const textureUvs = texture._uvs; + const index = pageMesh.index++; + pageMesh.indices[index * 6 + 0] = 0 + index * 4; + pageMesh.indices[index * 6 + 1] = 1 + index * 4; + pageMesh.indices[index * 6 + 2] = 2 + index * 4; + pageMesh.indices[index * 6 + 3] = 0 + index * 4; + pageMesh.indices[index * 6 + 4] = 2 + index * 4; + pageMesh.indices[index * 6 + 5] = 3 + index * 4; + pageMesh.vertices[index * 8 + 0] = xPos; + pageMesh.vertices[index * 8 + 1] = yPos; + pageMesh.vertices[index * 8 + 2] = xPos + textureFrame.width * scale; + pageMesh.vertices[index * 8 + 3] = yPos; + pageMesh.vertices[index * 8 + 4] = xPos + textureFrame.width * scale; + pageMesh.vertices[index * 8 + 5] = yPos + textureFrame.height * scale; + pageMesh.vertices[index * 8 + 6] = xPos; + pageMesh.vertices[index * 8 + 7] = yPos + textureFrame.height * scale; + pageMesh.uvs[index * 8 + 0] = textureUvs.x0; + pageMesh.uvs[index * 8 + 1] = textureUvs.y0; + pageMesh.uvs[index * 8 + 2] = textureUvs.x1; + pageMesh.uvs[index * 8 + 3] = textureUvs.y1; + pageMesh.uvs[index * 8 + 4] = textureUvs.x2; + pageMesh.uvs[index * 8 + 5] = textureUvs.y2; + pageMesh.uvs[index * 8 + 6] = textureUvs.x3; + pageMesh.uvs[index * 8 + 7] = textureUvs.y3; + } + this._textWidth = maxLineWidth * scale; + this._textHeight = (pos.y + data.lineHeight) * scale; + for (const i in pagesMeshData) { + const pageMeshData = pagesMeshData[i]; + if (this.anchor.x !== 0 || this.anchor.y !== 0) { + let vertexCount = 0; + const anchorOffsetX = this._textWidth * this.anchor.x; + const anchorOffsetY = this._textHeight * this.anchor.y; + for (let i2 = 0; i2 < pageMeshData.total; i2++) { + pageMeshData.vertices[vertexCount++] -= anchorOffsetX; + pageMeshData.vertices[vertexCount++] -= anchorOffsetY; + pageMeshData.vertices[vertexCount++] -= anchorOffsetX; + pageMeshData.vertices[vertexCount++] -= anchorOffsetY; + pageMeshData.vertices[vertexCount++] -= anchorOffsetX; + pageMeshData.vertices[vertexCount++] -= anchorOffsetY; + pageMeshData.vertices[vertexCount++] -= anchorOffsetX; + pageMeshData.vertices[vertexCount++] -= anchorOffsetY; + } + } + this._maxLineHeight = maxLineHeight * scale; + const vertexBuffer = pageMeshData.mesh.geometry.getBuffer("aVertexPosition"); + const textureBuffer = pageMeshData.mesh.geometry.getBuffer("aTextureCoord"); + const indexBuffer = pageMeshData.mesh.geometry.getIndex(); + vertexBuffer.data = pageMeshData.vertices; + textureBuffer.data = pageMeshData.uvs; + indexBuffer.data = pageMeshData.indices; + vertexBuffer.update(); + textureBuffer.update(); + indexBuffer.update(); + } + for (let i = 0; i < chars.length; i++) { + charRenderDataPool.push(chars[i]); + } + this._font = data; + this.dirty = false; + } + updateTransform() { + this.validate(); + this.containerUpdateTransform(); + } + _render(renderer) { + if (this._autoResolution && this._resolution !== renderer.resolution) { + this._resolution = renderer.resolution; + this.dirty = true; + } + const { distanceFieldRange, distanceFieldType, size } = BitmapFont.available[this._fontName]; + if (distanceFieldType !== "none") { + const { a, b, c, d } = this.worldTransform; + const dx = Math.sqrt(a * a + b * b); + const dy = Math.sqrt(c * c + d * d); + const worldScale = (Math.abs(dx) + Math.abs(dy)) / 2; + const fontScale = this.fontSize / size; + const resolution = renderer._view.resolution; + for (const mesh of this._activePagesMeshData) { + mesh.mesh.shader.uniforms.uFWidth = worldScale * distanceFieldRange * fontScale * resolution; + } + } + super._render(renderer); + } + getLocalBounds() { + this.validate(); + return super.getLocalBounds(); + } + validate() { + const font = BitmapFont.available[this._fontName]; + if (!font) { + throw new Error(`Missing BitmapFont "${this._fontName}"`); + } + if (this._font !== font) { + this.dirty = true; + } + if (this.dirty) { + this.updateText(); + } + } + get tint() { + return this._tint; + } + set tint(value) { + if (this._tint === value) + return; + this._tint = value; + for (let i = 0; i < this._activePagesMeshData.length; i++) { + this._activePagesMeshData[i].mesh.tint = value; + } + } + get align() { + return this._align; + } + set align(value) { + if (this._align !== value) { + this._align = value; + this.dirty = true; + } + } + get fontName() { + return this._fontName; + } + set fontName(value) { + if (!BitmapFont.available[value]) { + throw new Error(`Missing BitmapFont "${value}"`); + } + if (this._fontName !== value) { + this._fontName = value; + this.dirty = true; + } + } + get fontSize() { + return this._fontSize ?? BitmapFont.available[this._fontName].size; + } + set fontSize(value) { + if (this._fontSize !== value) { + this._fontSize = value; + this.dirty = true; + } + } + get anchor() { + return this._anchor; + } + set anchor(value) { + if (typeof value === "number") { + this._anchor.set(value); + } else { + this._anchor.copyFrom(value); + } + } + get text() { + return this._text; + } + set text(text) { + text = String(text === null || text === void 0 ? "" : text); + if (this._text === text) { + return; + } + this._text = text; + this.dirty = true; + } + get maxWidth() { + return this._maxWidth; + } + set maxWidth(value) { + if (this._maxWidth === value) { + return; + } + this._maxWidth = value; + this.dirty = true; + } + get maxLineHeight() { + this.validate(); + return this._maxLineHeight; + } + get textWidth() { + this.validate(); + return this._textWidth; + } + get letterSpacing() { + return this._letterSpacing; + } + set letterSpacing(value) { + if (this._letterSpacing !== value) { + this._letterSpacing = value; + this.dirty = true; + } + } + get roundPixels() { + return this._roundPixels; + } + set roundPixels(value) { + if (value !== this._roundPixels) { + this._roundPixels = value; + this.dirty = true; + } + } + get textHeight() { + this.validate(); + return this._textHeight; + } + get resolution() { + return this._resolution; + } + set resolution(value) { + this._autoResolution = false; + if (this._resolution === value) { + return; + } + this._resolution = value; + this.dirty = true; + } + destroy(options) { + const { _textureCache } = this; + const data = BitmapFont.available[this._fontName]; + const pageMeshDataPool = data.distanceFieldType === "none" ? pageMeshDataDefaultPageMeshData : pageMeshDataMSDFPageMeshData; + pageMeshDataPool.push(...this._activePagesMeshData); + for (const pageMeshData of this._activePagesMeshData) { + this.removeChild(pageMeshData.mesh); + } + this._activePagesMeshData = []; + pageMeshDataPool.filter((page) => _textureCache[page.mesh.texture.baseTexture.uid]).forEach((page) => { + page.mesh.texture = Texture.EMPTY; + }); + for (const id in _textureCache) { + const texture = _textureCache[id]; + texture.destroy(); + delete _textureCache[id]; + } + this._font = null; + this._textureCache = null; + super.destroy(options); + } + }; + let BitmapText = _BitmapText; + BitmapText.styleDefaults = { + align: "left", + tint: 16777215, + maxWidth: 0, + letterSpacing: 0 + }; + + const validExtensions = [".xml", ".fnt"]; + const loadBitmapFont = { + extension: { + type: ExtensionType.LoadParser, + priority: LoaderParserPriority.Normal + }, + test(url) { + return validExtensions.includes(path.extname(url)); + }, + async testParse(data) { + return TextFormat.test(data) || XMLStringFormat.test(data); + }, + async parse(asset, data, loader) { + const fontData = TextFormat.test(asset) ? TextFormat.parse(asset) : XMLStringFormat.parse(asset); + const { src } = data; + const { page: pages } = fontData; + const textureUrls = []; + for (let i = 0; i < pages.length; ++i) { + const pageFile = pages[i].file; + const imagePath = path.join(path.dirname(src), pageFile); + textureUrls.push(imagePath); + } + const loadedTextures = await loader.load(textureUrls); + const textures = textureUrls.map((url) => loadedTextures[url]); + return BitmapFont.install(fontData, textures, true); + }, + async load(url, _options) { + const response = await settings.ADAPTER.fetch(url); + return response.text(); + }, + unload(bitmapFont) { + bitmapFont.destroy(); + } + }; + extensions$1.add(loadBitmapFont); + + const filters = { + AlphaFilter, + BlurFilter, + BlurFilterPass, + ColorMatrixFilter, + DisplacementFilter, + FXAAFilter, + NoiseFilter + }; + + exports.ALPHA_MODES = ALPHA_MODES; + exports.AbstractMultiResource = AbstractMultiResource; + exports.AccessibilityManager = AccessibilityManager; + exports.AnimatedSprite = AnimatedSprite; + exports.Application = Application; + exports.ArrayResource = ArrayResource; + exports.Assets = Assets; + exports.AssetsClass = AssetsClass; + exports.Attribute = Attribute; + exports.BLEND_MODES = BLEND_MODES; + exports.BUFFER_BITS = BUFFER_BITS; + exports.BUFFER_TYPE = BUFFER_TYPE; + exports.BackgroundSystem = BackgroundSystem; + exports.BaseImageResource = BaseImageResource; + exports.BasePrepare = BasePrepare; + exports.BaseRenderTexture = BaseRenderTexture; + exports.BaseTexture = BaseTexture; + exports.BatchDrawCall = BatchDrawCall; + exports.BatchGeometry = BatchGeometry; + exports.BatchRenderer = BatchRenderer; + exports.BatchShaderGenerator = BatchShaderGenerator; + exports.BatchSystem = BatchSystem; + exports.BatchTextureArray = BatchTextureArray; + exports.BitmapFont = BitmapFont; + exports.BitmapFontData = BitmapFontData; + exports.BitmapText = BitmapText; + exports.BlobResource = BlobResource; + exports.Bounds = Bounds; + exports.BrowserAdapter = BrowserAdapter; + exports.Buffer = Buffer; + exports.BufferResource = BufferResource; + exports.BufferSystem = BufferSystem; + exports.CLEAR_MODES = CLEAR_MODES; + exports.COLOR_MASK_BITS = COLOR_MASK_BITS; + exports.Cache = Cache; + exports.CanvasResource = CanvasResource; + exports.Circle = Circle; + exports.CompressedTextureResource = CompressedTextureResource; + exports.Container = Container; + exports.ContextSystem = ContextSystem; + exports.CountLimiter = CountLimiter; + exports.CubeResource = CubeResource; + exports.DEG_TO_RAD = DEG_TO_RAD; + exports.DRAW_MODES = DRAW_MODES; + exports.DisplayObject = DisplayObject; + exports.ENV = ENV; + exports.Ellipse = Ellipse; + exports.EventBoundary = EventBoundary; + exports.EventSystem = EventSystem; + exports.ExtensionType = ExtensionType; + exports.Extract = Extract; + exports.FORMATS = FORMATS; + exports.FORMATS_TO_COMPONENTS = FORMATS_TO_COMPONENTS; + exports.FederatedDisplayObject = FederatedDisplayObject; + exports.FederatedEvent = FederatedEvent; + exports.FederatedMouseEvent = FederatedMouseEvent; + exports.FederatedPointerEvent = FederatedPointerEvent; + exports.FederatedWheelEvent = FederatedWheelEvent; + exports.FillStyle = FillStyle; + exports.Filter = Filter; + exports.FilterState = FilterState; + exports.FilterSystem = FilterSystem; + exports.Framebuffer = Framebuffer; + exports.FramebufferSystem = FramebufferSystem; + exports.GC_MODES = GC_MODES; + exports.GLFramebuffer = GLFramebuffer; + exports.GLProgram = GLProgram; + exports.GLTexture = GLTexture; + exports.GRAPHICS_CURVES = GRAPHICS_CURVES; + exports.GenerateTextureSystem = GenerateTextureSystem; + exports.Geometry = Geometry; + exports.GeometrySystem = GeometrySystem; + exports.Graphics = Graphics; + exports.GraphicsData = GraphicsData; + exports.GraphicsGeometry = GraphicsGeometry; + exports.IGLUniformData = IGLUniformData; + exports.INSTALLED = INSTALLED; + exports.INTERNAL_FORMATS = INTERNAL_FORMATS; + exports.INTERNAL_FORMAT_TO_BYTES_PER_PIXEL = INTERNAL_FORMAT_TO_BYTES_PER_PIXEL; + exports.ImageBitmapResource = ImageBitmapResource; + exports.ImageResource = ImageResource; + exports.LINE_CAP = LINE_CAP; + exports.LINE_JOIN = LINE_JOIN; + exports.LineStyle = LineStyle; + exports.LoaderParserPriority = LoaderParserPriority; + exports.MASK_TYPES = MASK_TYPES; + exports.MIPMAP_MODES = MIPMAP_MODES; + exports.MSAA_QUALITY = MSAA_QUALITY; + exports.MaskData = MaskData; + exports.MaskSystem = MaskSystem; + exports.Matrix = Matrix; + exports.Mesh = Mesh; + exports.MeshBatchUvs = MeshBatchUvs; + exports.MeshGeometry = MeshGeometry; + exports.MeshMaterial = MeshMaterial; + exports.MultisampleSystem = MultisampleSystem; + exports.NineSlicePlane = NineSlicePlane; + exports.ObjectRenderer = ObjectRenderer; + exports.ObjectRendererSystem = ObjectRendererSystem; + exports.ObservablePoint = ObservablePoint; + exports.PI_2 = PI_2; + exports.PRECISION = PRECISION; + exports.ParticleContainer = ParticleContainer; + exports.ParticleRenderer = ParticleRenderer; + exports.PlaneGeometry = PlaneGeometry; + exports.PluginSystem = PluginSystem; + exports.Point = Point; + exports.Polygon = Polygon; + exports.Prepare = Prepare; + exports.Program = Program; + exports.ProjectionSystem = ProjectionSystem; + exports.Quad = Quad; + exports.QuadUv = QuadUv; + exports.RAD_TO_DEG = RAD_TO_DEG; + exports.RENDERER_TYPE = RENDERER_TYPE; + exports.Rectangle = Rectangle; + exports.RenderTexture = RenderTexture; + exports.RenderTexturePool = RenderTexturePool; + exports.RenderTextureSystem = RenderTextureSystem; + exports.Renderer = Renderer; + exports.ResizePlugin = ResizePlugin; + exports.Resource = Resource; + exports.RopeGeometry = RopeGeometry; + exports.RoundedRectangle = RoundedRectangle; + exports.Runner = Runner; + exports.SAMPLER_TYPES = SAMPLER_TYPES; + exports.SCALE_MODES = SCALE_MODES; + exports.SHAPES = SHAPES; + exports.SVGResource = SVGResource; + exports.ScissorSystem = ScissorSystem; + exports.Shader = Shader; + exports.ShaderSystem = ShaderSystem; + exports.SimpleMesh = SimpleMesh; + exports.SimplePlane = SimplePlane; + exports.SimpleRope = SimpleRope; + exports.Sprite = Sprite; + exports.SpriteMaskFilter = SpriteMaskFilter; + exports.Spritesheet = Spritesheet; + exports.StartupSystem = StartupSystem; + exports.State = State; + exports.StateSystem = StateSystem; + exports.StencilSystem = StencilSystem; + exports.SystemManager = SystemManager; + exports.TARGETS = TARGETS; + exports.TEXT_GRADIENT = TEXT_GRADIENT; + exports.TYPES = TYPES; + exports.TYPES_TO_BYTES_PER_COMPONENT = TYPES_TO_BYTES_PER_COMPONENT; + exports.TYPES_TO_BYTES_PER_PIXEL = TYPES_TO_BYTES_PER_PIXEL; + exports.TemporaryDisplayObject = TemporaryDisplayObject; + exports.Text = Text; + exports.TextFormat = TextFormat; + exports.TextMetrics = TextMetrics; + exports.TextStyle = TextStyle; + exports.Texture = Texture; + exports.TextureGCSystem = TextureGCSystem; + exports.TextureMatrix = TextureMatrix; + exports.TextureSystem = TextureSystem; + exports.TextureUvs = TextureUvs; + exports.Ticker = Ticker; + exports.TickerPlugin = TickerPlugin; + exports.TilingSprite = TilingSprite; + exports.TilingSpriteRenderer = TilingSpriteRenderer; + exports.TimeLimiter = TimeLimiter; + exports.Transform = Transform; + exports.TransformFeedback = TransformFeedback; + exports.TransformFeedbackSystem = TransformFeedbackSystem; + exports.UPDATE_PRIORITY = UPDATE_PRIORITY; + exports.UniformGroup = UniformGroup; + exports.VERSION = VERSION; + exports.VideoResource = VideoResource; + exports.ViewSystem = ViewSystem; + exports.ViewableBuffer = ViewableBuffer; + exports.WRAP_MODES = WRAP_MODES; + exports.XMLFormat = XMLFormat; + exports.XMLStringFormat = XMLStringFormat; + exports.accessibleTarget = accessibleTarget; + exports.autoDetectFormat = autoDetectFormat; + exports.autoDetectRenderer = autoDetectRenderer; + exports.autoDetectResource = autoDetectResource; + exports.cacheTextureArray = cacheTextureArray; + exports.checkExtension = checkExtension; + exports.checkMaxIfStatementsInShader = checkMaxIfStatementsInShader; + exports.convertToList = convertToList; + exports.createStringVariations = createStringVariations; + exports.createTexture = createTexture; + exports.createUBOElements = createUBOElements; + exports.defaultFilterVertex = defaultFilterVertex; + exports.defaultVertex = defaultVertex$1; + exports.detectAvif = detectAvif; + exports.detectCompressedTextures = detectCompressedTextures; + exports.detectDefaults = detectDefaults; + exports.detectWebp = detectWebp; + exports.extensions = extensions$1; + exports.filters = filters; + exports.generateProgram = generateProgram; + exports.generateUniformBufferSync = generateUniformBufferSync; + exports.getFontFamilyName = getFontFamilyName; + exports.getTestContext = getTestContext; + exports.getUBOData = getUBOData; + exports.graphicsUtils = graphicsUtils; + exports.groupD8 = groupD8; + exports.isMobile = isMobile; + exports.isSingleItem = isSingleItem; + exports.loadBitmapFont = loadBitmapFont; + exports.loadDDS = loadDDS; + exports.loadImageBitmap = loadImageBitmap; + exports.loadJson = loadJson; + exports.loadKTX = loadKTX; + exports.loadSVG = loadSVG; + exports.loadTextures = loadTextures; + exports.loadTxt = loadTxt; + exports.loadWebFont = loadWebFont; + exports.parseDDS = parseDDS; + exports.parseKTX = parseKTX; + exports.resolveCompressedTextureUrl = resolveCompressedTextureUrl; + exports.resolveTextureUrl = resolveTextureUrl; + exports.settings = settings; + exports.spritesheetAsset = spritesheetAsset; + exports.uniformParsers = uniformParsers; + exports.utils = index; + + Object.defineProperty(exports, '__esModule', { value: true }); + + return exports; + +})({}); +//# sourceMappingURL=pixi.js.map diff --git a/PongGame/wwwroot/lib/pixi/dist/pixi.js.map b/PongGame/wwwroot/lib/pixi/dist/pixi.js.map new file mode 100644 index 0000000..b225235 --- /dev/null +++ b/PongGame/wwwroot/lib/pixi/dist/pixi.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pixi.js","sources":["../../../packages/constants/lib/index.mjs","../../../packages/settings/lib/adapter.mjs","../../../packages/settings/lib/node_modules/ismobilejs/esm/isMobile.mjs","../../../packages/settings/lib/utils/isMobile.mjs","../../../packages/settings/lib/utils/canUploadSameBuffer.mjs","../../../packages/settings/lib/utils/maxRecommendedTextures.mjs","../../../packages/settings/lib/settings.mjs","../../../packages/core/lib/settings.mjs","../../../packages/extensions/lib/index.mjs","../../../packages/math/lib/const.mjs","../../../packages/math/lib/Point.mjs","../../../packages/math/lib/shapes/Rectangle.mjs","../../../packages/math/lib/shapes/Circle.mjs","../../../packages/math/lib/shapes/Ellipse.mjs","../../../packages/math/lib/shapes/Polygon.mjs","../../../packages/math/lib/shapes/RoundedRectangle.mjs","../../../packages/math/lib/ObservablePoint.mjs","../../../packages/math/lib/Matrix.mjs","../../../packages/math/lib/groupD8.mjs","../../../packages/math/lib/Transform.mjs","../../../packages/runner/lib/Runner.mjs","../../../packages/ticker/lib/settings.mjs","../../../packages/ticker/lib/const.mjs","../../../packages/ticker/lib/TickerListener.mjs","../../../packages/ticker/lib/Ticker.mjs","../../../packages/ticker/lib/TickerPlugin.mjs","../../../node_modules/eventemitter3/index.js","../../../node_modules/earcut/src/earcut.js","../../../node_modules/url/node_modules/punycode/punycode.js","../../../node_modules/url/util.js","../../../node_modules/querystring/decode.js","../../../node_modules/querystring/encode.js","../../../node_modules/querystring/index.js","../../../node_modules/url/url.js","../../../packages/utils/lib/url.mjs","../../../packages/utils/lib/path.mjs","../../../packages/utils/lib/settings.mjs","../../../packages/utils/lib/browser/hello.mjs","../../../packages/utils/lib/browser/isWebGLSupported.mjs","../../../packages/utils/lib/node_modules/css-color-names/css-color-names.mjs","../../../packages/utils/lib/color/hex.mjs","../../../packages/utils/lib/color/premultiply.mjs","../../../packages/utils/lib/data/createIndicesForQuads.mjs","../../../packages/utils/lib/data/getBufferType.mjs","../../../packages/utils/lib/data/interleaveTypedArrays.mjs","../../../packages/utils/lib/data/pow2.mjs","../../../packages/utils/lib/data/removeItems.mjs","../../../packages/utils/lib/data/sign.mjs","../../../packages/utils/lib/data/uid.mjs","../../../packages/utils/lib/logging/deprecation.mjs","../../../packages/utils/lib/media/caches.mjs","../../../packages/utils/lib/media/CanvasRenderTarget.mjs","../../../packages/utils/lib/media/trimCanvas.mjs","../../../packages/utils/lib/const.mjs","../../../packages/utils/lib/network/decomposeDataUri.mjs","../../../packages/utils/lib/network/determineCrossOrigin.mjs","../../../packages/utils/lib/network/getResolutionOfUrl.mjs","../../../packages/core/lib/textures/resources/autoDetectResource.mjs","../../../packages/core/lib/textures/resources/Resource.mjs","../../../packages/core/lib/textures/resources/BufferResource.mjs","../../../packages/core/lib/textures/BaseTexture.mjs","../../../packages/core/lib/textures/resources/AbstractMultiResource.mjs","../../../packages/core/lib/textures/resources/ArrayResource.mjs","../../../packages/core/lib/textures/resources/BaseImageResource.mjs","../../../packages/core/lib/textures/resources/CanvasResource.mjs","../../../packages/core/lib/textures/resources/CubeResource.mjs","../../../packages/core/lib/textures/resources/ImageResource.mjs","../../../packages/core/lib/textures/resources/SVGResource.mjs","../../../packages/core/lib/textures/resources/VideoResource.mjs","../../../packages/core/lib/textures/resources/ImageBitmapResource.mjs","../../../packages/core/lib/textures/resources/index.mjs","../../../packages/core/lib/textures/resources/DepthResource.mjs","../../../packages/core/lib/framebuffer/Framebuffer.mjs","../../../packages/core/lib/renderTexture/BaseRenderTexture.mjs","../../../packages/core/lib/textures/TextureUvs.mjs","../../../packages/core/lib/textures/Texture.mjs","../../../packages/core/lib/renderTexture/RenderTexture.mjs","../../../packages/core/lib/renderTexture/RenderTexturePool.mjs","../../../packages/core/lib/geometry/Attribute.mjs","../../../packages/core/lib/geometry/Buffer.mjs","../../../packages/core/lib/geometry/utils/interleaveTypedArrays.mjs","../../../packages/core/lib/geometry/Geometry.mjs","../../../packages/core/lib/utils/Quad.mjs","../../../packages/core/lib/utils/QuadUv.mjs","../../../packages/core/lib/shader/UniformGroup.mjs","../../../packages/core/lib/filters/FilterState.mjs","../../../packages/core/lib/filters/FilterSystem.mjs","../../../packages/core/lib/batch/ObjectRenderer.mjs","../../../packages/core/lib/batch/BatchSystem.mjs","../../../packages/core/lib/context/ContextSystem.mjs","../../../packages/core/lib/framebuffer/GLFramebuffer.mjs","../../../packages/core/lib/framebuffer/FramebufferSystem.mjs","../../../packages/core/lib/geometry/GeometrySystem.mjs","../../../packages/core/lib/mask/MaskData.mjs","../../../packages/core/lib/shader/utils/compileShader.mjs","../../../packages/core/lib/shader/utils/logProgramError.mjs","../../../packages/core/lib/shader/utils/defaultValue.mjs","../../../packages/core/lib/shader/utils/getTestContext.mjs","../../../packages/core/lib/shader/utils/getMaxFragmentPrecision.mjs","../../../packages/core/lib/shader/utils/setPrecision.mjs","../../../packages/core/lib/shader/utils/mapSize.mjs","../../../packages/core/lib/shader/utils/mapType.mjs","../../../packages/core/lib/shader/utils/uniformParsers.mjs","../../../packages/core/lib/shader/utils/generateUniformsSync.mjs","../../../packages/core/lib/shader/utils/checkMaxIfStatementsInShader.mjs","../../../packages/core/lib/shader/utils/unsafeEvalSupported.mjs","../../../packages/core/lib/shader/defaultProgram.mjs","../../../packages/core/lib/shader/defaultProgram2.mjs","../../../packages/core/lib/shader/Program.mjs","../../../packages/core/lib/shader/Shader.mjs","../../../packages/core/lib/state/State.mjs","../../../packages/core/lib/filters/defaultFilter.mjs","../../../packages/core/lib/filters/defaultFilter2.mjs","../../../packages/core/lib/filters/Filter.mjs","../../../packages/core/lib/filters/spriteMask/spriteMaskFilter2.mjs","../../../packages/core/lib/filters/spriteMask/spriteMaskFilter3.mjs","../../../packages/core/lib/textures/TextureMatrix.mjs","../../../packages/core/lib/filters/spriteMask/SpriteMaskFilter.mjs","../../../packages/core/lib/mask/MaskSystem.mjs","../../../packages/core/lib/mask/AbstractMaskSystem.mjs","../../../packages/core/lib/mask/ScissorSystem.mjs","../../../packages/core/lib/mask/StencilSystem.mjs","../../../packages/core/lib/projection/ProjectionSystem.mjs","../../../packages/core/lib/renderTexture/RenderTextureSystem.mjs","../../../packages/core/lib/shader/utils/generateUniformBufferSync.mjs","../../../packages/core/lib/shader/GLProgram.mjs","../../../packages/core/lib/shader/utils/getAttributeData.mjs","../../../packages/core/lib/shader/utils/getUniformData.mjs","../../../packages/core/lib/shader/utils/generateProgram.mjs","../../../packages/core/lib/shader/ShaderSystem.mjs","../../../packages/core/lib/state/utils/mapWebGLBlendModesToPixi.mjs","../../../packages/core/lib/state/StateSystem.mjs","../../../packages/core/lib/textures/TextureGCSystem.mjs","../../../packages/core/lib/textures/utils/mapTypeAndFormatToInternalFormat.mjs","../../../packages/core/lib/textures/GLTexture.mjs","../../../packages/core/lib/textures/TextureSystem.mjs","../../../packages/core/lib/renderTexture/GenerateTextureSystem.mjs","../../../packages/core/lib/background/BackgroundSystem.mjs","../../../packages/core/lib/view/ViewSystem.mjs","../../../packages/core/lib/plugin/PluginSystem.mjs","../../../packages/core/lib/system/SystemManager.mjs","../../../packages/core/lib/startup/StartupSystem.mjs","../../../packages/core/lib/transformFeedback/TransformFeedbackSystem.mjs","../../../packages/core/lib/autoDetectRenderer.mjs","../../../packages/core/lib/fragments/default.mjs","../../../packages/core/lib/fragments/defaultFilter.mjs","../../../packages/core/lib/fragments/index.mjs","../../../packages/core/lib/Renderer.mjs","../../../packages/core/lib/batch/BatchDrawCall.mjs","../../../packages/core/lib/batch/BatchTextureArray.mjs","../../../packages/core/lib/geometry/ViewableBuffer.mjs","../../../packages/core/lib/batch/BatchShaderGenerator.mjs","../../../packages/core/lib/batch/BatchGeometry.mjs","../../../packages/core/lib/batch/texture.mjs","../../../packages/core/lib/batch/texture2.mjs","../../../packages/core/lib/batch/BatchRenderer.mjs","../../../packages/core/lib/transformFeedback/TransformFeedback.mjs","../../../packages/core/lib/geometry/GLBuffer.mjs","../../../packages/core/lib/geometry/BufferSystem.mjs","../../../packages/core/lib/framebuffer/MultisampleSystem.mjs","../../../packages/core/lib/render/ObjectRendererSystem.mjs","../../../packages/core/lib/index.mjs","../../../packages/filter-alpha/lib/alpha.mjs","../../../packages/filter-alpha/lib/AlphaFilter.mjs","../../../packages/filter-blur/lib/generateBlurVertSource.mjs","../../../packages/filter-blur/lib/generateBlurFragSource.mjs","../../../packages/filter-blur/lib/BlurFilterPass.mjs","../../../packages/filter-blur/lib/BlurFilter.mjs","../../../packages/filter-color-matrix/lib/colorMatrix.mjs","../../../packages/filter-color-matrix/lib/ColorMatrixFilter.mjs","../../../packages/filter-displacement/lib/displacement.mjs","../../../packages/filter-displacement/lib/displacement2.mjs","../../../packages/filter-displacement/lib/DisplacementFilter.mjs","../../../packages/filter-fxaa/lib/fxaa.mjs","../../../packages/filter-fxaa/lib/fxaa2.mjs","../../../packages/filter-fxaa/lib/FXAAFilter.mjs","../../../packages/filter-noise/lib/noise.mjs","../../../packages/filter-noise/lib/NoiseFilter.mjs","../../../packages/display/lib/settings.mjs","../../../packages/display/lib/Bounds.mjs","../../../packages/display/lib/DisplayObject.mjs","../../../packages/display/lib/Container.mjs","../../../packages/sprite/lib/Sprite.mjs","../../../packages/mixin-cache-as-bitmap/lib/index.mjs","../../../packages/mixin-get-child-by-name/lib/index.mjs","../../../packages/mixin-get-global-position/lib/index.mjs","../../../packages/accessibility/lib/accessibleTarget.mjs","../../../packages/events/lib/FederatedEvent.mjs","../../../packages/events/lib/FederatedMouseEvent.mjs","../../../packages/events/lib/FederatedPointerEvent.mjs","../../../packages/events/lib/FederatedWheelEvent.mjs","../../../packages/events/lib/EventBoundary.mjs","../../../packages/events/lib/EventSystem.mjs","../../../packages/events/lib/FederatedEventTarget.mjs","../../../packages/accessibility/lib/AccessibilityManager.mjs","../../../packages/app/lib/Application.mjs","../../../packages/app/lib/ResizePlugin.mjs","../../../packages/assets/lib/BackgroundLoader.mjs","../../../packages/assets/lib/utils/convertToList.mjs","../../../packages/assets/lib/utils/createStringVariations.mjs","../../../packages/assets/lib/utils/isSingleItem.mjs","../../../packages/assets/lib/cache/Cache.mjs","../../../packages/assets/lib/loader/Loader.mjs","../../../packages/assets/lib/resolver/Resolver.mjs","../../../packages/assets/lib/Assets.mjs","../../../packages/assets/lib/AssetExtension.mjs","../../../packages/assets/lib/cache/parsers/cacheTextureArray.mjs","../../../packages/assets/lib/loader/parsers/LoaderParser.mjs","../../../packages/assets/lib/loader/parsers/loadJson.mjs","../../../packages/assets/lib/loader/parsers/loadTxt.mjs","../../../packages/assets/lib/loader/parsers/loadWebFont.mjs","../../../packages/assets/lib/loader/parsers/WorkerManager.mjs","../../../packages/assets/lib/loader/parsers/textures/utils/checkExtension.mjs","../../../packages/assets/lib/loader/parsers/textures/utils/createTexture.mjs","../../../packages/assets/lib/loader/parsers/textures/loadTexture.mjs","../../../packages/assets/lib/loader/parsers/textures/loadSVG.mjs","../../../packages/assets/lib/resolver/parsers/resolveTextureUrl.mjs","../../../packages/assets/lib/detections/parsers/detectAvif.mjs","../../../packages/assets/lib/detections/parsers/detectWebp.mjs","../../../packages/assets/lib/detections/parsers/detectDefaults.mjs","../../../packages/compressed-textures/lib/const.mjs","../../../packages/compressed-textures/lib/resources/BlobResource.mjs","../../../packages/compressed-textures/lib/resources/CompressedTextureResource.mjs","../../../packages/compressed-textures/lib/loaders/detectCompressedTextures.mjs","../../../packages/compressed-textures/lib/parsers/parseDDS.mjs","../../../packages/compressed-textures/lib/parsers/parseKTX.mjs","../../../packages/compressed-textures/lib/loaders/loadDDS.mjs","../../../packages/compressed-textures/lib/loaders/loadKTX.mjs","../../../packages/compressed-textures/lib/loaders/resolveCompressedTextureUrl.mjs","../../../packages/extract/lib/Extract.mjs","../../../packages/graphics/lib/const.mjs","../../../packages/graphics/lib/styles/FillStyle.mjs","../../../packages/graphics/lib/utils/buildPoly.mjs","../../../packages/graphics/lib/utils/buildCircle.mjs","../../../packages/graphics/lib/utils/buildRectangle.mjs","../../../packages/graphics/lib/utils/buildRoundedRectangle.mjs","../../../packages/graphics/lib/utils/buildLine.mjs","../../../packages/graphics/lib/utils/ArcUtils.mjs","../../../packages/graphics/lib/utils/BezierUtils.mjs","../../../packages/graphics/lib/utils/QuadraticUtils.mjs","../../../packages/graphics/lib/utils/BatchPart.mjs","../../../packages/graphics/lib/utils/index.mjs","../../../packages/graphics/lib/GraphicsData.mjs","../../../packages/graphics/lib/GraphicsGeometry.mjs","../../../packages/graphics/lib/styles/LineStyle.mjs","../../../packages/graphics/lib/Graphics.mjs","../../../packages/graphics/lib/index.mjs","../../../packages/mesh/lib/MeshBatchUvs.mjs","../../../packages/mesh/lib/Mesh.mjs","../../../packages/mesh/lib/shader/mesh.mjs","../../../packages/mesh/lib/shader/mesh2.mjs","../../../packages/mesh/lib/MeshMaterial.mjs","../../../packages/mesh/lib/MeshGeometry.mjs","../../../packages/mesh-extras/lib/geometry/PlaneGeometry.mjs","../../../packages/mesh-extras/lib/geometry/RopeGeometry.mjs","../../../packages/mesh-extras/lib/SimpleRope.mjs","../../../packages/mesh-extras/lib/SimplePlane.mjs","../../../packages/mesh-extras/lib/SimpleMesh.mjs","../../../packages/mesh-extras/lib/NineSlicePlane.mjs","../../../packages/particle-container/lib/ParticleContainer.mjs","../../../packages/particle-container/lib/ParticleBuffer.mjs","../../../packages/particle-container/lib/particles.mjs","../../../packages/particle-container/lib/particles2.mjs","../../../packages/particle-container/lib/ParticleRenderer.mjs","../../../packages/prepare/lib/settings.mjs","../../../packages/text/lib/const.mjs","../../../packages/text/lib/TextStyle.mjs","../../../packages/text/lib/TextMetrics.mjs","../../../packages/text/lib/Text.mjs","../../../packages/prepare/lib/CountLimiter.mjs","../../../packages/prepare/lib/BasePrepare.mjs","../../../packages/prepare/lib/Prepare.mjs","../../../packages/prepare/lib/TimeLimiter.mjs","../../../packages/spritesheet/lib/Spritesheet.mjs","../../../packages/spritesheet/lib/spritesheetAsset.mjs","../../../packages/sprite-animated/lib/AnimatedSprite.mjs","../../../packages/sprite-tiling/lib/TilingSprite.mjs","../../../packages/sprite-tiling/lib/sprite-tiling-simple.mjs","../../../packages/sprite-tiling/lib/sprite-tiling-fallback.mjs","../../../packages/sprite-tiling/lib/sprite-tiling-fallback2.mjs","../../../packages/sprite-tiling/lib/sprite-tiling.mjs","../../../packages/sprite-tiling/lib/sprite-tiling2.mjs","../../../packages/sprite-tiling/lib/TilingSpriteRenderer.mjs","../../../packages/text-bitmap/lib/BitmapFontData.mjs","../../../packages/text-bitmap/lib/formats/TextFormat.mjs","../../../packages/text-bitmap/lib/formats/XMLFormat.mjs","../../../packages/text-bitmap/lib/formats/XMLStringFormat.mjs","../../../packages/text-bitmap/lib/formats/index.mjs","../../../packages/text-bitmap/lib/utils/generateFillStyle.mjs","../../../packages/text-bitmap/lib/utils/drawGlyph.mjs","../../../packages/text-bitmap/lib/utils/splitTextToCharacters.mjs","../../../packages/text-bitmap/lib/utils/resolveCharacters.mjs","../../../packages/text-bitmap/lib/utils/extractCharCode.mjs","../../../packages/text-bitmap/lib/BitmapFont.mjs","../../../packages/text-bitmap/lib/shader/msdf.mjs","../../../packages/text-bitmap/lib/shader/msdf2.mjs","../../../packages/text-bitmap/lib/BitmapText.mjs","../../../packages/text-bitmap/lib/loadBitmapFont.mjs","../src/index.ts"],"sourcesContent":["var ENV = /* @__PURE__ */ ((ENV2) => {\n ENV2[ENV2[\"WEBGL_LEGACY\"] = 0] = \"WEBGL_LEGACY\";\n ENV2[ENV2[\"WEBGL\"] = 1] = \"WEBGL\";\n ENV2[ENV2[\"WEBGL2\"] = 2] = \"WEBGL2\";\n return ENV2;\n})(ENV || {});\nvar RENDERER_TYPE = /* @__PURE__ */ ((RENDERER_TYPE2) => {\n RENDERER_TYPE2[RENDERER_TYPE2[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n RENDERER_TYPE2[RENDERER_TYPE2[\"WEBGL\"] = 1] = \"WEBGL\";\n RENDERER_TYPE2[RENDERER_TYPE2[\"CANVAS\"] = 2] = \"CANVAS\";\n return RENDERER_TYPE2;\n})(RENDERER_TYPE || {});\nvar BUFFER_BITS = /* @__PURE__ */ ((BUFFER_BITS2) => {\n BUFFER_BITS2[BUFFER_BITS2[\"COLOR\"] = 16384] = \"COLOR\";\n BUFFER_BITS2[BUFFER_BITS2[\"DEPTH\"] = 256] = \"DEPTH\";\n BUFFER_BITS2[BUFFER_BITS2[\"STENCIL\"] = 1024] = \"STENCIL\";\n return BUFFER_BITS2;\n})(BUFFER_BITS || {});\nvar BLEND_MODES = /* @__PURE__ */ ((BLEND_MODES2) => {\n BLEND_MODES2[BLEND_MODES2[\"NORMAL\"] = 0] = \"NORMAL\";\n BLEND_MODES2[BLEND_MODES2[\"ADD\"] = 1] = \"ADD\";\n BLEND_MODES2[BLEND_MODES2[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n BLEND_MODES2[BLEND_MODES2[\"SCREEN\"] = 3] = \"SCREEN\";\n BLEND_MODES2[BLEND_MODES2[\"OVERLAY\"] = 4] = \"OVERLAY\";\n BLEND_MODES2[BLEND_MODES2[\"DARKEN\"] = 5] = \"DARKEN\";\n BLEND_MODES2[BLEND_MODES2[\"LIGHTEN\"] = 6] = \"LIGHTEN\";\n BLEND_MODES2[BLEND_MODES2[\"COLOR_DODGE\"] = 7] = \"COLOR_DODGE\";\n BLEND_MODES2[BLEND_MODES2[\"COLOR_BURN\"] = 8] = \"COLOR_BURN\";\n BLEND_MODES2[BLEND_MODES2[\"HARD_LIGHT\"] = 9] = \"HARD_LIGHT\";\n BLEND_MODES2[BLEND_MODES2[\"SOFT_LIGHT\"] = 10] = \"SOFT_LIGHT\";\n BLEND_MODES2[BLEND_MODES2[\"DIFFERENCE\"] = 11] = \"DIFFERENCE\";\n BLEND_MODES2[BLEND_MODES2[\"EXCLUSION\"] = 12] = \"EXCLUSION\";\n BLEND_MODES2[BLEND_MODES2[\"HUE\"] = 13] = \"HUE\";\n BLEND_MODES2[BLEND_MODES2[\"SATURATION\"] = 14] = \"SATURATION\";\n BLEND_MODES2[BLEND_MODES2[\"COLOR\"] = 15] = \"COLOR\";\n BLEND_MODES2[BLEND_MODES2[\"LUMINOSITY\"] = 16] = \"LUMINOSITY\";\n BLEND_MODES2[BLEND_MODES2[\"NORMAL_NPM\"] = 17] = \"NORMAL_NPM\";\n BLEND_MODES2[BLEND_MODES2[\"ADD_NPM\"] = 18] = \"ADD_NPM\";\n BLEND_MODES2[BLEND_MODES2[\"SCREEN_NPM\"] = 19] = \"SCREEN_NPM\";\n BLEND_MODES2[BLEND_MODES2[\"NONE\"] = 20] = \"NONE\";\n BLEND_MODES2[BLEND_MODES2[\"SRC_OVER\"] = 0] = \"SRC_OVER\";\n BLEND_MODES2[BLEND_MODES2[\"SRC_IN\"] = 21] = \"SRC_IN\";\n BLEND_MODES2[BLEND_MODES2[\"SRC_OUT\"] = 22] = \"SRC_OUT\";\n BLEND_MODES2[BLEND_MODES2[\"SRC_ATOP\"] = 23] = \"SRC_ATOP\";\n BLEND_MODES2[BLEND_MODES2[\"DST_OVER\"] = 24] = \"DST_OVER\";\n BLEND_MODES2[BLEND_MODES2[\"DST_IN\"] = 25] = \"DST_IN\";\n BLEND_MODES2[BLEND_MODES2[\"DST_OUT\"] = 26] = \"DST_OUT\";\n BLEND_MODES2[BLEND_MODES2[\"DST_ATOP\"] = 27] = \"DST_ATOP\";\n BLEND_MODES2[BLEND_MODES2[\"ERASE\"] = 26] = \"ERASE\";\n BLEND_MODES2[BLEND_MODES2[\"SUBTRACT\"] = 28] = \"SUBTRACT\";\n BLEND_MODES2[BLEND_MODES2[\"XOR\"] = 29] = \"XOR\";\n return BLEND_MODES2;\n})(BLEND_MODES || {});\nvar DRAW_MODES = /* @__PURE__ */ ((DRAW_MODES2) => {\n DRAW_MODES2[DRAW_MODES2[\"POINTS\"] = 0] = \"POINTS\";\n DRAW_MODES2[DRAW_MODES2[\"LINES\"] = 1] = \"LINES\";\n DRAW_MODES2[DRAW_MODES2[\"LINE_LOOP\"] = 2] = \"LINE_LOOP\";\n DRAW_MODES2[DRAW_MODES2[\"LINE_STRIP\"] = 3] = \"LINE_STRIP\";\n DRAW_MODES2[DRAW_MODES2[\"TRIANGLES\"] = 4] = \"TRIANGLES\";\n DRAW_MODES2[DRAW_MODES2[\"TRIANGLE_STRIP\"] = 5] = \"TRIANGLE_STRIP\";\n DRAW_MODES2[DRAW_MODES2[\"TRIANGLE_FAN\"] = 6] = \"TRIANGLE_FAN\";\n return DRAW_MODES2;\n})(DRAW_MODES || {});\nvar FORMATS = /* @__PURE__ */ ((FORMATS2) => {\n FORMATS2[FORMATS2[\"RGBA\"] = 6408] = \"RGBA\";\n FORMATS2[FORMATS2[\"RGB\"] = 6407] = \"RGB\";\n FORMATS2[FORMATS2[\"RG\"] = 33319] = \"RG\";\n FORMATS2[FORMATS2[\"RED\"] = 6403] = \"RED\";\n FORMATS2[FORMATS2[\"RGBA_INTEGER\"] = 36249] = \"RGBA_INTEGER\";\n FORMATS2[FORMATS2[\"RGB_INTEGER\"] = 36248] = \"RGB_INTEGER\";\n FORMATS2[FORMATS2[\"RG_INTEGER\"] = 33320] = \"RG_INTEGER\";\n FORMATS2[FORMATS2[\"RED_INTEGER\"] = 36244] = \"RED_INTEGER\";\n FORMATS2[FORMATS2[\"ALPHA\"] = 6406] = \"ALPHA\";\n FORMATS2[FORMATS2[\"LUMINANCE\"] = 6409] = \"LUMINANCE\";\n FORMATS2[FORMATS2[\"LUMINANCE_ALPHA\"] = 6410] = \"LUMINANCE_ALPHA\";\n FORMATS2[FORMATS2[\"DEPTH_COMPONENT\"] = 6402] = \"DEPTH_COMPONENT\";\n FORMATS2[FORMATS2[\"DEPTH_STENCIL\"] = 34041] = \"DEPTH_STENCIL\";\n return FORMATS2;\n})(FORMATS || {});\nvar TARGETS = /* @__PURE__ */ ((TARGETS2) => {\n TARGETS2[TARGETS2[\"TEXTURE_2D\"] = 3553] = \"TEXTURE_2D\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP\"] = 34067] = \"TEXTURE_CUBE_MAP\";\n TARGETS2[TARGETS2[\"TEXTURE_2D_ARRAY\"] = 35866] = \"TEXTURE_2D_ARRAY\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_X\"] = 34069] = \"TEXTURE_CUBE_MAP_POSITIVE_X\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_X\"] = 34070] = \"TEXTURE_CUBE_MAP_NEGATIVE_X\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_Y\"] = 34071] = \"TEXTURE_CUBE_MAP_POSITIVE_Y\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_Y\"] = 34072] = \"TEXTURE_CUBE_MAP_NEGATIVE_Y\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_Z\"] = 34073] = \"TEXTURE_CUBE_MAP_POSITIVE_Z\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_Z\"] = 34074] = \"TEXTURE_CUBE_MAP_NEGATIVE_Z\";\n return TARGETS2;\n})(TARGETS || {});\nvar TYPES = /* @__PURE__ */ ((TYPES2) => {\n TYPES2[TYPES2[\"UNSIGNED_BYTE\"] = 5121] = \"UNSIGNED_BYTE\";\n TYPES2[TYPES2[\"UNSIGNED_SHORT\"] = 5123] = \"UNSIGNED_SHORT\";\n TYPES2[TYPES2[\"UNSIGNED_SHORT_5_6_5\"] = 33635] = \"UNSIGNED_SHORT_5_6_5\";\n TYPES2[TYPES2[\"UNSIGNED_SHORT_4_4_4_4\"] = 32819] = \"UNSIGNED_SHORT_4_4_4_4\";\n TYPES2[TYPES2[\"UNSIGNED_SHORT_5_5_5_1\"] = 32820] = \"UNSIGNED_SHORT_5_5_5_1\";\n TYPES2[TYPES2[\"UNSIGNED_INT\"] = 5125] = \"UNSIGNED_INT\";\n TYPES2[TYPES2[\"UNSIGNED_INT_10F_11F_11F_REV\"] = 35899] = \"UNSIGNED_INT_10F_11F_11F_REV\";\n TYPES2[TYPES2[\"UNSIGNED_INT_2_10_10_10_REV\"] = 33640] = \"UNSIGNED_INT_2_10_10_10_REV\";\n TYPES2[TYPES2[\"UNSIGNED_INT_24_8\"] = 34042] = \"UNSIGNED_INT_24_8\";\n TYPES2[TYPES2[\"UNSIGNED_INT_5_9_9_9_REV\"] = 35902] = \"UNSIGNED_INT_5_9_9_9_REV\";\n TYPES2[TYPES2[\"BYTE\"] = 5120] = \"BYTE\";\n TYPES2[TYPES2[\"SHORT\"] = 5122] = \"SHORT\";\n TYPES2[TYPES2[\"INT\"] = 5124] = \"INT\";\n TYPES2[TYPES2[\"FLOAT\"] = 5126] = \"FLOAT\";\n TYPES2[TYPES2[\"FLOAT_32_UNSIGNED_INT_24_8_REV\"] = 36269] = \"FLOAT_32_UNSIGNED_INT_24_8_REV\";\n TYPES2[TYPES2[\"HALF_FLOAT\"] = 36193] = \"HALF_FLOAT\";\n return TYPES2;\n})(TYPES || {});\nvar SAMPLER_TYPES = /* @__PURE__ */ ((SAMPLER_TYPES2) => {\n SAMPLER_TYPES2[SAMPLER_TYPES2[\"FLOAT\"] = 0] = \"FLOAT\";\n SAMPLER_TYPES2[SAMPLER_TYPES2[\"INT\"] = 1] = \"INT\";\n SAMPLER_TYPES2[SAMPLER_TYPES2[\"UINT\"] = 2] = \"UINT\";\n return SAMPLER_TYPES2;\n})(SAMPLER_TYPES || {});\nvar SCALE_MODES = /* @__PURE__ */ ((SCALE_MODES2) => {\n SCALE_MODES2[SCALE_MODES2[\"NEAREST\"] = 0] = \"NEAREST\";\n SCALE_MODES2[SCALE_MODES2[\"LINEAR\"] = 1] = \"LINEAR\";\n return SCALE_MODES2;\n})(SCALE_MODES || {});\nvar WRAP_MODES = /* @__PURE__ */ ((WRAP_MODES2) => {\n WRAP_MODES2[WRAP_MODES2[\"CLAMP\"] = 33071] = \"CLAMP\";\n WRAP_MODES2[WRAP_MODES2[\"REPEAT\"] = 10497] = \"REPEAT\";\n WRAP_MODES2[WRAP_MODES2[\"MIRRORED_REPEAT\"] = 33648] = \"MIRRORED_REPEAT\";\n return WRAP_MODES2;\n})(WRAP_MODES || {});\nvar MIPMAP_MODES = /* @__PURE__ */ ((MIPMAP_MODES2) => {\n MIPMAP_MODES2[MIPMAP_MODES2[\"OFF\"] = 0] = \"OFF\";\n MIPMAP_MODES2[MIPMAP_MODES2[\"POW2\"] = 1] = \"POW2\";\n MIPMAP_MODES2[MIPMAP_MODES2[\"ON\"] = 2] = \"ON\";\n MIPMAP_MODES2[MIPMAP_MODES2[\"ON_MANUAL\"] = 3] = \"ON_MANUAL\";\n return MIPMAP_MODES2;\n})(MIPMAP_MODES || {});\nvar ALPHA_MODES = /* @__PURE__ */ ((ALPHA_MODES2) => {\n ALPHA_MODES2[ALPHA_MODES2[\"NPM\"] = 0] = \"NPM\";\n ALPHA_MODES2[ALPHA_MODES2[\"UNPACK\"] = 1] = \"UNPACK\";\n ALPHA_MODES2[ALPHA_MODES2[\"PMA\"] = 2] = \"PMA\";\n ALPHA_MODES2[ALPHA_MODES2[\"NO_PREMULTIPLIED_ALPHA\"] = 0] = \"NO_PREMULTIPLIED_ALPHA\";\n ALPHA_MODES2[ALPHA_MODES2[\"PREMULTIPLY_ON_UPLOAD\"] = 1] = \"PREMULTIPLY_ON_UPLOAD\";\n ALPHA_MODES2[ALPHA_MODES2[\"PREMULTIPLIED_ALPHA\"] = 2] = \"PREMULTIPLIED_ALPHA\";\n return ALPHA_MODES2;\n})(ALPHA_MODES || {});\nvar CLEAR_MODES = /* @__PURE__ */ ((CLEAR_MODES2) => {\n CLEAR_MODES2[CLEAR_MODES2[\"NO\"] = 0] = \"NO\";\n CLEAR_MODES2[CLEAR_MODES2[\"YES\"] = 1] = \"YES\";\n CLEAR_MODES2[CLEAR_MODES2[\"AUTO\"] = 2] = \"AUTO\";\n CLEAR_MODES2[CLEAR_MODES2[\"BLEND\"] = 0] = \"BLEND\";\n CLEAR_MODES2[CLEAR_MODES2[\"CLEAR\"] = 1] = \"CLEAR\";\n CLEAR_MODES2[CLEAR_MODES2[\"BLIT\"] = 2] = \"BLIT\";\n return CLEAR_MODES2;\n})(CLEAR_MODES || {});\nvar GC_MODES = /* @__PURE__ */ ((GC_MODES2) => {\n GC_MODES2[GC_MODES2[\"AUTO\"] = 0] = \"AUTO\";\n GC_MODES2[GC_MODES2[\"MANUAL\"] = 1] = \"MANUAL\";\n return GC_MODES2;\n})(GC_MODES || {});\nvar PRECISION = /* @__PURE__ */ ((PRECISION2) => {\n PRECISION2[\"LOW\"] = \"lowp\";\n PRECISION2[\"MEDIUM\"] = \"mediump\";\n PRECISION2[\"HIGH\"] = \"highp\";\n return PRECISION2;\n})(PRECISION || {});\nvar MASK_TYPES = /* @__PURE__ */ ((MASK_TYPES2) => {\n MASK_TYPES2[MASK_TYPES2[\"NONE\"] = 0] = \"NONE\";\n MASK_TYPES2[MASK_TYPES2[\"SCISSOR\"] = 1] = \"SCISSOR\";\n MASK_TYPES2[MASK_TYPES2[\"STENCIL\"] = 2] = \"STENCIL\";\n MASK_TYPES2[MASK_TYPES2[\"SPRITE\"] = 3] = \"SPRITE\";\n MASK_TYPES2[MASK_TYPES2[\"COLOR\"] = 4] = \"COLOR\";\n return MASK_TYPES2;\n})(MASK_TYPES || {});\nvar COLOR_MASK_BITS = /* @__PURE__ */ ((COLOR_MASK_BITS2) => {\n COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"RED\"] = 1] = \"RED\";\n COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"GREEN\"] = 2] = \"GREEN\";\n COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"BLUE\"] = 4] = \"BLUE\";\n COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"ALPHA\"] = 8] = \"ALPHA\";\n return COLOR_MASK_BITS2;\n})(COLOR_MASK_BITS || {});\nvar MSAA_QUALITY = /* @__PURE__ */ ((MSAA_QUALITY2) => {\n MSAA_QUALITY2[MSAA_QUALITY2[\"NONE\"] = 0] = \"NONE\";\n MSAA_QUALITY2[MSAA_QUALITY2[\"LOW\"] = 2] = \"LOW\";\n MSAA_QUALITY2[MSAA_QUALITY2[\"MEDIUM\"] = 4] = \"MEDIUM\";\n MSAA_QUALITY2[MSAA_QUALITY2[\"HIGH\"] = 8] = \"HIGH\";\n return MSAA_QUALITY2;\n})(MSAA_QUALITY || {});\nvar BUFFER_TYPE = /* @__PURE__ */ ((BUFFER_TYPE2) => {\n BUFFER_TYPE2[BUFFER_TYPE2[\"ELEMENT_ARRAY_BUFFER\"] = 34963] = \"ELEMENT_ARRAY_BUFFER\";\n BUFFER_TYPE2[BUFFER_TYPE2[\"ARRAY_BUFFER\"] = 34962] = \"ARRAY_BUFFER\";\n BUFFER_TYPE2[BUFFER_TYPE2[\"UNIFORM_BUFFER\"] = 35345] = \"UNIFORM_BUFFER\";\n return BUFFER_TYPE2;\n})(BUFFER_TYPE || {});\n\nexport { ALPHA_MODES, BLEND_MODES, BUFFER_BITS, BUFFER_TYPE, CLEAR_MODES, COLOR_MASK_BITS, DRAW_MODES, ENV, FORMATS, GC_MODES, MASK_TYPES, MIPMAP_MODES, MSAA_QUALITY, PRECISION, RENDERER_TYPE, SAMPLER_TYPES, SCALE_MODES, TARGETS, TYPES, WRAP_MODES };\n//# sourceMappingURL=index.mjs.map\n","const BrowserAdapter = {\n createCanvas: (width, height) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n },\n getWebGLRenderingContext: () => WebGLRenderingContext,\n getNavigator: () => navigator,\n getBaseUrl: () => document.baseURI ?? window.location.href,\n getFontFaceSet: () => document.fonts,\n fetch: (url, options) => fetch(url, options)\n};\n\nexport { BrowserAdapter };\n//# sourceMappingURL=adapter.mjs.map\n","var appleIphone = /iPhone/i;\nvar appleIpod = /iPod/i;\nvar appleTablet = /iPad/i;\nvar appleUniversal = /\\biOS-universal(?:.+)Mac\\b/i;\nvar androidPhone = /\\bAndroid(?:.+)Mobile\\b/i;\nvar androidTablet = /Android/i;\nvar amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i;\nvar amazonTablet = /Silk/i;\nvar windowsPhone = /Windows Phone/i;\nvar windowsTablet = /\\bWindows(?:.+)ARM\\b/i;\nvar otherBlackBerry = /BlackBerry/i;\nvar otherBlackBerry10 = /BB10/i;\nvar otherOpera = /Opera Mini/i;\nvar otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nvar otherFirefox = /Mobile(?:.+)Firefox\\b/i;\nvar isAppleTabletOnIos13 = function (navigator) {\n return (typeof navigator !== 'undefined' &&\n navigator.platform === 'MacIntel' &&\n typeof navigator.maxTouchPoints === 'number' &&\n navigator.maxTouchPoints > 1 &&\n typeof MSStream === 'undefined');\n};\nfunction createMatch(userAgent) {\n return function (regex) { return regex.test(userAgent); };\n}\nfunction isMobile(param) {\n var nav = {\n userAgent: '',\n platform: '',\n maxTouchPoints: 0\n };\n if (!param && typeof navigator !== 'undefined') {\n nav = {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n maxTouchPoints: navigator.maxTouchPoints || 0\n };\n }\n else if (typeof param === 'string') {\n nav.userAgent = param;\n }\n else if (param && param.userAgent) {\n nav = {\n userAgent: param.userAgent,\n platform: param.platform,\n maxTouchPoints: param.maxTouchPoints || 0\n };\n }\n var userAgent = nav.userAgent;\n var tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n var match = createMatch(userAgent);\n var result = {\n apple: {\n phone: match(appleIphone) && !match(windowsPhone),\n ipod: match(appleIpod),\n tablet: !match(appleIphone) &&\n (match(appleTablet) || isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone),\n universal: match(appleUniversal),\n device: (match(appleIphone) ||\n match(appleIpod) ||\n match(appleTablet) ||\n match(appleUniversal) ||\n isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone)\n },\n amazon: {\n phone: match(amazonPhone),\n tablet: !match(amazonPhone) && match(amazonTablet),\n device: match(amazonPhone) || match(amazonTablet)\n },\n android: {\n phone: (!match(windowsPhone) && match(amazonPhone)) ||\n (!match(windowsPhone) && match(androidPhone)),\n tablet: !match(windowsPhone) &&\n !match(amazonPhone) &&\n !match(androidPhone) &&\n (match(amazonTablet) || match(androidTablet)),\n device: (!match(windowsPhone) &&\n (match(amazonPhone) ||\n match(amazonTablet) ||\n match(androidPhone) ||\n match(androidTablet))) ||\n match(/\\bokhttp\\b/i)\n },\n windows: {\n phone: match(windowsPhone),\n tablet: match(windowsTablet),\n device: match(windowsPhone) || match(windowsTablet)\n },\n other: {\n blackberry: match(otherBlackBerry),\n blackberry10: match(otherBlackBerry10),\n opera: match(otherOpera),\n firefox: match(otherFirefox),\n chrome: match(otherChrome),\n device: match(otherBlackBerry) ||\n match(otherBlackBerry10) ||\n match(otherOpera) ||\n match(otherFirefox) ||\n match(otherChrome)\n },\n any: false,\n phone: false,\n tablet: false\n };\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n\nexport { isMobile as default };\n//# sourceMappingURL=isMobile.mjs.map\n","import '../node_modules/ismobilejs/esm/index.mjs';\nimport isMobile$1 from '../node_modules/ismobilejs/esm/isMobile.mjs';\n\nconst isMobile = isMobile$1(globalThis.navigator);\n\nexport { isMobile };\n//# sourceMappingURL=isMobile.mjs.map\n","import { isMobile } from './isMobile.mjs';\n\nfunction canUploadSameBuffer() {\n return !isMobile.apple.device;\n}\n\nexport { canUploadSameBuffer };\n//# sourceMappingURL=canUploadSameBuffer.mjs.map\n","import { isMobile } from './isMobile.mjs';\n\nfunction maxRecommendedTextures(max) {\n let allowMax = true;\n if (isMobile.tablet || isMobile.phone) {\n if (isMobile.apple.device) {\n const match = navigator.userAgent.match(/OS (\\d+)_(\\d+)?/);\n if (match) {\n const majorVersion = parseInt(match[1], 10);\n if (majorVersion < 11) {\n allowMax = false;\n }\n }\n }\n if (isMobile.android.device) {\n const match = navigator.userAgent.match(/Android\\s([0-9.]*)/);\n if (match) {\n const majorVersion = parseInt(match[1], 10);\n if (majorVersion < 7) {\n allowMax = false;\n }\n }\n }\n }\n return allowMax ? max : 4;\n}\n\nexport { maxRecommendedTextures };\n//# sourceMappingURL=maxRecommendedTextures.mjs.map\n","import { MIPMAP_MODES, MSAA_QUALITY, GC_MODES, WRAP_MODES, SCALE_MODES, PRECISION } from '@pixi/constants';\nimport { BrowserAdapter } from './adapter.mjs';\nimport { canUploadSameBuffer } from './utils/canUploadSameBuffer.mjs';\nimport { isMobile } from './utils/isMobile.mjs';\nimport { maxRecommendedTextures } from './utils/maxRecommendedTextures.mjs';\n\nconst settings = {\n ADAPTER: BrowserAdapter,\n MIPMAP_TEXTURES: MIPMAP_MODES.POW2,\n ANISOTROPIC_LEVEL: 0,\n RESOLUTION: 1,\n FILTER_RESOLUTION: 1,\n FILTER_MULTISAMPLE: MSAA_QUALITY.NONE,\n SPRITE_MAX_TEXTURES: maxRecommendedTextures(32),\n SPRITE_BATCH_SIZE: 4096,\n RENDER_OPTIONS: {\n view: null,\n antialias: false,\n autoDensity: false,\n backgroundColor: 0,\n backgroundAlpha: 1,\n useContextAlpha: true,\n clearBeforeRender: true,\n preserveDrawingBuffer: false,\n width: 800,\n height: 600,\n legacy: false,\n hello: false\n },\n GC_MODE: GC_MODES.AUTO,\n GC_MAX_IDLE: 60 * 60,\n GC_MAX_CHECK_COUNT: 60 * 10,\n WRAP_MODE: WRAP_MODES.CLAMP,\n SCALE_MODE: SCALE_MODES.LINEAR,\n PRECISION_VERTEX: PRECISION.HIGH,\n PRECISION_FRAGMENT: isMobile.apple.device ? PRECISION.HIGH : PRECISION.MEDIUM,\n CAN_UPLOAD_SAME_BUFFER: canUploadSameBuffer(),\n CREATE_IMAGE_BITMAP: false,\n ROUND_PIXELS: false\n};\n\nexport { settings };\n//# sourceMappingURL=settings.mjs.map\n","import { settings } from '@pixi/settings';\nexport { settings } from '@pixi/settings';\nimport { ENV } from '@pixi/constants';\n\nsettings.PREFER_ENV = ENV.WEBGL2;\nsettings.STRICT_TEXTURE_CACHE = false;\n//# sourceMappingURL=settings.mjs.map\n","var ExtensionType = /* @__PURE__ */ ((ExtensionType2) => {\n ExtensionType2[\"Renderer\"] = \"renderer\";\n ExtensionType2[\"Application\"] = \"application\";\n ExtensionType2[\"RendererSystem\"] = \"renderer-webgl-system\";\n ExtensionType2[\"RendererPlugin\"] = \"renderer-webgl-plugin\";\n ExtensionType2[\"CanvasRendererSystem\"] = \"renderer-canvas-system\";\n ExtensionType2[\"CanvasRendererPlugin\"] = \"renderer-canvas-plugin\";\n ExtensionType2[\"Asset\"] = \"asset\";\n ExtensionType2[\"LoadParser\"] = \"load-parser\";\n ExtensionType2[\"ResolveParser\"] = \"resolve-parser\";\n ExtensionType2[\"CacheParser\"] = \"cache-parser\";\n ExtensionType2[\"DetectionParser\"] = \"detection-parser\";\n return ExtensionType2;\n})(ExtensionType || {});\nconst normalizeExtension = (ext) => {\n if (typeof ext === \"function\" || typeof ext === \"object\" && ext.extension) {\n const metadata = typeof ext.extension !== \"object\" ? { type: ext.extension } : ext.extension;\n ext = { ...metadata, ref: ext };\n }\n if (typeof ext === \"object\") {\n ext = { ...ext };\n } else {\n throw new Error(\"Invalid extension type\");\n }\n if (typeof ext.type === \"string\") {\n ext.type = [ext.type];\n }\n return ext;\n};\nconst extensions = {\n _addHandlers: {},\n _removeHandlers: {},\n _queue: {},\n remove(...extensions2) {\n extensions2.map(normalizeExtension).forEach((ext) => {\n ext.type.forEach((type) => this._removeHandlers[type]?.(ext));\n });\n return this;\n },\n add(...extensions2) {\n extensions2.map(normalizeExtension).forEach((ext) => {\n ext.type.forEach((type) => {\n const handlers = this._addHandlers;\n const queue = this._queue;\n if (!handlers[type]) {\n queue[type] = queue[type] || [];\n queue[type].push(ext);\n } else {\n handlers[type](ext);\n }\n });\n });\n return this;\n },\n handle(type, onAdd, onRemove) {\n const addHandlers = this._addHandlers;\n const removeHandlers = this._removeHandlers;\n addHandlers[type] = onAdd;\n removeHandlers[type] = onRemove;\n const queue = this._queue;\n if (queue[type]) {\n queue[type].forEach((ext) => onAdd(ext));\n delete queue[type];\n }\n return this;\n },\n handleByMap(type, map) {\n return this.handle(type, (extension) => {\n map[extension.name] = extension.ref;\n }, (extension) => {\n delete map[extension.name];\n });\n },\n handleByList(type, list) {\n return this.handle(type, (extension) => {\n list.push(extension.ref);\n list.sort((a, b) => (b.priority ?? -1) - (a.priority ?? -1));\n }, (extension) => {\n const index = list.indexOf(extension.ref);\n if (index !== -1) {\n list.splice(index, 1);\n }\n });\n }\n};\n\nexport { ExtensionType, extensions };\n//# sourceMappingURL=index.mjs.map\n","const PI_2 = Math.PI * 2;\nconst RAD_TO_DEG = 180 / Math.PI;\nconst DEG_TO_RAD = Math.PI / 180;\nvar SHAPES = /* @__PURE__ */ ((SHAPES2) => {\n SHAPES2[SHAPES2[\"POLY\"] = 0] = \"POLY\";\n SHAPES2[SHAPES2[\"RECT\"] = 1] = \"RECT\";\n SHAPES2[SHAPES2[\"CIRC\"] = 2] = \"CIRC\";\n SHAPES2[SHAPES2[\"ELIP\"] = 3] = \"ELIP\";\n SHAPES2[SHAPES2[\"RREC\"] = 4] = \"RREC\";\n return SHAPES2;\n})(SHAPES || {});\n\nexport { DEG_TO_RAD, PI_2, RAD_TO_DEG, SHAPES };\n//# sourceMappingURL=const.mjs.map\n","class Point {\n constructor(x = 0, y = 0) {\n this.x = 0;\n this.y = 0;\n this.x = x;\n this.y = y;\n }\n clone() {\n return new Point(this.x, this.y);\n }\n copyFrom(p) {\n this.set(p.x, p.y);\n return this;\n }\n copyTo(p) {\n p.set(this.x, this.y);\n return p;\n }\n equals(p) {\n return p.x === this.x && p.y === this.y;\n }\n set(x = 0, y = x) {\n this.x = x;\n this.y = y;\n return this;\n }\n}\n\nexport { Point };\n//# sourceMappingURL=Point.mjs.map\n","import { SHAPES } from '../const.mjs';\nimport { Point } from '../Point.mjs';\n\nconst tempPoints = [new Point(), new Point(), new Point(), new Point()];\nclass Rectangle {\n constructor(x = 0, y = 0, width = 0, height = 0) {\n this.x = Number(x);\n this.y = Number(y);\n this.width = Number(width);\n this.height = Number(height);\n this.type = SHAPES.RECT;\n }\n get left() {\n return this.x;\n }\n get right() {\n return this.x + this.width;\n }\n get top() {\n return this.y;\n }\n get bottom() {\n return this.y + this.height;\n }\n static get EMPTY() {\n return new Rectangle(0, 0, 0, 0);\n }\n clone() {\n return new Rectangle(this.x, this.y, this.width, this.height);\n }\n copyFrom(rectangle) {\n this.x = rectangle.x;\n this.y = rectangle.y;\n this.width = rectangle.width;\n this.height = rectangle.height;\n return this;\n }\n copyTo(rectangle) {\n rectangle.x = this.x;\n rectangle.y = this.y;\n rectangle.width = this.width;\n rectangle.height = this.height;\n return rectangle;\n }\n contains(x, y) {\n if (this.width <= 0 || this.height <= 0) {\n return false;\n }\n if (x >= this.x && x < this.x + this.width) {\n if (y >= this.y && y < this.y + this.height) {\n return true;\n }\n }\n return false;\n }\n intersects(other, transform) {\n if (!transform) {\n const x02 = this.x < other.x ? other.x : this.x;\n const x12 = this.right > other.right ? other.right : this.right;\n if (x12 <= x02) {\n return false;\n }\n const y02 = this.y < other.y ? other.y : this.y;\n const y12 = this.bottom > other.bottom ? other.bottom : this.bottom;\n return y12 > y02;\n }\n const x0 = this.left;\n const x1 = this.right;\n const y0 = this.top;\n const y1 = this.bottom;\n if (x1 <= x0 || y1 <= y0) {\n return false;\n }\n const lt = tempPoints[0].set(other.left, other.top);\n const lb = tempPoints[1].set(other.left, other.bottom);\n const rt = tempPoints[2].set(other.right, other.top);\n const rb = tempPoints[3].set(other.right, other.bottom);\n if (rt.x <= lt.x || lb.y <= lt.y) {\n return false;\n }\n const s = Math.sign(transform.a * transform.d - transform.b * transform.c);\n if (s === 0) {\n return false;\n }\n transform.apply(lt, lt);\n transform.apply(lb, lb);\n transform.apply(rt, rt);\n transform.apply(rb, rb);\n if (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) {\n return false;\n }\n const nx = s * (lb.y - lt.y);\n const ny = s * (lt.x - lb.x);\n const n00 = nx * x0 + ny * y0;\n const n10 = nx * x1 + ny * y0;\n const n01 = nx * x0 + ny * y1;\n const n11 = nx * x1 + ny * y1;\n if (Math.max(n00, n10, n01, n11) <= nx * lt.x + ny * lt.y || Math.min(n00, n10, n01, n11) >= nx * rb.x + ny * rb.y) {\n return false;\n }\n const mx = s * (lt.y - rt.y);\n const my = s * (rt.x - lt.x);\n const m00 = mx * x0 + my * y0;\n const m10 = mx * x1 + my * y0;\n const m01 = mx * x0 + my * y1;\n const m11 = mx * x1 + my * y1;\n if (Math.max(m00, m10, m01, m11) <= mx * lt.x + my * lt.y || Math.min(m00, m10, m01, m11) >= mx * rb.x + my * rb.y) {\n return false;\n }\n return true;\n }\n pad(paddingX = 0, paddingY = paddingX) {\n this.x -= paddingX;\n this.y -= paddingY;\n this.width += paddingX * 2;\n this.height += paddingY * 2;\n return this;\n }\n fit(rectangle) {\n const x1 = Math.max(this.x, rectangle.x);\n const x2 = Math.min(this.x + this.width, rectangle.x + rectangle.width);\n const y1 = Math.max(this.y, rectangle.y);\n const y2 = Math.min(this.y + this.height, rectangle.y + rectangle.height);\n this.x = x1;\n this.width = Math.max(x2 - x1, 0);\n this.y = y1;\n this.height = Math.max(y2 - y1, 0);\n return this;\n }\n ceil(resolution = 1, eps = 1e-3) {\n const x2 = Math.ceil((this.x + this.width - eps) * resolution) / resolution;\n const y2 = Math.ceil((this.y + this.height - eps) * resolution) / resolution;\n this.x = Math.floor((this.x + eps) * resolution) / resolution;\n this.y = Math.floor((this.y + eps) * resolution) / resolution;\n this.width = x2 - this.x;\n this.height = y2 - this.y;\n return this;\n }\n enlarge(rectangle) {\n const x1 = Math.min(this.x, rectangle.x);\n const x2 = Math.max(this.x + this.width, rectangle.x + rectangle.width);\n const y1 = Math.min(this.y, rectangle.y);\n const y2 = Math.max(this.y + this.height, rectangle.y + rectangle.height);\n this.x = x1;\n this.width = x2 - x1;\n this.y = y1;\n this.height = y2 - y1;\n return this;\n }\n}\n\nexport { Rectangle };\n//# sourceMappingURL=Rectangle.mjs.map\n","import { SHAPES } from '../const.mjs';\nimport { Rectangle } from './Rectangle.mjs';\n\nclass Circle {\n constructor(x = 0, y = 0, radius = 0) {\n this.x = x;\n this.y = y;\n this.radius = radius;\n this.type = SHAPES.CIRC;\n }\n clone() {\n return new Circle(this.x, this.y, this.radius);\n }\n contains(x, y) {\n if (this.radius <= 0) {\n return false;\n }\n const r2 = this.radius * this.radius;\n let dx = this.x - x;\n let dy = this.y - y;\n dx *= dx;\n dy *= dy;\n return dx + dy <= r2;\n }\n getBounds() {\n return new Rectangle(this.x - this.radius, this.y - this.radius, this.radius * 2, this.radius * 2);\n }\n}\n\nexport { Circle };\n//# sourceMappingURL=Circle.mjs.map\n","import { Rectangle } from './Rectangle.mjs';\nimport { SHAPES } from '../const.mjs';\n\nclass Ellipse {\n constructor(x = 0, y = 0, halfWidth = 0, halfHeight = 0) {\n this.x = x;\n this.y = y;\n this.width = halfWidth;\n this.height = halfHeight;\n this.type = SHAPES.ELIP;\n }\n clone() {\n return new Ellipse(this.x, this.y, this.width, this.height);\n }\n contains(x, y) {\n if (this.width <= 0 || this.height <= 0) {\n return false;\n }\n let normx = (x - this.x) / this.width;\n let normy = (y - this.y) / this.height;\n normx *= normx;\n normy *= normy;\n return normx + normy <= 1;\n }\n getBounds() {\n return new Rectangle(this.x - this.width, this.y - this.height, this.width, this.height);\n }\n}\n\nexport { Ellipse };\n//# sourceMappingURL=Ellipse.mjs.map\n","import { SHAPES } from '../const.mjs';\n\nclass Polygon {\n constructor(...points) {\n let flat = Array.isArray(points[0]) ? points[0] : points;\n if (typeof flat[0] !== \"number\") {\n const p = [];\n for (let i = 0, il = flat.length; i < il; i++) {\n p.push(flat[i].x, flat[i].y);\n }\n flat = p;\n }\n this.points = flat;\n this.type = SHAPES.POLY;\n this.closeStroke = true;\n }\n clone() {\n const points = this.points.slice();\n const polygon = new Polygon(points);\n polygon.closeStroke = this.closeStroke;\n return polygon;\n }\n contains(x, y) {\n let inside = false;\n const length = this.points.length / 2;\n for (let i = 0, j = length - 1; i < length; j = i++) {\n const xi = this.points[i * 2];\n const yi = this.points[i * 2 + 1];\n const xj = this.points[j * 2];\n const yj = this.points[j * 2 + 1];\n const intersect = yi > y !== yj > y && x < (xj - xi) * ((y - yi) / (yj - yi)) + xi;\n if (intersect) {\n inside = !inside;\n }\n }\n return inside;\n }\n}\n\nexport { Polygon };\n//# sourceMappingURL=Polygon.mjs.map\n","import { SHAPES } from '../const.mjs';\n\nclass RoundedRectangle {\n constructor(x = 0, y = 0, width = 0, height = 0, radius = 20) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.radius = radius;\n this.type = SHAPES.RREC;\n }\n clone() {\n return new RoundedRectangle(this.x, this.y, this.width, this.height, this.radius);\n }\n contains(x, y) {\n if (this.width <= 0 || this.height <= 0) {\n return false;\n }\n if (x >= this.x && x <= this.x + this.width) {\n if (y >= this.y && y <= this.y + this.height) {\n const radius = Math.max(0, Math.min(this.radius, Math.min(this.width, this.height) / 2));\n if (y >= this.y + radius && y <= this.y + this.height - radius || x >= this.x + radius && x <= this.x + this.width - radius) {\n return true;\n }\n let dx = x - (this.x + radius);\n let dy = y - (this.y + radius);\n const radius2 = radius * radius;\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n dx = x - (this.x + this.width - radius);\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n dy = y - (this.y + this.height - radius);\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n dx = x - (this.x + radius);\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n }\n }\n return false;\n }\n}\n\nexport { RoundedRectangle };\n//# sourceMappingURL=RoundedRectangle.mjs.map\n","class ObservablePoint {\n constructor(cb, scope, x = 0, y = 0) {\n this._x = x;\n this._y = y;\n this.cb = cb;\n this.scope = scope;\n }\n clone(cb = this.cb, scope = this.scope) {\n return new ObservablePoint(cb, scope, this._x, this._y);\n }\n set(x = 0, y = x) {\n if (this._x !== x || this._y !== y) {\n this._x = x;\n this._y = y;\n this.cb.call(this.scope);\n }\n return this;\n }\n copyFrom(p) {\n if (this._x !== p.x || this._y !== p.y) {\n this._x = p.x;\n this._y = p.y;\n this.cb.call(this.scope);\n }\n return this;\n }\n copyTo(p) {\n p.set(this._x, this._y);\n return p;\n }\n equals(p) {\n return p.x === this._x && p.y === this._y;\n }\n get x() {\n return this._x;\n }\n set x(value) {\n if (this._x !== value) {\n this._x = value;\n this.cb.call(this.scope);\n }\n }\n get y() {\n return this._y;\n }\n set y(value) {\n if (this._y !== value) {\n this._y = value;\n this.cb.call(this.scope);\n }\n }\n}\n\nexport { ObservablePoint };\n//# sourceMappingURL=ObservablePoint.mjs.map\n","import { Point } from './Point.mjs';\nimport { PI_2 } from './const.mjs';\n\nclass Matrix {\n constructor(a = 1, b = 0, c = 0, d = 1, tx = 0, ty = 0) {\n this.array = null;\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.tx = tx;\n this.ty = ty;\n }\n fromArray(array) {\n this.a = array[0];\n this.b = array[1];\n this.c = array[3];\n this.d = array[4];\n this.tx = array[2];\n this.ty = array[5];\n }\n set(a, b, c, d, tx, ty) {\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.tx = tx;\n this.ty = ty;\n return this;\n }\n toArray(transpose, out) {\n if (!this.array) {\n this.array = new Float32Array(9);\n }\n const array = out || this.array;\n if (transpose) {\n array[0] = this.a;\n array[1] = this.b;\n array[2] = 0;\n array[3] = this.c;\n array[4] = this.d;\n array[5] = 0;\n array[6] = this.tx;\n array[7] = this.ty;\n array[8] = 1;\n } else {\n array[0] = this.a;\n array[1] = this.c;\n array[2] = this.tx;\n array[3] = this.b;\n array[4] = this.d;\n array[5] = this.ty;\n array[6] = 0;\n array[7] = 0;\n array[8] = 1;\n }\n return array;\n }\n apply(pos, newPos) {\n newPos = newPos || new Point();\n const x = pos.x;\n const y = pos.y;\n newPos.x = this.a * x + this.c * y + this.tx;\n newPos.y = this.b * x + this.d * y + this.ty;\n return newPos;\n }\n applyInverse(pos, newPos) {\n newPos = newPos || new Point();\n const id = 1 / (this.a * this.d + this.c * -this.b);\n const x = pos.x;\n const y = pos.y;\n newPos.x = this.d * id * x + -this.c * id * y + (this.ty * this.c - this.tx * this.d) * id;\n newPos.y = this.a * id * y + -this.b * id * x + (-this.ty * this.a + this.tx * this.b) * id;\n return newPos;\n }\n translate(x, y) {\n this.tx += x;\n this.ty += y;\n return this;\n }\n scale(x, y) {\n this.a *= x;\n this.d *= y;\n this.c *= x;\n this.b *= y;\n this.tx *= x;\n this.ty *= y;\n return this;\n }\n rotate(angle) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const a1 = this.a;\n const c1 = this.c;\n const tx1 = this.tx;\n this.a = a1 * cos - this.b * sin;\n this.b = a1 * sin + this.b * cos;\n this.c = c1 * cos - this.d * sin;\n this.d = c1 * sin + this.d * cos;\n this.tx = tx1 * cos - this.ty * sin;\n this.ty = tx1 * sin + this.ty * cos;\n return this;\n }\n append(matrix) {\n const a1 = this.a;\n const b1 = this.b;\n const c1 = this.c;\n const d1 = this.d;\n this.a = matrix.a * a1 + matrix.b * c1;\n this.b = matrix.a * b1 + matrix.b * d1;\n this.c = matrix.c * a1 + matrix.d * c1;\n this.d = matrix.c * b1 + matrix.d * d1;\n this.tx = matrix.tx * a1 + matrix.ty * c1 + this.tx;\n this.ty = matrix.tx * b1 + matrix.ty * d1 + this.ty;\n return this;\n }\n setTransform(x, y, pivotX, pivotY, scaleX, scaleY, rotation, skewX, skewY) {\n this.a = Math.cos(rotation + skewY) * scaleX;\n this.b = Math.sin(rotation + skewY) * scaleX;\n this.c = -Math.sin(rotation - skewX) * scaleY;\n this.d = Math.cos(rotation - skewX) * scaleY;\n this.tx = x - (pivotX * this.a + pivotY * this.c);\n this.ty = y - (pivotX * this.b + pivotY * this.d);\n return this;\n }\n prepend(matrix) {\n const tx1 = this.tx;\n if (matrix.a !== 1 || matrix.b !== 0 || matrix.c !== 0 || matrix.d !== 1) {\n const a1 = this.a;\n const c1 = this.c;\n this.a = a1 * matrix.a + this.b * matrix.c;\n this.b = a1 * matrix.b + this.b * matrix.d;\n this.c = c1 * matrix.a + this.d * matrix.c;\n this.d = c1 * matrix.b + this.d * matrix.d;\n }\n this.tx = tx1 * matrix.a + this.ty * matrix.c + matrix.tx;\n this.ty = tx1 * matrix.b + this.ty * matrix.d + matrix.ty;\n return this;\n }\n decompose(transform) {\n const a = this.a;\n const b = this.b;\n const c = this.c;\n const d = this.d;\n const pivot = transform.pivot;\n const skewX = -Math.atan2(-c, d);\n const skewY = Math.atan2(b, a);\n const delta = Math.abs(skewX + skewY);\n if (delta < 1e-5 || Math.abs(PI_2 - delta) < 1e-5) {\n transform.rotation = skewY;\n transform.skew.x = transform.skew.y = 0;\n } else {\n transform.rotation = 0;\n transform.skew.x = skewX;\n transform.skew.y = skewY;\n }\n transform.scale.x = Math.sqrt(a * a + b * b);\n transform.scale.y = Math.sqrt(c * c + d * d);\n transform.position.x = this.tx + (pivot.x * a + pivot.y * c);\n transform.position.y = this.ty + (pivot.x * b + pivot.y * d);\n return transform;\n }\n invert() {\n const a1 = this.a;\n const b1 = this.b;\n const c1 = this.c;\n const d1 = this.d;\n const tx1 = this.tx;\n const n = a1 * d1 - b1 * c1;\n this.a = d1 / n;\n this.b = -b1 / n;\n this.c = -c1 / n;\n this.d = a1 / n;\n this.tx = (c1 * this.ty - d1 * tx1) / n;\n this.ty = -(a1 * this.ty - b1 * tx1) / n;\n return this;\n }\n identity() {\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.tx = 0;\n this.ty = 0;\n return this;\n }\n clone() {\n const matrix = new Matrix();\n matrix.a = this.a;\n matrix.b = this.b;\n matrix.c = this.c;\n matrix.d = this.d;\n matrix.tx = this.tx;\n matrix.ty = this.ty;\n return matrix;\n }\n copyTo(matrix) {\n matrix.a = this.a;\n matrix.b = this.b;\n matrix.c = this.c;\n matrix.d = this.d;\n matrix.tx = this.tx;\n matrix.ty = this.ty;\n return matrix;\n }\n copyFrom(matrix) {\n this.a = matrix.a;\n this.b = matrix.b;\n this.c = matrix.c;\n this.d = matrix.d;\n this.tx = matrix.tx;\n this.ty = matrix.ty;\n return this;\n }\n static get IDENTITY() {\n return new Matrix();\n }\n static get TEMP_MATRIX() {\n return new Matrix();\n }\n}\n\nexport { Matrix };\n//# sourceMappingURL=Matrix.mjs.map\n","import { Matrix } from './Matrix.mjs';\n\nconst ux = [1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1];\nconst uy = [0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1];\nconst vx = [0, -1, -1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 0, -1, -1, -1];\nconst vy = [1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, 1, 0, -1];\nconst rotationCayley = [];\nconst rotationMatrices = [];\nconst signum = Math.sign;\nfunction init() {\n for (let i = 0; i < 16; i++) {\n const row = [];\n rotationCayley.push(row);\n for (let j = 0; j < 16; j++) {\n const _ux = signum(ux[i] * ux[j] + vx[i] * uy[j]);\n const _uy = signum(uy[i] * ux[j] + vy[i] * uy[j]);\n const _vx = signum(ux[i] * vx[j] + vx[i] * vy[j]);\n const _vy = signum(uy[i] * vx[j] + vy[i] * vy[j]);\n for (let k = 0; k < 16; k++) {\n if (ux[k] === _ux && uy[k] === _uy && vx[k] === _vx && vy[k] === _vy) {\n row.push(k);\n break;\n }\n }\n }\n }\n for (let i = 0; i < 16; i++) {\n const mat = new Matrix();\n mat.set(ux[i], uy[i], vx[i], vy[i], 0, 0);\n rotationMatrices.push(mat);\n }\n}\ninit();\nconst groupD8 = {\n E: 0,\n SE: 1,\n S: 2,\n SW: 3,\n W: 4,\n NW: 5,\n N: 6,\n NE: 7,\n MIRROR_VERTICAL: 8,\n MAIN_DIAGONAL: 10,\n MIRROR_HORIZONTAL: 12,\n REVERSE_DIAGONAL: 14,\n uX: (ind) => ux[ind],\n uY: (ind) => uy[ind],\n vX: (ind) => vx[ind],\n vY: (ind) => vy[ind],\n inv: (rotation) => {\n if (rotation & 8) {\n return rotation & 15;\n }\n return -rotation & 7;\n },\n add: (rotationSecond, rotationFirst) => rotationCayley[rotationSecond][rotationFirst],\n sub: (rotationSecond, rotationFirst) => rotationCayley[rotationSecond][groupD8.inv(rotationFirst)],\n rotate180: (rotation) => rotation ^ 4,\n isVertical: (rotation) => (rotation & 3) === 2,\n byDirection: (dx, dy) => {\n if (Math.abs(dx) * 2 <= Math.abs(dy)) {\n if (dy >= 0) {\n return groupD8.S;\n }\n return groupD8.N;\n } else if (Math.abs(dy) * 2 <= Math.abs(dx)) {\n if (dx > 0) {\n return groupD8.E;\n }\n return groupD8.W;\n } else if (dy > 0) {\n if (dx > 0) {\n return groupD8.SE;\n }\n return groupD8.SW;\n } else if (dx > 0) {\n return groupD8.NE;\n }\n return groupD8.NW;\n },\n matrixAppendRotationInv: (matrix, rotation, tx = 0, ty = 0) => {\n const mat = rotationMatrices[groupD8.inv(rotation)];\n mat.tx = tx;\n mat.ty = ty;\n matrix.append(mat);\n }\n};\n\nexport { groupD8 };\n//# sourceMappingURL=groupD8.mjs.map\n","import { ObservablePoint } from './ObservablePoint.mjs';\nimport { Matrix } from './Matrix.mjs';\n\nconst _Transform = class {\n constructor() {\n this.worldTransform = new Matrix();\n this.localTransform = new Matrix();\n this.position = new ObservablePoint(this.onChange, this, 0, 0);\n this.scale = new ObservablePoint(this.onChange, this, 1, 1);\n this.pivot = new ObservablePoint(this.onChange, this, 0, 0);\n this.skew = new ObservablePoint(this.updateSkew, this, 0, 0);\n this._rotation = 0;\n this._cx = 1;\n this._sx = 0;\n this._cy = 0;\n this._sy = 1;\n this._localID = 0;\n this._currentLocalID = 0;\n this._worldID = 0;\n this._parentID = 0;\n }\n onChange() {\n this._localID++;\n }\n updateSkew() {\n this._cx = Math.cos(this._rotation + this.skew.y);\n this._sx = Math.sin(this._rotation + this.skew.y);\n this._cy = -Math.sin(this._rotation - this.skew.x);\n this._sy = Math.cos(this._rotation - this.skew.x);\n this._localID++;\n }\n updateLocalTransform() {\n const lt = this.localTransform;\n if (this._localID !== this._currentLocalID) {\n lt.a = this._cx * this.scale.x;\n lt.b = this._sx * this.scale.x;\n lt.c = this._cy * this.scale.y;\n lt.d = this._sy * this.scale.y;\n lt.tx = this.position.x - (this.pivot.x * lt.a + this.pivot.y * lt.c);\n lt.ty = this.position.y - (this.pivot.x * lt.b + this.pivot.y * lt.d);\n this._currentLocalID = this._localID;\n this._parentID = -1;\n }\n }\n updateTransform(parentTransform) {\n const lt = this.localTransform;\n if (this._localID !== this._currentLocalID) {\n lt.a = this._cx * this.scale.x;\n lt.b = this._sx * this.scale.x;\n lt.c = this._cy * this.scale.y;\n lt.d = this._sy * this.scale.y;\n lt.tx = this.position.x - (this.pivot.x * lt.a + this.pivot.y * lt.c);\n lt.ty = this.position.y - (this.pivot.x * lt.b + this.pivot.y * lt.d);\n this._currentLocalID = this._localID;\n this._parentID = -1;\n }\n if (this._parentID !== parentTransform._worldID) {\n const pt = parentTransform.worldTransform;\n const wt = this.worldTransform;\n wt.a = lt.a * pt.a + lt.b * pt.c;\n wt.b = lt.a * pt.b + lt.b * pt.d;\n wt.c = lt.c * pt.a + lt.d * pt.c;\n wt.d = lt.c * pt.b + lt.d * pt.d;\n wt.tx = lt.tx * pt.a + lt.ty * pt.c + pt.tx;\n wt.ty = lt.tx * pt.b + lt.ty * pt.d + pt.ty;\n this._parentID = parentTransform._worldID;\n this._worldID++;\n }\n }\n setFromMatrix(matrix) {\n matrix.decompose(this);\n this._localID++;\n }\n get rotation() {\n return this._rotation;\n }\n set rotation(value) {\n if (this._rotation !== value) {\n this._rotation = value;\n this.updateSkew();\n }\n }\n};\nlet Transform = _Transform;\nTransform.IDENTITY = new _Transform();\n\nexport { Transform };\n//# sourceMappingURL=Transform.mjs.map\n","class Runner {\n constructor(name) {\n this.items = [];\n this._name = name;\n this._aliasCount = 0;\n }\n emit(a0, a1, a2, a3, a4, a5, a6, a7) {\n if (arguments.length > 8) {\n throw new Error(\"max arguments reached\");\n }\n const { name, items } = this;\n this._aliasCount++;\n for (let i = 0, len = items.length; i < len; i++) {\n items[i][name](a0, a1, a2, a3, a4, a5, a6, a7);\n }\n if (items === this.items) {\n this._aliasCount--;\n }\n return this;\n }\n ensureNonAliasedItems() {\n if (this._aliasCount > 0 && this.items.length > 1) {\n this._aliasCount = 0;\n this.items = this.items.slice(0);\n }\n }\n add(item) {\n if (item[this._name]) {\n this.ensureNonAliasedItems();\n this.remove(item);\n this.items.push(item);\n }\n return this;\n }\n remove(item) {\n const index = this.items.indexOf(item);\n if (index !== -1) {\n this.ensureNonAliasedItems();\n this.items.splice(index, 1);\n }\n return this;\n }\n contains(item) {\n return this.items.includes(item);\n }\n removeAll() {\n this.ensureNonAliasedItems();\n this.items.length = 0;\n return this;\n }\n destroy() {\n this.removeAll();\n this.items = null;\n this._name = null;\n }\n get empty() {\n return this.items.length === 0;\n }\n get name() {\n return this._name;\n }\n}\nObject.defineProperties(Runner.prototype, {\n dispatch: { value: Runner.prototype.emit },\n run: { value: Runner.prototype.emit }\n});\n\nexport { Runner };\n//# sourceMappingURL=Runner.mjs.map\n","import { settings } from '@pixi/settings';\nexport { settings } from '@pixi/settings';\n\nsettings.TARGET_FPMS = 0.06;\n//# sourceMappingURL=settings.mjs.map\n","var UPDATE_PRIORITY = /* @__PURE__ */ ((UPDATE_PRIORITY2) => {\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"HIGH\"] = 25] = \"HIGH\";\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"NORMAL\"] = 0] = \"NORMAL\";\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"LOW\"] = -25] = \"LOW\";\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"UTILITY\"] = -50] = \"UTILITY\";\n return UPDATE_PRIORITY2;\n})(UPDATE_PRIORITY || {});\n\nexport { UPDATE_PRIORITY };\n//# sourceMappingURL=const.mjs.map\n","class TickerListener {\n constructor(fn, context = null, priority = 0, once = false) {\n this.next = null;\n this.previous = null;\n this._destroyed = false;\n this.fn = fn;\n this.context = context;\n this.priority = priority;\n this.once = once;\n }\n match(fn, context = null) {\n return this.fn === fn && this.context === context;\n }\n emit(deltaTime) {\n if (this.fn) {\n if (this.context) {\n this.fn.call(this.context, deltaTime);\n } else {\n this.fn(deltaTime);\n }\n }\n const redirect = this.next;\n if (this.once) {\n this.destroy(true);\n }\n if (this._destroyed) {\n this.next = null;\n }\n return redirect;\n }\n connect(previous) {\n this.previous = previous;\n if (previous.next) {\n previous.next.previous = this;\n }\n this.next = previous.next;\n previous.next = this;\n }\n destroy(hard = false) {\n this._destroyed = true;\n this.fn = null;\n this.context = null;\n if (this.previous) {\n this.previous.next = this.next;\n }\n if (this.next) {\n this.next.previous = this.previous;\n }\n const redirect = this.next;\n this.next = hard ? null : redirect;\n this.previous = null;\n return redirect;\n }\n}\n\nexport { TickerListener };\n//# sourceMappingURL=TickerListener.mjs.map\n","import './settings.mjs';\nimport { UPDATE_PRIORITY } from './const.mjs';\nimport { TickerListener } from './TickerListener.mjs';\nimport { settings } from '@pixi/settings';\n\nclass Ticker {\n constructor() {\n this.autoStart = false;\n this.deltaTime = 1;\n this.lastTime = -1;\n this.speed = 1;\n this.started = false;\n this._requestId = null;\n this._maxElapsedMS = 100;\n this._minElapsedMS = 0;\n this._protected = false;\n this._lastFrame = -1;\n this._head = new TickerListener(null, null, Infinity);\n this.deltaMS = 1 / settings.TARGET_FPMS;\n this.elapsedMS = 1 / settings.TARGET_FPMS;\n this._tick = (time) => {\n this._requestId = null;\n if (this.started) {\n this.update(time);\n if (this.started && this._requestId === null && this._head.next) {\n this._requestId = requestAnimationFrame(this._tick);\n }\n }\n };\n }\n _requestIfNeeded() {\n if (this._requestId === null && this._head.next) {\n this.lastTime = performance.now();\n this._lastFrame = this.lastTime;\n this._requestId = requestAnimationFrame(this._tick);\n }\n }\n _cancelIfNeeded() {\n if (this._requestId !== null) {\n cancelAnimationFrame(this._requestId);\n this._requestId = null;\n }\n }\n _startIfPossible() {\n if (this.started) {\n this._requestIfNeeded();\n } else if (this.autoStart) {\n this.start();\n }\n }\n add(fn, context, priority = UPDATE_PRIORITY.NORMAL) {\n return this._addListener(new TickerListener(fn, context, priority));\n }\n addOnce(fn, context, priority = UPDATE_PRIORITY.NORMAL) {\n return this._addListener(new TickerListener(fn, context, priority, true));\n }\n _addListener(listener) {\n let current = this._head.next;\n let previous = this._head;\n if (!current) {\n listener.connect(previous);\n } else {\n while (current) {\n if (listener.priority > current.priority) {\n listener.connect(previous);\n break;\n }\n previous = current;\n current = current.next;\n }\n if (!listener.previous) {\n listener.connect(previous);\n }\n }\n this._startIfPossible();\n return this;\n }\n remove(fn, context) {\n let listener = this._head.next;\n while (listener) {\n if (listener.match(fn, context)) {\n listener = listener.destroy();\n } else {\n listener = listener.next;\n }\n }\n if (!this._head.next) {\n this._cancelIfNeeded();\n }\n return this;\n }\n get count() {\n if (!this._head) {\n return 0;\n }\n let count = 0;\n let current = this._head;\n while (current = current.next) {\n count++;\n }\n return count;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this._requestIfNeeded();\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this._cancelIfNeeded();\n }\n }\n destroy() {\n if (!this._protected) {\n this.stop();\n let listener = this._head.next;\n while (listener) {\n listener = listener.destroy(true);\n }\n this._head.destroy();\n this._head = null;\n }\n }\n update(currentTime = performance.now()) {\n let elapsedMS;\n if (currentTime > this.lastTime) {\n elapsedMS = this.elapsedMS = currentTime - this.lastTime;\n if (elapsedMS > this._maxElapsedMS) {\n elapsedMS = this._maxElapsedMS;\n }\n elapsedMS *= this.speed;\n if (this._minElapsedMS) {\n const delta = currentTime - this._lastFrame | 0;\n if (delta < this._minElapsedMS) {\n return;\n }\n this._lastFrame = currentTime - delta % this._minElapsedMS;\n }\n this.deltaMS = elapsedMS;\n this.deltaTime = this.deltaMS * settings.TARGET_FPMS;\n const head = this._head;\n let listener = head.next;\n while (listener) {\n listener = listener.emit(this.deltaTime);\n }\n if (!head.next) {\n this._cancelIfNeeded();\n }\n } else {\n this.deltaTime = this.deltaMS = this.elapsedMS = 0;\n }\n this.lastTime = currentTime;\n }\n get FPS() {\n return 1e3 / this.elapsedMS;\n }\n get minFPS() {\n return 1e3 / this._maxElapsedMS;\n }\n set minFPS(fps) {\n const minFPS = Math.min(this.maxFPS, fps);\n const minFPMS = Math.min(Math.max(0, minFPS) / 1e3, settings.TARGET_FPMS);\n this._maxElapsedMS = 1 / minFPMS;\n }\n get maxFPS() {\n if (this._minElapsedMS) {\n return Math.round(1e3 / this._minElapsedMS);\n }\n return 0;\n }\n set maxFPS(fps) {\n if (fps === 0) {\n this._minElapsedMS = 0;\n } else {\n const maxFPS = Math.max(this.minFPS, fps);\n this._minElapsedMS = 1 / (maxFPS / 1e3);\n }\n }\n static get shared() {\n if (!Ticker._shared) {\n const shared = Ticker._shared = new Ticker();\n shared.autoStart = true;\n shared._protected = true;\n }\n return Ticker._shared;\n }\n static get system() {\n if (!Ticker._system) {\n const system = Ticker._system = new Ticker();\n system.autoStart = true;\n system._protected = true;\n }\n return Ticker._system;\n }\n}\n\nexport { Ticker };\n//# sourceMappingURL=Ticker.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\nimport { UPDATE_PRIORITY } from './const.mjs';\nimport { Ticker } from './Ticker.mjs';\n\nclass TickerPlugin {\n static init(options) {\n options = Object.assign({\n autoStart: true,\n sharedTicker: false\n }, options);\n Object.defineProperty(this, \"ticker\", {\n set(ticker) {\n if (this._ticker) {\n this._ticker.remove(this.render, this);\n }\n this._ticker = ticker;\n if (ticker) {\n ticker.add(this.render, this, UPDATE_PRIORITY.LOW);\n }\n },\n get() {\n return this._ticker;\n }\n });\n this.stop = () => {\n this._ticker.stop();\n };\n this.start = () => {\n this._ticker.start();\n };\n this._ticker = null;\n this.ticker = options.sharedTicker ? Ticker.shared : new Ticker();\n if (options.autoStart) {\n this.start();\n }\n }\n static destroy() {\n if (this._ticker) {\n const oldTicker = this._ticker;\n this.ticker = null;\n oldTicker.destroy();\n }\n }\n}\nTickerPlugin.extension = ExtensionType.Application;\nextensions.add(TickerPlugin);\n\nexport { TickerPlugin };\n//# sourceMappingURL=TickerPlugin.mjs.map\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n 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);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","import { parse, format, resolve } from 'url';\n\nconst url = {\n parse: parse,\n format: format,\n resolve: resolve\n};\n\nexport { url };\n//# sourceMappingURL=url.mjs.map\n","import { settings } from '@pixi/settings';\n\nfunction assertPath(path2) {\n if (typeof path2 !== \"string\") {\n throw new TypeError(`Path must be a string. Received ${JSON.stringify(path2)}`);\n }\n}\nfunction removeUrlParams(url) {\n const re = url.split(\"?\")[0];\n return re.split(\"#\")[0];\n}\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction replaceAll(str, find, replace) {\n return str.replace(new RegExp(escapeRegExp(find), \"g\"), replace);\n}\nfunction normalizeStringPosix(path2, allowAboveRoot) {\n let res = \"\";\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let code;\n for (let i = 0; i <= path2.length; ++i) {\n if (i < path2.length) {\n code = path2.charCodeAt(i);\n } else if (code === 47) {\n break;\n } else {\n code = 47;\n }\n if (code === 47) {\n if (lastSlash === i - 1 || dots === 1) {\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(\"/\");\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = \"\";\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\");\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = \"\";\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0) {\n res += \"/..\";\n } else {\n res = \"..\";\n }\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) {\n res += `/${path2.slice(lastSlash + 1, i)}`;\n } else {\n res = path2.slice(lastSlash + 1, i);\n }\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\nconst path = {\n toPosix(path2) {\n return replaceAll(path2, \"\\\\\", \"/\");\n },\n isUrl(path2) {\n return /^https?:/.test(this.toPosix(path2));\n },\n isDataUrl(path2) {\n return /^data:([a-z]+\\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s<>]*?)$/i.test(path2);\n },\n hasProtocol(path2) {\n return /^[^/:]+:\\//.test(this.toPosix(path2));\n },\n getProtocol(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n let protocol = \"\";\n const isFile = /^file:\\/\\/\\//.exec(path2);\n const isHttp = /^[^/:]+:\\/\\//.exec(path2);\n const isWindows = /^[^/:]+:\\//.exec(path2);\n if (isFile || isHttp || isWindows) {\n const arr = isFile?.[0] || isHttp?.[0] || isWindows?.[0];\n protocol = arr;\n path2 = path2.slice(arr.length);\n }\n return protocol;\n },\n toAbsolute(url, customBaseUrl, customRootUrl) {\n if (this.isDataUrl(url))\n return url;\n const baseUrl = removeUrlParams(this.toPosix(customBaseUrl ?? settings.ADAPTER.getBaseUrl()));\n const rootUrl = removeUrlParams(this.toPosix(customRootUrl ?? this.rootname(baseUrl)));\n assertPath(url);\n url = this.toPosix(url);\n if (url.startsWith(\"/\")) {\n return path.join(rootUrl, url.slice(1));\n }\n const absolutePath = this.isAbsolute(url) ? url : this.join(baseUrl, url);\n return absolutePath;\n },\n normalize(path2) {\n path2 = this.toPosix(path2);\n assertPath(path2);\n if (path2.length === 0)\n return \".\";\n let protocol = \"\";\n const isAbsolute = path2.startsWith(\"/\");\n if (this.hasProtocol(path2)) {\n protocol = this.rootname(path2);\n path2 = path2.slice(protocol.length);\n }\n const trailingSeparator = path2.endsWith(\"/\");\n path2 = normalizeStringPosix(path2, false);\n if (path2.length > 0 && trailingSeparator)\n path2 += \"/\";\n if (isAbsolute)\n return `/${path2}`;\n return protocol + path2;\n },\n isAbsolute(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n if (this.hasProtocol(path2))\n return true;\n return path2.startsWith(\"/\");\n },\n join(...segments) {\n if (segments.length === 0) {\n return \".\";\n }\n let joined;\n for (let i = 0; i < segments.length; ++i) {\n const arg = segments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === void 0)\n joined = arg;\n else {\n const prevArg = segments[i - 1] ?? \"\";\n if (this.extname(prevArg)) {\n joined += `/../${arg}`;\n } else {\n joined += `/${arg}`;\n }\n }\n }\n }\n if (joined === void 0) {\n return \".\";\n }\n return this.normalize(joined);\n },\n dirname(path2) {\n assertPath(path2);\n if (path2.length === 0)\n return \".\";\n path2 = this.toPosix(path2);\n let code = path2.charCodeAt(0);\n const hasRoot = code === 47;\n let end = -1;\n let matchedSlash = true;\n const proto = this.getProtocol(path2);\n const origpath = path2;\n path2 = path2.slice(proto.length);\n for (let i = path2.length - 1; i >= 1; --i) {\n code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n matchedSlash = false;\n }\n }\n if (end === -1)\n return hasRoot ? \"/\" : this.isUrl(origpath) ? proto + path2 : proto;\n if (hasRoot && end === 1)\n return \"//\";\n return proto + path2.slice(0, end);\n },\n rootname(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n let root = \"\";\n if (path2.startsWith(\"/\"))\n root = \"/\";\n else {\n root = this.getProtocol(path2);\n }\n if (this.isUrl(path2)) {\n const index = path2.indexOf(\"/\", root.length);\n if (index !== -1) {\n root = path2.slice(0, index);\n } else\n root = path2;\n if (!root.endsWith(\"/\"))\n root += \"/\";\n }\n return root;\n },\n basename(path2, ext) {\n assertPath(path2);\n if (ext)\n assertPath(ext);\n path2 = this.toPosix(path2);\n let start = 0;\n let end = -1;\n let matchedSlash = true;\n let i;\n if (ext !== void 0 && ext.length > 0 && ext.length <= path2.length) {\n if (ext.length === path2.length && ext === path2)\n return \"\";\n let extIdx = ext.length - 1;\n let firstNonSlashEnd = -1;\n for (i = path2.length - 1; i >= 0; --i) {\n const code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n end = i;\n }\n } else {\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n if (start === end)\n end = firstNonSlashEnd;\n else if (end === -1)\n end = path2.length;\n return path2.slice(start, end);\n }\n for (i = path2.length - 1; i >= 0; --i) {\n if (path2.charCodeAt(i) === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n }\n if (end === -1)\n return \"\";\n return path2.slice(start, end);\n },\n extname(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let preDotState = 0;\n for (let i = path2.length - 1; i >= 0; --i) {\n const code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46) {\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n preDotState = -1;\n }\n }\n if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return \"\";\n }\n return path2.slice(startDot, end);\n },\n parse(path2) {\n assertPath(path2);\n const ret = { root: \"\", dir: \"\", base: \"\", ext: \"\", name: \"\" };\n if (path2.length === 0)\n return ret;\n path2 = this.toPosix(path2);\n let code = path2.charCodeAt(0);\n const isAbsolute = this.isAbsolute(path2);\n let start;\n const protocol = \"\";\n ret.root = this.rootname(path2);\n if (isAbsolute || this.hasProtocol(path2)) {\n start = 1;\n } else {\n start = 0;\n }\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let i = path2.length - 1;\n let preDotState = 0;\n for (; i >= start; --i) {\n code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46) {\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n preDotState = -1;\n }\n }\n if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute)\n ret.base = ret.name = path2.slice(1, end);\n else\n ret.base = ret.name = path2.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path2.slice(1, startDot);\n ret.base = path2.slice(1, end);\n } else {\n ret.name = path2.slice(startPart, startDot);\n ret.base = path2.slice(startPart, end);\n }\n ret.ext = path2.slice(startDot, end);\n }\n ret.dir = this.dirname(path2);\n if (protocol)\n ret.dir = protocol + ret.dir;\n return ret;\n },\n sep: \"/\",\n delimiter: \":\"\n};\n\nexport { path };\n//# sourceMappingURL=path.mjs.map\n","import { settings } from '@pixi/settings';\nexport { settings } from '@pixi/settings';\n\nsettings.RETINA_PREFIX = /@([0-9\\.]+)x/;\nsettings.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT = false;\n//# sourceMappingURL=settings.mjs.map\n","function skipHello() {\n}\nfunction sayHello() {\n}\n\nexport { sayHello, skipHello };\n//# sourceMappingURL=hello.mjs.map\n","import '../settings.mjs';\nimport { settings } from '@pixi/settings';\n\nlet supported;\nfunction isWebGLSupported() {\n if (typeof supported === \"undefined\") {\n supported = function supported2() {\n const contextOptions = {\n stencil: true,\n failIfMajorPerformanceCaveat: settings.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT\n };\n try {\n if (!settings.ADAPTER.getWebGLRenderingContext()) {\n return false;\n }\n const canvas = settings.ADAPTER.createCanvas();\n let gl = canvas.getContext(\"webgl\", contextOptions) || canvas.getContext(\"experimental-webgl\", contextOptions);\n const success = !!(gl && gl.getContextAttributes().stencil);\n if (gl) {\n const loseContext = gl.getExtension(\"WEBGL_lose_context\");\n if (loseContext) {\n loseContext.loseContext();\n }\n }\n gl = null;\n return success;\n } catch (e) {\n return false;\n }\n }();\n }\n return supported;\n}\n\nexport { isWebGLSupported };\n//# sourceMappingURL=isWebGLSupported.mjs.map\n","var aliceblue = \"#f0f8ff\";\nvar antiquewhite = \"#faebd7\";\nvar aqua = \"#00ffff\";\nvar aquamarine = \"#7fffd4\";\nvar azure = \"#f0ffff\";\nvar beige = \"#f5f5dc\";\nvar bisque = \"#ffe4c4\";\nvar black = \"#000000\";\nvar blanchedalmond = \"#ffebcd\";\nvar blue = \"#0000ff\";\nvar blueviolet = \"#8a2be2\";\nvar brown = \"#a52a2a\";\nvar burlywood = \"#deb887\";\nvar cadetblue = \"#5f9ea0\";\nvar chartreuse = \"#7fff00\";\nvar chocolate = \"#d2691e\";\nvar coral = \"#ff7f50\";\nvar cornflowerblue = \"#6495ed\";\nvar cornsilk = \"#fff8dc\";\nvar crimson = \"#dc143c\";\nvar cyan = \"#00ffff\";\nvar darkblue = \"#00008b\";\nvar darkcyan = \"#008b8b\";\nvar darkgoldenrod = \"#b8860b\";\nvar darkgray = \"#a9a9a9\";\nvar darkgreen = \"#006400\";\nvar darkgrey = \"#a9a9a9\";\nvar darkkhaki = \"#bdb76b\";\nvar darkmagenta = \"#8b008b\";\nvar darkolivegreen = \"#556b2f\";\nvar darkorange = \"#ff8c00\";\nvar darkorchid = \"#9932cc\";\nvar darkred = \"#8b0000\";\nvar darksalmon = \"#e9967a\";\nvar darkseagreen = \"#8fbc8f\";\nvar darkslateblue = \"#483d8b\";\nvar darkslategray = \"#2f4f4f\";\nvar darkslategrey = \"#2f4f4f\";\nvar darkturquoise = \"#00ced1\";\nvar darkviolet = \"#9400d3\";\nvar deeppink = \"#ff1493\";\nvar deepskyblue = \"#00bfff\";\nvar dimgray = \"#696969\";\nvar dimgrey = \"#696969\";\nvar dodgerblue = \"#1e90ff\";\nvar firebrick = \"#b22222\";\nvar floralwhite = \"#fffaf0\";\nvar forestgreen = \"#228b22\";\nvar fuchsia = \"#ff00ff\";\nvar gainsboro = \"#dcdcdc\";\nvar ghostwhite = \"#f8f8ff\";\nvar goldenrod = \"#daa520\";\nvar gold = \"#ffd700\";\nvar gray = \"#808080\";\nvar green = \"#008000\";\nvar greenyellow = \"#adff2f\";\nvar grey = \"#808080\";\nvar honeydew = \"#f0fff0\";\nvar hotpink = \"#ff69b4\";\nvar indianred = \"#cd5c5c\";\nvar indigo = \"#4b0082\";\nvar ivory = \"#fffff0\";\nvar khaki = \"#f0e68c\";\nvar lavenderblush = \"#fff0f5\";\nvar lavender = \"#e6e6fa\";\nvar lawngreen = \"#7cfc00\";\nvar lemonchiffon = \"#fffacd\";\nvar lightblue = \"#add8e6\";\nvar lightcoral = \"#f08080\";\nvar lightcyan = \"#e0ffff\";\nvar lightgoldenrodyellow = \"#fafad2\";\nvar lightgray = \"#d3d3d3\";\nvar lightgreen = \"#90ee90\";\nvar lightgrey = \"#d3d3d3\";\nvar lightpink = \"#ffb6c1\";\nvar lightsalmon = \"#ffa07a\";\nvar lightseagreen = \"#20b2aa\";\nvar lightskyblue = \"#87cefa\";\nvar lightslategray = \"#778899\";\nvar lightslategrey = \"#778899\";\nvar lightsteelblue = \"#b0c4de\";\nvar lightyellow = \"#ffffe0\";\nvar lime = \"#00ff00\";\nvar limegreen = \"#32cd32\";\nvar linen = \"#faf0e6\";\nvar magenta = \"#ff00ff\";\nvar maroon = \"#800000\";\nvar mediumaquamarine = \"#66cdaa\";\nvar mediumblue = \"#0000cd\";\nvar mediumorchid = \"#ba55d3\";\nvar mediumpurple = \"#9370db\";\nvar mediumseagreen = \"#3cb371\";\nvar mediumslateblue = \"#7b68ee\";\nvar mediumspringgreen = \"#00fa9a\";\nvar mediumturquoise = \"#48d1cc\";\nvar mediumvioletred = \"#c71585\";\nvar midnightblue = \"#191970\";\nvar mintcream = \"#f5fffa\";\nvar mistyrose = \"#ffe4e1\";\nvar moccasin = \"#ffe4b5\";\nvar navajowhite = \"#ffdead\";\nvar navy = \"#000080\";\nvar oldlace = \"#fdf5e6\";\nvar olive = \"#808000\";\nvar olivedrab = \"#6b8e23\";\nvar orange = \"#ffa500\";\nvar orangered = \"#ff4500\";\nvar orchid = \"#da70d6\";\nvar palegoldenrod = \"#eee8aa\";\nvar palegreen = \"#98fb98\";\nvar paleturquoise = \"#afeeee\";\nvar palevioletred = \"#db7093\";\nvar papayawhip = \"#ffefd5\";\nvar peachpuff = \"#ffdab9\";\nvar peru = \"#cd853f\";\nvar pink = \"#ffc0cb\";\nvar plum = \"#dda0dd\";\nvar powderblue = \"#b0e0e6\";\nvar purple = \"#800080\";\nvar rebeccapurple = \"#663399\";\nvar red = \"#ff0000\";\nvar rosybrown = \"#bc8f8f\";\nvar royalblue = \"#4169e1\";\nvar saddlebrown = \"#8b4513\";\nvar salmon = \"#fa8072\";\nvar sandybrown = \"#f4a460\";\nvar seagreen = \"#2e8b57\";\nvar seashell = \"#fff5ee\";\nvar sienna = \"#a0522d\";\nvar silver = \"#c0c0c0\";\nvar skyblue = \"#87ceeb\";\nvar slateblue = \"#6a5acd\";\nvar slategray = \"#708090\";\nvar slategrey = \"#708090\";\nvar snow = \"#fffafa\";\nvar springgreen = \"#00ff7f\";\nvar steelblue = \"#4682b4\";\nvar tan = \"#d2b48c\";\nvar teal = \"#008080\";\nvar thistle = \"#d8bfd8\";\nvar tomato = \"#ff6347\";\nvar turquoise = \"#40e0d0\";\nvar violet = \"#ee82ee\";\nvar wheat = \"#f5deb3\";\nvar white = \"#ffffff\";\nvar whitesmoke = \"#f5f5f5\";\nvar yellow = \"#ffff00\";\nvar yellowgreen = \"#9acd32\";\nvar cssColorNames = {\n\taliceblue: aliceblue,\n\tantiquewhite: antiquewhite,\n\taqua: aqua,\n\taquamarine: aquamarine,\n\tazure: azure,\n\tbeige: beige,\n\tbisque: bisque,\n\tblack: black,\n\tblanchedalmond: blanchedalmond,\n\tblue: blue,\n\tblueviolet: blueviolet,\n\tbrown: brown,\n\tburlywood: burlywood,\n\tcadetblue: cadetblue,\n\tchartreuse: chartreuse,\n\tchocolate: chocolate,\n\tcoral: coral,\n\tcornflowerblue: cornflowerblue,\n\tcornsilk: cornsilk,\n\tcrimson: crimson,\n\tcyan: cyan,\n\tdarkblue: darkblue,\n\tdarkcyan: darkcyan,\n\tdarkgoldenrod: darkgoldenrod,\n\tdarkgray: darkgray,\n\tdarkgreen: darkgreen,\n\tdarkgrey: darkgrey,\n\tdarkkhaki: darkkhaki,\n\tdarkmagenta: darkmagenta,\n\tdarkolivegreen: darkolivegreen,\n\tdarkorange: darkorange,\n\tdarkorchid: darkorchid,\n\tdarkred: darkred,\n\tdarksalmon: darksalmon,\n\tdarkseagreen: darkseagreen,\n\tdarkslateblue: darkslateblue,\n\tdarkslategray: darkslategray,\n\tdarkslategrey: darkslategrey,\n\tdarkturquoise: darkturquoise,\n\tdarkviolet: darkviolet,\n\tdeeppink: deeppink,\n\tdeepskyblue: deepskyblue,\n\tdimgray: dimgray,\n\tdimgrey: dimgrey,\n\tdodgerblue: dodgerblue,\n\tfirebrick: firebrick,\n\tfloralwhite: floralwhite,\n\tforestgreen: forestgreen,\n\tfuchsia: fuchsia,\n\tgainsboro: gainsboro,\n\tghostwhite: ghostwhite,\n\tgoldenrod: goldenrod,\n\tgold: gold,\n\tgray: gray,\n\tgreen: green,\n\tgreenyellow: greenyellow,\n\tgrey: grey,\n\thoneydew: honeydew,\n\thotpink: hotpink,\n\tindianred: indianred,\n\tindigo: indigo,\n\tivory: ivory,\n\tkhaki: khaki,\n\tlavenderblush: lavenderblush,\n\tlavender: lavender,\n\tlawngreen: lawngreen,\n\tlemonchiffon: lemonchiffon,\n\tlightblue: lightblue,\n\tlightcoral: lightcoral,\n\tlightcyan: lightcyan,\n\tlightgoldenrodyellow: lightgoldenrodyellow,\n\tlightgray: lightgray,\n\tlightgreen: lightgreen,\n\tlightgrey: lightgrey,\n\tlightpink: lightpink,\n\tlightsalmon: lightsalmon,\n\tlightseagreen: lightseagreen,\n\tlightskyblue: lightskyblue,\n\tlightslategray: lightslategray,\n\tlightslategrey: lightslategrey,\n\tlightsteelblue: lightsteelblue,\n\tlightyellow: lightyellow,\n\tlime: lime,\n\tlimegreen: limegreen,\n\tlinen: linen,\n\tmagenta: magenta,\n\tmaroon: maroon,\n\tmediumaquamarine: mediumaquamarine,\n\tmediumblue: mediumblue,\n\tmediumorchid: mediumorchid,\n\tmediumpurple: mediumpurple,\n\tmediumseagreen: mediumseagreen,\n\tmediumslateblue: mediumslateblue,\n\tmediumspringgreen: mediumspringgreen,\n\tmediumturquoise: mediumturquoise,\n\tmediumvioletred: mediumvioletred,\n\tmidnightblue: midnightblue,\n\tmintcream: mintcream,\n\tmistyrose: mistyrose,\n\tmoccasin: moccasin,\n\tnavajowhite: navajowhite,\n\tnavy: navy,\n\toldlace: oldlace,\n\tolive: olive,\n\tolivedrab: olivedrab,\n\torange: orange,\n\torangered: orangered,\n\torchid: orchid,\n\tpalegoldenrod: palegoldenrod,\n\tpalegreen: palegreen,\n\tpaleturquoise: paleturquoise,\n\tpalevioletred: palevioletred,\n\tpapayawhip: papayawhip,\n\tpeachpuff: peachpuff,\n\tperu: peru,\n\tpink: pink,\n\tplum: plum,\n\tpowderblue: powderblue,\n\tpurple: purple,\n\trebeccapurple: rebeccapurple,\n\tred: red,\n\trosybrown: rosybrown,\n\troyalblue: royalblue,\n\tsaddlebrown: saddlebrown,\n\tsalmon: salmon,\n\tsandybrown: sandybrown,\n\tseagreen: seagreen,\n\tseashell: seashell,\n\tsienna: sienna,\n\tsilver: silver,\n\tskyblue: skyblue,\n\tslateblue: slateblue,\n\tslategray: slategray,\n\tslategrey: slategrey,\n\tsnow: snow,\n\tspringgreen: springgreen,\n\tsteelblue: steelblue,\n\ttan: tan,\n\tteal: teal,\n\tthistle: thistle,\n\ttomato: tomato,\n\tturquoise: turquoise,\n\tviolet: violet,\n\twheat: wheat,\n\twhite: white,\n\twhitesmoke: whitesmoke,\n\tyellow: yellow,\n\tyellowgreen: yellowgreen\n};\n\nexport { aliceblue, antiquewhite, aqua, aquamarine, azure, beige, bisque, black, blanchedalmond, blue, blueviolet, brown, burlywood, cadetblue, chartreuse, chocolate, coral, cornflowerblue, cornsilk, crimson, cyan, darkblue, darkcyan, darkgoldenrod, darkgray, darkgreen, darkgrey, darkkhaki, darkmagenta, darkolivegreen, darkorange, darkorchid, darkred, darksalmon, darkseagreen, darkslateblue, darkslategray, darkslategrey, darkturquoise, darkviolet, deeppink, deepskyblue, cssColorNames as default, dimgray, dimgrey, dodgerblue, firebrick, floralwhite, forestgreen, fuchsia, gainsboro, ghostwhite, gold, goldenrod, gray, green, greenyellow, grey, honeydew, hotpink, indianred, indigo, ivory, khaki, lavender, lavenderblush, lawngreen, lemonchiffon, lightblue, lightcoral, lightcyan, lightgoldenrodyellow, lightgray, lightgreen, lightgrey, lightpink, lightsalmon, lightseagreen, lightskyblue, lightslategray, lightslategrey, lightsteelblue, lightyellow, lime, limegreen, linen, magenta, maroon, mediumaquamarine, mediumblue, mediumorchid, mediumpurple, mediumseagreen, mediumslateblue, mediumspringgreen, mediumturquoise, mediumvioletred, midnightblue, mintcream, mistyrose, moccasin, navajowhite, navy, oldlace, olive, olivedrab, orange, orangered, orchid, palegoldenrod, palegreen, paleturquoise, palevioletred, papayawhip, peachpuff, peru, pink, plum, powderblue, purple, rebeccapurple, red, rosybrown, royalblue, saddlebrown, salmon, sandybrown, seagreen, seashell, sienna, silver, skyblue, slateblue, slategray, slategrey, snow, springgreen, steelblue, tan, teal, thistle, tomato, turquoise, violet, wheat, white, whitesmoke, yellow, yellowgreen };\n//# sourceMappingURL=css-color-names.mjs.map\n","import cssColorNames from '../node_modules/css-color-names/css-color-names.mjs';\n\nfunction hex2rgb(hex, out = []) {\n out[0] = (hex >> 16 & 255) / 255;\n out[1] = (hex >> 8 & 255) / 255;\n out[2] = (hex & 255) / 255;\n return out;\n}\nfunction hex2string(hex) {\n let hexString = hex.toString(16);\n hexString = \"000000\".substring(0, 6 - hexString.length) + hexString;\n return `#${hexString}`;\n}\nfunction string2hex(string) {\n if (typeof string === \"string\") {\n string = cssColorNames[string.toLowerCase()] || string;\n if (string[0] === \"#\") {\n string = string.slice(1);\n }\n if (string.length === 3) {\n const [r, g, b] = string;\n string = r + r + g + g + b + b;\n }\n }\n return parseInt(string, 16);\n}\nfunction rgb2hex(rgb) {\n return (rgb[0] * 255 << 16) + (rgb[1] * 255 << 8) + (rgb[2] * 255 | 0);\n}\n\nexport { hex2rgb, hex2string, rgb2hex, string2hex };\n//# sourceMappingURL=hex.mjs.map\n","import { BLEND_MODES } from '@pixi/constants';\n\nfunction mapPremultipliedBlendModes() {\n const pm = [];\n const npm = [];\n for (let i = 0; i < 32; i++) {\n pm[i] = i;\n npm[i] = i;\n }\n pm[BLEND_MODES.NORMAL_NPM] = BLEND_MODES.NORMAL;\n pm[BLEND_MODES.ADD_NPM] = BLEND_MODES.ADD;\n pm[BLEND_MODES.SCREEN_NPM] = BLEND_MODES.SCREEN;\n npm[BLEND_MODES.NORMAL] = BLEND_MODES.NORMAL_NPM;\n npm[BLEND_MODES.ADD] = BLEND_MODES.ADD_NPM;\n npm[BLEND_MODES.SCREEN] = BLEND_MODES.SCREEN_NPM;\n const array = [];\n array.push(npm);\n array.push(pm);\n return array;\n}\nconst premultiplyBlendMode = mapPremultipliedBlendModes();\nfunction correctBlendMode(blendMode, premultiplied) {\n return premultiplyBlendMode[premultiplied ? 1 : 0][blendMode];\n}\nfunction premultiplyRgba(rgb, alpha, out, premultiply) {\n out = out || new Float32Array(4);\n if (premultiply || premultiply === void 0) {\n out[0] = rgb[0] * alpha;\n out[1] = rgb[1] * alpha;\n out[2] = rgb[2] * alpha;\n } else {\n out[0] = rgb[0];\n out[1] = rgb[1];\n out[2] = rgb[2];\n }\n out[3] = alpha;\n return out;\n}\nfunction premultiplyTint(tint, alpha) {\n if (alpha === 1) {\n return (alpha * 255 << 24) + tint;\n }\n if (alpha === 0) {\n return 0;\n }\n let R = tint >> 16 & 255;\n let G = tint >> 8 & 255;\n let B = tint & 255;\n R = R * alpha + 0.5 | 0;\n G = G * alpha + 0.5 | 0;\n B = B * alpha + 0.5 | 0;\n return (alpha * 255 << 24) + (R << 16) + (G << 8) + B;\n}\nfunction premultiplyTintToRgba(tint, alpha, out, premultiply) {\n out = out || new Float32Array(4);\n out[0] = (tint >> 16 & 255) / 255;\n out[1] = (tint >> 8 & 255) / 255;\n out[2] = (tint & 255) / 255;\n if (premultiply || premultiply === void 0) {\n out[0] *= alpha;\n out[1] *= alpha;\n out[2] *= alpha;\n }\n out[3] = alpha;\n return out;\n}\n\nexport { correctBlendMode, premultiplyBlendMode, premultiplyRgba, premultiplyTint, premultiplyTintToRgba };\n//# sourceMappingURL=premultiply.mjs.map\n","function createIndicesForQuads(size, outBuffer = null) {\n const totalIndices = size * 6;\n outBuffer = outBuffer || new Uint16Array(totalIndices);\n if (outBuffer.length !== totalIndices) {\n throw new Error(`Out buffer length is incorrect, got ${outBuffer.length} and expected ${totalIndices}`);\n }\n for (let i = 0, j = 0; i < totalIndices; i += 6, j += 4) {\n outBuffer[i + 0] = j + 0;\n outBuffer[i + 1] = j + 1;\n outBuffer[i + 2] = j + 2;\n outBuffer[i + 3] = j + 0;\n outBuffer[i + 4] = j + 2;\n outBuffer[i + 5] = j + 3;\n }\n return outBuffer;\n}\n\nexport { createIndicesForQuads };\n//# sourceMappingURL=createIndicesForQuads.mjs.map\n","function getBufferType(array) {\n if (array.BYTES_PER_ELEMENT === 4) {\n if (array instanceof Float32Array) {\n return \"Float32Array\";\n } else if (array instanceof Uint32Array) {\n return \"Uint32Array\";\n }\n return \"Int32Array\";\n } else if (array.BYTES_PER_ELEMENT === 2) {\n if (array instanceof Uint16Array) {\n return \"Uint16Array\";\n }\n } else if (array.BYTES_PER_ELEMENT === 1) {\n if (array instanceof Uint8Array) {\n return \"Uint8Array\";\n }\n }\n return null;\n}\n\nexport { getBufferType };\n//# sourceMappingURL=getBufferType.mjs.map\n","import { getBufferType } from './getBufferType.mjs';\n\nconst map = { Float32Array, Uint32Array, Int32Array, Uint8Array };\nfunction interleaveTypedArrays(arrays, sizes) {\n let outSize = 0;\n let stride = 0;\n const views = {};\n for (let i = 0; i < arrays.length; i++) {\n stride += sizes[i];\n outSize += arrays[i].length;\n }\n const buffer = new ArrayBuffer(outSize * 4);\n let out = null;\n let littleOffset = 0;\n for (let i = 0; i < arrays.length; i++) {\n const size = sizes[i];\n const array = arrays[i];\n const type = getBufferType(array);\n if (!views[type]) {\n views[type] = new map[type](buffer);\n }\n out = views[type];\n for (let j = 0; j < array.length; j++) {\n const indexStart = (j / size | 0) * stride + littleOffset;\n const index = j % size;\n out[indexStart + index] = array[j];\n }\n littleOffset += size;\n }\n return new Float32Array(buffer);\n}\n\nexport { interleaveTypedArrays };\n//# sourceMappingURL=interleaveTypedArrays.mjs.map\n","function nextPow2(v) {\n v += v === 0 ? 1 : 0;\n --v;\n v |= v >>> 1;\n v |= v >>> 2;\n v |= v >>> 4;\n v |= v >>> 8;\n v |= v >>> 16;\n return v + 1;\n}\nfunction isPow2(v) {\n return !(v & v - 1) && !!v;\n}\nfunction log2(v) {\n let r = (v > 65535 ? 1 : 0) << 4;\n v >>>= r;\n let shift = (v > 255 ? 1 : 0) << 3;\n v >>>= shift;\n r |= shift;\n shift = (v > 15 ? 1 : 0) << 2;\n v >>>= shift;\n r |= shift;\n shift = (v > 3 ? 1 : 0) << 1;\n v >>>= shift;\n r |= shift;\n return r | v >> 1;\n}\n\nexport { isPow2, log2, nextPow2 };\n//# sourceMappingURL=pow2.mjs.map\n","function removeItems(arr, startIdx, removeCount) {\n const length = arr.length;\n let i;\n if (startIdx >= length || removeCount === 0) {\n return;\n }\n removeCount = startIdx + removeCount > length ? length - startIdx : removeCount;\n const len = length - removeCount;\n for (i = startIdx; i < len; ++i) {\n arr[i] = arr[i + removeCount];\n }\n arr.length = len;\n}\n\nexport { removeItems };\n//# sourceMappingURL=removeItems.mjs.map\n","function sign(n) {\n if (n === 0)\n return 0;\n return n < 0 ? -1 : 1;\n}\n\nexport { sign };\n//# sourceMappingURL=sign.mjs.map\n","let nextUid = 0;\nfunction uid() {\n return ++nextUid;\n}\n\nexport { uid };\n//# sourceMappingURL=uid.mjs.map\n","const warnings = {};\nfunction deprecation(version, message, ignoreDepth = 3) {\n if (warnings[message]) {\n return;\n }\n let stack = new Error().stack;\n if (typeof stack === \"undefined\") {\n console.warn(\"PixiJS Deprecation Warning: \", `${message}\nDeprecated since v${version}`);\n } else {\n stack = stack.split(\"\\n\").splice(ignoreDepth).join(\"\\n\");\n if (console.groupCollapsed) {\n console.groupCollapsed(\"%cPixiJS Deprecation Warning: %c%s\", \"color:#614108;background:#fffbe6\", \"font-weight:normal;color:#614108;background:#fffbe6\", `${message}\nDeprecated since v${version}`);\n console.warn(stack);\n console.groupEnd();\n } else {\n console.warn(\"PixiJS Deprecation Warning: \", `${message}\nDeprecated since v${version}`);\n console.warn(stack);\n }\n }\n warnings[message] = true;\n}\n\nexport { deprecation };\n//# sourceMappingURL=deprecation.mjs.map\n","const ProgramCache = {};\nconst TextureCache = /* @__PURE__ */ Object.create(null);\nconst BaseTextureCache = /* @__PURE__ */ Object.create(null);\nfunction destroyTextureCache() {\n let key;\n for (key in TextureCache) {\n TextureCache[key].destroy();\n }\n for (key in BaseTextureCache) {\n BaseTextureCache[key].destroy();\n }\n}\nfunction clearTextureCache() {\n let key;\n for (key in TextureCache) {\n delete TextureCache[key];\n }\n for (key in BaseTextureCache) {\n delete BaseTextureCache[key];\n }\n}\n\nexport { BaseTextureCache, ProgramCache, TextureCache, clearTextureCache, destroyTextureCache };\n//# sourceMappingURL=caches.mjs.map\n","import { settings } from '@pixi/settings';\n\nclass CanvasRenderTarget {\n constructor(width, height, resolution) {\n this.canvas = settings.ADAPTER.createCanvas();\n this.context = this.canvas.getContext(\"2d\");\n this.resolution = resolution || settings.RESOLUTION;\n this.resize(width, height);\n }\n clear() {\n this.context.setTransform(1, 0, 0, 1, 0, 0);\n this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n resize(desiredWidth, desiredHeight) {\n this.canvas.width = Math.round(desiredWidth * this.resolution);\n this.canvas.height = Math.round(desiredHeight * this.resolution);\n }\n destroy() {\n this.context = null;\n this.canvas = null;\n }\n get width() {\n return this.canvas.width;\n }\n set width(val) {\n this.canvas.width = Math.round(val);\n }\n get height() {\n return this.canvas.height;\n }\n set height(val) {\n this.canvas.height = Math.round(val);\n }\n}\n\nexport { CanvasRenderTarget };\n//# sourceMappingURL=CanvasRenderTarget.mjs.map\n","function trimCanvas(canvas) {\n let width = canvas.width;\n let height = canvas.height;\n const context = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const imageData = context.getImageData(0, 0, width, height);\n const pixels = imageData.data;\n const len = pixels.length;\n const bound = {\n top: null,\n left: null,\n right: null,\n bottom: null\n };\n let data = null;\n let i;\n let x;\n let y;\n for (i = 0; i < len; i += 4) {\n if (pixels[i + 3] !== 0) {\n x = i / 4 % width;\n y = ~~(i / 4 / width);\n if (bound.top === null) {\n bound.top = y;\n }\n if (bound.left === null) {\n bound.left = x;\n } else if (x < bound.left) {\n bound.left = x;\n }\n if (bound.right === null) {\n bound.right = x + 1;\n } else if (bound.right < x) {\n bound.right = x + 1;\n }\n if (bound.bottom === null) {\n bound.bottom = y;\n } else if (bound.bottom < y) {\n bound.bottom = y;\n }\n }\n }\n if (bound.top !== null) {\n width = bound.right - bound.left;\n height = bound.bottom - bound.top + 1;\n data = context.getImageData(bound.left, bound.top, width, height);\n }\n return {\n height,\n width,\n data\n };\n}\n\nexport { trimCanvas };\n//# sourceMappingURL=trimCanvas.mjs.map\n","const DATA_URI = /^\\s*data:(?:([\\w-]+)\\/([\\w+.-]+))?(?:;charset=([\\w-]+))?(?:;(base64))?,(.*)/i;\n\nexport { DATA_URI };\n//# sourceMappingURL=const.mjs.map\n","import { DATA_URI } from '../const.mjs';\n\nfunction decomposeDataUri(dataUri) {\n const dataUriMatch = DATA_URI.exec(dataUri);\n if (dataUriMatch) {\n return {\n mediaType: dataUriMatch[1] ? dataUriMatch[1].toLowerCase() : void 0,\n subType: dataUriMatch[2] ? dataUriMatch[2].toLowerCase() : void 0,\n charset: dataUriMatch[3] ? dataUriMatch[3].toLowerCase() : void 0,\n encoding: dataUriMatch[4] ? dataUriMatch[4].toLowerCase() : void 0,\n data: dataUriMatch[5]\n };\n }\n return void 0;\n}\n\nexport { decomposeDataUri };\n//# sourceMappingURL=decomposeDataUri.mjs.map\n","import { url } from '../url.mjs';\n\nlet tempAnchor;\nfunction determineCrossOrigin(url$1, loc = globalThis.location) {\n if (url$1.startsWith(\"data:\")) {\n return \"\";\n }\n loc = loc || globalThis.location;\n if (!tempAnchor) {\n tempAnchor = document.createElement(\"a\");\n }\n tempAnchor.href = url$1;\n const parsedUrl = url.parse(tempAnchor.href);\n const samePort = !parsedUrl.port && loc.port === \"\" || parsedUrl.port === loc.port;\n if (parsedUrl.hostname !== loc.hostname || !samePort || parsedUrl.protocol !== loc.protocol) {\n return \"anonymous\";\n }\n return \"\";\n}\n\nexport { determineCrossOrigin };\n//# sourceMappingURL=determineCrossOrigin.mjs.map\n","import '../settings.mjs';\nimport { settings } from '@pixi/settings';\n\nfunction getResolutionOfUrl(url, defaultValue = 1) {\n const resolution = settings.RETINA_PREFIX.exec(url);\n if (resolution) {\n return parseFloat(resolution[1]);\n }\n return defaultValue;\n}\n\nexport { getResolutionOfUrl };\n//# sourceMappingURL=getResolutionOfUrl.mjs.map\n","const INSTALLED = [];\nfunction autoDetectResource(source, options) {\n if (!source) {\n return null;\n }\n let extension = \"\";\n if (typeof source === \"string\") {\n const result = /\\.(\\w{3,4})(?:$|\\?|#)/i.exec(source);\n if (result) {\n extension = result[1].toLowerCase();\n }\n }\n for (let i = INSTALLED.length - 1; i >= 0; --i) {\n const ResourcePlugin = INSTALLED[i];\n if (ResourcePlugin.test && ResourcePlugin.test(source, extension)) {\n return new ResourcePlugin(source, options);\n }\n }\n throw new Error(\"Unrecognized source type to auto-detect Resource\");\n}\n\nexport { INSTALLED, autoDetectResource };\n//# sourceMappingURL=autoDetectResource.mjs.map\n","import { Runner } from '@pixi/runner';\n\nclass Resource {\n constructor(width = 0, height = 0) {\n this._width = width;\n this._height = height;\n this.destroyed = false;\n this.internal = false;\n this.onResize = new Runner(\"setRealSize\");\n this.onUpdate = new Runner(\"update\");\n this.onError = new Runner(\"onError\");\n }\n bind(baseTexture) {\n this.onResize.add(baseTexture);\n this.onUpdate.add(baseTexture);\n this.onError.add(baseTexture);\n if (this._width || this._height) {\n this.onResize.emit(this._width, this._height);\n }\n }\n unbind(baseTexture) {\n this.onResize.remove(baseTexture);\n this.onUpdate.remove(baseTexture);\n this.onError.remove(baseTexture);\n }\n resize(width, height) {\n if (width !== this._width || height !== this._height) {\n this._width = width;\n this._height = height;\n this.onResize.emit(width, height);\n }\n }\n get valid() {\n return !!this._width && !!this._height;\n }\n update() {\n if (!this.destroyed) {\n this.onUpdate.emit();\n }\n }\n load() {\n return Promise.resolve(this);\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n style(_renderer, _baseTexture, _glTexture) {\n return false;\n }\n dispose() {\n }\n destroy() {\n if (!this.destroyed) {\n this.destroyed = true;\n this.dispose();\n this.onError.removeAll();\n this.onError = null;\n this.onResize.removeAll();\n this.onResize = null;\n this.onUpdate.removeAll();\n this.onUpdate = null;\n }\n }\n static test(_source, _extension) {\n return false;\n }\n}\n\nexport { Resource };\n//# sourceMappingURL=Resource.mjs.map\n","import { Resource } from './Resource.mjs';\nimport { ALPHA_MODES } from '@pixi/constants';\n\nclass BufferResource extends Resource {\n constructor(source, options) {\n const { width, height } = options || {};\n if (!width || !height) {\n throw new Error(\"BufferResource width or height invalid\");\n }\n super(width, height);\n this.data = source;\n }\n upload(renderer, baseTexture, glTexture) {\n const gl = renderer.gl;\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK);\n const width = baseTexture.realWidth;\n const height = baseTexture.realHeight;\n if (glTexture.width === width && glTexture.height === height) {\n gl.texSubImage2D(baseTexture.target, 0, 0, 0, width, height, baseTexture.format, glTexture.type, this.data);\n } else {\n glTexture.width = width;\n glTexture.height = height;\n gl.texImage2D(baseTexture.target, 0, glTexture.internalFormat, width, height, 0, baseTexture.format, glTexture.type, this.data);\n }\n return true;\n }\n dispose() {\n this.data = null;\n }\n static test(source) {\n return source instanceof Float32Array || source instanceof Uint8Array || source instanceof Uint32Array;\n }\n}\n\nexport { BufferResource };\n//# sourceMappingURL=BufferResource.mjs.map\n","import { EventEmitter, uid, isPow2, BaseTextureCache, TextureCache } from '@pixi/utils';\nimport { SCALE_MODES, FORMATS, ALPHA_MODES, TYPES, TARGETS } from '@pixi/constants';\nimport { Resource } from './resources/Resource.mjs';\nimport { BufferResource } from './resources/BufferResource.mjs';\nimport { autoDetectResource } from './resources/autoDetectResource.mjs';\nimport { settings } from '@pixi/settings';\n\nconst defaultBufferOptions = {\n scaleMode: SCALE_MODES.NEAREST,\n format: FORMATS.RGBA,\n alphaMode: ALPHA_MODES.NPM\n};\nconst _BaseTexture = class extends EventEmitter {\n constructor(resource = null, options = null) {\n super();\n options = options || {};\n const {\n alphaMode,\n mipmap,\n anisotropicLevel,\n scaleMode,\n width,\n height,\n wrapMode,\n format,\n type,\n target,\n resolution,\n resourceOptions\n } = options;\n if (resource && !(resource instanceof Resource)) {\n resource = autoDetectResource(resource, resourceOptions);\n resource.internal = true;\n }\n this.resolution = resolution || settings.RESOLUTION;\n this.width = Math.round((width || 0) * this.resolution) / this.resolution;\n this.height = Math.round((height || 0) * this.resolution) / this.resolution;\n this._mipmap = mipmap ?? settings.MIPMAP_TEXTURES;\n this.anisotropicLevel = anisotropicLevel ?? settings.ANISOTROPIC_LEVEL;\n this._wrapMode = wrapMode || settings.WRAP_MODE;\n this._scaleMode = scaleMode ?? settings.SCALE_MODE;\n this.format = format || FORMATS.RGBA;\n this.type = type || TYPES.UNSIGNED_BYTE;\n this.target = target || TARGETS.TEXTURE_2D;\n this.alphaMode = alphaMode ?? ALPHA_MODES.UNPACK;\n this.uid = uid();\n this.touched = 0;\n this.isPowerOfTwo = false;\n this._refreshPOT();\n this._glTextures = {};\n this.dirtyId = 0;\n this.dirtyStyleId = 0;\n this.cacheId = null;\n this.valid = width > 0 && height > 0;\n this.textureCacheIds = [];\n this.destroyed = false;\n this.resource = null;\n this._batchEnabled = 0;\n this._batchLocation = 0;\n this.parentTextureArray = null;\n this.setResource(resource);\n }\n get realWidth() {\n return Math.round(this.width * this.resolution);\n }\n get realHeight() {\n return Math.round(this.height * this.resolution);\n }\n get mipmap() {\n return this._mipmap;\n }\n set mipmap(value) {\n if (this._mipmap !== value) {\n this._mipmap = value;\n this.dirtyStyleId++;\n }\n }\n get scaleMode() {\n return this._scaleMode;\n }\n set scaleMode(value) {\n if (this._scaleMode !== value) {\n this._scaleMode = value;\n this.dirtyStyleId++;\n }\n }\n get wrapMode() {\n return this._wrapMode;\n }\n set wrapMode(value) {\n if (this._wrapMode !== value) {\n this._wrapMode = value;\n this.dirtyStyleId++;\n }\n }\n setStyle(scaleMode, mipmap) {\n let dirty;\n if (scaleMode !== void 0 && scaleMode !== this.scaleMode) {\n this.scaleMode = scaleMode;\n dirty = true;\n }\n if (mipmap !== void 0 && mipmap !== this.mipmap) {\n this.mipmap = mipmap;\n dirty = true;\n }\n if (dirty) {\n this.dirtyStyleId++;\n }\n return this;\n }\n setSize(desiredWidth, desiredHeight, resolution) {\n resolution = resolution || this.resolution;\n return this.setRealSize(desiredWidth * resolution, desiredHeight * resolution, resolution);\n }\n setRealSize(realWidth, realHeight, resolution) {\n this.resolution = resolution || this.resolution;\n this.width = Math.round(realWidth) / this.resolution;\n this.height = Math.round(realHeight) / this.resolution;\n this._refreshPOT();\n this.update();\n return this;\n }\n _refreshPOT() {\n this.isPowerOfTwo = isPow2(this.realWidth) && isPow2(this.realHeight);\n }\n setResolution(resolution) {\n const oldResolution = this.resolution;\n if (oldResolution === resolution) {\n return this;\n }\n this.resolution = resolution;\n if (this.valid) {\n this.width = Math.round(this.width * oldResolution) / resolution;\n this.height = Math.round(this.height * oldResolution) / resolution;\n this.emit(\"update\", this);\n }\n this._refreshPOT();\n return this;\n }\n setResource(resource) {\n if (this.resource === resource) {\n return this;\n }\n if (this.resource) {\n throw new Error(\"Resource can be set only once\");\n }\n resource.bind(this);\n this.resource = resource;\n return this;\n }\n update() {\n if (!this.valid) {\n if (this.width > 0 && this.height > 0) {\n this.valid = true;\n this.emit(\"loaded\", this);\n this.emit(\"update\", this);\n }\n } else {\n this.dirtyId++;\n this.dirtyStyleId++;\n this.emit(\"update\", this);\n }\n }\n onError(event) {\n this.emit(\"error\", this, event);\n }\n destroy() {\n if (this.resource) {\n this.resource.unbind(this);\n if (this.resource.internal) {\n this.resource.destroy();\n }\n this.resource = null;\n }\n if (this.cacheId) {\n delete BaseTextureCache[this.cacheId];\n delete TextureCache[this.cacheId];\n this.cacheId = null;\n }\n this.dispose();\n _BaseTexture.removeFromCache(this);\n this.textureCacheIds = null;\n this.destroyed = true;\n }\n dispose() {\n this.emit(\"dispose\", this);\n }\n castToBaseTexture() {\n return this;\n }\n static from(source, options, strict = settings.STRICT_TEXTURE_CACHE) {\n const isFrame = typeof source === \"string\";\n let cacheId = null;\n if (isFrame) {\n cacheId = source;\n } else {\n if (!source._pixiId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source._pixiId = `${prefix}_${uid()}`;\n }\n cacheId = source._pixiId;\n }\n let baseTexture = BaseTextureCache[cacheId];\n if (isFrame && strict && !baseTexture) {\n throw new Error(`The cacheId \"${cacheId}\" does not exist in BaseTextureCache.`);\n }\n if (!baseTexture) {\n baseTexture = new _BaseTexture(source, options);\n baseTexture.cacheId = cacheId;\n _BaseTexture.addToCache(baseTexture, cacheId);\n }\n return baseTexture;\n }\n static fromBuffer(buffer, width, height, options) {\n buffer = buffer || new Float32Array(width * height * 4);\n const resource = new BufferResource(buffer, { width, height });\n const type = buffer instanceof Float32Array ? TYPES.FLOAT : TYPES.UNSIGNED_BYTE;\n return new _BaseTexture(resource, Object.assign({}, defaultBufferOptions, options || { width, height, type }));\n }\n static addToCache(baseTexture, id) {\n if (id) {\n if (!baseTexture.textureCacheIds.includes(id)) {\n baseTexture.textureCacheIds.push(id);\n }\n if (BaseTextureCache[id]) {\n console.warn(`BaseTexture added to the cache with an id [${id}] that already had an entry`);\n }\n BaseTextureCache[id] = baseTexture;\n }\n }\n static removeFromCache(baseTexture) {\n if (typeof baseTexture === \"string\") {\n const baseTextureFromCache = BaseTextureCache[baseTexture];\n if (baseTextureFromCache) {\n const index = baseTextureFromCache.textureCacheIds.indexOf(baseTexture);\n if (index > -1) {\n baseTextureFromCache.textureCacheIds.splice(index, 1);\n }\n delete BaseTextureCache[baseTexture];\n return baseTextureFromCache;\n }\n } else if (baseTexture?.textureCacheIds) {\n for (let i = 0; i < baseTexture.textureCacheIds.length; ++i) {\n delete BaseTextureCache[baseTexture.textureCacheIds[i]];\n }\n baseTexture.textureCacheIds.length = 0;\n return baseTexture;\n }\n return null;\n }\n};\nlet BaseTexture = _BaseTexture;\nBaseTexture._globalBatch = 0;\n\nexport { BaseTexture };\n//# sourceMappingURL=BaseTexture.mjs.map\n","import { Resource } from './Resource.mjs';\nimport { BaseTexture } from '../BaseTexture.mjs';\nimport { autoDetectResource } from './autoDetectResource.mjs';\n\nclass AbstractMultiResource extends Resource {\n constructor(length, options) {\n const { width, height } = options || {};\n super(width, height);\n this.items = [];\n this.itemDirtyIds = [];\n for (let i = 0; i < length; i++) {\n const partTexture = new BaseTexture();\n this.items.push(partTexture);\n this.itemDirtyIds.push(-2);\n }\n this.length = length;\n this._load = null;\n this.baseTexture = null;\n }\n initFromArray(resources, options) {\n for (let i = 0; i < this.length; i++) {\n if (!resources[i]) {\n continue;\n }\n if (resources[i].castToBaseTexture) {\n this.addBaseTextureAt(resources[i].castToBaseTexture(), i);\n } else if (resources[i] instanceof Resource) {\n this.addResourceAt(resources[i], i);\n } else {\n this.addResourceAt(autoDetectResource(resources[i], options), i);\n }\n }\n }\n dispose() {\n for (let i = 0, len = this.length; i < len; i++) {\n this.items[i].destroy();\n }\n this.items = null;\n this.itemDirtyIds = null;\n this._load = null;\n }\n addResourceAt(resource, index) {\n if (!this.items[index]) {\n throw new Error(`Index ${index} is out of bounds`);\n }\n if (resource.valid && !this.valid) {\n this.resize(resource.width, resource.height);\n }\n this.items[index].setResource(resource);\n return this;\n }\n bind(baseTexture) {\n if (this.baseTexture !== null) {\n throw new Error(\"Only one base texture per TextureArray is allowed\");\n }\n super.bind(baseTexture);\n for (let i = 0; i < this.length; i++) {\n this.items[i].parentTextureArray = baseTexture;\n this.items[i].on(\"update\", baseTexture.update, baseTexture);\n }\n }\n unbind(baseTexture) {\n super.unbind(baseTexture);\n for (let i = 0; i < this.length; i++) {\n this.items[i].parentTextureArray = null;\n this.items[i].off(\"update\", baseTexture.update, baseTexture);\n }\n }\n load() {\n if (this._load) {\n return this._load;\n }\n const resources = this.items.map((item) => item.resource).filter((item) => item);\n const promises = resources.map((item) => item.load());\n this._load = Promise.all(promises).then(() => {\n const { realWidth, realHeight } = this.items[0];\n this.resize(realWidth, realHeight);\n return Promise.resolve(this);\n });\n return this._load;\n }\n}\n\nexport { AbstractMultiResource };\n//# sourceMappingURL=AbstractMultiResource.mjs.map\n","import { TARGETS } from '@pixi/constants';\nimport { AbstractMultiResource } from './AbstractMultiResource.mjs';\n\nclass ArrayResource extends AbstractMultiResource {\n constructor(source, options) {\n const { width, height } = options || {};\n let urls;\n let length;\n if (Array.isArray(source)) {\n urls = source;\n length = source.length;\n } else {\n length = source;\n }\n super(length, { width, height });\n if (urls) {\n this.initFromArray(urls, options);\n }\n }\n addBaseTextureAt(baseTexture, index) {\n if (baseTexture.resource) {\n this.addResourceAt(baseTexture.resource, index);\n } else {\n throw new Error(\"ArrayResource does not support RenderTexture\");\n }\n return this;\n }\n bind(baseTexture) {\n super.bind(baseTexture);\n baseTexture.target = TARGETS.TEXTURE_2D_ARRAY;\n }\n upload(renderer, texture, glTexture) {\n const { length, itemDirtyIds, items } = this;\n const { gl } = renderer;\n if (glTexture.dirtyId < 0) {\n gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, glTexture.internalFormat, this._width, this._height, length, 0, texture.format, glTexture.type, null);\n }\n for (let i = 0; i < length; i++) {\n const item = items[i];\n if (itemDirtyIds[i] < item.dirtyId) {\n itemDirtyIds[i] = item.dirtyId;\n if (item.valid) {\n gl.texSubImage3D(gl.TEXTURE_2D_ARRAY, 0, 0, 0, i, item.resource.width, item.resource.height, 1, texture.format, glTexture.type, item.resource.source);\n }\n }\n }\n return true;\n }\n}\n\nexport { ArrayResource };\n//# sourceMappingURL=ArrayResource.mjs.map\n","import { ALPHA_MODES } from '@pixi/constants';\nimport { determineCrossOrigin } from '@pixi/utils';\nimport { Resource } from './Resource.mjs';\n\nclass BaseImageResource extends Resource {\n constructor(source) {\n const sourceAny = source;\n const width = sourceAny.naturalWidth || sourceAny.videoWidth || sourceAny.width;\n const height = sourceAny.naturalHeight || sourceAny.videoHeight || sourceAny.height;\n super(width, height);\n this.source = source;\n this.noSubImage = false;\n }\n static crossOrigin(element, url, crossorigin) {\n if (crossorigin === void 0 && !url.startsWith(\"data:\")) {\n element.crossOrigin = determineCrossOrigin(url);\n } else if (crossorigin !== false) {\n element.crossOrigin = typeof crossorigin === \"string\" ? crossorigin : \"anonymous\";\n }\n }\n upload(renderer, baseTexture, glTexture, source) {\n const gl = renderer.gl;\n const width = baseTexture.realWidth;\n const height = baseTexture.realHeight;\n source = source || this.source;\n if (typeof HTMLImageElement !== \"undefined\" && source instanceof HTMLImageElement) {\n if (!source.complete || source.naturalWidth === 0) {\n return false;\n }\n } else if (typeof HTMLVideoElement !== \"undefined\" && source instanceof HTMLVideoElement) {\n if (source.readyState <= 1) {\n return false;\n }\n }\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK);\n if (!this.noSubImage && baseTexture.target === gl.TEXTURE_2D && glTexture.width === width && glTexture.height === height) {\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, baseTexture.format, glTexture.type, source);\n } else {\n glTexture.width = width;\n glTexture.height = height;\n gl.texImage2D(baseTexture.target, 0, glTexture.internalFormat, baseTexture.format, glTexture.type, source);\n }\n return true;\n }\n update() {\n if (this.destroyed) {\n return;\n }\n const source = this.source;\n const width = source.naturalWidth || source.videoWidth || source.width;\n const height = source.naturalHeight || source.videoHeight || source.height;\n this.resize(width, height);\n super.update();\n }\n dispose() {\n this.source = null;\n }\n}\n\nexport { BaseImageResource };\n//# sourceMappingURL=BaseImageResource.mjs.map\n","import { BaseImageResource } from './BaseImageResource.mjs';\n\nclass CanvasResource extends BaseImageResource {\n constructor(source) {\n super(source);\n }\n static test(source) {\n const { OffscreenCanvas } = globalThis;\n if (OffscreenCanvas && source instanceof OffscreenCanvas) {\n return true;\n }\n return globalThis.HTMLCanvasElement && source instanceof HTMLCanvasElement;\n }\n}\n\nexport { CanvasResource };\n//# sourceMappingURL=CanvasResource.mjs.map\n","import { AbstractMultiResource } from './AbstractMultiResource.mjs';\nimport { TARGETS } from '@pixi/constants';\n\nconst _CubeResource = class extends AbstractMultiResource {\n constructor(source, options) {\n const { width, height, autoLoad, linkBaseTexture } = options || {};\n if (source && source.length !== _CubeResource.SIDES) {\n throw new Error(`Invalid length. Got ${source.length}, expected 6`);\n }\n super(6, { width, height });\n for (let i = 0; i < _CubeResource.SIDES; i++) {\n this.items[i].target = TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + i;\n }\n this.linkBaseTexture = linkBaseTexture !== false;\n if (source) {\n this.initFromArray(source, options);\n }\n if (autoLoad !== false) {\n this.load();\n }\n }\n bind(baseTexture) {\n super.bind(baseTexture);\n baseTexture.target = TARGETS.TEXTURE_CUBE_MAP;\n }\n addBaseTextureAt(baseTexture, index, linkBaseTexture) {\n if (linkBaseTexture === void 0) {\n linkBaseTexture = this.linkBaseTexture;\n }\n if (!this.items[index]) {\n throw new Error(`Index ${index} is out of bounds`);\n }\n if (!this.linkBaseTexture || baseTexture.parentTextureArray || Object.keys(baseTexture._glTextures).length > 0) {\n if (baseTexture.resource) {\n this.addResourceAt(baseTexture.resource, index);\n } else {\n throw new Error(`CubeResource does not support copying of renderTexture.`);\n }\n } else {\n baseTexture.target = TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + index;\n baseTexture.parentTextureArray = this.baseTexture;\n this.items[index] = baseTexture;\n }\n if (baseTexture.valid && !this.valid) {\n this.resize(baseTexture.realWidth, baseTexture.realHeight);\n }\n this.items[index] = baseTexture;\n return this;\n }\n upload(renderer, _baseTexture, glTexture) {\n const dirty = this.itemDirtyIds;\n for (let i = 0; i < _CubeResource.SIDES; i++) {\n const side = this.items[i];\n if (dirty[i] < side.dirtyId || glTexture.dirtyId < _baseTexture.dirtyId) {\n if (side.valid && side.resource) {\n side.resource.upload(renderer, side, glTexture);\n dirty[i] = side.dirtyId;\n } else if (dirty[i] < -1) {\n renderer.gl.texImage2D(side.target, 0, glTexture.internalFormat, _baseTexture.realWidth, _baseTexture.realHeight, 0, _baseTexture.format, glTexture.type, null);\n dirty[i] = -1;\n }\n }\n }\n return true;\n }\n static test(source) {\n return Array.isArray(source) && source.length === _CubeResource.SIDES;\n }\n};\nlet CubeResource = _CubeResource;\nCubeResource.SIDES = 6;\n\nexport { CubeResource };\n//# sourceMappingURL=CubeResource.mjs.map\n","import { ALPHA_MODES } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\nimport { BaseImageResource } from './BaseImageResource.mjs';\n\nclass ImageResource extends BaseImageResource {\n constructor(source, options) {\n options = options || {};\n if (typeof source === \"string\") {\n const imageElement = new Image();\n BaseImageResource.crossOrigin(imageElement, source, options.crossorigin);\n imageElement.src = source;\n source = imageElement;\n }\n super(source);\n if (!source.complete && !!this._width && !!this._height) {\n this._width = 0;\n this._height = 0;\n }\n this.url = source.src;\n this._process = null;\n this.preserveBitmap = false;\n this.createBitmap = (options.createBitmap ?? settings.CREATE_IMAGE_BITMAP) && !!globalThis.createImageBitmap;\n this.alphaMode = typeof options.alphaMode === \"number\" ? options.alphaMode : null;\n this.bitmap = null;\n this._load = null;\n if (options.autoLoad !== false) {\n this.load();\n }\n }\n load(createBitmap) {\n if (this._load) {\n return this._load;\n }\n if (createBitmap !== void 0) {\n this.createBitmap = createBitmap;\n }\n this._load = new Promise((resolve, reject) => {\n const source = this.source;\n this.url = source.src;\n const completed = () => {\n if (this.destroyed) {\n return;\n }\n source.onload = null;\n source.onerror = null;\n this.resize(source.width, source.height);\n this._load = null;\n if (this.createBitmap) {\n resolve(this.process());\n } else {\n resolve(this);\n }\n };\n if (source.complete && source.src) {\n completed();\n } else {\n source.onload = completed;\n source.onerror = (event) => {\n reject(event);\n this.onError.emit(event);\n };\n }\n });\n return this._load;\n }\n process() {\n const source = this.source;\n if (this._process !== null) {\n return this._process;\n }\n if (this.bitmap !== null || !globalThis.createImageBitmap) {\n return Promise.resolve(this);\n }\n const createImageBitmap = globalThis.createImageBitmap;\n const cors = !source.crossOrigin || source.crossOrigin === \"anonymous\";\n this._process = fetch(source.src, {\n mode: cors ? \"cors\" : \"no-cors\"\n }).then((r) => r.blob()).then((blob) => createImageBitmap(blob, 0, 0, source.width, source.height, {\n premultiplyAlpha: this.alphaMode === null || this.alphaMode === ALPHA_MODES.UNPACK ? \"premultiply\" : \"none\"\n })).then((bitmap) => {\n if (this.destroyed) {\n return Promise.reject();\n }\n this.bitmap = bitmap;\n this.update();\n this._process = null;\n return Promise.resolve(this);\n });\n return this._process;\n }\n upload(renderer, baseTexture, glTexture) {\n if (typeof this.alphaMode === \"number\") {\n baseTexture.alphaMode = this.alphaMode;\n }\n if (!this.createBitmap) {\n return super.upload(renderer, baseTexture, glTexture);\n }\n if (!this.bitmap) {\n this.process();\n if (!this.bitmap) {\n return false;\n }\n }\n super.upload(renderer, baseTexture, glTexture, this.bitmap);\n if (!this.preserveBitmap) {\n let flag = true;\n const glTextures = baseTexture._glTextures;\n for (const key in glTextures) {\n const otherTex = glTextures[key];\n if (otherTex !== glTexture && otherTex.dirtyId !== baseTexture.dirtyId) {\n flag = false;\n break;\n }\n }\n if (flag) {\n if (this.bitmap.close) {\n this.bitmap.close();\n }\n this.bitmap = null;\n }\n }\n return true;\n }\n dispose() {\n this.source.onload = null;\n this.source.onerror = null;\n super.dispose();\n if (this.bitmap) {\n this.bitmap.close();\n this.bitmap = null;\n }\n this._process = null;\n this._load = null;\n }\n static test(source) {\n return typeof HTMLImageElement !== \"undefined\" && (typeof source === \"string\" || source instanceof HTMLImageElement);\n }\n}\n\nexport { ImageResource };\n//# sourceMappingURL=ImageResource.mjs.map\n","import { uid } from '@pixi/utils';\nimport { BaseImageResource } from './BaseImageResource.mjs';\nimport { settings } from '@pixi/settings';\n\nconst _SVGResource = class extends BaseImageResource {\n constructor(sourceBase64, options) {\n options = options || {};\n super(settings.ADAPTER.createCanvas());\n this._width = 0;\n this._height = 0;\n this.svg = sourceBase64;\n this.scale = options.scale || 1;\n this._overrideWidth = options.width;\n this._overrideHeight = options.height;\n this._resolve = null;\n this._crossorigin = options.crossorigin;\n this._load = null;\n if (options.autoLoad !== false) {\n this.load();\n }\n }\n load() {\n if (this._load) {\n return this._load;\n }\n this._load = new Promise((resolve) => {\n this._resolve = () => {\n this.resize(this.source.width, this.source.height);\n resolve(this);\n };\n if (_SVGResource.SVG_XML.test(this.svg.trim())) {\n if (!btoa) {\n throw new Error(\"Your browser doesn't support base64 conversions.\");\n }\n this.svg = `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`;\n }\n this._loadSvg();\n });\n return this._load;\n }\n _loadSvg() {\n const tempImage = new Image();\n BaseImageResource.crossOrigin(tempImage, this.svg, this._crossorigin);\n tempImage.src = this.svg;\n tempImage.onerror = (event) => {\n if (!this._resolve) {\n return;\n }\n tempImage.onerror = null;\n this.onError.emit(event);\n };\n tempImage.onload = () => {\n if (!this._resolve) {\n return;\n }\n const svgWidth = tempImage.width;\n const svgHeight = tempImage.height;\n if (!svgWidth || !svgHeight) {\n throw new Error(\"The SVG image must have width and height defined (in pixels), canvas API needs them.\");\n }\n let width = svgWidth * this.scale;\n let height = svgHeight * this.scale;\n if (this._overrideWidth || this._overrideHeight) {\n width = this._overrideWidth || this._overrideHeight / svgHeight * svgWidth;\n height = this._overrideHeight || this._overrideWidth / svgWidth * svgHeight;\n }\n width = Math.round(width);\n height = Math.round(height);\n const canvas = this.source;\n canvas.width = width;\n canvas.height = height;\n canvas._pixiId = `canvas_${uid()}`;\n canvas.getContext(\"2d\").drawImage(tempImage, 0, 0, svgWidth, svgHeight, 0, 0, width, height);\n this._resolve();\n this._resolve = null;\n };\n }\n static getSize(svgString) {\n const sizeMatch = _SVGResource.SVG_SIZE.exec(svgString);\n const size = {};\n if (sizeMatch) {\n size[sizeMatch[1]] = Math.round(parseFloat(sizeMatch[3]));\n size[sizeMatch[5]] = Math.round(parseFloat(sizeMatch[7]));\n }\n return size;\n }\n dispose() {\n super.dispose();\n this._resolve = null;\n this._crossorigin = null;\n }\n static test(source, extension) {\n return extension === \"svg\" || typeof source === \"string\" && source.startsWith(\"data:image/svg+xml\") || typeof source === \"string\" && _SVGResource.SVG_XML.test(source);\n }\n};\nlet SVGResource = _SVGResource;\nSVGResource.SVG_XML = /^(<\\?xml[^?]+\\?>)?\\s*()]*-->)?\\s*\\]*(?:\\s(width|height)=('|\")(\\d*(?:\\.\\d+)?)(?:px)?('|\"))[^>]*(?:\\s(width|height)=('|\")(\\d*(?:\\.\\d+)?)(?:px)?('|\"))[^>]*>/i;\n\nexport { SVGResource };\n//# sourceMappingURL=SVGResource.mjs.map\n","import { BaseImageResource } from './BaseImageResource.mjs';\nimport { Ticker } from '@pixi/ticker';\n\nconst _VideoResource = class extends BaseImageResource {\n constructor(source, options) {\n options = options || {};\n if (!(source instanceof HTMLVideoElement)) {\n const videoElement = document.createElement(\"video\");\n videoElement.setAttribute(\"preload\", \"auto\");\n videoElement.setAttribute(\"webkit-playsinline\", \"\");\n videoElement.setAttribute(\"playsinline\", \"\");\n if (typeof source === \"string\") {\n source = [source];\n }\n const firstSrc = source[0].src || source[0];\n BaseImageResource.crossOrigin(videoElement, firstSrc, options.crossorigin);\n for (let i = 0; i < source.length; ++i) {\n const sourceElement = document.createElement(\"source\");\n let { src, mime } = source[i];\n src = src || source[i];\n const baseSrc = src.split(\"?\").shift().toLowerCase();\n const ext = baseSrc.slice(baseSrc.lastIndexOf(\".\") + 1);\n mime = mime || _VideoResource.MIME_TYPES[ext] || `video/${ext}`;\n sourceElement.src = src;\n sourceElement.type = mime;\n videoElement.appendChild(sourceElement);\n }\n source = videoElement;\n }\n super(source);\n this.noSubImage = true;\n this._autoUpdate = true;\n this._isConnectedToTicker = false;\n this._updateFPS = options.updateFPS || 0;\n this._msToNextUpdate = 0;\n this.autoPlay = options.autoPlay !== false;\n this._load = null;\n this._resolve = null;\n this._onCanPlay = this._onCanPlay.bind(this);\n this._onError = this._onError.bind(this);\n if (options.autoLoad !== false) {\n this.load();\n }\n }\n update(_deltaTime = 0) {\n if (!this.destroyed) {\n const elapsedMS = Ticker.shared.elapsedMS * this.source.playbackRate;\n this._msToNextUpdate = Math.floor(this._msToNextUpdate - elapsedMS);\n if (!this._updateFPS || this._msToNextUpdate <= 0) {\n super.update();\n this._msToNextUpdate = this._updateFPS ? Math.floor(1e3 / this._updateFPS) : 0;\n }\n }\n }\n load() {\n if (this._load) {\n return this._load;\n }\n const source = this.source;\n if ((source.readyState === source.HAVE_ENOUGH_DATA || source.readyState === source.HAVE_FUTURE_DATA) && source.width && source.height) {\n source.complete = true;\n }\n source.addEventListener(\"play\", this._onPlayStart.bind(this));\n source.addEventListener(\"pause\", this._onPlayStop.bind(this));\n if (!this._isSourceReady()) {\n source.addEventListener(\"canplay\", this._onCanPlay);\n source.addEventListener(\"canplaythrough\", this._onCanPlay);\n source.addEventListener(\"error\", this._onError, true);\n } else {\n this._onCanPlay();\n }\n this._load = new Promise((resolve) => {\n if (this.valid) {\n resolve(this);\n } else {\n this._resolve = resolve;\n source.load();\n }\n });\n return this._load;\n }\n _onError(event) {\n this.source.removeEventListener(\"error\", this._onError, true);\n this.onError.emit(event);\n }\n _isSourcePlaying() {\n const source = this.source;\n return !source.paused && !source.ended && this._isSourceReady();\n }\n _isSourceReady() {\n const source = this.source;\n return source.readyState > 2;\n }\n _onPlayStart() {\n if (!this.valid) {\n this._onCanPlay();\n }\n if (this.autoUpdate && !this._isConnectedToTicker) {\n Ticker.shared.add(this.update, this);\n this._isConnectedToTicker = true;\n }\n }\n _onPlayStop() {\n if (this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n }\n _onCanPlay() {\n const source = this.source;\n source.removeEventListener(\"canplay\", this._onCanPlay);\n source.removeEventListener(\"canplaythrough\", this._onCanPlay);\n const valid = this.valid;\n this.resize(source.videoWidth, source.videoHeight);\n if (!valid && this._resolve) {\n this._resolve(this);\n this._resolve = null;\n }\n if (this._isSourcePlaying()) {\n this._onPlayStart();\n } else if (this.autoPlay) {\n source.play();\n }\n }\n dispose() {\n if (this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n const source = this.source;\n if (source) {\n source.removeEventListener(\"error\", this._onError, true);\n source.pause();\n source.src = \"\";\n source.load();\n }\n super.dispose();\n }\n get autoUpdate() {\n return this._autoUpdate;\n }\n set autoUpdate(value) {\n if (value !== this._autoUpdate) {\n this._autoUpdate = value;\n if (!this._autoUpdate && this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n } else if (this._autoUpdate && !this._isConnectedToTicker && this._isSourcePlaying()) {\n Ticker.shared.add(this.update, this);\n this._isConnectedToTicker = true;\n }\n }\n }\n get updateFPS() {\n return this._updateFPS;\n }\n set updateFPS(value) {\n if (value !== this._updateFPS) {\n this._updateFPS = value;\n }\n }\n static test(source, extension) {\n return globalThis.HTMLVideoElement && source instanceof HTMLVideoElement || _VideoResource.TYPES.includes(extension);\n }\n};\nlet VideoResource = _VideoResource;\nVideoResource.TYPES = [\"mp4\", \"m4v\", \"webm\", \"ogg\", \"ogv\", \"h264\", \"avi\", \"mov\"];\nVideoResource.MIME_TYPES = {\n ogv: \"video/ogg\",\n mov: \"video/quicktime\",\n m4v: \"video/mp4\"\n};\n\nexport { VideoResource };\n//# sourceMappingURL=VideoResource.mjs.map\n","import { ALPHA_MODES } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\nimport { BaseImageResource } from './BaseImageResource.mjs';\n\nclass ImageBitmapResource extends BaseImageResource {\n constructor(source, options) {\n var __super = (...args) => {\n super(...args);\n };\n options = options || {};\n if (typeof source === \"string\") {\n __super(ImageBitmapResource.EMPTY);\n this.url = source;\n } else {\n __super(source);\n this.url = null;\n }\n this.crossOrigin = options.crossOrigin ?? true;\n this.alphaMode = typeof options.alphaMode === \"number\" ? options.alphaMode : null;\n this._load = null;\n if (options.autoLoad !== false) {\n this.load();\n }\n }\n load() {\n if (this._load) {\n return this._load;\n }\n this._load = new Promise(async (resolve, reject) => {\n if (this.url === null) {\n resolve(this);\n return;\n }\n try {\n const response = await settings.ADAPTER.fetch(this.url, {\n mode: this.crossOrigin ? \"cors\" : \"no-cors\"\n });\n if (this.destroyed)\n return;\n const imageBlob = await response.blob();\n if (this.destroyed)\n return;\n const imageBitmap = await createImageBitmap(imageBlob, {\n premultiplyAlpha: this.alphaMode === null || this.alphaMode === ALPHA_MODES.UNPACK ? \"premultiply\" : \"none\"\n });\n if (this.destroyed)\n return;\n this.source = imageBitmap;\n this.update();\n resolve(this);\n } catch (e) {\n if (this.destroyed)\n return;\n reject(e);\n this.onError.emit(e);\n }\n });\n return this._load;\n }\n upload(renderer, baseTexture, glTexture) {\n if (!(this.source instanceof ImageBitmap)) {\n this.load();\n return false;\n }\n if (typeof this.alphaMode === \"number\") {\n baseTexture.alphaMode = this.alphaMode;\n }\n return super.upload(renderer, baseTexture, glTexture);\n }\n dispose() {\n if (this.source instanceof ImageBitmap) {\n this.source.close();\n }\n super.dispose();\n this._load = null;\n }\n static test(source) {\n return !!globalThis.createImageBitmap && typeof ImageBitmap !== \"undefined\" && (typeof source === \"string\" || source instanceof ImageBitmap);\n }\n static get EMPTY() {\n ImageBitmapResource._EMPTY = ImageBitmapResource._EMPTY ?? settings.ADAPTER.createCanvas(0, 0);\n return ImageBitmapResource._EMPTY;\n }\n}\n\nexport { ImageBitmapResource };\n//# sourceMappingURL=ImageBitmapResource.mjs.map\n","import { INSTALLED } from './autoDetectResource.mjs';\nexport { INSTALLED, autoDetectResource } from './autoDetectResource.mjs';\nimport { ArrayResource } from './ArrayResource.mjs';\nexport { ArrayResource } from './ArrayResource.mjs';\nimport { BufferResource } from './BufferResource.mjs';\nexport { BufferResource } from './BufferResource.mjs';\nimport { CanvasResource } from './CanvasResource.mjs';\nexport { CanvasResource } from './CanvasResource.mjs';\nimport { CubeResource } from './CubeResource.mjs';\nexport { CubeResource } from './CubeResource.mjs';\nimport { ImageResource } from './ImageResource.mjs';\nexport { ImageResource } from './ImageResource.mjs';\nimport { SVGResource } from './SVGResource.mjs';\nexport { SVGResource } from './SVGResource.mjs';\nimport { VideoResource } from './VideoResource.mjs';\nexport { VideoResource } from './VideoResource.mjs';\nimport { ImageBitmapResource } from './ImageBitmapResource.mjs';\nexport { ImageBitmapResource } from './ImageBitmapResource.mjs';\nexport { Resource } from './Resource.mjs';\nexport { BaseImageResource } from './BaseImageResource.mjs';\nexport { AbstractMultiResource } from './AbstractMultiResource.mjs';\n\nINSTALLED.push(ImageBitmapResource, ImageResource, CanvasResource, VideoResource, SVGResource, BufferResource, CubeResource, ArrayResource);\n//# sourceMappingURL=index.mjs.map\n","import { ALPHA_MODES } from '@pixi/constants';\nimport { BufferResource } from './BufferResource.mjs';\n\nclass DepthResource extends BufferResource {\n upload(renderer, baseTexture, glTexture) {\n const gl = renderer.gl;\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK);\n const width = baseTexture.realWidth;\n const height = baseTexture.realHeight;\n if (glTexture.width === width && glTexture.height === height) {\n gl.texSubImage2D(baseTexture.target, 0, 0, 0, width, height, baseTexture.format, glTexture.type, this.data);\n } else {\n glTexture.width = width;\n glTexture.height = height;\n gl.texImage2D(baseTexture.target, 0, glTexture.internalFormat, width, height, 0, baseTexture.format, glTexture.type, this.data);\n }\n return true;\n }\n}\n\nexport { DepthResource };\n//# sourceMappingURL=DepthResource.mjs.map\n","import { Runner } from '@pixi/runner';\nimport { BaseTexture } from '../textures/BaseTexture.mjs';\nimport { DepthResource } from '../textures/resources/DepthResource.mjs';\nimport { MSAA_QUALITY, SCALE_MODES, MIPMAP_MODES, FORMATS, TYPES } from '@pixi/constants';\n\nclass Framebuffer {\n constructor(width, height) {\n this.width = Math.round(width || 100);\n this.height = Math.round(height || 100);\n this.stencil = false;\n this.depth = false;\n this.dirtyId = 0;\n this.dirtyFormat = 0;\n this.dirtySize = 0;\n this.depthTexture = null;\n this.colorTextures = [];\n this.glFramebuffers = {};\n this.disposeRunner = new Runner(\"disposeFramebuffer\");\n this.multisample = MSAA_QUALITY.NONE;\n }\n get colorTexture() {\n return this.colorTextures[0];\n }\n addColorTexture(index = 0, texture) {\n this.colorTextures[index] = texture || new BaseTexture(null, {\n scaleMode: SCALE_MODES.NEAREST,\n resolution: 1,\n mipmap: MIPMAP_MODES.OFF,\n width: this.width,\n height: this.height\n });\n this.dirtyId++;\n this.dirtyFormat++;\n return this;\n }\n addDepthTexture(texture) {\n this.depthTexture = texture || new BaseTexture(new DepthResource(null, { width: this.width, height: this.height }), {\n scaleMode: SCALE_MODES.NEAREST,\n resolution: 1,\n width: this.width,\n height: this.height,\n mipmap: MIPMAP_MODES.OFF,\n format: FORMATS.DEPTH_COMPONENT,\n type: TYPES.UNSIGNED_SHORT\n });\n this.dirtyId++;\n this.dirtyFormat++;\n return this;\n }\n enableDepth() {\n this.depth = true;\n this.dirtyId++;\n this.dirtyFormat++;\n return this;\n }\n enableStencil() {\n this.stencil = true;\n this.dirtyId++;\n this.dirtyFormat++;\n return this;\n }\n resize(width, height) {\n width = Math.round(width);\n height = Math.round(height);\n if (width === this.width && height === this.height)\n return;\n this.width = width;\n this.height = height;\n this.dirtyId++;\n this.dirtySize++;\n for (let i = 0; i < this.colorTextures.length; i++) {\n const texture = this.colorTextures[i];\n const resolution = texture.resolution;\n texture.setSize(width / resolution, height / resolution);\n }\n if (this.depthTexture) {\n const resolution = this.depthTexture.resolution;\n this.depthTexture.setSize(width / resolution, height / resolution);\n }\n }\n dispose() {\n this.disposeRunner.emit(this, false);\n }\n destroyDepthTexture() {\n if (this.depthTexture) {\n this.depthTexture.destroy();\n this.depthTexture = null;\n ++this.dirtyId;\n ++this.dirtyFormat;\n }\n }\n}\n\nexport { Framebuffer };\n//# sourceMappingURL=Framebuffer.mjs.map\n","import { BaseTexture } from '../textures/BaseTexture.mjs';\nimport { Framebuffer } from '../framebuffer/Framebuffer.mjs';\nimport { MSAA_QUALITY, MIPMAP_MODES } from '@pixi/constants';\n\nclass BaseRenderTexture extends BaseTexture {\n constructor(options = {}) {\n if (typeof options === \"number\") {\n const width = arguments[0];\n const height = arguments[1];\n const scaleMode = arguments[2];\n const resolution = arguments[3];\n options = { width, height, scaleMode, resolution };\n }\n options.width = options.width || 100;\n options.height = options.height || 100;\n options.multisample ?? (options.multisample = MSAA_QUALITY.NONE);\n super(null, options);\n this.mipmap = MIPMAP_MODES.OFF;\n this.valid = true;\n this.clearColor = [0, 0, 0, 0];\n this.framebuffer = new Framebuffer(this.realWidth, this.realHeight).addColorTexture(0, this);\n this.framebuffer.multisample = options.multisample;\n this.maskStack = [];\n this.filterStack = [{}];\n }\n resize(desiredWidth, desiredHeight) {\n this.framebuffer.resize(desiredWidth * this.resolution, desiredHeight * this.resolution);\n this.setRealSize(this.framebuffer.width, this.framebuffer.height);\n }\n dispose() {\n this.framebuffer.dispose();\n super.dispose();\n }\n destroy() {\n super.destroy();\n this.framebuffer.destroyDepthTexture();\n this.framebuffer = null;\n }\n}\n\nexport { BaseRenderTexture };\n//# sourceMappingURL=BaseRenderTexture.mjs.map\n","import { groupD8 } from '@pixi/math';\n\nclass TextureUvs {\n constructor() {\n this.x0 = 0;\n this.y0 = 0;\n this.x1 = 1;\n this.y1 = 0;\n this.x2 = 1;\n this.y2 = 1;\n this.x3 = 0;\n this.y3 = 1;\n this.uvsFloat32 = new Float32Array(8);\n }\n set(frame, baseFrame, rotate) {\n const tw = baseFrame.width;\n const th = baseFrame.height;\n if (rotate) {\n const w2 = frame.width / 2 / tw;\n const h2 = frame.height / 2 / th;\n const cX = frame.x / tw + w2;\n const cY = frame.y / th + h2;\n rotate = groupD8.add(rotate, groupD8.NW);\n this.x0 = cX + w2 * groupD8.uX(rotate);\n this.y0 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n this.x1 = cX + w2 * groupD8.uX(rotate);\n this.y1 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n this.x2 = cX + w2 * groupD8.uX(rotate);\n this.y2 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n this.x3 = cX + w2 * groupD8.uX(rotate);\n this.y3 = cY + h2 * groupD8.uY(rotate);\n } else {\n this.x0 = frame.x / tw;\n this.y0 = frame.y / th;\n this.x1 = (frame.x + frame.width) / tw;\n this.y1 = frame.y / th;\n this.x2 = (frame.x + frame.width) / tw;\n this.y2 = (frame.y + frame.height) / th;\n this.x3 = frame.x / tw;\n this.y3 = (frame.y + frame.height) / th;\n }\n this.uvsFloat32[0] = this.x0;\n this.uvsFloat32[1] = this.y0;\n this.uvsFloat32[2] = this.x1;\n this.uvsFloat32[3] = this.y1;\n this.uvsFloat32[4] = this.x2;\n this.uvsFloat32[5] = this.y2;\n this.uvsFloat32[6] = this.x3;\n this.uvsFloat32[7] = this.y3;\n }\n}\n\nexport { TextureUvs };\n//# sourceMappingURL=TextureUvs.mjs.map\n","import { Rectangle, Point } from '@pixi/math';\nimport { settings } from '@pixi/settings';\nimport { EventEmitter, TextureCache, uid, getResolutionOfUrl } from '@pixi/utils';\nimport { ImageResource } from './resources/ImageResource.mjs';\nimport { BaseTexture } from './BaseTexture.mjs';\nimport { TextureUvs } from './TextureUvs.mjs';\n\nconst DEFAULT_UVS = new TextureUvs();\nfunction removeAllHandlers(tex) {\n tex.destroy = function _emptyDestroy() {\n };\n tex.on = function _emptyOn() {\n };\n tex.once = function _emptyOnce() {\n };\n tex.emit = function _emptyEmit() {\n };\n}\nclass Texture extends EventEmitter {\n constructor(baseTexture, frame, orig, trim, rotate, anchor) {\n super();\n this.noFrame = false;\n if (!frame) {\n this.noFrame = true;\n frame = new Rectangle(0, 0, 1, 1);\n }\n if (baseTexture instanceof Texture) {\n baseTexture = baseTexture.baseTexture;\n }\n this.baseTexture = baseTexture;\n this._frame = frame;\n this.trim = trim;\n this.valid = false;\n this._uvs = DEFAULT_UVS;\n this.uvMatrix = null;\n this.orig = orig || frame;\n this._rotate = Number(rotate || 0);\n if (rotate === true) {\n this._rotate = 2;\n } else if (this._rotate % 2 !== 0) {\n throw new Error(\"attempt to use diamond-shaped UVs. If you are sure, set rotation manually\");\n }\n this.defaultAnchor = anchor ? new Point(anchor.x, anchor.y) : new Point(0, 0);\n this._updateID = 0;\n this.textureCacheIds = [];\n if (!baseTexture.valid) {\n baseTexture.once(\"loaded\", this.onBaseTextureUpdated, this);\n } else if (this.noFrame) {\n if (baseTexture.valid) {\n this.onBaseTextureUpdated(baseTexture);\n }\n } else {\n this.frame = frame;\n }\n if (this.noFrame) {\n baseTexture.on(\"update\", this.onBaseTextureUpdated, this);\n }\n }\n update() {\n if (this.baseTexture.resource) {\n this.baseTexture.resource.update();\n }\n }\n onBaseTextureUpdated(baseTexture) {\n if (this.noFrame) {\n if (!this.baseTexture.valid) {\n return;\n }\n this._frame.width = baseTexture.width;\n this._frame.height = baseTexture.height;\n this.valid = true;\n this.updateUvs();\n } else {\n this.frame = this._frame;\n }\n this.emit(\"update\", this);\n }\n destroy(destroyBase) {\n if (this.baseTexture) {\n if (destroyBase) {\n const { resource } = this.baseTexture;\n if (resource?.url && TextureCache[resource.url]) {\n Texture.removeFromCache(resource.url);\n }\n this.baseTexture.destroy();\n }\n this.baseTexture.off(\"loaded\", this.onBaseTextureUpdated, this);\n this.baseTexture.off(\"update\", this.onBaseTextureUpdated, this);\n this.baseTexture = null;\n }\n this._frame = null;\n this._uvs = null;\n this.trim = null;\n this.orig = null;\n this.valid = false;\n Texture.removeFromCache(this);\n this.textureCacheIds = null;\n }\n clone() {\n const clonedFrame = this._frame.clone();\n const clonedOrig = this._frame === this.orig ? clonedFrame : this.orig.clone();\n const clonedTexture = new Texture(this.baseTexture, !this.noFrame && clonedFrame, clonedOrig, this.trim?.clone(), this.rotate, this.defaultAnchor);\n if (this.noFrame) {\n clonedTexture._frame = clonedFrame;\n }\n return clonedTexture;\n }\n updateUvs() {\n if (this._uvs === DEFAULT_UVS) {\n this._uvs = new TextureUvs();\n }\n this._uvs.set(this._frame, this.baseTexture, this.rotate);\n this._updateID++;\n }\n static from(source, options = {}, strict = settings.STRICT_TEXTURE_CACHE) {\n const isFrame = typeof source === \"string\";\n let cacheId = null;\n if (isFrame) {\n cacheId = source;\n } else if (source instanceof BaseTexture) {\n if (!source.cacheId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source.cacheId = `${prefix}-${uid()}`;\n BaseTexture.addToCache(source, source.cacheId);\n }\n cacheId = source.cacheId;\n } else {\n if (!source._pixiId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source._pixiId = `${prefix}_${uid()}`;\n }\n cacheId = source._pixiId;\n }\n let texture = TextureCache[cacheId];\n if (isFrame && strict && !texture) {\n throw new Error(`The cacheId \"${cacheId}\" does not exist in TextureCache.`);\n }\n if (!texture && !(source instanceof BaseTexture)) {\n if (!options.resolution) {\n options.resolution = getResolutionOfUrl(source);\n }\n texture = new Texture(new BaseTexture(source, options));\n texture.baseTexture.cacheId = cacheId;\n BaseTexture.addToCache(texture.baseTexture, cacheId);\n Texture.addToCache(texture, cacheId);\n } else if (!texture && source instanceof BaseTexture) {\n texture = new Texture(source);\n Texture.addToCache(texture, cacheId);\n }\n return texture;\n }\n static fromURL(url, options) {\n const resourceOptions = Object.assign({ autoLoad: false }, options?.resourceOptions);\n const texture = Texture.from(url, Object.assign({ resourceOptions }, options), false);\n const resource = texture.baseTexture.resource;\n if (texture.baseTexture.valid) {\n return Promise.resolve(texture);\n }\n return resource.load().then(() => Promise.resolve(texture));\n }\n static fromBuffer(buffer, width, height, options) {\n return new Texture(BaseTexture.fromBuffer(buffer, width, height, options));\n }\n static fromLoader(source, imageUrl, name, options) {\n const baseTexture = new BaseTexture(source, Object.assign({\n scaleMode: settings.SCALE_MODE,\n resolution: getResolutionOfUrl(imageUrl)\n }, options));\n const { resource } = baseTexture;\n if (resource instanceof ImageResource) {\n resource.url = imageUrl;\n }\n const texture = new Texture(baseTexture);\n if (!name) {\n name = imageUrl;\n }\n BaseTexture.addToCache(texture.baseTexture, name);\n Texture.addToCache(texture, name);\n if (name !== imageUrl) {\n BaseTexture.addToCache(texture.baseTexture, imageUrl);\n Texture.addToCache(texture, imageUrl);\n }\n if (texture.baseTexture.valid) {\n return Promise.resolve(texture);\n }\n return new Promise((resolve) => {\n texture.baseTexture.once(\"loaded\", () => resolve(texture));\n });\n }\n static addToCache(texture, id) {\n if (id) {\n if (!texture.textureCacheIds.includes(id)) {\n texture.textureCacheIds.push(id);\n }\n if (TextureCache[id]) {\n console.warn(`Texture added to the cache with an id [${id}] that already had an entry`);\n }\n TextureCache[id] = texture;\n }\n }\n static removeFromCache(texture) {\n if (typeof texture === \"string\") {\n const textureFromCache = TextureCache[texture];\n if (textureFromCache) {\n const index = textureFromCache.textureCacheIds.indexOf(texture);\n if (index > -1) {\n textureFromCache.textureCacheIds.splice(index, 1);\n }\n delete TextureCache[texture];\n return textureFromCache;\n }\n } else if (texture?.textureCacheIds) {\n for (let i = 0; i < texture.textureCacheIds.length; ++i) {\n if (TextureCache[texture.textureCacheIds[i]] === texture) {\n delete TextureCache[texture.textureCacheIds[i]];\n }\n }\n texture.textureCacheIds.length = 0;\n return texture;\n }\n return null;\n }\n get resolution() {\n return this.baseTexture.resolution;\n }\n get frame() {\n return this._frame;\n }\n set frame(frame) {\n this._frame = frame;\n this.noFrame = false;\n const { x, y, width, height } = frame;\n const xNotFit = x + width > this.baseTexture.width;\n const yNotFit = y + height > this.baseTexture.height;\n if (xNotFit || yNotFit) {\n const relationship = xNotFit && yNotFit ? \"and\" : \"or\";\n const errorX = `X: ${x} + ${width} = ${x + width} > ${this.baseTexture.width}`;\n const errorY = `Y: ${y} + ${height} = ${y + height} > ${this.baseTexture.height}`;\n throw new Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${errorX} ${relationship} ${errorY}`);\n }\n this.valid = width && height && this.baseTexture.valid;\n if (!this.trim && !this.rotate) {\n this.orig = frame;\n }\n if (this.valid) {\n this.updateUvs();\n }\n }\n get rotate() {\n return this._rotate;\n }\n set rotate(rotate) {\n this._rotate = rotate;\n if (this.valid) {\n this.updateUvs();\n }\n }\n get width() {\n return this.orig.width;\n }\n get height() {\n return this.orig.height;\n }\n castToBaseTexture() {\n return this.baseTexture;\n }\n static get EMPTY() {\n if (!Texture._EMPTY) {\n Texture._EMPTY = new Texture(new BaseTexture());\n removeAllHandlers(Texture._EMPTY);\n removeAllHandlers(Texture._EMPTY.baseTexture);\n }\n return Texture._EMPTY;\n }\n static get WHITE() {\n if (!Texture._WHITE) {\n const canvas = settings.ADAPTER.createCanvas(16, 16);\n const context = canvas.getContext(\"2d\");\n canvas.width = 16;\n canvas.height = 16;\n context.fillStyle = \"white\";\n context.fillRect(0, 0, 16, 16);\n Texture._WHITE = new Texture(BaseTexture.from(canvas));\n removeAllHandlers(Texture._WHITE);\n removeAllHandlers(Texture._WHITE.baseTexture);\n }\n return Texture._WHITE;\n }\n}\n\nexport { Texture };\n//# sourceMappingURL=Texture.mjs.map\n","import { BaseRenderTexture } from './BaseRenderTexture.mjs';\nimport { Texture } from '../textures/Texture.mjs';\n\nclass RenderTexture extends Texture {\n constructor(baseRenderTexture, frame) {\n super(baseRenderTexture, frame);\n this.valid = true;\n this.filterFrame = null;\n this.filterPoolKey = null;\n this.updateUvs();\n }\n get framebuffer() {\n return this.baseTexture.framebuffer;\n }\n get multisample() {\n return this.framebuffer.multisample;\n }\n set multisample(value) {\n this.framebuffer.multisample = value;\n }\n resize(desiredWidth, desiredHeight, resizeBaseTexture = true) {\n const resolution = this.baseTexture.resolution;\n const width = Math.round(desiredWidth * resolution) / resolution;\n const height = Math.round(desiredHeight * resolution) / resolution;\n this.valid = width > 0 && height > 0;\n this._frame.width = this.orig.width = width;\n this._frame.height = this.orig.height = height;\n if (resizeBaseTexture) {\n this.baseTexture.resize(width, height);\n }\n this.updateUvs();\n }\n setResolution(resolution) {\n const { baseTexture } = this;\n if (baseTexture.resolution === resolution) {\n return;\n }\n baseTexture.setResolution(resolution);\n this.resize(baseTexture.width, baseTexture.height, false);\n }\n static create(options) {\n return new RenderTexture(new BaseRenderTexture(options));\n }\n}\n\nexport { RenderTexture };\n//# sourceMappingURL=RenderTexture.mjs.map\n","import { RenderTexture } from './RenderTexture.mjs';\nimport { BaseRenderTexture } from './BaseRenderTexture.mjs';\nimport { nextPow2 } from '@pixi/utils';\nimport { MSAA_QUALITY } from '@pixi/constants';\n\nclass RenderTexturePool {\n constructor(textureOptions) {\n this.texturePool = {};\n this.textureOptions = textureOptions || {};\n this.enableFullScreen = false;\n this._pixelsWidth = 0;\n this._pixelsHeight = 0;\n }\n createTexture(realWidth, realHeight, multisample = MSAA_QUALITY.NONE) {\n const baseRenderTexture = new BaseRenderTexture(Object.assign({\n width: realWidth,\n height: realHeight,\n resolution: 1,\n multisample\n }, this.textureOptions));\n return new RenderTexture(baseRenderTexture);\n }\n getOptimalTexture(minWidth, minHeight, resolution = 1, multisample = MSAA_QUALITY.NONE) {\n let key;\n minWidth = Math.ceil(minWidth * resolution - 1e-6);\n minHeight = Math.ceil(minHeight * resolution - 1e-6);\n if (!this.enableFullScreen || minWidth !== this._pixelsWidth || minHeight !== this._pixelsHeight) {\n minWidth = nextPow2(minWidth);\n minHeight = nextPow2(minHeight);\n key = ((minWidth & 65535) << 16 | minHeight & 65535) >>> 0;\n if (multisample > 1) {\n key += multisample * 4294967296;\n }\n } else {\n key = multisample > 1 ? -multisample : -1;\n }\n if (!this.texturePool[key]) {\n this.texturePool[key] = [];\n }\n let renderTexture = this.texturePool[key].pop();\n if (!renderTexture) {\n renderTexture = this.createTexture(minWidth, minHeight, multisample);\n }\n renderTexture.filterPoolKey = key;\n renderTexture.setResolution(resolution);\n return renderTexture;\n }\n getFilterTexture(input, resolution, multisample) {\n const filterTexture = this.getOptimalTexture(input.width, input.height, resolution || input.resolution, multisample || MSAA_QUALITY.NONE);\n filterTexture.filterFrame = input.filterFrame;\n return filterTexture;\n }\n returnTexture(renderTexture) {\n const key = renderTexture.filterPoolKey;\n renderTexture.filterFrame = null;\n this.texturePool[key].push(renderTexture);\n }\n returnFilterTexture(renderTexture) {\n this.returnTexture(renderTexture);\n }\n clear(destroyTextures) {\n destroyTextures = destroyTextures !== false;\n if (destroyTextures) {\n for (const i in this.texturePool) {\n const textures = this.texturePool[i];\n if (textures) {\n for (let j = 0; j < textures.length; j++) {\n textures[j].destroy(true);\n }\n }\n }\n }\n this.texturePool = {};\n }\n setScreenSize(size) {\n if (size.width === this._pixelsWidth && size.height === this._pixelsHeight) {\n return;\n }\n this.enableFullScreen = size.width > 0 && size.height > 0;\n for (const i in this.texturePool) {\n if (!(Number(i) < 0)) {\n continue;\n }\n const textures = this.texturePool[i];\n if (textures) {\n for (let j = 0; j < textures.length; j++) {\n textures[j].destroy(true);\n }\n }\n this.texturePool[i] = [];\n }\n this._pixelsWidth = size.width;\n this._pixelsHeight = size.height;\n }\n}\nRenderTexturePool.SCREEN_KEY = -1;\n\nexport { RenderTexturePool };\n//# sourceMappingURL=RenderTexturePool.mjs.map\n","import { TYPES } from '@pixi/constants';\n\nclass Attribute {\n constructor(buffer, size = 0, normalized = false, type = TYPES.FLOAT, stride, start, instance) {\n this.buffer = buffer;\n this.size = size;\n this.normalized = normalized;\n this.type = type;\n this.stride = stride;\n this.start = start;\n this.instance = instance;\n }\n destroy() {\n this.buffer = null;\n }\n static from(buffer, size, normalized, type, stride) {\n return new Attribute(buffer, size, normalized, type, stride);\n }\n}\n\nexport { Attribute };\n//# sourceMappingURL=Attribute.mjs.map\n","import { BUFFER_TYPE } from '@pixi/constants';\nimport { Runner } from '@pixi/runner';\n\nlet UID = 0;\nclass Buffer {\n constructor(data, _static = true, index = false) {\n this.data = data || new Float32Array(1);\n this._glBuffers = {};\n this._updateID = 0;\n this.index = index;\n this.static = _static;\n this.id = UID++;\n this.disposeRunner = new Runner(\"disposeBuffer\");\n }\n update(data) {\n if (data instanceof Array) {\n data = new Float32Array(data);\n }\n this.data = data || this.data;\n this._updateID++;\n }\n dispose() {\n this.disposeRunner.emit(this, false);\n }\n destroy() {\n this.dispose();\n this.data = null;\n }\n set index(value) {\n this.type = value ? BUFFER_TYPE.ELEMENT_ARRAY_BUFFER : BUFFER_TYPE.ARRAY_BUFFER;\n }\n get index() {\n return this.type === BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n }\n static from(data) {\n if (data instanceof Array) {\n data = new Float32Array(data);\n }\n return new Buffer(data);\n }\n}\n\nexport { Buffer };\n//# sourceMappingURL=Buffer.mjs.map\n","import { getBufferType } from '@pixi/utils';\n\nconst map = {\n Float32Array,\n Uint32Array,\n Int32Array,\n Uint8Array\n};\nfunction interleaveTypedArrays(arrays, sizes) {\n let outSize = 0;\n let stride = 0;\n const views = {};\n for (let i = 0; i < arrays.length; i++) {\n stride += sizes[i];\n outSize += arrays[i].length;\n }\n const buffer = new ArrayBuffer(outSize * 4);\n let out = null;\n let littleOffset = 0;\n for (let i = 0; i < arrays.length; i++) {\n const size = sizes[i];\n const array = arrays[i];\n const type = getBufferType(array);\n if (!views[type]) {\n views[type] = new map[type](buffer);\n }\n out = views[type];\n for (let j = 0; j < array.length; j++) {\n const indexStart = (j / size | 0) * stride + littleOffset;\n const index = j % size;\n out[indexStart + index] = array[j];\n }\n littleOffset += size;\n }\n return new Float32Array(buffer);\n}\n\nexport { interleaveTypedArrays };\n//# sourceMappingURL=interleaveTypedArrays.mjs.map\n","import { Attribute } from './Attribute.mjs';\nimport { Buffer } from './Buffer.mjs';\nimport { interleaveTypedArrays } from './utils/interleaveTypedArrays.mjs';\nimport { getBufferType } from '@pixi/utils';\nimport { Runner } from '@pixi/runner';\nimport { BUFFER_TYPE } from '@pixi/constants';\n\nconst byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 };\nlet UID = 0;\nconst map = {\n Float32Array,\n Uint32Array,\n Int32Array,\n Uint8Array,\n Uint16Array\n};\nclass Geometry {\n constructor(buffers = [], attributes = {}) {\n this.buffers = buffers;\n this.indexBuffer = null;\n this.attributes = attributes;\n this.glVertexArrayObjects = {};\n this.id = UID++;\n this.instanced = false;\n this.instanceCount = 1;\n this.disposeRunner = new Runner(\"disposeGeometry\");\n this.refCount = 0;\n }\n addAttribute(id, buffer, size = 0, normalized = false, type, stride, start, instance = false) {\n if (!buffer) {\n throw new Error(\"You must pass a buffer when creating an attribute\");\n }\n if (!(buffer instanceof Buffer)) {\n if (buffer instanceof Array) {\n buffer = new Float32Array(buffer);\n }\n buffer = new Buffer(buffer);\n }\n const ids = id.split(\"|\");\n if (ids.length > 1) {\n for (let i = 0; i < ids.length; i++) {\n this.addAttribute(ids[i], buffer, size, normalized, type);\n }\n return this;\n }\n let bufferIndex = this.buffers.indexOf(buffer);\n if (bufferIndex === -1) {\n this.buffers.push(buffer);\n bufferIndex = this.buffers.length - 1;\n }\n this.attributes[id] = new Attribute(bufferIndex, size, normalized, type, stride, start, instance);\n this.instanced = this.instanced || instance;\n return this;\n }\n getAttribute(id) {\n return this.attributes[id];\n }\n getBuffer(id) {\n return this.buffers[this.getAttribute(id).buffer];\n }\n addIndex(buffer) {\n if (!(buffer instanceof Buffer)) {\n if (buffer instanceof Array) {\n buffer = new Uint16Array(buffer);\n }\n buffer = new Buffer(buffer);\n }\n buffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n this.indexBuffer = buffer;\n if (!this.buffers.includes(buffer)) {\n this.buffers.push(buffer);\n }\n return this;\n }\n getIndex() {\n return this.indexBuffer;\n }\n interleave() {\n if (this.buffers.length === 1 || this.buffers.length === 2 && this.indexBuffer)\n return this;\n const arrays = [];\n const sizes = [];\n const interleavedBuffer = new Buffer();\n let i;\n for (i in this.attributes) {\n const attribute = this.attributes[i];\n const buffer = this.buffers[attribute.buffer];\n arrays.push(buffer.data);\n sizes.push(attribute.size * byteSizeMap[attribute.type] / 4);\n attribute.buffer = 0;\n }\n interleavedBuffer.data = interleaveTypedArrays(arrays, sizes);\n for (i = 0; i < this.buffers.length; i++) {\n if (this.buffers[i] !== this.indexBuffer) {\n this.buffers[i].destroy();\n }\n }\n this.buffers = [interleavedBuffer];\n if (this.indexBuffer) {\n this.buffers.push(this.indexBuffer);\n }\n return this;\n }\n getSize() {\n for (const i in this.attributes) {\n const attribute = this.attributes[i];\n const buffer = this.buffers[attribute.buffer];\n return buffer.data.length / (attribute.stride / 4 || attribute.size);\n }\n return 0;\n }\n dispose() {\n this.disposeRunner.emit(this, false);\n }\n destroy() {\n this.dispose();\n this.buffers = null;\n this.indexBuffer = null;\n this.attributes = null;\n }\n clone() {\n const geometry = new Geometry();\n for (let i = 0; i < this.buffers.length; i++) {\n geometry.buffers[i] = new Buffer(this.buffers[i].data.slice(0));\n }\n for (const i in this.attributes) {\n const attrib = this.attributes[i];\n geometry.attributes[i] = new Attribute(attrib.buffer, attrib.size, attrib.normalized, attrib.type, attrib.stride, attrib.start, attrib.instance);\n }\n if (this.indexBuffer) {\n geometry.indexBuffer = geometry.buffers[this.buffers.indexOf(this.indexBuffer)];\n geometry.indexBuffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n }\n return geometry;\n }\n static merge(geometries) {\n const geometryOut = new Geometry();\n const arrays = [];\n const sizes = [];\n const offsets = [];\n let geometry;\n for (let i = 0; i < geometries.length; i++) {\n geometry = geometries[i];\n for (let j = 0; j < geometry.buffers.length; j++) {\n sizes[j] = sizes[j] || 0;\n sizes[j] += geometry.buffers[j].data.length;\n offsets[j] = 0;\n }\n }\n for (let i = 0; i < geometry.buffers.length; i++) {\n arrays[i] = new map[getBufferType(geometry.buffers[i].data)](sizes[i]);\n geometryOut.buffers[i] = new Buffer(arrays[i]);\n }\n for (let i = 0; i < geometries.length; i++) {\n geometry = geometries[i];\n for (let j = 0; j < geometry.buffers.length; j++) {\n arrays[j].set(geometry.buffers[j].data, offsets[j]);\n offsets[j] += geometry.buffers[j].data.length;\n }\n }\n geometryOut.attributes = geometry.attributes;\n if (geometry.indexBuffer) {\n geometryOut.indexBuffer = geometryOut.buffers[geometry.buffers.indexOf(geometry.indexBuffer)];\n geometryOut.indexBuffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n let offset = 0;\n let stride = 0;\n let offset2 = 0;\n let bufferIndexToCount = 0;\n for (let i = 0; i < geometry.buffers.length; i++) {\n if (geometry.buffers[i] !== geometry.indexBuffer) {\n bufferIndexToCount = i;\n break;\n }\n }\n for (const i in geometry.attributes) {\n const attribute = geometry.attributes[i];\n if ((attribute.buffer | 0) === bufferIndexToCount) {\n stride += attribute.size * byteSizeMap[attribute.type] / 4;\n }\n }\n for (let i = 0; i < geometries.length; i++) {\n const indexBufferData = geometries[i].indexBuffer.data;\n for (let j = 0; j < indexBufferData.length; j++) {\n geometryOut.indexBuffer.data[j + offset2] += offset;\n }\n offset += geometries[i].buffers[bufferIndexToCount].data.length / stride;\n offset2 += indexBufferData.length;\n }\n }\n return geometryOut;\n }\n}\n\nexport { Geometry };\n//# sourceMappingURL=Geometry.mjs.map\n","import { Geometry } from '../geometry/Geometry.mjs';\n\nclass Quad extends Geometry {\n constructor() {\n super();\n this.addAttribute(\"aVertexPosition\", new Float32Array([\n 0,\n 0,\n 1,\n 0,\n 1,\n 1,\n 0,\n 1\n ])).addIndex([0, 1, 3, 2]);\n }\n}\n\nexport { Quad };\n//# sourceMappingURL=Quad.mjs.map\n","import { Geometry } from '../geometry/Geometry.mjs';\nimport { Buffer } from '../geometry/Buffer.mjs';\n\nclass QuadUv extends Geometry {\n constructor() {\n super();\n this.vertices = new Float32Array([\n -1,\n -1,\n 1,\n -1,\n 1,\n 1,\n -1,\n 1\n ]);\n this.uvs = new Float32Array([\n 0,\n 0,\n 1,\n 0,\n 1,\n 1,\n 0,\n 1\n ]);\n this.vertexBuffer = new Buffer(this.vertices);\n this.uvBuffer = new Buffer(this.uvs);\n this.addAttribute(\"aVertexPosition\", this.vertexBuffer).addAttribute(\"aTextureCoord\", this.uvBuffer).addIndex([0, 1, 2, 0, 2, 3]);\n }\n map(targetTextureFrame, destinationFrame) {\n let x = 0;\n let y = 0;\n this.uvs[0] = x;\n this.uvs[1] = y;\n this.uvs[2] = x + destinationFrame.width / targetTextureFrame.width;\n this.uvs[3] = y;\n this.uvs[4] = x + destinationFrame.width / targetTextureFrame.width;\n this.uvs[5] = y + destinationFrame.height / targetTextureFrame.height;\n this.uvs[6] = x;\n this.uvs[7] = y + destinationFrame.height / targetTextureFrame.height;\n x = destinationFrame.x;\n y = destinationFrame.y;\n this.vertices[0] = x;\n this.vertices[1] = y;\n this.vertices[2] = x + destinationFrame.width;\n this.vertices[3] = y;\n this.vertices[4] = x + destinationFrame.width;\n this.vertices[5] = y + destinationFrame.height;\n this.vertices[6] = x;\n this.vertices[7] = y + destinationFrame.height;\n this.invalidate();\n return this;\n }\n invalidate() {\n this.vertexBuffer._updateID++;\n this.uvBuffer._updateID++;\n return this;\n }\n}\n\nexport { QuadUv };\n//# sourceMappingURL=QuadUv.mjs.map\n","import { BUFFER_TYPE } from '@pixi/constants';\nimport { Buffer } from '../geometry/Buffer.mjs';\n\nlet UID = 0;\nclass UniformGroup {\n constructor(uniforms, isStatic, isUbo) {\n this.group = true;\n this.syncUniforms = {};\n this.dirtyId = 0;\n this.id = UID++;\n this.static = !!isStatic;\n this.ubo = !!isUbo;\n if (uniforms instanceof Buffer) {\n this.buffer = uniforms;\n this.buffer.type = BUFFER_TYPE.UNIFORM_BUFFER;\n this.autoManage = false;\n this.ubo = true;\n } else {\n this.uniforms = uniforms;\n if (this.ubo) {\n this.buffer = new Buffer(new Float32Array(1));\n this.buffer.type = BUFFER_TYPE.UNIFORM_BUFFER;\n this.autoManage = true;\n }\n }\n }\n update() {\n this.dirtyId++;\n if (!this.autoManage && this.buffer) {\n this.buffer.update();\n }\n }\n add(name, uniforms, _static) {\n if (!this.ubo) {\n this.uniforms[name] = new UniformGroup(uniforms, _static);\n } else {\n throw new Error(\"[UniformGroup] uniform groups in ubo mode cannot be modified, or have uniform groups nested in them\");\n }\n }\n static from(uniforms, _static, _ubo) {\n return new UniformGroup(uniforms, _static, _ubo);\n }\n static uboFrom(uniforms, _static) {\n return new UniformGroup(uniforms, _static ?? true, true);\n }\n}\n\nexport { UniformGroup };\n//# sourceMappingURL=UniformGroup.mjs.map\n","import { Rectangle } from '@pixi/math';\nimport { MSAA_QUALITY } from '@pixi/constants';\n\nclass FilterState {\n constructor() {\n this.renderTexture = null;\n this.target = null;\n this.legacy = false;\n this.resolution = 1;\n this.multisample = MSAA_QUALITY.NONE;\n this.sourceFrame = new Rectangle();\n this.destinationFrame = new Rectangle();\n this.bindingSourceFrame = new Rectangle();\n this.bindingDestinationFrame = new Rectangle();\n this.filters = [];\n this.transform = null;\n }\n clear() {\n this.target = null;\n this.filters = null;\n this.renderTexture = null;\n }\n}\n\nexport { FilterState };\n//# sourceMappingURL=FilterState.mjs.map\n","import { RenderTexturePool } from '../renderTexture/RenderTexturePool.mjs';\nimport { Quad } from '../utils/Quad.mjs';\nimport { QuadUv } from '../utils/QuadUv.mjs';\nimport { Point, Matrix, Rectangle } from '@pixi/math';\nimport { UniformGroup } from '../shader/UniformGroup.mjs';\nimport { CLEAR_MODES, DRAW_MODES, MSAA_QUALITY } from '@pixi/constants';\nimport { FilterState } from './FilterState.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nconst tempPoints = [new Point(), new Point(), new Point(), new Point()];\nconst tempMatrix = new Matrix();\nclass FilterSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.defaultFilterStack = [{}];\n this.texturePool = new RenderTexturePool();\n this.statePool = [];\n this.quad = new Quad();\n this.quadUv = new QuadUv();\n this.tempRect = new Rectangle();\n this.activeState = {};\n this.globalUniforms = new UniformGroup({\n outputFrame: new Rectangle(),\n inputSize: new Float32Array(4),\n inputPixel: new Float32Array(4),\n inputClamp: new Float32Array(4),\n resolution: 1,\n filterArea: new Float32Array(4),\n filterClamp: new Float32Array(4)\n }, true);\n this.forceClear = false;\n this.useMaxPadding = false;\n }\n init() {\n this.texturePool.setScreenSize(this.renderer.view);\n }\n push(target, filters) {\n const renderer = this.renderer;\n const filterStack = this.defaultFilterStack;\n const state = this.statePool.pop() || new FilterState();\n const renderTextureSystem = this.renderer.renderTexture;\n let resolution = filters[0].resolution;\n let multisample = filters[0].multisample;\n let padding = filters[0].padding;\n let autoFit = filters[0].autoFit;\n let legacy = filters[0].legacy ?? true;\n for (let i = 1; i < filters.length; i++) {\n const filter = filters[i];\n resolution = Math.min(resolution, filter.resolution);\n multisample = Math.min(multisample, filter.multisample);\n padding = this.useMaxPadding ? Math.max(padding, filter.padding) : padding + filter.padding;\n autoFit = autoFit && filter.autoFit;\n legacy = legacy || (filter.legacy ?? true);\n }\n if (filterStack.length === 1) {\n this.defaultFilterStack[0].renderTexture = renderTextureSystem.current;\n }\n filterStack.push(state);\n state.resolution = resolution;\n state.multisample = multisample;\n state.legacy = legacy;\n state.target = target;\n state.sourceFrame.copyFrom(target.filterArea || target.getBounds(true));\n state.sourceFrame.pad(padding);\n const sourceFrameProjected = this.tempRect.copyFrom(renderTextureSystem.sourceFrame);\n if (renderer.projection.transform) {\n this.transformAABB(tempMatrix.copyFrom(renderer.projection.transform).invert(), sourceFrameProjected);\n }\n if (autoFit) {\n state.sourceFrame.fit(sourceFrameProjected);\n if (state.sourceFrame.width <= 0 || state.sourceFrame.height <= 0) {\n state.sourceFrame.width = 0;\n state.sourceFrame.height = 0;\n }\n } else if (!state.sourceFrame.intersects(sourceFrameProjected)) {\n state.sourceFrame.width = 0;\n state.sourceFrame.height = 0;\n }\n this.roundFrame(state.sourceFrame, renderTextureSystem.current ? renderTextureSystem.current.resolution : renderer.resolution, renderTextureSystem.sourceFrame, renderTextureSystem.destinationFrame, renderer.projection.transform);\n state.renderTexture = this.getOptimalFilterTexture(state.sourceFrame.width, state.sourceFrame.height, resolution, multisample);\n state.filters = filters;\n state.destinationFrame.width = state.renderTexture.width;\n state.destinationFrame.height = state.renderTexture.height;\n const destinationFrame = this.tempRect;\n destinationFrame.x = 0;\n destinationFrame.y = 0;\n destinationFrame.width = state.sourceFrame.width;\n destinationFrame.height = state.sourceFrame.height;\n state.renderTexture.filterFrame = state.sourceFrame;\n state.bindingSourceFrame.copyFrom(renderTextureSystem.sourceFrame);\n state.bindingDestinationFrame.copyFrom(renderTextureSystem.destinationFrame);\n state.transform = renderer.projection.transform;\n renderer.projection.transform = null;\n renderTextureSystem.bind(state.renderTexture, state.sourceFrame, destinationFrame);\n renderer.framebuffer.clear(0, 0, 0, 0);\n }\n pop() {\n const filterStack = this.defaultFilterStack;\n const state = filterStack.pop();\n const filters = state.filters;\n this.activeState = state;\n const globalUniforms = this.globalUniforms.uniforms;\n globalUniforms.outputFrame = state.sourceFrame;\n globalUniforms.resolution = state.resolution;\n const inputSize = globalUniforms.inputSize;\n const inputPixel = globalUniforms.inputPixel;\n const inputClamp = globalUniforms.inputClamp;\n inputSize[0] = state.destinationFrame.width;\n inputSize[1] = state.destinationFrame.height;\n inputSize[2] = 1 / inputSize[0];\n inputSize[3] = 1 / inputSize[1];\n inputPixel[0] = Math.round(inputSize[0] * state.resolution);\n inputPixel[1] = Math.round(inputSize[1] * state.resolution);\n inputPixel[2] = 1 / inputPixel[0];\n inputPixel[3] = 1 / inputPixel[1];\n inputClamp[0] = 0.5 * inputPixel[2];\n inputClamp[1] = 0.5 * inputPixel[3];\n inputClamp[2] = state.sourceFrame.width * inputSize[2] - 0.5 * inputPixel[2];\n inputClamp[3] = state.sourceFrame.height * inputSize[3] - 0.5 * inputPixel[3];\n if (state.legacy) {\n const filterArea = globalUniforms.filterArea;\n filterArea[0] = state.destinationFrame.width;\n filterArea[1] = state.destinationFrame.height;\n filterArea[2] = state.sourceFrame.x;\n filterArea[3] = state.sourceFrame.y;\n globalUniforms.filterClamp = globalUniforms.inputClamp;\n }\n this.globalUniforms.update();\n const lastState = filterStack[filterStack.length - 1];\n this.renderer.framebuffer.blit();\n if (filters.length === 1) {\n filters[0].apply(this, state.renderTexture, lastState.renderTexture, CLEAR_MODES.BLEND, state);\n this.returnFilterTexture(state.renderTexture);\n } else {\n let flip = state.renderTexture;\n let flop = this.getOptimalFilterTexture(flip.width, flip.height, state.resolution);\n flop.filterFrame = flip.filterFrame;\n let i = 0;\n for (i = 0; i < filters.length - 1; ++i) {\n if (i === 1 && state.multisample > 1) {\n flop = this.getOptimalFilterTexture(flip.width, flip.height, state.resolution);\n flop.filterFrame = flip.filterFrame;\n }\n filters[i].apply(this, flip, flop, CLEAR_MODES.CLEAR, state);\n const t = flip;\n flip = flop;\n flop = t;\n }\n filters[i].apply(this, flip, lastState.renderTexture, CLEAR_MODES.BLEND, state);\n if (i > 1 && state.multisample > 1) {\n this.returnFilterTexture(state.renderTexture);\n }\n this.returnFilterTexture(flip);\n this.returnFilterTexture(flop);\n }\n state.clear();\n this.statePool.push(state);\n }\n bindAndClear(filterTexture, clearMode = CLEAR_MODES.CLEAR) {\n const {\n renderTexture: renderTextureSystem,\n state: stateSystem\n } = this.renderer;\n if (filterTexture === this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture) {\n this.renderer.projection.transform = this.activeState.transform;\n } else {\n this.renderer.projection.transform = null;\n }\n if (filterTexture?.filterFrame) {\n const destinationFrame = this.tempRect;\n destinationFrame.x = 0;\n destinationFrame.y = 0;\n destinationFrame.width = filterTexture.filterFrame.width;\n destinationFrame.height = filterTexture.filterFrame.height;\n renderTextureSystem.bind(filterTexture, filterTexture.filterFrame, destinationFrame);\n } else if (filterTexture !== this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture) {\n renderTextureSystem.bind(filterTexture);\n } else {\n this.renderer.renderTexture.bind(filterTexture, this.activeState.bindingSourceFrame, this.activeState.bindingDestinationFrame);\n }\n const autoClear = stateSystem.stateId & 1 || this.forceClear;\n if (clearMode === CLEAR_MODES.CLEAR || clearMode === CLEAR_MODES.BLIT && autoClear) {\n this.renderer.framebuffer.clear(0, 0, 0, 0);\n }\n }\n applyFilter(filter, input, output, clearMode) {\n const renderer = this.renderer;\n renderer.state.set(filter.state);\n this.bindAndClear(output, clearMode);\n filter.uniforms.uSampler = input;\n filter.uniforms.filterGlobals = this.globalUniforms;\n renderer.shader.bind(filter);\n filter.legacy = !!filter.program.attributeData.aTextureCoord;\n if (filter.legacy) {\n this.quadUv.map(input._frame, input.filterFrame);\n renderer.geometry.bind(this.quadUv);\n renderer.geometry.draw(DRAW_MODES.TRIANGLES);\n } else {\n renderer.geometry.bind(this.quad);\n renderer.geometry.draw(DRAW_MODES.TRIANGLE_STRIP);\n }\n }\n calculateSpriteMatrix(outputMatrix, sprite) {\n const { sourceFrame, destinationFrame } = this.activeState;\n const { orig } = sprite._texture;\n const mappedMatrix = outputMatrix.set(destinationFrame.width, 0, 0, destinationFrame.height, sourceFrame.x, sourceFrame.y);\n const worldTransform = sprite.worldTransform.copyTo(Matrix.TEMP_MATRIX);\n worldTransform.invert();\n mappedMatrix.prepend(worldTransform);\n mappedMatrix.scale(1 / orig.width, 1 / orig.height);\n mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y);\n return mappedMatrix;\n }\n destroy() {\n this.renderer = null;\n this.texturePool.clear(false);\n }\n getOptimalFilterTexture(minWidth, minHeight, resolution = 1, multisample = MSAA_QUALITY.NONE) {\n return this.texturePool.getOptimalTexture(minWidth, minHeight, resolution, multisample);\n }\n getFilterTexture(input, resolution, multisample) {\n if (typeof input === \"number\") {\n const swap = input;\n input = resolution;\n resolution = swap;\n }\n input = input || this.activeState.renderTexture;\n const filterTexture = this.texturePool.getOptimalTexture(input.width, input.height, resolution || input.resolution, multisample || MSAA_QUALITY.NONE);\n filterTexture.filterFrame = input.filterFrame;\n return filterTexture;\n }\n returnFilterTexture(renderTexture) {\n this.texturePool.returnTexture(renderTexture);\n }\n emptyPool() {\n this.texturePool.clear(true);\n }\n resize() {\n this.texturePool.setScreenSize(this.renderer.view);\n }\n transformAABB(matrix, rect) {\n const lt = tempPoints[0];\n const lb = tempPoints[1];\n const rt = tempPoints[2];\n const rb = tempPoints[3];\n lt.set(rect.left, rect.top);\n lb.set(rect.left, rect.bottom);\n rt.set(rect.right, rect.top);\n rb.set(rect.right, rect.bottom);\n matrix.apply(lt, lt);\n matrix.apply(lb, lb);\n matrix.apply(rt, rt);\n matrix.apply(rb, rb);\n const x0 = Math.min(lt.x, lb.x, rt.x, rb.x);\n const y0 = Math.min(lt.y, lb.y, rt.y, rb.y);\n const x1 = Math.max(lt.x, lb.x, rt.x, rb.x);\n const y1 = Math.max(lt.y, lb.y, rt.y, rb.y);\n rect.x = x0;\n rect.y = y0;\n rect.width = x1 - x0;\n rect.height = y1 - y0;\n }\n roundFrame(frame, resolution, bindingSourceFrame, bindingDestinationFrame, transform) {\n if (frame.width <= 0 || frame.height <= 0 || bindingSourceFrame.width <= 0 || bindingSourceFrame.height <= 0) {\n return;\n }\n if (transform) {\n const { a, b, c, d } = transform;\n if ((Math.abs(b) > 1e-4 || Math.abs(c) > 1e-4) && (Math.abs(a) > 1e-4 || Math.abs(d) > 1e-4)) {\n return;\n }\n }\n transform = transform ? tempMatrix.copyFrom(transform) : tempMatrix.identity();\n transform.translate(-bindingSourceFrame.x, -bindingSourceFrame.y).scale(bindingDestinationFrame.width / bindingSourceFrame.width, bindingDestinationFrame.height / bindingSourceFrame.height).translate(bindingDestinationFrame.x, bindingDestinationFrame.y);\n this.transformAABB(transform, frame);\n frame.ceil(resolution);\n this.transformAABB(transform.invert(), frame);\n }\n}\nFilterSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"filter\"\n};\nextensions.add(FilterSystem);\n\nexport { FilterSystem };\n//# sourceMappingURL=FilterSystem.mjs.map\n","class ObjectRenderer {\n constructor(renderer) {\n this.renderer = renderer;\n }\n flush() {\n }\n destroy() {\n this.renderer = null;\n }\n start() {\n }\n stop() {\n this.flush();\n }\n render(_object) {\n }\n}\n\nexport { ObjectRenderer };\n//# sourceMappingURL=ObjectRenderer.mjs.map\n","import { ObjectRenderer } from './ObjectRenderer.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass BatchSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.emptyRenderer = new ObjectRenderer(renderer);\n this.currentRenderer = this.emptyRenderer;\n }\n setObjectRenderer(objectRenderer) {\n if (this.currentRenderer === objectRenderer) {\n return;\n }\n this.currentRenderer.stop();\n this.currentRenderer = objectRenderer;\n this.currentRenderer.start();\n }\n flush() {\n this.setObjectRenderer(this.emptyRenderer);\n }\n reset() {\n this.setObjectRenderer(this.emptyRenderer);\n }\n copyBoundTextures(arr, maxTextures) {\n const { boundTextures } = this.renderer.texture;\n for (let i = maxTextures - 1; i >= 0; --i) {\n arr[i] = boundTextures[i] || null;\n if (arr[i]) {\n arr[i]._batchLocation = i;\n }\n }\n }\n boundArray(texArray, boundTextures, batchId, maxTextures) {\n const { elements, ids, count } = texArray;\n let j = 0;\n for (let i = 0; i < count; i++) {\n const tex = elements[i];\n const loc = tex._batchLocation;\n if (loc >= 0 && loc < maxTextures && boundTextures[loc] === tex) {\n ids[i] = loc;\n continue;\n }\n while (j < maxTextures) {\n const bound = boundTextures[j];\n if (bound && bound._batchEnabled === batchId && bound._batchLocation === j) {\n j++;\n continue;\n }\n ids[i] = j;\n tex._batchLocation = j;\n boundTextures[j] = tex;\n break;\n }\n }\n }\n destroy() {\n this.renderer = null;\n }\n}\nBatchSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"batch\"\n};\nextensions.add(BatchSystem);\n\nexport { BatchSystem };\n//# sourceMappingURL=BatchSystem.mjs.map\n","import { ENV } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport '../settings.mjs';\nimport { settings } from '@pixi/settings';\n\nlet CONTEXT_UID_COUNTER = 0;\nclass ContextSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.webGLVersion = 1;\n this.extensions = {};\n this.supports = {\n uint32Indices: false\n };\n this.handleContextLost = this.handleContextLost.bind(this);\n this.handleContextRestored = this.handleContextRestored.bind(this);\n }\n get isLost() {\n return !this.gl || this.gl.isContextLost();\n }\n contextChange(gl) {\n this.gl = gl;\n this.renderer.gl = gl;\n this.renderer.CONTEXT_UID = CONTEXT_UID_COUNTER++;\n if (gl.isContextLost() && gl.getExtension(\"WEBGL_lose_context\")) {\n gl.getExtension(\"WEBGL_lose_context\").restoreContext();\n }\n }\n init(options) {\n if (options.context) {\n this.initFromContext(options.context);\n } else {\n const alpha = this.renderer.background.alpha < 1;\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n this.preserveDrawingBuffer = options.preserveDrawingBuffer;\n this.useContextAlpha = options.useContextAlpha;\n this.powerPreference = options.powerPreference;\n this.initFromOptions({\n alpha,\n premultipliedAlpha,\n antialias: options.antialias,\n stencil: true,\n preserveDrawingBuffer: options.preserveDrawingBuffer,\n powerPreference: options.powerPreference\n });\n }\n }\n initFromContext(gl) {\n this.gl = gl;\n this.validateContext(gl);\n this.renderer.gl = gl;\n this.renderer.CONTEXT_UID = CONTEXT_UID_COUNTER++;\n this.renderer.runners.contextChange.emit(gl);\n const view = this.renderer.view;\n if (view.addEventListener !== void 0) {\n view.addEventListener(\"webglcontextlost\", this.handleContextLost, false);\n view.addEventListener(\"webglcontextrestored\", this.handleContextRestored, false);\n }\n }\n initFromOptions(options) {\n const gl = this.createContext(this.renderer.view, options);\n this.initFromContext(gl);\n }\n createContext(canvas, options) {\n let gl;\n if (settings.PREFER_ENV >= ENV.WEBGL2) {\n gl = canvas.getContext(\"webgl2\", options);\n }\n if (gl) {\n this.webGLVersion = 2;\n } else {\n this.webGLVersion = 1;\n gl = canvas.getContext(\"webgl\", options) || canvas.getContext(\"experimental-webgl\", options);\n if (!gl) {\n throw new Error(\"This browser does not support WebGL. Try using the canvas renderer\");\n }\n }\n this.gl = gl;\n this.getExtensions();\n return this.gl;\n }\n getExtensions() {\n const { gl } = this;\n const common = {\n anisotropicFiltering: gl.getExtension(\"EXT_texture_filter_anisotropic\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n s3tc: gl.getExtension(\"WEBGL_compressed_texture_s3tc\"),\n s3tc_sRGB: gl.getExtension(\"WEBGL_compressed_texture_s3tc_srgb\"),\n etc: gl.getExtension(\"WEBGL_compressed_texture_etc\"),\n etc1: gl.getExtension(\"WEBGL_compressed_texture_etc1\"),\n pvrtc: gl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\"),\n atc: gl.getExtension(\"WEBGL_compressed_texture_atc\"),\n astc: gl.getExtension(\"WEBGL_compressed_texture_astc\")\n };\n if (this.webGLVersion === 1) {\n Object.assign(this.extensions, common, {\n drawBuffers: gl.getExtension(\"WEBGL_draw_buffers\"),\n depthTexture: gl.getExtension(\"WEBGL_depth_texture\"),\n loseContext: gl.getExtension(\"WEBGL_lose_context\"),\n vertexArrayObject: gl.getExtension(\"OES_vertex_array_object\") || gl.getExtension(\"MOZ_OES_vertex_array_object\") || gl.getExtension(\"WEBKIT_OES_vertex_array_object\"),\n uint32ElementIndex: gl.getExtension(\"OES_element_index_uint\"),\n floatTexture: gl.getExtension(\"OES_texture_float\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n textureHalfFloat: gl.getExtension(\"OES_texture_half_float\"),\n textureHalfFloatLinear: gl.getExtension(\"OES_texture_half_float_linear\")\n });\n } else if (this.webGLVersion === 2) {\n Object.assign(this.extensions, common, {\n colorBufferFloat: gl.getExtension(\"EXT_color_buffer_float\")\n });\n }\n }\n handleContextLost(event) {\n event.preventDefault();\n }\n handleContextRestored() {\n this.renderer.runners.contextChange.emit(this.gl);\n }\n destroy() {\n const view = this.renderer.view;\n this.renderer = null;\n if (view.removeEventListener !== void 0) {\n view.removeEventListener(\"webglcontextlost\", this.handleContextLost);\n view.removeEventListener(\"webglcontextrestored\", this.handleContextRestored);\n }\n this.gl.useProgram(null);\n if (this.extensions.loseContext) {\n this.extensions.loseContext.loseContext();\n }\n }\n postrender() {\n if (this.renderer.objectRenderer.renderingToScreen) {\n this.gl.flush();\n }\n }\n validateContext(gl) {\n const attributes = gl.getContextAttributes();\n const isWebGl2 = \"WebGL2RenderingContext\" in globalThis && gl instanceof globalThis.WebGL2RenderingContext;\n if (isWebGl2) {\n this.webGLVersion = 2;\n }\n if (attributes && !attributes.stencil) {\n console.warn(\"Provided WebGL context does not have a stencil buffer, masks may not render correctly\");\n }\n const hasuint32 = isWebGl2 || !!gl.getExtension(\"OES_element_index_uint\");\n this.supports.uint32Indices = hasuint32;\n if (!hasuint32) {\n console.warn(\"Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly\");\n }\n }\n}\nContextSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"context\"\n};\nextensions.add(ContextSystem);\n\nexport { ContextSystem };\n//# sourceMappingURL=ContextSystem.mjs.map\n","import { MSAA_QUALITY } from '@pixi/constants';\n\nclass GLFramebuffer {\n constructor(framebuffer) {\n this.framebuffer = framebuffer;\n this.stencil = null;\n this.dirtyId = -1;\n this.dirtyFormat = -1;\n this.dirtySize = -1;\n this.multisample = MSAA_QUALITY.NONE;\n this.msaaBuffer = null;\n this.blitFramebuffer = null;\n this.mipLevel = 0;\n }\n}\n\nexport { GLFramebuffer };\n//# sourceMappingURL=GLFramebuffer.mjs.map\n","import { Rectangle } from '@pixi/math';\nimport { ENV, BUFFER_BITS, MSAA_QUALITY } from '@pixi/constants';\nimport '../settings.mjs';\nimport { Framebuffer } from './Framebuffer.mjs';\nimport { GLFramebuffer } from './GLFramebuffer.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { settings } from '@pixi/settings';\n\nconst tempRectangle = new Rectangle();\nclass FramebufferSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.managedFramebuffers = [];\n this.unknownFramebuffer = new Framebuffer(10, 10);\n this.msaaSamples = null;\n }\n contextChange() {\n const gl = this.gl = this.renderer.gl;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n this.current = this.unknownFramebuffer;\n this.viewport = new Rectangle();\n this.hasMRT = true;\n this.writeDepthTexture = true;\n this.disposeAll(true);\n if (this.renderer.context.webGLVersion === 1) {\n let nativeDrawBuffersExtension = this.renderer.context.extensions.drawBuffers;\n let nativeDepthTextureExtension = this.renderer.context.extensions.depthTexture;\n if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) {\n nativeDrawBuffersExtension = null;\n nativeDepthTextureExtension = null;\n }\n if (nativeDrawBuffersExtension) {\n gl.drawBuffers = (activeTextures) => nativeDrawBuffersExtension.drawBuffersWEBGL(activeTextures);\n } else {\n this.hasMRT = false;\n gl.drawBuffers = () => {\n };\n }\n if (!nativeDepthTextureExtension) {\n this.writeDepthTexture = false;\n }\n } else {\n this.msaaSamples = gl.getInternalformatParameter(gl.RENDERBUFFER, gl.RGBA8, gl.SAMPLES);\n }\n }\n bind(framebuffer, frame, mipLevel = 0) {\n const { gl } = this;\n if (framebuffer) {\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID] || this.initFramebuffer(framebuffer);\n if (this.current !== framebuffer) {\n this.current = framebuffer;\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo.framebuffer);\n }\n if (fbo.mipLevel !== mipLevel) {\n framebuffer.dirtyId++;\n framebuffer.dirtyFormat++;\n fbo.mipLevel = mipLevel;\n }\n if (fbo.dirtyId !== framebuffer.dirtyId) {\n fbo.dirtyId = framebuffer.dirtyId;\n if (fbo.dirtyFormat !== framebuffer.dirtyFormat) {\n fbo.dirtyFormat = framebuffer.dirtyFormat;\n fbo.dirtySize = framebuffer.dirtySize;\n this.updateFramebuffer(framebuffer, mipLevel);\n } else if (fbo.dirtySize !== framebuffer.dirtySize) {\n fbo.dirtySize = framebuffer.dirtySize;\n this.resizeFramebuffer(framebuffer);\n }\n }\n for (let i = 0; i < framebuffer.colorTextures.length; i++) {\n const tex = framebuffer.colorTextures[i];\n this.renderer.texture.unbind(tex.parentTextureArray || tex);\n }\n if (framebuffer.depthTexture) {\n this.renderer.texture.unbind(framebuffer.depthTexture);\n }\n if (frame) {\n const mipWidth = frame.width >> mipLevel;\n const mipHeight = frame.height >> mipLevel;\n const scale = mipWidth / frame.width;\n this.setViewport(frame.x * scale, frame.y * scale, mipWidth, mipHeight);\n } else {\n const mipWidth = framebuffer.width >> mipLevel;\n const mipHeight = framebuffer.height >> mipLevel;\n this.setViewport(0, 0, mipWidth, mipHeight);\n }\n } else {\n if (this.current) {\n this.current = null;\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n }\n if (frame) {\n this.setViewport(frame.x, frame.y, frame.width, frame.height);\n } else {\n this.setViewport(0, 0, this.renderer.width, this.renderer.height);\n }\n }\n }\n setViewport(x, y, width, height) {\n const v = this.viewport;\n x = Math.round(x);\n y = Math.round(y);\n width = Math.round(width);\n height = Math.round(height);\n if (v.width !== width || v.height !== height || v.x !== x || v.y !== y) {\n v.x = x;\n v.y = y;\n v.width = width;\n v.height = height;\n this.gl.viewport(x, y, width, height);\n }\n }\n get size() {\n if (this.current) {\n return { x: 0, y: 0, width: this.current.width, height: this.current.height };\n }\n return { x: 0, y: 0, width: this.renderer.width, height: this.renderer.height };\n }\n clear(r, g, b, a, mask = BUFFER_BITS.COLOR | BUFFER_BITS.DEPTH) {\n const { gl } = this;\n gl.clearColor(r, g, b, a);\n gl.clear(mask);\n }\n initFramebuffer(framebuffer) {\n const { gl } = this;\n const fbo = new GLFramebuffer(gl.createFramebuffer());\n fbo.multisample = this.detectSamples(framebuffer.multisample);\n framebuffer.glFramebuffers[this.CONTEXT_UID] = fbo;\n this.managedFramebuffers.push(framebuffer);\n framebuffer.disposeRunner.add(this);\n return fbo;\n }\n resizeFramebuffer(framebuffer) {\n const { gl } = this;\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n if (fbo.stencil) {\n gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.stencil);\n if (fbo.msaaBuffer) {\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, gl.DEPTH24_STENCIL8, framebuffer.width, framebuffer.height);\n } else {\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, framebuffer.width, framebuffer.height);\n }\n }\n const colorTextures = framebuffer.colorTextures;\n let count = colorTextures.length;\n if (!gl.drawBuffers) {\n count = Math.min(count, 1);\n }\n for (let i = 0; i < count; i++) {\n const texture = colorTextures[i];\n const parentTexture = texture.parentTextureArray || texture;\n this.renderer.texture.bind(parentTexture, 0);\n if (i === 0 && fbo.msaaBuffer) {\n gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.msaaBuffer);\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, parentTexture._glTextures[this.CONTEXT_UID].internalFormat, framebuffer.width, framebuffer.height);\n }\n }\n if (framebuffer.depthTexture && this.writeDepthTexture) {\n this.renderer.texture.bind(framebuffer.depthTexture, 0);\n }\n }\n updateFramebuffer(framebuffer, mipLevel) {\n const { gl } = this;\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n const colorTextures = framebuffer.colorTextures;\n let count = colorTextures.length;\n if (!gl.drawBuffers) {\n count = Math.min(count, 1);\n }\n if (fbo.multisample > 1 && this.canMultisampleFramebuffer(framebuffer)) {\n fbo.msaaBuffer = fbo.msaaBuffer || gl.createRenderbuffer();\n } else if (fbo.msaaBuffer) {\n gl.deleteRenderbuffer(fbo.msaaBuffer);\n fbo.msaaBuffer = null;\n if (fbo.blitFramebuffer) {\n fbo.blitFramebuffer.dispose();\n fbo.blitFramebuffer = null;\n }\n }\n const activeTextures = [];\n for (let i = 0; i < count; i++) {\n const texture = colorTextures[i];\n const parentTexture = texture.parentTextureArray || texture;\n this.renderer.texture.bind(parentTexture, 0);\n if (i === 0 && fbo.msaaBuffer) {\n gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.msaaBuffer);\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, parentTexture._glTextures[this.CONTEXT_UID].internalFormat, framebuffer.width, framebuffer.height);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, fbo.msaaBuffer);\n } else {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + i, texture.target, parentTexture._glTextures[this.CONTEXT_UID].texture, mipLevel);\n activeTextures.push(gl.COLOR_ATTACHMENT0 + i);\n }\n }\n if (activeTextures.length > 1) {\n gl.drawBuffers(activeTextures);\n }\n if (framebuffer.depthTexture) {\n const writeDepthTexture = this.writeDepthTexture;\n if (writeDepthTexture) {\n const depthTexture = framebuffer.depthTexture;\n this.renderer.texture.bind(depthTexture, 0);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, depthTexture._glTextures[this.CONTEXT_UID].texture, mipLevel);\n }\n }\n if ((framebuffer.stencil || framebuffer.depth) && !(framebuffer.depthTexture && this.writeDepthTexture)) {\n fbo.stencil = fbo.stencil || gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.stencil);\n if (fbo.msaaBuffer) {\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, gl.DEPTH24_STENCIL8, framebuffer.width, framebuffer.height);\n } else {\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, framebuffer.width, framebuffer.height);\n }\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, fbo.stencil);\n } else if (fbo.stencil) {\n gl.deleteRenderbuffer(fbo.stencil);\n fbo.stencil = null;\n }\n }\n canMultisampleFramebuffer(framebuffer) {\n return this.renderer.context.webGLVersion !== 1 && framebuffer.colorTextures.length <= 1 && !framebuffer.depthTexture;\n }\n detectSamples(samples) {\n const { msaaSamples } = this;\n let res = MSAA_QUALITY.NONE;\n if (samples <= 1 || msaaSamples === null) {\n return res;\n }\n for (let i = 0; i < msaaSamples.length; i++) {\n if (msaaSamples[i] <= samples) {\n res = msaaSamples[i];\n break;\n }\n }\n if (res === 1) {\n res = MSAA_QUALITY.NONE;\n }\n return res;\n }\n blit(framebuffer, sourcePixels, destPixels) {\n const { current, renderer, gl, CONTEXT_UID } = this;\n if (renderer.context.webGLVersion !== 2) {\n return;\n }\n if (!current) {\n return;\n }\n const fbo = current.glFramebuffers[CONTEXT_UID];\n if (!fbo) {\n return;\n }\n if (!framebuffer) {\n if (!fbo.msaaBuffer) {\n return;\n }\n const colorTexture = current.colorTextures[0];\n if (!colorTexture) {\n return;\n }\n if (!fbo.blitFramebuffer) {\n fbo.blitFramebuffer = new Framebuffer(current.width, current.height);\n fbo.blitFramebuffer.addColorTexture(0, colorTexture);\n }\n framebuffer = fbo.blitFramebuffer;\n if (framebuffer.colorTextures[0] !== colorTexture) {\n framebuffer.colorTextures[0] = colorTexture;\n framebuffer.dirtyId++;\n framebuffer.dirtyFormat++;\n }\n if (framebuffer.width !== current.width || framebuffer.height !== current.height) {\n framebuffer.width = current.width;\n framebuffer.height = current.height;\n framebuffer.dirtyId++;\n framebuffer.dirtySize++;\n }\n }\n if (!sourcePixels) {\n sourcePixels = tempRectangle;\n sourcePixels.width = current.width;\n sourcePixels.height = current.height;\n }\n if (!destPixels) {\n destPixels = sourcePixels;\n }\n const sameSize = sourcePixels.width === destPixels.width && sourcePixels.height === destPixels.height;\n this.bind(framebuffer);\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbo.framebuffer);\n gl.blitFramebuffer(sourcePixels.left, sourcePixels.top, sourcePixels.right, sourcePixels.bottom, destPixels.left, destPixels.top, destPixels.right, destPixels.bottom, gl.COLOR_BUFFER_BIT, sameSize ? gl.NEAREST : gl.LINEAR);\n }\n disposeFramebuffer(framebuffer, contextLost) {\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n const gl = this.gl;\n if (!fbo) {\n return;\n }\n delete framebuffer.glFramebuffers[this.CONTEXT_UID];\n const index = this.managedFramebuffers.indexOf(framebuffer);\n if (index >= 0) {\n this.managedFramebuffers.splice(index, 1);\n }\n framebuffer.disposeRunner.remove(this);\n if (!contextLost) {\n gl.deleteFramebuffer(fbo.framebuffer);\n if (fbo.msaaBuffer) {\n gl.deleteRenderbuffer(fbo.msaaBuffer);\n }\n if (fbo.stencil) {\n gl.deleteRenderbuffer(fbo.stencil);\n }\n }\n if (fbo.blitFramebuffer) {\n fbo.blitFramebuffer.dispose();\n }\n }\n disposeAll(contextLost) {\n const list = this.managedFramebuffers;\n this.managedFramebuffers = [];\n for (let i = 0; i < list.length; i++) {\n this.disposeFramebuffer(list[i], contextLost);\n }\n }\n forceStencil() {\n const framebuffer = this.current;\n if (!framebuffer) {\n return;\n }\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n if (!fbo || fbo.stencil) {\n return;\n }\n framebuffer.stencil = true;\n const w = framebuffer.width;\n const h = framebuffer.height;\n const gl = this.gl;\n const stencil = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, stencil);\n if (fbo.msaaBuffer) {\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, gl.DEPTH24_STENCIL8, w, h);\n } else {\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, w, h);\n }\n fbo.stencil = stencil;\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, stencil);\n }\n reset() {\n this.current = this.unknownFramebuffer;\n this.viewport = new Rectangle();\n }\n destroy() {\n this.renderer = null;\n }\n}\nFramebufferSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"framebuffer\"\n};\nextensions.add(FramebufferSystem);\n\nexport { FramebufferSystem };\n//# sourceMappingURL=FramebufferSystem.mjs.map\n","import { ENV, BUFFER_TYPE } from '@pixi/constants';\nimport '../settings.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { settings } from '@pixi/settings';\n\nconst byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 };\nclass GeometrySystem {\n constructor(renderer) {\n this.renderer = renderer;\n this._activeGeometry = null;\n this._activeVao = null;\n this.hasVao = true;\n this.hasInstance = true;\n this.canUseUInt32ElementIndex = false;\n this.managedGeometries = {};\n }\n contextChange() {\n this.disposeAll(true);\n const gl = this.gl = this.renderer.gl;\n const context = this.renderer.context;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n if (context.webGLVersion !== 2) {\n let nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject;\n if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) {\n nativeVaoExtension = null;\n }\n if (nativeVaoExtension) {\n gl.createVertexArray = () => nativeVaoExtension.createVertexArrayOES();\n gl.bindVertexArray = (vao) => nativeVaoExtension.bindVertexArrayOES(vao);\n gl.deleteVertexArray = (vao) => nativeVaoExtension.deleteVertexArrayOES(vao);\n } else {\n this.hasVao = false;\n gl.createVertexArray = () => null;\n gl.bindVertexArray = () => null;\n gl.deleteVertexArray = () => null;\n }\n }\n if (context.webGLVersion !== 2) {\n const instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n if (instanceExt) {\n gl.vertexAttribDivisor = (a, b) => instanceExt.vertexAttribDivisorANGLE(a, b);\n gl.drawElementsInstanced = (a, b, c, d, e) => instanceExt.drawElementsInstancedANGLE(a, b, c, d, e);\n gl.drawArraysInstanced = (a, b, c, d) => instanceExt.drawArraysInstancedANGLE(a, b, c, d);\n } else {\n this.hasInstance = false;\n }\n }\n this.canUseUInt32ElementIndex = context.webGLVersion === 2 || !!context.extensions.uint32ElementIndex;\n }\n bind(geometry, shader) {\n shader = shader || this.renderer.shader.shader;\n const { gl } = this;\n let vaos = geometry.glVertexArrayObjects[this.CONTEXT_UID];\n let incRefCount = false;\n if (!vaos) {\n this.managedGeometries[geometry.id] = geometry;\n geometry.disposeRunner.add(this);\n geometry.glVertexArrayObjects[this.CONTEXT_UID] = vaos = {};\n incRefCount = true;\n }\n const vao = vaos[shader.program.id] || this.initGeometryVao(geometry, shader, incRefCount);\n this._activeGeometry = geometry;\n if (this._activeVao !== vao) {\n this._activeVao = vao;\n if (this.hasVao) {\n gl.bindVertexArray(vao);\n } else {\n this.activateVao(geometry, shader.program);\n }\n }\n this.updateBuffers();\n }\n reset() {\n this.unbind();\n }\n updateBuffers() {\n const geometry = this._activeGeometry;\n const bufferSystem = this.renderer.buffer;\n for (let i = 0; i < geometry.buffers.length; i++) {\n const buffer = geometry.buffers[i];\n bufferSystem.update(buffer);\n }\n }\n checkCompatibility(geometry, program) {\n const geometryAttributes = geometry.attributes;\n const shaderAttributes = program.attributeData;\n for (const j in shaderAttributes) {\n if (!geometryAttributes[j]) {\n throw new Error(`shader and geometry incompatible, geometry missing the \"${j}\" attribute`);\n }\n }\n }\n getSignature(geometry, program) {\n const attribs = geometry.attributes;\n const shaderAttributes = program.attributeData;\n const strings = [\"g\", geometry.id];\n for (const i in attribs) {\n if (shaderAttributes[i]) {\n strings.push(i, shaderAttributes[i].location);\n }\n }\n return strings.join(\"-\");\n }\n initGeometryVao(geometry, shader, incRefCount = true) {\n const gl = this.gl;\n const CONTEXT_UID = this.CONTEXT_UID;\n const bufferSystem = this.renderer.buffer;\n const program = shader.program;\n if (!program.glPrograms[CONTEXT_UID]) {\n this.renderer.shader.generateProgram(shader);\n }\n this.checkCompatibility(geometry, program);\n const signature = this.getSignature(geometry, program);\n const vaoObjectHash = geometry.glVertexArrayObjects[this.CONTEXT_UID];\n let vao = vaoObjectHash[signature];\n if (vao) {\n vaoObjectHash[program.id] = vao;\n return vao;\n }\n const buffers = geometry.buffers;\n const attributes = geometry.attributes;\n const tempStride = {};\n const tempStart = {};\n for (const j in buffers) {\n tempStride[j] = 0;\n tempStart[j] = 0;\n }\n for (const j in attributes) {\n if (!attributes[j].size && program.attributeData[j]) {\n attributes[j].size = program.attributeData[j].size;\n } else if (!attributes[j].size) {\n console.warn(`PIXI Geometry attribute '${j}' size cannot be determined (likely the bound shader does not have the attribute)`);\n }\n tempStride[attributes[j].buffer] += attributes[j].size * byteSizeMap[attributes[j].type];\n }\n for (const j in attributes) {\n const attribute = attributes[j];\n const attribSize = attribute.size;\n if (attribute.stride === void 0) {\n if (tempStride[attribute.buffer] === attribSize * byteSizeMap[attribute.type]) {\n attribute.stride = 0;\n } else {\n attribute.stride = tempStride[attribute.buffer];\n }\n }\n if (attribute.start === void 0) {\n attribute.start = tempStart[attribute.buffer];\n tempStart[attribute.buffer] += attribSize * byteSizeMap[attribute.type];\n }\n }\n vao = gl.createVertexArray();\n gl.bindVertexArray(vao);\n for (let i = 0; i < buffers.length; i++) {\n const buffer = buffers[i];\n bufferSystem.bind(buffer);\n if (incRefCount) {\n buffer._glBuffers[CONTEXT_UID].refCount++;\n }\n }\n this.activateVao(geometry, program);\n vaoObjectHash[program.id] = vao;\n vaoObjectHash[signature] = vao;\n gl.bindVertexArray(null);\n bufferSystem.unbind(BUFFER_TYPE.ARRAY_BUFFER);\n return vao;\n }\n disposeGeometry(geometry, contextLost) {\n if (!this.managedGeometries[geometry.id]) {\n return;\n }\n delete this.managedGeometries[geometry.id];\n const vaos = geometry.glVertexArrayObjects[this.CONTEXT_UID];\n const gl = this.gl;\n const buffers = geometry.buffers;\n const bufferSystem = this.renderer?.buffer;\n geometry.disposeRunner.remove(this);\n if (!vaos) {\n return;\n }\n if (bufferSystem) {\n for (let i = 0; i < buffers.length; i++) {\n const buf = buffers[i]._glBuffers[this.CONTEXT_UID];\n if (buf) {\n buf.refCount--;\n if (buf.refCount === 0 && !contextLost) {\n bufferSystem.dispose(buffers[i], contextLost);\n }\n }\n }\n }\n if (!contextLost) {\n for (const vaoId in vaos) {\n if (vaoId[0] === \"g\") {\n const vao = vaos[vaoId];\n if (this._activeVao === vao) {\n this.unbind();\n }\n gl.deleteVertexArray(vao);\n }\n }\n }\n delete geometry.glVertexArrayObjects[this.CONTEXT_UID];\n }\n disposeAll(contextLost) {\n const all = Object.keys(this.managedGeometries);\n for (let i = 0; i < all.length; i++) {\n this.disposeGeometry(this.managedGeometries[all[i]], contextLost);\n }\n }\n activateVao(geometry, program) {\n const gl = this.gl;\n const CONTEXT_UID = this.CONTEXT_UID;\n const bufferSystem = this.renderer.buffer;\n const buffers = geometry.buffers;\n const attributes = geometry.attributes;\n if (geometry.indexBuffer) {\n bufferSystem.bind(geometry.indexBuffer);\n }\n let lastBuffer = null;\n for (const j in attributes) {\n const attribute = attributes[j];\n const buffer = buffers[attribute.buffer];\n const glBuffer = buffer._glBuffers[CONTEXT_UID];\n if (program.attributeData[j]) {\n if (lastBuffer !== glBuffer) {\n bufferSystem.bind(buffer);\n lastBuffer = glBuffer;\n }\n const location = program.attributeData[j].location;\n gl.enableVertexAttribArray(location);\n gl.vertexAttribPointer(location, attribute.size, attribute.type || gl.FLOAT, attribute.normalized, attribute.stride, attribute.start);\n if (attribute.instance) {\n if (this.hasInstance) {\n gl.vertexAttribDivisor(location, 1);\n } else {\n throw new Error(\"geometry error, GPU Instancing is not supported on this device\");\n }\n }\n }\n }\n }\n draw(type, size, start, instanceCount) {\n const { gl } = this;\n const geometry = this._activeGeometry;\n if (geometry.indexBuffer) {\n const byteSize = geometry.indexBuffer.data.BYTES_PER_ELEMENT;\n const glType = byteSize === 2 ? gl.UNSIGNED_SHORT : gl.UNSIGNED_INT;\n if (byteSize === 2 || byteSize === 4 && this.canUseUInt32ElementIndex) {\n if (geometry.instanced) {\n gl.drawElementsInstanced(type, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize, instanceCount || 1);\n } else {\n gl.drawElements(type, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize);\n }\n } else {\n console.warn(\"unsupported index buffer type: uint32\");\n }\n } else if (geometry.instanced) {\n gl.drawArraysInstanced(type, start, size || geometry.getSize(), instanceCount || 1);\n } else {\n gl.drawArrays(type, start, size || geometry.getSize());\n }\n return this;\n }\n unbind() {\n this.gl.bindVertexArray(null);\n this._activeVao = null;\n this._activeGeometry = null;\n }\n destroy() {\n this.renderer = null;\n }\n}\nGeometrySystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"geometry\"\n};\nextensions.add(GeometrySystem);\n\nexport { GeometrySystem };\n//# sourceMappingURL=GeometrySystem.mjs.map\n","import { MASK_TYPES } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\n\nclass MaskData {\n constructor(maskObject = null) {\n this.type = MASK_TYPES.NONE;\n this.autoDetect = true;\n this.maskObject = maskObject || null;\n this.pooled = false;\n this.isMaskData = true;\n this.resolution = null;\n this.multisample = settings.FILTER_MULTISAMPLE;\n this.enabled = true;\n this.colorMask = 15;\n this._filters = null;\n this._stencilCounter = 0;\n this._scissorCounter = 0;\n this._scissorRect = null;\n this._scissorRectLocal = null;\n this._colorMask = 15;\n this._target = null;\n }\n get filter() {\n return this._filters ? this._filters[0] : null;\n }\n set filter(value) {\n if (value) {\n if (this._filters) {\n this._filters[0] = value;\n } else {\n this._filters = [value];\n }\n } else {\n this._filters = null;\n }\n }\n reset() {\n if (this.pooled) {\n this.maskObject = null;\n this.type = MASK_TYPES.NONE;\n this.autoDetect = true;\n }\n this._target = null;\n this._scissorRectLocal = null;\n }\n copyCountersOrReset(maskAbove) {\n if (maskAbove) {\n this._stencilCounter = maskAbove._stencilCounter;\n this._scissorCounter = maskAbove._scissorCounter;\n this._scissorRect = maskAbove._scissorRect;\n } else {\n this._stencilCounter = 0;\n this._scissorCounter = 0;\n this._scissorRect = null;\n }\n }\n}\n\nexport { MaskData };\n//# sourceMappingURL=MaskData.mjs.map\n","function compileShader(gl, type, src) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, src);\n gl.compileShader(shader);\n return shader;\n}\n\nexport { compileShader };\n//# sourceMappingURL=compileShader.mjs.map\n","function logPrettyShaderError(gl, shader) {\n const shaderSrc = gl.getShaderSource(shader).split(\"\\n\").map((line, index) => `${index}: ${line}`);\n const shaderLog = gl.getShaderInfoLog(shader);\n const splitShader = shaderLog.split(\"\\n\");\n const dedupe = {};\n const lineNumbers = splitShader.map((line) => parseFloat(line.replace(/^ERROR\\: 0\\:([\\d]+)\\:.*$/, \"$1\"))).filter((n) => {\n if (n && !dedupe[n]) {\n dedupe[n] = true;\n return true;\n }\n return false;\n });\n const logArgs = [\"\"];\n lineNumbers.forEach((number) => {\n shaderSrc[number - 1] = `%c${shaderSrc[number - 1]}%c`;\n logArgs.push(\"background: #FF0000; color:#FFFFFF; font-size: 10px\", \"font-size: 10px\");\n });\n const fragmentSourceToLog = shaderSrc.join(\"\\n\");\n logArgs[0] = fragmentSourceToLog;\n console.error(shaderLog);\n console.groupCollapsed(\"click to view full shader code\");\n console.warn(...logArgs);\n console.groupEnd();\n}\nfunction logProgramError(gl, program, vertexShader, fragmentShader) {\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n logPrettyShaderError(gl, vertexShader);\n }\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n logPrettyShaderError(gl, fragmentShader);\n }\n console.error(\"PixiJS Error: Could not initialize shader.\");\n if (gl.getProgramInfoLog(program) !== \"\") {\n console.warn(\"PixiJS Warning: gl.getProgramInfoLog()\", gl.getProgramInfoLog(program));\n }\n }\n}\n\nexport { logProgramError };\n//# sourceMappingURL=logProgramError.mjs.map\n","function booleanArray(size) {\n const array = new Array(size);\n for (let i = 0; i < array.length; i++) {\n array[i] = false;\n }\n return array;\n}\nfunction defaultValue(type, size) {\n switch (type) {\n case \"float\":\n return 0;\n case \"vec2\":\n return new Float32Array(2 * size);\n case \"vec3\":\n return new Float32Array(3 * size);\n case \"vec4\":\n return new Float32Array(4 * size);\n case \"int\":\n case \"uint\":\n case \"sampler2D\":\n case \"sampler2DArray\":\n return 0;\n case \"ivec2\":\n return new Int32Array(2 * size);\n case \"ivec3\":\n return new Int32Array(3 * size);\n case \"ivec4\":\n return new Int32Array(4 * size);\n case \"uvec2\":\n return new Uint32Array(2 * size);\n case \"uvec3\":\n return new Uint32Array(3 * size);\n case \"uvec4\":\n return new Uint32Array(4 * size);\n case \"bool\":\n return false;\n case \"bvec2\":\n return booleanArray(2 * size);\n case \"bvec3\":\n return booleanArray(3 * size);\n case \"bvec4\":\n return booleanArray(4 * size);\n case \"mat2\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 1\n ]);\n case \"mat3\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ]);\n case \"mat4\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n }\n return null;\n}\n\nexport { defaultValue };\n//# sourceMappingURL=defaultValue.mjs.map\n","import '../../settings.mjs';\nimport { ENV } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\n\nconst unknownContext = {};\nlet context = unknownContext;\nfunction getTestContext() {\n if (context === unknownContext || context?.isContextLost()) {\n const canvas = settings.ADAPTER.createCanvas();\n let gl;\n if (settings.PREFER_ENV >= ENV.WEBGL2) {\n gl = canvas.getContext(\"webgl2\", {});\n }\n if (!gl) {\n gl = canvas.getContext(\"webgl\", {}) || canvas.getContext(\"experimental-webgl\", {});\n if (!gl) {\n gl = null;\n } else {\n gl.getExtension(\"WEBGL_draw_buffers\");\n }\n }\n context = gl;\n }\n return context;\n}\n\nexport { getTestContext };\n//# sourceMappingURL=getTestContext.mjs.map\n","import { getTestContext } from './getTestContext.mjs';\nimport { PRECISION } from '@pixi/constants';\n\nlet maxFragmentPrecision;\nfunction getMaxFragmentPrecision() {\n if (!maxFragmentPrecision) {\n maxFragmentPrecision = PRECISION.MEDIUM;\n const gl = getTestContext();\n if (gl) {\n if (gl.getShaderPrecisionFormat) {\n const shaderFragment = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n maxFragmentPrecision = shaderFragment.precision ? PRECISION.HIGH : PRECISION.MEDIUM;\n }\n }\n }\n return maxFragmentPrecision;\n}\n\nexport { getMaxFragmentPrecision };\n//# sourceMappingURL=getMaxFragmentPrecision.mjs.map\n","import { PRECISION } from '@pixi/constants';\n\nfunction setPrecision(src, requestedPrecision, maxSupportedPrecision) {\n if (src.substring(0, 9) !== \"precision\") {\n let precision = requestedPrecision;\n if (requestedPrecision === PRECISION.HIGH && maxSupportedPrecision !== PRECISION.HIGH) {\n precision = PRECISION.MEDIUM;\n }\n return `precision ${precision} float;\n${src}`;\n } else if (maxSupportedPrecision !== PRECISION.HIGH && src.substring(0, 15) === \"precision highp\") {\n return src.replace(\"precision highp\", \"precision mediump\");\n }\n return src;\n}\n\nexport { setPrecision };\n//# sourceMappingURL=setPrecision.mjs.map\n","const GLSL_TO_SIZE = {\n float: 1,\n vec2: 2,\n vec3: 3,\n vec4: 4,\n int: 1,\n ivec2: 2,\n ivec3: 3,\n ivec4: 4,\n uint: 1,\n uvec2: 2,\n uvec3: 3,\n uvec4: 4,\n bool: 1,\n bvec2: 2,\n bvec3: 3,\n bvec4: 4,\n mat2: 4,\n mat3: 9,\n mat4: 16,\n sampler2D: 1\n};\nfunction mapSize(type) {\n return GLSL_TO_SIZE[type];\n}\n\nexport { mapSize };\n//# sourceMappingURL=mapSize.mjs.map\n","let GL_TABLE = null;\nconst GL_TO_GLSL_TYPES = {\n FLOAT: \"float\",\n FLOAT_VEC2: \"vec2\",\n FLOAT_VEC3: \"vec3\",\n FLOAT_VEC4: \"vec4\",\n INT: \"int\",\n INT_VEC2: \"ivec2\",\n INT_VEC3: \"ivec3\",\n INT_VEC4: \"ivec4\",\n UNSIGNED_INT: \"uint\",\n UNSIGNED_INT_VEC2: \"uvec2\",\n UNSIGNED_INT_VEC3: \"uvec3\",\n UNSIGNED_INT_VEC4: \"uvec4\",\n BOOL: \"bool\",\n BOOL_VEC2: \"bvec2\",\n BOOL_VEC3: \"bvec3\",\n BOOL_VEC4: \"bvec4\",\n FLOAT_MAT2: \"mat2\",\n FLOAT_MAT3: \"mat3\",\n FLOAT_MAT4: \"mat4\",\n SAMPLER_2D: \"sampler2D\",\n INT_SAMPLER_2D: \"sampler2D\",\n UNSIGNED_INT_SAMPLER_2D: \"sampler2D\",\n SAMPLER_CUBE: \"samplerCube\",\n INT_SAMPLER_CUBE: \"samplerCube\",\n UNSIGNED_INT_SAMPLER_CUBE: \"samplerCube\",\n SAMPLER_2D_ARRAY: \"sampler2DArray\",\n INT_SAMPLER_2D_ARRAY: \"sampler2DArray\",\n UNSIGNED_INT_SAMPLER_2D_ARRAY: \"sampler2DArray\"\n};\nfunction mapType(gl, type) {\n if (!GL_TABLE) {\n const typeNames = Object.keys(GL_TO_GLSL_TYPES);\n GL_TABLE = {};\n for (let i = 0; i < typeNames.length; ++i) {\n const tn = typeNames[i];\n GL_TABLE[gl[tn]] = GL_TO_GLSL_TYPES[tn];\n }\n }\n return GL_TABLE[type];\n}\n\nexport { mapType };\n//# sourceMappingURL=mapType.mjs.map\n","const uniformParsers = [\n {\n test: (data) => data.type === \"float\" && data.size === 1 && !data.isArray,\n code: (name) => `\n if(uv[\"${name}\"] !== ud[\"${name}\"].value)\n {\n ud[\"${name}\"].value = uv[\"${name}\"]\n gl.uniform1f(ud[\"${name}\"].location, uv[\"${name}\"])\n }\n `\n },\n {\n test: (data, uniform) => (data.type === \"sampler2D\" || data.type === \"samplerCube\" || data.type === \"sampler2DArray\") && data.size === 1 && !data.isArray && (uniform == null || uniform.castToBaseTexture !== void 0),\n code: (name) => `t = syncData.textureCount++;\n\n renderer.texture.bind(uv[\"${name}\"], t);\n\n if(ud[\"${name}\"].value !== t)\n {\n ud[\"${name}\"].value = t;\n gl.uniform1i(ud[\"${name}\"].location, t);\n; // eslint-disable-line max-len\n }`\n },\n {\n test: (data, uniform) => data.type === \"mat3\" && data.size === 1 && !data.isArray && uniform.a !== void 0,\n code: (name) => `\n gl.uniformMatrix3fv(ud[\"${name}\"].location, false, uv[\"${name}\"].toArray(true));\n `,\n codeUbo: (name) => `\n var ${name}_matrix = uv.${name}.toArray(true);\n\n data[offset] = ${name}_matrix[0];\n data[offset+1] = ${name}_matrix[1];\n data[offset+2] = ${name}_matrix[2];\n \n data[offset + 4] = ${name}_matrix[3];\n data[offset + 5] = ${name}_matrix[4];\n data[offset + 6] = ${name}_matrix[5];\n \n data[offset + 8] = ${name}_matrix[6];\n data[offset + 9] = ${name}_matrix[7];\n data[offset + 10] = ${name}_matrix[8];\n `\n },\n {\n test: (data, uniform) => data.type === \"vec2\" && data.size === 1 && !data.isArray && uniform.x !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.x || cv[1] !== v.y)\n {\n cv[0] = v.x;\n cv[1] = v.y;\n gl.uniform2f(ud[\"${name}\"].location, v.x, v.y);\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n `\n },\n {\n test: (data) => data.type === \"vec2\" && data.size === 1 && !data.isArray,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2f(ud[\"${name}\"].location, v[0], v[1]);\n }\n `\n },\n {\n test: (data, uniform) => data.type === \"vec4\" && data.size === 1 && !data.isArray && uniform.width !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height)\n {\n cv[0] = v.x;\n cv[1] = v.y;\n cv[2] = v.width;\n cv[3] = v.height;\n gl.uniform4f(ud[\"${name}\"].location, v.x, v.y, v.width, v.height)\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n data[offset+2] = v.width;\n data[offset+3] = v.height;\n `\n },\n {\n test: (data) => data.type === \"vec4\" && data.size === 1 && !data.isArray,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4f(ud[\"${name}\"].location, v[0], v[1], v[2], v[3])\n }`\n }\n];\n\nexport { uniformParsers };\n//# sourceMappingURL=uniformParsers.mjs.map\n","import { uniformParsers } from './uniformParsers.mjs';\n\nconst GLSL_TO_SINGLE_SETTERS_CACHED = {\n float: `\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1f(location, v);\n }`,\n vec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2f(location, v[0], v[1])\n }`,\n vec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3f(location, v[0], v[1], v[2])\n }`,\n vec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4f(location, v[0], v[1], v[2], v[3]);\n }`,\n int: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n ivec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2i(location, v[0], v[1]);\n }`,\n ivec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n ivec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n uint: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1ui(location, v);\n }`,\n uvec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2ui(location, v[0], v[1]);\n }`,\n uvec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3ui(location, v[0], v[1], v[2]);\n }`,\n uvec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4ui(location, v[0], v[1], v[2], v[3]);\n }`,\n bool: `\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n bvec2: `\n if (cv[0] != v[0] || cv[1] != v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2i(location, v[0], v[1]);\n }`,\n bvec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n bvec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n mat2: \"gl.uniformMatrix2fv(location, false, v)\",\n mat3: \"gl.uniformMatrix3fv(location, false, v)\",\n mat4: \"gl.uniformMatrix4fv(location, false, v)\",\n sampler2D: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n samplerCube: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n sampler2DArray: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`\n};\nconst GLSL_TO_ARRAY_SETTERS = {\n float: `gl.uniform1fv(location, v)`,\n vec2: `gl.uniform2fv(location, v)`,\n vec3: `gl.uniform3fv(location, v)`,\n vec4: \"gl.uniform4fv(location, v)\",\n mat4: \"gl.uniformMatrix4fv(location, false, v)\",\n mat3: \"gl.uniformMatrix3fv(location, false, v)\",\n mat2: \"gl.uniformMatrix2fv(location, false, v)\",\n int: \"gl.uniform1iv(location, v)\",\n ivec2: \"gl.uniform2iv(location, v)\",\n ivec3: \"gl.uniform3iv(location, v)\",\n ivec4: \"gl.uniform4iv(location, v)\",\n uint: \"gl.uniform1uiv(location, v)\",\n uvec2: \"gl.uniform2uiv(location, v)\",\n uvec3: \"gl.uniform3uiv(location, v)\",\n uvec4: \"gl.uniform4uiv(location, v)\",\n bool: \"gl.uniform1iv(location, v)\",\n bvec2: \"gl.uniform2iv(location, v)\",\n bvec3: \"gl.uniform3iv(location, v)\",\n bvec4: \"gl.uniform4iv(location, v)\",\n sampler2D: \"gl.uniform1iv(location, v)\",\n samplerCube: \"gl.uniform1iv(location, v)\",\n sampler2DArray: \"gl.uniform1iv(location, v)\"\n};\nfunction generateUniformsSync(group, uniformData) {\n const funcFragments = [`\n var v = null;\n var cv = null;\n var cu = null;\n var t = 0;\n var gl = renderer.gl;\n `];\n for (const i in group.uniforms) {\n const data = uniformData[i];\n if (!data) {\n if (group.uniforms[i]?.group) {\n if (group.uniforms[i].ubo) {\n funcFragments.push(`\n renderer.shader.syncUniformBufferGroup(uv.${i}, '${i}');\n `);\n } else {\n funcFragments.push(`\n renderer.shader.syncUniformGroup(uv.${i}, syncData);\n `);\n }\n }\n continue;\n }\n const uniform = group.uniforms[i];\n let parsed = false;\n for (let j = 0; j < uniformParsers.length; j++) {\n if (uniformParsers[j].test(data, uniform)) {\n funcFragments.push(uniformParsers[j].code(i, uniform));\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n const templateType = data.size === 1 && !data.isArray ? GLSL_TO_SINGLE_SETTERS_CACHED : GLSL_TO_ARRAY_SETTERS;\n const template = templateType[data.type].replace(\"location\", `ud[\"${i}\"].location`);\n funcFragments.push(`\n cu = ud[\"${i}\"];\n cv = cu.value;\n v = uv[\"${i}\"];\n ${template};`);\n }\n }\n return new Function(\"ud\", \"uv\", \"renderer\", \"syncData\", funcFragments.join(\"\\n\"));\n}\n\nexport { generateUniformsSync };\n//# sourceMappingURL=generateUniformsSync.mjs.map\n","const fragTemplate = [\n \"precision mediump float;\",\n \"void main(void){\",\n \"float test = 0.1;\",\n \"%forloop%\",\n \"gl_FragColor = vec4(0.0);\",\n \"}\"\n].join(\"\\n\");\nfunction generateIfTestSrc(maxIfs) {\n let src = \"\";\n for (let i = 0; i < maxIfs; ++i) {\n if (i > 0) {\n src += \"\\nelse \";\n }\n if (i < maxIfs - 1) {\n src += `if(test == ${i}.0){}`;\n }\n }\n return src;\n}\nfunction checkMaxIfStatementsInShader(maxIfs, gl) {\n if (maxIfs === 0) {\n throw new Error(\"Invalid value of `0` passed to `checkMaxIfStatementsInShader`\");\n }\n const shader = gl.createShader(gl.FRAGMENT_SHADER);\n while (true) {\n const fragmentSrc = fragTemplate.replace(/%forloop%/gi, generateIfTestSrc(maxIfs));\n gl.shaderSource(shader, fragmentSrc);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n maxIfs = maxIfs / 2 | 0;\n } else {\n break;\n }\n }\n return maxIfs;\n}\n\nexport { checkMaxIfStatementsInShader };\n//# sourceMappingURL=checkMaxIfStatementsInShader.mjs.map\n","let unsafeEval;\nfunction unsafeEvalSupported() {\n if (typeof unsafeEval === \"boolean\") {\n return unsafeEval;\n }\n try {\n const func = new Function(\"param1\", \"param2\", \"param3\", \"return param1[param2] === param3;\");\n unsafeEval = func({ a: \"b\" }, \"a\", \"b\") === true;\n } catch (e) {\n unsafeEval = false;\n }\n return unsafeEval;\n}\n\nexport { unsafeEvalSupported };\n//# sourceMappingURL=unsafeEvalSupported.mjs.map\n","var defaultFragment = \"varying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void){\\n gl_FragColor *= texture2D(uSampler, vTextureCoord);\\n}\";\n\nexport { defaultFragment as default };\n//# sourceMappingURL=defaultProgram.mjs.map\n","var defaultVertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void){\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n}\\n\";\n\nexport { defaultVertex as default };\n//# sourceMappingURL=defaultProgram2.mjs.map\n","import './utils/index.mjs';\nimport { ProgramCache } from '@pixi/utils';\nimport defaultFragment from './defaultProgram.mjs';\nimport defaultVertex from './defaultProgram2.mjs';\nimport { settings } from '@pixi/settings';\nimport { PRECISION } from '@pixi/constants';\nimport { setPrecision } from './utils/setPrecision.mjs';\nimport { getMaxFragmentPrecision } from './utils/getMaxFragmentPrecision.mjs';\n\nlet UID = 0;\nconst nameCache = {};\nclass Program {\n constructor(vertexSrc, fragmentSrc, name = \"pixi-shader\", extra = {}) {\n this.extra = {};\n this.id = UID++;\n this.vertexSrc = vertexSrc || Program.defaultVertexSrc;\n this.fragmentSrc = fragmentSrc || Program.defaultFragmentSrc;\n this.vertexSrc = this.vertexSrc.trim();\n this.fragmentSrc = this.fragmentSrc.trim();\n this.extra = extra;\n if (this.vertexSrc.substring(0, 8) !== \"#version\") {\n name = name.replace(/\\s+/g, \"-\");\n if (nameCache[name]) {\n nameCache[name]++;\n name += `-${nameCache[name]}`;\n } else {\n nameCache[name] = 1;\n }\n this.vertexSrc = `#define SHADER_NAME ${name}\n${this.vertexSrc}`;\n this.fragmentSrc = `#define SHADER_NAME ${name}\n${this.fragmentSrc}`;\n this.vertexSrc = setPrecision(this.vertexSrc, settings.PRECISION_VERTEX, PRECISION.HIGH);\n this.fragmentSrc = setPrecision(this.fragmentSrc, settings.PRECISION_FRAGMENT, getMaxFragmentPrecision());\n }\n this.glPrograms = {};\n this.syncUniforms = null;\n }\n static get defaultVertexSrc() {\n return defaultVertex;\n }\n static get defaultFragmentSrc() {\n return defaultFragment;\n }\n static from(vertexSrc, fragmentSrc, name) {\n const key = vertexSrc + fragmentSrc;\n let program = ProgramCache[key];\n if (!program) {\n ProgramCache[key] = program = new Program(vertexSrc, fragmentSrc, name);\n }\n return program;\n }\n}\n\nexport { Program };\n//# sourceMappingURL=Program.mjs.map\n","import { Program } from './Program.mjs';\nimport { UniformGroup } from './UniformGroup.mjs';\nimport { Runner } from '@pixi/runner';\n\nclass Shader {\n constructor(program, uniforms) {\n this.uniformBindCount = 0;\n this.program = program;\n if (uniforms) {\n if (uniforms instanceof UniformGroup) {\n this.uniformGroup = uniforms;\n } else {\n this.uniformGroup = new UniformGroup(uniforms);\n }\n } else {\n this.uniformGroup = new UniformGroup({});\n }\n this.disposeRunner = new Runner(\"disposeShader\");\n }\n checkUniformExists(name, group) {\n if (group.uniforms[name]) {\n return true;\n }\n for (const i in group.uniforms) {\n const uniform = group.uniforms[i];\n if (uniform.group) {\n if (this.checkUniformExists(name, uniform)) {\n return true;\n }\n }\n }\n return false;\n }\n destroy() {\n this.uniformGroup = null;\n this.disposeRunner.emit(this);\n this.disposeRunner.destroy();\n }\n get uniforms() {\n return this.uniformGroup.uniforms;\n }\n static from(vertexSrc, fragmentSrc, uniforms) {\n const program = Program.from(vertexSrc, fragmentSrc);\n return new Shader(program, uniforms);\n }\n}\n\nexport { Shader };\n//# sourceMappingURL=Shader.mjs.map\n","import { BLEND_MODES } from '@pixi/constants';\n\nconst BLEND = 0;\nconst OFFSET = 1;\nconst CULLING = 2;\nconst DEPTH_TEST = 3;\nconst WINDING = 4;\nconst DEPTH_MASK = 5;\nclass State {\n constructor() {\n this.data = 0;\n this.blendMode = BLEND_MODES.NORMAL;\n this.polygonOffset = 0;\n this.blend = true;\n this.depthMask = true;\n }\n get blend() {\n return !!(this.data & 1 << BLEND);\n }\n set blend(value) {\n if (!!(this.data & 1 << BLEND) !== value) {\n this.data ^= 1 << BLEND;\n }\n }\n get offsets() {\n return !!(this.data & 1 << OFFSET);\n }\n set offsets(value) {\n if (!!(this.data & 1 << OFFSET) !== value) {\n this.data ^= 1 << OFFSET;\n }\n }\n get culling() {\n return !!(this.data & 1 << CULLING);\n }\n set culling(value) {\n if (!!(this.data & 1 << CULLING) !== value) {\n this.data ^= 1 << CULLING;\n }\n }\n get depthTest() {\n return !!(this.data & 1 << DEPTH_TEST);\n }\n set depthTest(value) {\n if (!!(this.data & 1 << DEPTH_TEST) !== value) {\n this.data ^= 1 << DEPTH_TEST;\n }\n }\n get depthMask() {\n return !!(this.data & 1 << DEPTH_MASK);\n }\n set depthMask(value) {\n if (!!(this.data & 1 << DEPTH_MASK) !== value) {\n this.data ^= 1 << DEPTH_MASK;\n }\n }\n get clockwiseFrontFace() {\n return !!(this.data & 1 << WINDING);\n }\n set clockwiseFrontFace(value) {\n if (!!(this.data & 1 << WINDING) !== value) {\n this.data ^= 1 << WINDING;\n }\n }\n get blendMode() {\n return this._blendMode;\n }\n set blendMode(value) {\n this.blend = value !== BLEND_MODES.NONE;\n this._blendMode = value;\n }\n get polygonOffset() {\n return this._polygonOffset;\n }\n set polygonOffset(value) {\n this.offsets = !!value;\n this._polygonOffset = value;\n }\n static for2d() {\n const state = new State();\n state.depthTest = false;\n state.blend = true;\n return state;\n }\n}\n\nexport { State };\n//# sourceMappingURL=State.mjs.map\n","var defaultFragment = \"varying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void){\\n gl_FragColor = texture2D(uSampler, vTextureCoord);\\n}\\n\";\n\nexport { defaultFragment as default };\n//# sourceMappingURL=defaultFilter.mjs.map\n","var defaultVertex = \"attribute vec2 aVertexPosition;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform vec4 inputSize;\\nuniform vec4 outputFrame;\\n\\nvec4 filterVertexPosition( void )\\n{\\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\\n\\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\\n}\\n\\nvec2 filterTextureCoord( void )\\n{\\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\\n}\\n\\nvoid main(void)\\n{\\n gl_Position = filterVertexPosition();\\n vTextureCoord = filterTextureCoord();\\n}\\n\";\n\nexport { defaultVertex as default };\n//# sourceMappingURL=defaultFilter2.mjs.map\n","import { settings } from '@pixi/settings';\nimport { Program } from '../shader/Program.mjs';\nimport { Shader } from '../shader/Shader.mjs';\nimport { State } from '../state/State.mjs';\nimport defaultFragment from './defaultFilter.mjs';\nimport defaultVertex from './defaultFilter2.mjs';\n\nclass Filter extends Shader {\n constructor(vertexSrc, fragmentSrc, uniforms) {\n const program = Program.from(vertexSrc || Filter.defaultVertexSrc, fragmentSrc || Filter.defaultFragmentSrc);\n super(program, uniforms);\n this.padding = 0;\n this.resolution = settings.FILTER_RESOLUTION;\n this.multisample = settings.FILTER_MULTISAMPLE;\n this.enabled = true;\n this.autoFit = true;\n this.state = new State();\n }\n apply(filterManager, input, output, clearMode, _currentState) {\n filterManager.applyFilter(this, input, output, clearMode);\n }\n get blendMode() {\n return this.state.blendMode;\n }\n set blendMode(value) {\n this.state.blendMode = value;\n }\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._resolution = value;\n }\n static get defaultVertexSrc() {\n return defaultVertex;\n }\n static get defaultFragmentSrc() {\n return defaultFragment;\n }\n}\n\nexport { Filter };\n//# sourceMappingURL=Filter.mjs.map\n","var vertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 otherMatrix;\\n\\nvarying vec2 vMaskCoord;\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = aTextureCoord;\\n vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=spriteMaskFilter2.mjs.map\n","var fragment = \"varying vec2 vMaskCoord;\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform sampler2D mask;\\nuniform float alpha;\\nuniform float npmAlpha;\\nuniform vec4 maskClamp;\\n\\nvoid main(void)\\n{\\n float clip = step(3.5,\\n step(maskClamp.x, vMaskCoord.x) +\\n step(maskClamp.y, vMaskCoord.y) +\\n step(vMaskCoord.x, maskClamp.z) +\\n step(vMaskCoord.y, maskClamp.w));\\n\\n vec4 original = texture2D(uSampler, vTextureCoord);\\n vec4 masky = texture2D(mask, vMaskCoord);\\n float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);\\n\\n original *= (alphaMul * masky.r * alpha * clip);\\n\\n gl_FragColor = original;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=spriteMaskFilter3.mjs.map\n","import { Matrix } from '@pixi/math';\n\nconst tempMat = new Matrix();\nclass TextureMatrix {\n constructor(texture, clampMargin) {\n this._texture = texture;\n this.mapCoord = new Matrix();\n this.uClampFrame = new Float32Array(4);\n this.uClampOffset = new Float32Array(2);\n this._textureID = -1;\n this._updateID = 0;\n this.clampOffset = 0;\n this.clampMargin = typeof clampMargin === \"undefined\" ? 0.5 : clampMargin;\n this.isSimple = false;\n }\n get texture() {\n return this._texture;\n }\n set texture(value) {\n this._texture = value;\n this._textureID = -1;\n }\n multiplyUvs(uvs, out) {\n if (out === void 0) {\n out = uvs;\n }\n const mat = this.mapCoord;\n for (let i = 0; i < uvs.length; i += 2) {\n const x = uvs[i];\n const y = uvs[i + 1];\n out[i] = x * mat.a + y * mat.c + mat.tx;\n out[i + 1] = x * mat.b + y * mat.d + mat.ty;\n }\n return out;\n }\n update(forceUpdate) {\n const tex = this._texture;\n if (!tex || !tex.valid) {\n return false;\n }\n if (!forceUpdate && this._textureID === tex._updateID) {\n return false;\n }\n this._textureID = tex._updateID;\n this._updateID++;\n const uvs = tex._uvs;\n this.mapCoord.set(uvs.x1 - uvs.x0, uvs.y1 - uvs.y0, uvs.x3 - uvs.x0, uvs.y3 - uvs.y0, uvs.x0, uvs.y0);\n const orig = tex.orig;\n const trim = tex.trim;\n if (trim) {\n tempMat.set(orig.width / trim.width, 0, 0, orig.height / trim.height, -trim.x / trim.width, -trim.y / trim.height);\n this.mapCoord.append(tempMat);\n }\n const texBase = tex.baseTexture;\n const frame = this.uClampFrame;\n const margin = this.clampMargin / texBase.resolution;\n const offset = this.clampOffset;\n frame[0] = (tex._frame.x + margin + offset) / texBase.width;\n frame[1] = (tex._frame.y + margin + offset) / texBase.height;\n frame[2] = (tex._frame.x + tex._frame.width - margin + offset) / texBase.width;\n frame[3] = (tex._frame.y + tex._frame.height - margin + offset) / texBase.height;\n this.uClampOffset[0] = offset / texBase.realWidth;\n this.uClampOffset[1] = offset / texBase.realHeight;\n this.isSimple = tex._frame.width === texBase.width && tex._frame.height === texBase.height && tex.rotate === 0;\n return true;\n }\n}\n\nexport { TextureMatrix };\n//# sourceMappingURL=TextureMatrix.mjs.map\n","import { Filter } from '../Filter.mjs';\nimport { Matrix } from '@pixi/math';\nimport vertex from './spriteMaskFilter2.mjs';\nimport fragment from './spriteMaskFilter3.mjs';\nimport { TextureMatrix } from '../../textures/TextureMatrix.mjs';\n\nclass SpriteMaskFilter extends Filter {\n constructor(vertexSrc, fragmentSrc, uniforms) {\n let sprite = null;\n if (typeof vertexSrc !== \"string\" && fragmentSrc === void 0 && uniforms === void 0) {\n sprite = vertexSrc;\n vertexSrc = void 0;\n fragmentSrc = void 0;\n uniforms = void 0;\n }\n super(vertexSrc || vertex, fragmentSrc || fragment, uniforms);\n this.maskSprite = sprite;\n this.maskMatrix = new Matrix();\n }\n get maskSprite() {\n return this._maskSprite;\n }\n set maskSprite(value) {\n this._maskSprite = value;\n if (this._maskSprite) {\n this._maskSprite.renderable = false;\n }\n }\n apply(filterManager, input, output, clearMode) {\n const maskSprite = this._maskSprite;\n const tex = maskSprite._texture;\n if (!tex.valid) {\n return;\n }\n if (!tex.uvMatrix) {\n tex.uvMatrix = new TextureMatrix(tex, 0);\n }\n tex.uvMatrix.update();\n this.uniforms.npmAlpha = tex.baseTexture.alphaMode ? 0 : 1;\n this.uniforms.mask = tex;\n this.uniforms.otherMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, maskSprite).prepend(tex.uvMatrix.mapCoord);\n this.uniforms.alpha = maskSprite.worldAlpha;\n this.uniforms.maskClamp = tex.uvMatrix.uClampFrame;\n filterManager.applyFilter(this, input, output, clearMode);\n }\n}\n\nexport { SpriteMaskFilter };\n//# sourceMappingURL=SpriteMaskFilter.mjs.map\n","import { MaskData } from './MaskData.mjs';\nimport { SpriteMaskFilter } from '../filters/spriteMask/SpriteMaskFilter.mjs';\nimport { MASK_TYPES } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass MaskSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.enableScissor = true;\n this.alphaMaskPool = [];\n this.maskDataPool = [];\n this.maskStack = [];\n this.alphaMaskIndex = 0;\n }\n setMaskStack(maskStack) {\n this.maskStack = maskStack;\n this.renderer.scissor.setMaskStack(maskStack);\n this.renderer.stencil.setMaskStack(maskStack);\n }\n push(target, maskDataOrTarget) {\n let maskData = maskDataOrTarget;\n if (!maskData.isMaskData) {\n const d = this.maskDataPool.pop() || new MaskData();\n d.pooled = true;\n d.maskObject = maskDataOrTarget;\n maskData = d;\n }\n const maskAbove = this.maskStack.length !== 0 ? this.maskStack[this.maskStack.length - 1] : null;\n maskData.copyCountersOrReset(maskAbove);\n maskData._colorMask = maskAbove ? maskAbove._colorMask : 15;\n if (maskData.autoDetect) {\n this.detect(maskData);\n }\n maskData._target = target;\n if (maskData.type !== MASK_TYPES.SPRITE) {\n this.maskStack.push(maskData);\n }\n if (maskData.enabled) {\n switch (maskData.type) {\n case MASK_TYPES.SCISSOR:\n this.renderer.scissor.push(maskData);\n break;\n case MASK_TYPES.STENCIL:\n this.renderer.stencil.push(maskData);\n break;\n case MASK_TYPES.SPRITE:\n maskData.copyCountersOrReset(null);\n this.pushSpriteMask(maskData);\n break;\n case MASK_TYPES.COLOR:\n this.pushColorMask(maskData);\n break;\n default:\n break;\n }\n }\n if (maskData.type === MASK_TYPES.SPRITE) {\n this.maskStack.push(maskData);\n }\n }\n pop(target) {\n const maskData = this.maskStack.pop();\n if (!maskData || maskData._target !== target) {\n return;\n }\n if (maskData.enabled) {\n switch (maskData.type) {\n case MASK_TYPES.SCISSOR:\n this.renderer.scissor.pop(maskData);\n break;\n case MASK_TYPES.STENCIL:\n this.renderer.stencil.pop(maskData.maskObject);\n break;\n case MASK_TYPES.SPRITE:\n this.popSpriteMask(maskData);\n break;\n case MASK_TYPES.COLOR:\n this.popColorMask(maskData);\n break;\n default:\n break;\n }\n }\n maskData.reset();\n if (maskData.pooled) {\n this.maskDataPool.push(maskData);\n }\n if (this.maskStack.length !== 0) {\n const maskCurrent = this.maskStack[this.maskStack.length - 1];\n if (maskCurrent.type === MASK_TYPES.SPRITE && maskCurrent._filters) {\n maskCurrent._filters[0].maskSprite = maskCurrent.maskObject;\n }\n }\n }\n detect(maskData) {\n const maskObject = maskData.maskObject;\n if (!maskObject) {\n maskData.type = MASK_TYPES.COLOR;\n } else if (maskObject.isSprite) {\n maskData.type = MASK_TYPES.SPRITE;\n } else if (this.enableScissor && this.renderer.scissor.testScissor(maskData)) {\n maskData.type = MASK_TYPES.SCISSOR;\n } else {\n maskData.type = MASK_TYPES.STENCIL;\n }\n }\n pushSpriteMask(maskData) {\n const { maskObject } = maskData;\n const target = maskData._target;\n let alphaMaskFilter = maskData._filters;\n if (!alphaMaskFilter) {\n alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex];\n if (!alphaMaskFilter) {\n alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex] = [new SpriteMaskFilter()];\n }\n }\n const renderer = this.renderer;\n const renderTextureSystem = renderer.renderTexture;\n let resolution;\n let multisample;\n if (renderTextureSystem.current) {\n const renderTexture = renderTextureSystem.current;\n resolution = maskData.resolution || renderTexture.resolution;\n multisample = maskData.multisample ?? renderTexture.multisample;\n } else {\n resolution = maskData.resolution || renderer.resolution;\n multisample = maskData.multisample ?? renderer.multisample;\n }\n alphaMaskFilter[0].resolution = resolution;\n alphaMaskFilter[0].multisample = multisample;\n alphaMaskFilter[0].maskSprite = maskObject;\n const stashFilterArea = target.filterArea;\n target.filterArea = maskObject.getBounds(true);\n renderer.filter.push(target, alphaMaskFilter);\n target.filterArea = stashFilterArea;\n if (!maskData._filters) {\n this.alphaMaskIndex++;\n }\n }\n popSpriteMask(maskData) {\n this.renderer.filter.pop();\n if (maskData._filters) {\n maskData._filters[0].maskSprite = null;\n } else {\n this.alphaMaskIndex--;\n this.alphaMaskPool[this.alphaMaskIndex][0].maskSprite = null;\n }\n }\n pushColorMask(maskData) {\n const currColorMask = maskData._colorMask;\n const nextColorMask = maskData._colorMask = currColorMask & maskData.colorMask;\n if (nextColorMask !== currColorMask) {\n this.renderer.gl.colorMask((nextColorMask & 1) !== 0, (nextColorMask & 2) !== 0, (nextColorMask & 4) !== 0, (nextColorMask & 8) !== 0);\n }\n }\n popColorMask(maskData) {\n const currColorMask = maskData._colorMask;\n const nextColorMask = this.maskStack.length > 0 ? this.maskStack[this.maskStack.length - 1]._colorMask : 15;\n if (nextColorMask !== currColorMask) {\n this.renderer.gl.colorMask((nextColorMask & 1) !== 0, (nextColorMask & 2) !== 0, (nextColorMask & 4) !== 0, (nextColorMask & 8) !== 0);\n }\n }\n destroy() {\n this.renderer = null;\n }\n}\nMaskSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"mask\"\n};\nextensions.add(MaskSystem);\n\nexport { MaskSystem };\n//# sourceMappingURL=MaskSystem.mjs.map\n","class AbstractMaskSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.maskStack = [];\n this.glConst = 0;\n }\n getStackLength() {\n return this.maskStack.length;\n }\n setMaskStack(maskStack) {\n const { gl } = this.renderer;\n const curStackLen = this.getStackLength();\n this.maskStack = maskStack;\n const newStackLen = this.getStackLength();\n if (newStackLen !== curStackLen) {\n if (newStackLen === 0) {\n gl.disable(this.glConst);\n } else {\n gl.enable(this.glConst);\n this._useCurrent();\n }\n }\n }\n _useCurrent() {\n }\n destroy() {\n this.renderer = null;\n this.maskStack = null;\n }\n}\n\nexport { AbstractMaskSystem };\n//# sourceMappingURL=AbstractMaskSystem.mjs.map\n","import { AbstractMaskSystem } from './AbstractMaskSystem.mjs';\nimport { Matrix, Rectangle } from '@pixi/math';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { settings } from '@pixi/settings';\n\nconst tempMatrix = new Matrix();\nconst rectPool = [];\nconst _ScissorSystem = class extends AbstractMaskSystem {\n constructor(renderer) {\n super(renderer);\n this.glConst = settings.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST;\n }\n getStackLength() {\n const maskData = this.maskStack[this.maskStack.length - 1];\n if (maskData) {\n return maskData._scissorCounter;\n }\n return 0;\n }\n calcScissorRect(maskData) {\n if (maskData._scissorRectLocal) {\n return;\n }\n const prevData = maskData._scissorRect;\n const { maskObject } = maskData;\n const { renderer } = this;\n const renderTextureSystem = renderer.renderTexture;\n const rect = maskObject.getBounds(true, rectPool.pop() ?? new Rectangle());\n this.roundFrameToPixels(rect, renderTextureSystem.current ? renderTextureSystem.current.resolution : renderer.resolution, renderTextureSystem.sourceFrame, renderTextureSystem.destinationFrame, renderer.projection.transform);\n if (prevData) {\n rect.fit(prevData);\n }\n maskData._scissorRectLocal = rect;\n }\n static isMatrixRotated(matrix) {\n if (!matrix) {\n return false;\n }\n const { a, b, c, d } = matrix;\n return (Math.abs(b) > 1e-4 || Math.abs(c) > 1e-4) && (Math.abs(a) > 1e-4 || Math.abs(d) > 1e-4);\n }\n testScissor(maskData) {\n const { maskObject } = maskData;\n if (!maskObject.isFastRect || !maskObject.isFastRect()) {\n return false;\n }\n if (_ScissorSystem.isMatrixRotated(maskObject.worldTransform)) {\n return false;\n }\n if (_ScissorSystem.isMatrixRotated(this.renderer.projection.transform)) {\n return false;\n }\n this.calcScissorRect(maskData);\n const rect = maskData._scissorRectLocal;\n return rect.width > 0 && rect.height > 0;\n }\n roundFrameToPixels(frame, resolution, bindingSourceFrame, bindingDestinationFrame, transform) {\n if (_ScissorSystem.isMatrixRotated(transform)) {\n return;\n }\n transform = transform ? tempMatrix.copyFrom(transform) : tempMatrix.identity();\n transform.translate(-bindingSourceFrame.x, -bindingSourceFrame.y).scale(bindingDestinationFrame.width / bindingSourceFrame.width, bindingDestinationFrame.height / bindingSourceFrame.height).translate(bindingDestinationFrame.x, bindingDestinationFrame.y);\n this.renderer.filter.transformAABB(transform, frame);\n frame.fit(bindingDestinationFrame);\n frame.x = Math.round(frame.x * resolution);\n frame.y = Math.round(frame.y * resolution);\n frame.width = Math.round(frame.width * resolution);\n frame.height = Math.round(frame.height * resolution);\n }\n push(maskData) {\n if (!maskData._scissorRectLocal) {\n this.calcScissorRect(maskData);\n }\n const { gl } = this.renderer;\n if (!maskData._scissorRect) {\n gl.enable(gl.SCISSOR_TEST);\n }\n maskData._scissorCounter++;\n maskData._scissorRect = maskData._scissorRectLocal;\n this._useCurrent();\n }\n pop(maskData) {\n const { gl } = this.renderer;\n if (maskData) {\n rectPool.push(maskData._scissorRectLocal);\n }\n if (this.getStackLength() > 0) {\n this._useCurrent();\n } else {\n gl.disable(gl.SCISSOR_TEST);\n }\n }\n _useCurrent() {\n const rect = this.maskStack[this.maskStack.length - 1]._scissorRect;\n let y;\n if (this.renderer.renderTexture.current) {\n y = rect.y;\n } else {\n y = this.renderer.height - rect.height - rect.y;\n }\n this.renderer.gl.scissor(rect.x, y, rect.width, rect.height);\n }\n};\nlet ScissorSystem = _ScissorSystem;\nScissorSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"scissor\"\n};\nextensions.add(ScissorSystem);\n\nexport { ScissorSystem };\n//# sourceMappingURL=ScissorSystem.mjs.map\n","import { AbstractMaskSystem } from './AbstractMaskSystem.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { settings } from '@pixi/settings';\n\nclass StencilSystem extends AbstractMaskSystem {\n constructor(renderer) {\n super(renderer);\n this.glConst = settings.ADAPTER.getWebGLRenderingContext().STENCIL_TEST;\n }\n getStackLength() {\n const maskData = this.maskStack[this.maskStack.length - 1];\n if (maskData) {\n return maskData._stencilCounter;\n }\n return 0;\n }\n push(maskData) {\n const maskObject = maskData.maskObject;\n const { gl } = this.renderer;\n const prevMaskCount = maskData._stencilCounter;\n if (prevMaskCount === 0) {\n this.renderer.framebuffer.forceStencil();\n gl.clearStencil(0);\n gl.clear(gl.STENCIL_BUFFER_BIT);\n gl.enable(gl.STENCIL_TEST);\n }\n maskData._stencilCounter++;\n const colorMask = maskData._colorMask;\n if (colorMask !== 0) {\n maskData._colorMask = 0;\n gl.colorMask(false, false, false, false);\n }\n gl.stencilFunc(gl.EQUAL, prevMaskCount, 4294967295);\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.INCR);\n maskObject.renderable = true;\n maskObject.render(this.renderer);\n this.renderer.batch.flush();\n maskObject.renderable = false;\n if (colorMask !== 0) {\n maskData._colorMask = colorMask;\n gl.colorMask((colorMask & 1) !== 0, (colorMask & 2) !== 0, (colorMask & 4) !== 0, (colorMask & 8) !== 0);\n }\n this._useCurrent();\n }\n pop(maskObject) {\n const gl = this.renderer.gl;\n if (this.getStackLength() === 0) {\n gl.disable(gl.STENCIL_TEST);\n } else {\n const maskData = this.maskStack.length !== 0 ? this.maskStack[this.maskStack.length - 1] : null;\n const colorMask = maskData ? maskData._colorMask : 15;\n if (colorMask !== 0) {\n maskData._colorMask = 0;\n gl.colorMask(false, false, false, false);\n }\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR);\n maskObject.renderable = true;\n maskObject.render(this.renderer);\n this.renderer.batch.flush();\n maskObject.renderable = false;\n if (colorMask !== 0) {\n maskData._colorMask = colorMask;\n gl.colorMask((colorMask & 1) !== 0, (colorMask & 2) !== 0, (colorMask & 4) !== 0, (colorMask & 8) !== 0);\n }\n this._useCurrent();\n }\n }\n _useCurrent() {\n const gl = this.renderer.gl;\n gl.stencilFunc(gl.EQUAL, this.getStackLength(), 4294967295);\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);\n }\n}\nStencilSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"stencil\"\n};\nextensions.add(StencilSystem);\n\nexport { StencilSystem };\n//# sourceMappingURL=StencilSystem.mjs.map\n","import { Matrix } from '@pixi/math';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass ProjectionSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.destinationFrame = null;\n this.sourceFrame = null;\n this.defaultFrame = null;\n this.projectionMatrix = new Matrix();\n this.transform = null;\n }\n update(destinationFrame, sourceFrame, resolution, root) {\n this.destinationFrame = destinationFrame || this.destinationFrame || this.defaultFrame;\n this.sourceFrame = sourceFrame || this.sourceFrame || destinationFrame;\n this.calculateProjection(this.destinationFrame, this.sourceFrame, resolution, root);\n if (this.transform) {\n this.projectionMatrix.append(this.transform);\n }\n const renderer = this.renderer;\n renderer.globalUniforms.uniforms.projectionMatrix = this.projectionMatrix;\n renderer.globalUniforms.update();\n if (renderer.shader.shader) {\n renderer.shader.syncUniformGroup(renderer.shader.shader.uniforms.globals);\n }\n }\n calculateProjection(_destinationFrame, sourceFrame, _resolution, root) {\n const pm = this.projectionMatrix;\n const sign = !root ? 1 : -1;\n pm.identity();\n pm.a = 1 / sourceFrame.width * 2;\n pm.d = sign * (1 / sourceFrame.height * 2);\n pm.tx = -1 - sourceFrame.x * pm.a;\n pm.ty = -sign - sourceFrame.y * pm.d;\n }\n setTransform(_matrix) {\n }\n destroy() {\n this.renderer = null;\n }\n}\nProjectionSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"projection\"\n};\nextensions.add(ProjectionSystem);\n\nexport { ProjectionSystem };\n//# sourceMappingURL=ProjectionSystem.mjs.map\n","import { Rectangle } from '@pixi/math';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nconst tempRect = new Rectangle();\nconst tempRect2 = new Rectangle();\nclass RenderTextureSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.defaultMaskStack = [];\n this.current = null;\n this.sourceFrame = new Rectangle();\n this.destinationFrame = new Rectangle();\n this.viewportFrame = new Rectangle();\n }\n bind(renderTexture = null, sourceFrame, destinationFrame) {\n const renderer = this.renderer;\n this.current = renderTexture;\n let baseTexture;\n let framebuffer;\n let resolution;\n if (renderTexture) {\n baseTexture = renderTexture.baseTexture;\n resolution = baseTexture.resolution;\n if (!sourceFrame) {\n tempRect.width = renderTexture.frame.width;\n tempRect.height = renderTexture.frame.height;\n sourceFrame = tempRect;\n }\n if (!destinationFrame) {\n tempRect2.x = renderTexture.frame.x;\n tempRect2.y = renderTexture.frame.y;\n tempRect2.width = sourceFrame.width;\n tempRect2.height = sourceFrame.height;\n destinationFrame = tempRect2;\n }\n framebuffer = baseTexture.framebuffer;\n } else {\n resolution = renderer.resolution;\n if (!sourceFrame) {\n tempRect.width = renderer._view.screen.width;\n tempRect.height = renderer._view.screen.height;\n sourceFrame = tempRect;\n }\n if (!destinationFrame) {\n destinationFrame = tempRect;\n destinationFrame.width = sourceFrame.width;\n destinationFrame.height = sourceFrame.height;\n }\n }\n const viewportFrame = this.viewportFrame;\n viewportFrame.x = destinationFrame.x * resolution;\n viewportFrame.y = destinationFrame.y * resolution;\n viewportFrame.width = destinationFrame.width * resolution;\n viewportFrame.height = destinationFrame.height * resolution;\n if (!renderTexture) {\n viewportFrame.y = renderer.view.height - (viewportFrame.y + viewportFrame.height);\n }\n viewportFrame.ceil();\n this.renderer.framebuffer.bind(framebuffer, viewportFrame);\n this.renderer.projection.update(destinationFrame, sourceFrame, resolution, !framebuffer);\n if (renderTexture) {\n this.renderer.mask.setMaskStack(baseTexture.maskStack);\n } else {\n this.renderer.mask.setMaskStack(this.defaultMaskStack);\n }\n this.sourceFrame.copyFrom(sourceFrame);\n this.destinationFrame.copyFrom(destinationFrame);\n }\n clear(clearColor, mask) {\n if (this.current) {\n clearColor = clearColor || this.current.baseTexture.clearColor;\n } else {\n clearColor = clearColor || this.renderer.background.colorRgba;\n }\n const destinationFrame = this.destinationFrame;\n const baseFrame = this.current ? this.current.baseTexture : this.renderer._view.screen;\n const clearMask = destinationFrame.width !== baseFrame.width || destinationFrame.height !== baseFrame.height;\n if (clearMask) {\n let { x, y, width, height } = this.viewportFrame;\n x = Math.round(x);\n y = Math.round(y);\n width = Math.round(width);\n height = Math.round(height);\n this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST);\n this.renderer.gl.scissor(x, y, width, height);\n }\n this.renderer.framebuffer.clear(clearColor[0], clearColor[1], clearColor[2], clearColor[3], mask);\n if (clearMask) {\n this.renderer.scissor.pop();\n }\n }\n resize() {\n this.bind(null);\n }\n reset() {\n this.bind(null);\n }\n destroy() {\n this.renderer = null;\n }\n}\nRenderTextureSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"renderTexture\"\n};\nextensions.add(RenderTextureSystem);\n\nexport { RenderTextureSystem };\n//# sourceMappingURL=RenderTextureSystem.mjs.map\n","import './index.mjs';\nimport { uniformParsers } from './uniformParsers.mjs';\nimport { mapSize } from './mapSize.mjs';\n\nfunction uboUpdate(_ud, _uv, _renderer, _syncData, buffer) {\n _renderer.buffer.update(buffer);\n}\nconst UBO_TO_SINGLE_SETTERS = {\n float: `\n data[offset] = v;\n `,\n vec2: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n `,\n vec3: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n\n `,\n vec4: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n data[offset+3] = v[3];\n `,\n mat2: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n\n data[offset+4] = v[2];\n data[offset+5] = v[3];\n `,\n mat3: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n\n data[offset + 4] = v[3];\n data[offset + 5] = v[4];\n data[offset + 6] = v[5];\n\n data[offset + 8] = v[6];\n data[offset + 9] = v[7];\n data[offset + 10] = v[8];\n `,\n mat4: `\n for(var i = 0; i < 16; i++)\n {\n data[offset + i] = v[i];\n }\n `\n};\nconst GLSL_TO_STD40_SIZE = {\n float: 4,\n vec2: 8,\n vec3: 12,\n vec4: 16,\n int: 4,\n ivec2: 8,\n ivec3: 12,\n ivec4: 16,\n uint: 4,\n uvec2: 8,\n uvec3: 12,\n uvec4: 16,\n bool: 4,\n bvec2: 8,\n bvec3: 12,\n bvec4: 16,\n mat2: 16 * 2,\n mat3: 16 * 3,\n mat4: 16 * 4\n};\nfunction createUBOElements(uniformData) {\n const uboElements = uniformData.map((data) => ({\n data,\n offset: 0,\n dataLen: 0,\n dirty: 0\n }));\n let size = 0;\n let chunkSize = 0;\n let offset = 0;\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n size = GLSL_TO_STD40_SIZE[uboElement.data.type];\n if (uboElement.data.size > 1) {\n size = Math.max(size, 16) * uboElement.data.size;\n }\n uboElement.dataLen = size;\n if (chunkSize % size !== 0 && chunkSize < 16) {\n const lineUpValue = chunkSize % size % 16;\n chunkSize += lineUpValue;\n offset += lineUpValue;\n }\n if (chunkSize + size > 16) {\n offset = Math.ceil(offset / 16) * 16;\n uboElement.offset = offset;\n offset += size;\n chunkSize = size;\n } else {\n uboElement.offset = offset;\n chunkSize += size;\n offset += size;\n }\n }\n offset = Math.ceil(offset / 16) * 16;\n return { uboElements, size: offset };\n}\nfunction getUBOData(uniforms, uniformData) {\n const usedUniformDatas = [];\n for (const i in uniforms) {\n if (uniformData[i]) {\n usedUniformDatas.push(uniformData[i]);\n }\n }\n usedUniformDatas.sort((a, b) => a.index - b.index);\n return usedUniformDatas;\n}\nfunction generateUniformBufferSync(group, uniformData) {\n if (!group.autoManage) {\n return { size: 0, syncFunc: uboUpdate };\n }\n const usedUniformDatas = getUBOData(group.uniforms, uniformData);\n const { uboElements, size } = createUBOElements(usedUniformDatas);\n const funcFragments = [`\n var v = null;\n var v2 = null;\n var cv = null;\n var t = 0;\n var gl = renderer.gl\n var index = 0;\n var data = buffer.data;\n `];\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n const uniform = group.uniforms[uboElement.data.name];\n const name = uboElement.data.name;\n let parsed = false;\n for (let j = 0; j < uniformParsers.length; j++) {\n const uniformParser = uniformParsers[j];\n if (uniformParser.codeUbo && uniformParser.test(uboElement.data, uniform)) {\n funcFragments.push(`offset = ${uboElement.offset / 4};`, uniformParsers[j].codeUbo(uboElement.data.name, uniform));\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n if (uboElement.data.size > 1) {\n const size2 = mapSize(uboElement.data.type);\n const rowSize = Math.max(GLSL_TO_STD40_SIZE[uboElement.data.type] / 16, 1);\n const elementSize = size2 / rowSize;\n const remainder = (4 - elementSize % 4) % 4;\n funcFragments.push(`\n cv = ud.${name}.value;\n v = uv.${name};\n offset = ${uboElement.offset / 4};\n\n t = 0;\n\n for(var i=0; i < ${uboElement.data.size * rowSize}; i++)\n {\n for(var j = 0; j < ${elementSize}; j++)\n {\n data[offset++] = v[t++];\n }\n offset += ${remainder};\n }\n\n `);\n } else {\n const template = UBO_TO_SINGLE_SETTERS[uboElement.data.type];\n funcFragments.push(`\n cv = ud.${name}.value;\n v = uv.${name};\n offset = ${uboElement.offset / 4};\n ${template};\n `);\n }\n }\n }\n funcFragments.push(`\n renderer.buffer.update(buffer);\n `);\n return {\n size,\n syncFunc: new Function(\"ud\", \"uv\", \"renderer\", \"syncData\", \"buffer\", funcFragments.join(\"\\n\"))\n };\n}\n\nexport { createUBOElements, generateUniformBufferSync, getUBOData };\n//# sourceMappingURL=generateUniformBufferSync.mjs.map\n","class IGLUniformData {\n}\nclass GLProgram {\n constructor(program, uniformData) {\n this.program = program;\n this.uniformData = uniformData;\n this.uniformGroups = {};\n this.uniformDirtyGroups = {};\n this.uniformBufferBindings = {};\n }\n destroy() {\n this.uniformData = null;\n this.uniformGroups = null;\n this.uniformDirtyGroups = null;\n this.uniformBufferBindings = null;\n this.program = null;\n }\n}\n\nexport { GLProgram, IGLUniformData };\n//# sourceMappingURL=GLProgram.mjs.map\n","import { mapSize } from './mapSize.mjs';\nimport { mapType } from './mapType.mjs';\n\nfunction getAttributeData(program, gl) {\n const attributes = {};\n const totalAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n for (let i = 0; i < totalAttributes; i++) {\n const attribData = gl.getActiveAttrib(program, i);\n if (attribData.name.startsWith(\"gl_\")) {\n continue;\n }\n const type = mapType(gl, attribData.type);\n const data = {\n type,\n name: attribData.name,\n size: mapSize(type),\n location: gl.getAttribLocation(program, attribData.name)\n };\n attributes[attribData.name] = data;\n }\n return attributes;\n}\n\nexport { getAttributeData };\n//# sourceMappingURL=getAttributeData.mjs.map\n","import { defaultValue } from './defaultValue.mjs';\nimport { mapType } from './mapType.mjs';\n\nfunction getUniformData(program, gl) {\n const uniforms = {};\n const totalUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n for (let i = 0; i < totalUniforms; i++) {\n const uniformData = gl.getActiveUniform(program, i);\n const name = uniformData.name.replace(/\\[.*?\\]$/, \"\");\n const isArray = !!uniformData.name.match(/\\[.*?\\]$/);\n const type = mapType(gl, uniformData.type);\n uniforms[name] = {\n name,\n index: i,\n type,\n size: uniformData.size,\n isArray,\n value: defaultValue(type, uniformData.size)\n };\n }\n return uniforms;\n}\n\nexport { getUniformData };\n//# sourceMappingURL=getUniformData.mjs.map\n","import { GLProgram } from '../GLProgram.mjs';\nimport { compileShader } from './compileShader.mjs';\nimport { defaultValue } from './defaultValue.mjs';\nimport { getAttributeData } from './getAttributeData.mjs';\nimport { getUniformData } from './getUniformData.mjs';\nimport { logProgramError } from './logProgramError.mjs';\n\nfunction generateProgram(gl, program) {\n const glVertShader = compileShader(gl, gl.VERTEX_SHADER, program.vertexSrc);\n const glFragShader = compileShader(gl, gl.FRAGMENT_SHADER, program.fragmentSrc);\n const webGLProgram = gl.createProgram();\n gl.attachShader(webGLProgram, glVertShader);\n gl.attachShader(webGLProgram, glFragShader);\n const transformFeedbackVaryings = program.extra?.transformFeedbackVaryings;\n if (transformFeedbackVaryings) {\n if (typeof gl.transformFeedbackVaryings !== \"function\") {\n } else {\n gl.transformFeedbackVaryings(webGLProgram, transformFeedbackVaryings.names, transformFeedbackVaryings.bufferMode === \"separate\" ? gl.SEPARATE_ATTRIBS : gl.INTERLEAVED_ATTRIBS);\n }\n }\n gl.linkProgram(webGLProgram);\n if (!gl.getProgramParameter(webGLProgram, gl.LINK_STATUS)) {\n logProgramError(gl, webGLProgram, glVertShader, glFragShader);\n }\n program.attributeData = getAttributeData(webGLProgram, gl);\n program.uniformData = getUniformData(webGLProgram, gl);\n if (!/^[ \\t]*#[ \\t]*version[ \\t]+300[ \\t]+es[ \\t]*$/m.test(program.vertexSrc)) {\n const keys = Object.keys(program.attributeData);\n keys.sort((a, b) => a > b ? 1 : -1);\n for (let i = 0; i < keys.length; i++) {\n program.attributeData[keys[i]].location = i;\n gl.bindAttribLocation(webGLProgram, i, keys[i]);\n }\n gl.linkProgram(webGLProgram);\n }\n gl.deleteShader(glVertShader);\n gl.deleteShader(glFragShader);\n const uniformData = {};\n for (const i in program.uniformData) {\n const data = program.uniformData[i];\n uniformData[i] = {\n location: gl.getUniformLocation(webGLProgram, i),\n value: defaultValue(data.type, data.size)\n };\n }\n const glProgram = new GLProgram(webGLProgram, uniformData);\n return glProgram;\n}\n\nexport { generateProgram };\n//# sourceMappingURL=generateProgram.mjs.map\n","import './utils/index.mjs';\nimport { generateUniformBufferSync } from './utils/generateUniformBufferSync.mjs';\nimport { generateProgram } from './utils/generateProgram.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { unsafeEvalSupported } from './utils/unsafeEvalSupported.mjs';\nimport { generateUniformsSync } from './utils/generateUniformsSync.mjs';\n\nlet UID = 0;\nconst defaultSyncData = { textureCount: 0, uboCount: 0 };\nclass ShaderSystem {\n constructor(renderer) {\n this.destroyed = false;\n this.renderer = renderer;\n this.systemCheck();\n this.gl = null;\n this.shader = null;\n this.program = null;\n this.cache = {};\n this._uboCache = {};\n this.id = UID++;\n }\n systemCheck() {\n if (!unsafeEvalSupported()) {\n throw new Error(\"Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.\");\n }\n }\n contextChange(gl) {\n this.gl = gl;\n this.reset();\n }\n bind(shader, dontSync) {\n shader.disposeRunner.add(this);\n shader.uniforms.globals = this.renderer.globalUniforms;\n const program = shader.program;\n const glProgram = program.glPrograms[this.renderer.CONTEXT_UID] || this.generateProgram(shader);\n this.shader = shader;\n if (this.program !== program) {\n this.program = program;\n this.gl.useProgram(glProgram.program);\n }\n if (!dontSync) {\n defaultSyncData.textureCount = 0;\n defaultSyncData.uboCount = 0;\n this.syncUniformGroup(shader.uniformGroup, defaultSyncData);\n }\n return glProgram;\n }\n setUniforms(uniforms) {\n const shader = this.shader.program;\n const glProgram = shader.glPrograms[this.renderer.CONTEXT_UID];\n shader.syncUniforms(glProgram.uniformData, uniforms, this.renderer);\n }\n syncUniformGroup(group, syncData) {\n const glProgram = this.getGlProgram();\n if (!group.static || group.dirtyId !== glProgram.uniformDirtyGroups[group.id]) {\n glProgram.uniformDirtyGroups[group.id] = group.dirtyId;\n this.syncUniforms(group, glProgram, syncData);\n }\n }\n syncUniforms(group, glProgram, syncData) {\n const syncFunc = group.syncUniforms[this.shader.program.id] || this.createSyncGroups(group);\n syncFunc(glProgram.uniformData, group.uniforms, this.renderer, syncData);\n }\n createSyncGroups(group) {\n const id = this.getSignature(group, this.shader.program.uniformData, \"u\");\n if (!this.cache[id]) {\n this.cache[id] = generateUniformsSync(group, this.shader.program.uniformData);\n }\n group.syncUniforms[this.shader.program.id] = this.cache[id];\n return group.syncUniforms[this.shader.program.id];\n }\n syncUniformBufferGroup(group, name) {\n const glProgram = this.getGlProgram();\n if (!group.static || group.dirtyId !== 0 || !glProgram.uniformGroups[group.id]) {\n group.dirtyId = 0;\n const syncFunc = glProgram.uniformGroups[group.id] || this.createSyncBufferGroup(group, glProgram, name);\n group.buffer.update();\n syncFunc(glProgram.uniformData, group.uniforms, this.renderer, defaultSyncData, group.buffer);\n }\n this.renderer.buffer.bindBufferBase(group.buffer, glProgram.uniformBufferBindings[name]);\n }\n createSyncBufferGroup(group, glProgram, name) {\n const { gl } = this.renderer;\n this.renderer.buffer.bind(group.buffer);\n const uniformBlockIndex = this.gl.getUniformBlockIndex(glProgram.program, name);\n glProgram.uniformBufferBindings[name] = this.shader.uniformBindCount;\n gl.uniformBlockBinding(glProgram.program, uniformBlockIndex, this.shader.uniformBindCount);\n this.shader.uniformBindCount++;\n const id = this.getSignature(group, this.shader.program.uniformData, \"ubo\");\n let uboData = this._uboCache[id];\n if (!uboData) {\n uboData = this._uboCache[id] = generateUniformBufferSync(group, this.shader.program.uniformData);\n }\n if (group.autoManage) {\n const data = new Float32Array(uboData.size / 4);\n group.buffer.update(data);\n }\n glProgram.uniformGroups[group.id] = uboData.syncFunc;\n return glProgram.uniformGroups[group.id];\n }\n getSignature(group, uniformData, preFix) {\n const uniforms = group.uniforms;\n const strings = [`${preFix}-`];\n for (const i in uniforms) {\n strings.push(i);\n if (uniformData[i]) {\n strings.push(uniformData[i].type);\n }\n }\n return strings.join(\"-\");\n }\n getGlProgram() {\n if (this.shader) {\n return this.shader.program.glPrograms[this.renderer.CONTEXT_UID];\n }\n return null;\n }\n generateProgram(shader) {\n const gl = this.gl;\n const program = shader.program;\n const glProgram = generateProgram(gl, program);\n program.glPrograms[this.renderer.CONTEXT_UID] = glProgram;\n return glProgram;\n }\n reset() {\n this.program = null;\n this.shader = null;\n }\n disposeShader(shader) {\n if (this.shader === shader) {\n this.shader = null;\n }\n }\n destroy() {\n this.renderer = null;\n this.destroyed = true;\n }\n}\nShaderSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"shader\"\n};\nextensions.add(ShaderSystem);\n\nexport { ShaderSystem };\n//# sourceMappingURL=ShaderSystem.mjs.map\n","import { BLEND_MODES } from '@pixi/constants';\n\nfunction mapWebGLBlendModesToPixi(gl, array = []) {\n array[BLEND_MODES.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.ADD] = [gl.ONE, gl.ONE];\n array[BLEND_MODES.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SCREEN] = [gl.ONE, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.NONE] = [0, 0];\n array[BLEND_MODES.NORMAL_NPM] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.ADD_NPM] = [gl.SRC_ALPHA, gl.ONE, gl.ONE, gl.ONE];\n array[BLEND_MODES.SCREEN_NPM] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SRC_IN] = [gl.DST_ALPHA, gl.ZERO];\n array[BLEND_MODES.SRC_OUT] = [gl.ONE_MINUS_DST_ALPHA, gl.ZERO];\n array[BLEND_MODES.SRC_ATOP] = [gl.DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.DST_OVER] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE];\n array[BLEND_MODES.DST_IN] = [gl.ZERO, gl.SRC_ALPHA];\n array[BLEND_MODES.DST_OUT] = [gl.ZERO, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.DST_ATOP] = [gl.ONE_MINUS_DST_ALPHA, gl.SRC_ALPHA];\n array[BLEND_MODES.XOR] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SUBTRACT] = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.FUNC_REVERSE_SUBTRACT, gl.FUNC_ADD];\n return array;\n}\n\nexport { mapWebGLBlendModesToPixi };\n//# sourceMappingURL=mapWebGLBlendModesToPixi.mjs.map\n","import { mapWebGLBlendModesToPixi } from './utils/mapWebGLBlendModesToPixi.mjs';\nimport { State } from './State.mjs';\nimport { BLEND_MODES } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nconst BLEND = 0;\nconst OFFSET = 1;\nconst CULLING = 2;\nconst DEPTH_TEST = 3;\nconst WINDING = 4;\nconst DEPTH_MASK = 5;\nconst _StateSystem = class {\n constructor() {\n this.gl = null;\n this.stateId = 0;\n this.polygonOffset = 0;\n this.blendMode = BLEND_MODES.NONE;\n this._blendEq = false;\n this.map = [];\n this.map[BLEND] = this.setBlend;\n this.map[OFFSET] = this.setOffset;\n this.map[CULLING] = this.setCullFace;\n this.map[DEPTH_TEST] = this.setDepthTest;\n this.map[WINDING] = this.setFrontFace;\n this.map[DEPTH_MASK] = this.setDepthMask;\n this.checks = [];\n this.defaultState = new State();\n this.defaultState.blend = true;\n }\n contextChange(gl) {\n this.gl = gl;\n this.blendModes = mapWebGLBlendModesToPixi(gl);\n this.set(this.defaultState);\n this.reset();\n }\n set(state) {\n state = state || this.defaultState;\n if (this.stateId !== state.data) {\n let diff = this.stateId ^ state.data;\n let i = 0;\n while (diff) {\n if (diff & 1) {\n this.map[i].call(this, !!(state.data & 1 << i));\n }\n diff = diff >> 1;\n i++;\n }\n this.stateId = state.data;\n }\n for (let i = 0; i < this.checks.length; i++) {\n this.checks[i](this, state);\n }\n }\n forceState(state) {\n state = state || this.defaultState;\n for (let i = 0; i < this.map.length; i++) {\n this.map[i].call(this, !!(state.data & 1 << i));\n }\n for (let i = 0; i < this.checks.length; i++) {\n this.checks[i](this, state);\n }\n this.stateId = state.data;\n }\n setBlend(value) {\n this.updateCheck(_StateSystem.checkBlendMode, value);\n this.gl[value ? \"enable\" : \"disable\"](this.gl.BLEND);\n }\n setOffset(value) {\n this.updateCheck(_StateSystem.checkPolygonOffset, value);\n this.gl[value ? \"enable\" : \"disable\"](this.gl.POLYGON_OFFSET_FILL);\n }\n setDepthTest(value) {\n this.gl[value ? \"enable\" : \"disable\"](this.gl.DEPTH_TEST);\n }\n setDepthMask(value) {\n this.gl.depthMask(value);\n }\n setCullFace(value) {\n this.gl[value ? \"enable\" : \"disable\"](this.gl.CULL_FACE);\n }\n setFrontFace(value) {\n this.gl.frontFace(this.gl[value ? \"CW\" : \"CCW\"]);\n }\n setBlendMode(value) {\n if (value === this.blendMode) {\n return;\n }\n this.blendMode = value;\n const mode = this.blendModes[value];\n const gl = this.gl;\n if (mode.length === 2) {\n gl.blendFunc(mode[0], mode[1]);\n } else {\n gl.blendFuncSeparate(mode[0], mode[1], mode[2], mode[3]);\n }\n if (mode.length === 6) {\n this._blendEq = true;\n gl.blendEquationSeparate(mode[4], mode[5]);\n } else if (this._blendEq) {\n this._blendEq = false;\n gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD);\n }\n }\n setPolygonOffset(value, scale) {\n this.gl.polygonOffset(value, scale);\n }\n reset() {\n this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, false);\n this.forceState(this.defaultState);\n this._blendEq = true;\n this.blendMode = -1;\n this.setBlendMode(0);\n }\n updateCheck(func, value) {\n const index = this.checks.indexOf(func);\n if (value && index === -1) {\n this.checks.push(func);\n } else if (!value && index !== -1) {\n this.checks.splice(index, 1);\n }\n }\n static checkBlendMode(system, state) {\n system.setBlendMode(state.blendMode);\n }\n static checkPolygonOffset(system, state) {\n system.setPolygonOffset(1, state.polygonOffset);\n }\n destroy() {\n this.gl = null;\n }\n};\nlet StateSystem = _StateSystem;\nStateSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"state\"\n};\nextensions.add(StateSystem);\n\nexport { StateSystem };\n//# sourceMappingURL=StateSystem.mjs.map\n","import { GC_MODES } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass TextureGCSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.count = 0;\n this.checkCount = 0;\n this.maxIdle = settings.GC_MAX_IDLE;\n this.checkCountMax = settings.GC_MAX_CHECK_COUNT;\n this.mode = settings.GC_MODE;\n }\n postrender() {\n if (!this.renderer.objectRenderer.renderingToScreen) {\n return;\n }\n this.count++;\n if (this.mode === GC_MODES.MANUAL) {\n return;\n }\n this.checkCount++;\n if (this.checkCount > this.checkCountMax) {\n this.checkCount = 0;\n this.run();\n }\n }\n run() {\n const tm = this.renderer.texture;\n const managedTextures = tm.managedTextures;\n let wasRemoved = false;\n for (let i = 0; i < managedTextures.length; i++) {\n const texture = managedTextures[i];\n if (!texture.framebuffer && this.count - texture.touched > this.maxIdle) {\n tm.destroyTexture(texture, true);\n managedTextures[i] = null;\n wasRemoved = true;\n }\n }\n if (wasRemoved) {\n let j = 0;\n for (let i = 0; i < managedTextures.length; i++) {\n if (managedTextures[i] !== null) {\n managedTextures[j++] = managedTextures[i];\n }\n }\n managedTextures.length = j;\n }\n }\n unload(displayObject) {\n const tm = this.renderer.texture;\n const texture = displayObject._texture;\n if (texture && !texture.framebuffer) {\n tm.destroyTexture(texture);\n }\n for (let i = displayObject.children.length - 1; i >= 0; i--) {\n this.unload(displayObject.children[i]);\n }\n }\n destroy() {\n this.renderer = null;\n }\n}\nTextureGCSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"textureGC\"\n};\nextensions.add(TextureGCSystem);\n\nexport { TextureGCSystem };\n//# sourceMappingURL=TextureGCSystem.mjs.map\n","import { TYPES, FORMATS } from '@pixi/constants';\n\nfunction mapTypeAndFormatToInternalFormat(gl) {\n let table;\n if (\"WebGL2RenderingContext\" in globalThis && gl instanceof globalThis.WebGL2RenderingContext) {\n table = {\n [TYPES.UNSIGNED_BYTE]: {\n [FORMATS.RGBA]: gl.RGBA8,\n [FORMATS.RGB]: gl.RGB8,\n [FORMATS.RG]: gl.RG8,\n [FORMATS.RED]: gl.R8,\n [FORMATS.RGBA_INTEGER]: gl.RGBA8UI,\n [FORMATS.RGB_INTEGER]: gl.RGB8UI,\n [FORMATS.RG_INTEGER]: gl.RG8UI,\n [FORMATS.RED_INTEGER]: gl.R8UI,\n [FORMATS.ALPHA]: gl.ALPHA,\n [FORMATS.LUMINANCE]: gl.LUMINANCE,\n [FORMATS.LUMINANCE_ALPHA]: gl.LUMINANCE_ALPHA\n },\n [TYPES.BYTE]: {\n [FORMATS.RGBA]: gl.RGBA8_SNORM,\n [FORMATS.RGB]: gl.RGB8_SNORM,\n [FORMATS.RG]: gl.RG8_SNORM,\n [FORMATS.RED]: gl.R8_SNORM,\n [FORMATS.RGBA_INTEGER]: gl.RGBA8I,\n [FORMATS.RGB_INTEGER]: gl.RGB8I,\n [FORMATS.RG_INTEGER]: gl.RG8I,\n [FORMATS.RED_INTEGER]: gl.R8I\n },\n [TYPES.UNSIGNED_SHORT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA16UI,\n [FORMATS.RGB_INTEGER]: gl.RGB16UI,\n [FORMATS.RG_INTEGER]: gl.RG16UI,\n [FORMATS.RED_INTEGER]: gl.R16UI,\n [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT16\n },\n [TYPES.SHORT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA16I,\n [FORMATS.RGB_INTEGER]: gl.RGB16I,\n [FORMATS.RG_INTEGER]: gl.RG16I,\n [FORMATS.RED_INTEGER]: gl.R16I\n },\n [TYPES.UNSIGNED_INT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA32UI,\n [FORMATS.RGB_INTEGER]: gl.RGB32UI,\n [FORMATS.RG_INTEGER]: gl.RG32UI,\n [FORMATS.RED_INTEGER]: gl.R32UI,\n [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT24\n },\n [TYPES.INT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA32I,\n [FORMATS.RGB_INTEGER]: gl.RGB32I,\n [FORMATS.RG_INTEGER]: gl.RG32I,\n [FORMATS.RED_INTEGER]: gl.R32I\n },\n [TYPES.FLOAT]: {\n [FORMATS.RGBA]: gl.RGBA32F,\n [FORMATS.RGB]: gl.RGB32F,\n [FORMATS.RG]: gl.RG32F,\n [FORMATS.RED]: gl.R32F,\n [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT32F\n },\n [TYPES.HALF_FLOAT]: {\n [FORMATS.RGBA]: gl.RGBA16F,\n [FORMATS.RGB]: gl.RGB16F,\n [FORMATS.RG]: gl.RG16F,\n [FORMATS.RED]: gl.R16F\n },\n [TYPES.UNSIGNED_SHORT_5_6_5]: {\n [FORMATS.RGB]: gl.RGB565\n },\n [TYPES.UNSIGNED_SHORT_4_4_4_4]: {\n [FORMATS.RGBA]: gl.RGBA4\n },\n [TYPES.UNSIGNED_SHORT_5_5_5_1]: {\n [FORMATS.RGBA]: gl.RGB5_A1\n },\n [TYPES.UNSIGNED_INT_2_10_10_10_REV]: {\n [FORMATS.RGBA]: gl.RGB10_A2,\n [FORMATS.RGBA_INTEGER]: gl.RGB10_A2UI\n },\n [TYPES.UNSIGNED_INT_10F_11F_11F_REV]: {\n [FORMATS.RGB]: gl.R11F_G11F_B10F\n },\n [TYPES.UNSIGNED_INT_5_9_9_9_REV]: {\n [FORMATS.RGB]: gl.RGB9_E5\n },\n [TYPES.UNSIGNED_INT_24_8]: {\n [FORMATS.DEPTH_STENCIL]: gl.DEPTH24_STENCIL8\n },\n [TYPES.FLOAT_32_UNSIGNED_INT_24_8_REV]: {\n [FORMATS.DEPTH_STENCIL]: gl.DEPTH32F_STENCIL8\n }\n };\n } else {\n table = {\n [TYPES.UNSIGNED_BYTE]: {\n [FORMATS.RGBA]: gl.RGBA,\n [FORMATS.RGB]: gl.RGB,\n [FORMATS.ALPHA]: gl.ALPHA,\n [FORMATS.LUMINANCE]: gl.LUMINANCE,\n [FORMATS.LUMINANCE_ALPHA]: gl.LUMINANCE_ALPHA\n },\n [TYPES.UNSIGNED_SHORT_5_6_5]: {\n [FORMATS.RGB]: gl.RGB\n },\n [TYPES.UNSIGNED_SHORT_4_4_4_4]: {\n [FORMATS.RGBA]: gl.RGBA\n },\n [TYPES.UNSIGNED_SHORT_5_5_5_1]: {\n [FORMATS.RGBA]: gl.RGBA\n }\n };\n }\n return table;\n}\n\nexport { mapTypeAndFormatToInternalFormat };\n//# sourceMappingURL=mapTypeAndFormatToInternalFormat.mjs.map\n","import { TYPES, FORMATS } from '@pixi/constants';\n\nclass GLTexture {\n constructor(texture) {\n this.texture = texture;\n this.width = -1;\n this.height = -1;\n this.dirtyId = -1;\n this.dirtyStyleId = -1;\n this.mipmap = false;\n this.wrapMode = 33071;\n this.type = TYPES.UNSIGNED_BYTE;\n this.internalFormat = FORMATS.RGBA;\n this.samplerType = 0;\n }\n}\n\nexport { GLTexture };\n//# sourceMappingURL=GLTexture.mjs.map\n","import { mapTypeAndFormatToInternalFormat } from './utils/mapTypeAndFormatToInternalFormat.mjs';\nimport { BaseTexture } from './BaseTexture.mjs';\nimport { GLTexture } from './GLTexture.mjs';\nimport { removeItems } from '@pixi/utils';\nimport { SAMPLER_TYPES, TYPES, MIPMAP_MODES, WRAP_MODES, SCALE_MODES } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass TextureSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.boundTextures = [];\n this.currentLocation = -1;\n this.managedTextures = [];\n this._unknownBoundTextures = false;\n this.unknownTexture = new BaseTexture();\n this.hasIntegerTextures = false;\n }\n contextChange() {\n const gl = this.gl = this.renderer.gl;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n this.webGLVersion = this.renderer.context.webGLVersion;\n this.internalFormats = mapTypeAndFormatToInternalFormat(gl);\n const maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n this.boundTextures.length = maxTextures;\n for (let i = 0; i < maxTextures; i++) {\n this.boundTextures[i] = null;\n }\n this.emptyTextures = {};\n const emptyTexture2D = new GLTexture(gl.createTexture());\n gl.bindTexture(gl.TEXTURE_2D, emptyTexture2D.texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array(4));\n this.emptyTextures[gl.TEXTURE_2D] = emptyTexture2D;\n this.emptyTextures[gl.TEXTURE_CUBE_MAP] = new GLTexture(gl.createTexture());\n gl.bindTexture(gl.TEXTURE_CUBE_MAP, this.emptyTextures[gl.TEXTURE_CUBE_MAP].texture);\n for (let i = 0; i < 6; i++) {\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n }\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n for (let i = 0; i < this.boundTextures.length; i++) {\n this.bind(null, i);\n }\n }\n bind(texture, location = 0) {\n const { gl } = this;\n texture = texture?.castToBaseTexture();\n if (texture?.valid && !texture.parentTextureArray) {\n texture.touched = this.renderer.textureGC.count;\n const glTexture = texture._glTextures[this.CONTEXT_UID] || this.initTexture(texture);\n if (this.boundTextures[location] !== texture) {\n if (this.currentLocation !== location) {\n this.currentLocation = location;\n gl.activeTexture(gl.TEXTURE0 + location);\n }\n gl.bindTexture(texture.target, glTexture.texture);\n }\n if (glTexture.dirtyId !== texture.dirtyId) {\n if (this.currentLocation !== location) {\n this.currentLocation = location;\n gl.activeTexture(gl.TEXTURE0 + location);\n }\n this.updateTexture(texture);\n } else if (glTexture.dirtyStyleId !== texture.dirtyStyleId) {\n this.updateTextureStyle(texture);\n }\n this.boundTextures[location] = texture;\n } else {\n if (this.currentLocation !== location) {\n this.currentLocation = location;\n gl.activeTexture(gl.TEXTURE0 + location);\n }\n gl.bindTexture(gl.TEXTURE_2D, this.emptyTextures[gl.TEXTURE_2D].texture);\n this.boundTextures[location] = null;\n }\n }\n reset() {\n this._unknownBoundTextures = true;\n this.hasIntegerTextures = false;\n this.currentLocation = -1;\n for (let i = 0; i < this.boundTextures.length; i++) {\n this.boundTextures[i] = this.unknownTexture;\n }\n }\n unbind(texture) {\n const { gl, boundTextures } = this;\n if (this._unknownBoundTextures) {\n this._unknownBoundTextures = false;\n for (let i = 0; i < boundTextures.length; i++) {\n if (boundTextures[i] === this.unknownTexture) {\n this.bind(null, i);\n }\n }\n }\n for (let i = 0; i < boundTextures.length; i++) {\n if (boundTextures[i] === texture) {\n if (this.currentLocation !== i) {\n gl.activeTexture(gl.TEXTURE0 + i);\n this.currentLocation = i;\n }\n gl.bindTexture(texture.target, this.emptyTextures[texture.target].texture);\n boundTextures[i] = null;\n }\n }\n }\n ensureSamplerType(maxTextures) {\n const { boundTextures, hasIntegerTextures, CONTEXT_UID } = this;\n if (!hasIntegerTextures) {\n return;\n }\n for (let i = maxTextures - 1; i >= 0; --i) {\n const tex = boundTextures[i];\n if (tex) {\n const glTexture = tex._glTextures[CONTEXT_UID];\n if (glTexture.samplerType !== SAMPLER_TYPES.FLOAT) {\n this.renderer.texture.unbind(tex);\n }\n }\n }\n }\n initTexture(texture) {\n const glTexture = new GLTexture(this.gl.createTexture());\n glTexture.dirtyId = -1;\n texture._glTextures[this.CONTEXT_UID] = glTexture;\n this.managedTextures.push(texture);\n texture.on(\"dispose\", this.destroyTexture, this);\n return glTexture;\n }\n initTextureType(texture, glTexture) {\n glTexture.internalFormat = this.internalFormats[texture.type]?.[texture.format] ?? texture.format;\n if (this.webGLVersion === 2 && texture.type === TYPES.HALF_FLOAT) {\n glTexture.type = this.gl.HALF_FLOAT;\n } else {\n glTexture.type = texture.type;\n }\n }\n updateTexture(texture) {\n const glTexture = texture._glTextures[this.CONTEXT_UID];\n if (!glTexture) {\n return;\n }\n const renderer = this.renderer;\n this.initTextureType(texture, glTexture);\n if (texture.resource?.upload(renderer, texture, glTexture)) {\n if (glTexture.samplerType !== SAMPLER_TYPES.FLOAT) {\n this.hasIntegerTextures = true;\n }\n } else {\n const width = texture.realWidth;\n const height = texture.realHeight;\n const gl = renderer.gl;\n if (glTexture.width !== width || glTexture.height !== height || glTexture.dirtyId < 0) {\n glTexture.width = width;\n glTexture.height = height;\n gl.texImage2D(texture.target, 0, glTexture.internalFormat, width, height, 0, texture.format, glTexture.type, null);\n }\n }\n if (texture.dirtyStyleId !== glTexture.dirtyStyleId) {\n this.updateTextureStyle(texture);\n }\n glTexture.dirtyId = texture.dirtyId;\n }\n destroyTexture(texture, skipRemove) {\n const { gl } = this;\n texture = texture.castToBaseTexture();\n if (texture._glTextures[this.CONTEXT_UID]) {\n this.unbind(texture);\n gl.deleteTexture(texture._glTextures[this.CONTEXT_UID].texture);\n texture.off(\"dispose\", this.destroyTexture, this);\n delete texture._glTextures[this.CONTEXT_UID];\n if (!skipRemove) {\n const i = this.managedTextures.indexOf(texture);\n if (i !== -1) {\n removeItems(this.managedTextures, i, 1);\n }\n }\n }\n }\n updateTextureStyle(texture) {\n const glTexture = texture._glTextures[this.CONTEXT_UID];\n if (!glTexture) {\n return;\n }\n if ((texture.mipmap === MIPMAP_MODES.POW2 || this.webGLVersion !== 2) && !texture.isPowerOfTwo) {\n glTexture.mipmap = false;\n } else {\n glTexture.mipmap = texture.mipmap >= 1;\n }\n if (this.webGLVersion !== 2 && !texture.isPowerOfTwo) {\n glTexture.wrapMode = WRAP_MODES.CLAMP;\n } else {\n glTexture.wrapMode = texture.wrapMode;\n }\n if (texture.resource?.style(this.renderer, texture, glTexture)) {\n } else {\n this.setStyle(texture, glTexture);\n }\n glTexture.dirtyStyleId = texture.dirtyStyleId;\n }\n setStyle(texture, glTexture) {\n const gl = this.gl;\n if (glTexture.mipmap && texture.mipmap !== MIPMAP_MODES.ON_MANUAL) {\n gl.generateMipmap(texture.target);\n }\n gl.texParameteri(texture.target, gl.TEXTURE_WRAP_S, glTexture.wrapMode);\n gl.texParameteri(texture.target, gl.TEXTURE_WRAP_T, glTexture.wrapMode);\n if (glTexture.mipmap) {\n gl.texParameteri(texture.target, gl.TEXTURE_MIN_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR_MIPMAP_LINEAR : gl.NEAREST_MIPMAP_NEAREST);\n const anisotropicExt = this.renderer.context.extensions.anisotropicFiltering;\n if (anisotropicExt && texture.anisotropicLevel > 0 && texture.scaleMode === SCALE_MODES.LINEAR) {\n const level = Math.min(texture.anisotropicLevel, gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT));\n gl.texParameterf(texture.target, anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT, level);\n }\n } else {\n gl.texParameteri(texture.target, gl.TEXTURE_MIN_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR : gl.NEAREST);\n }\n gl.texParameteri(texture.target, gl.TEXTURE_MAG_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR : gl.NEAREST);\n }\n destroy() {\n this.renderer = null;\n }\n}\nTextureSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"texture\"\n};\nextensions.add(TextureSystem);\n\nexport { TextureSystem };\n//# sourceMappingURL=TextureSystem.mjs.map\n","import { Transform, Matrix } from '@pixi/math';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { RenderTexture } from './RenderTexture.mjs';\n\nconst tempTransform = new Transform();\nclass GenerateTextureSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this._tempMatrix = new Matrix();\n }\n generateTexture(displayObject, options) {\n const { region: manualRegion, ...textureOptions } = options || {};\n const region = manualRegion || displayObject.getLocalBounds(null, true);\n if (region.width === 0)\n region.width = 1;\n if (region.height === 0)\n region.height = 1;\n const renderTexture = RenderTexture.create({\n width: region.width,\n height: region.height,\n ...textureOptions\n });\n this._tempMatrix.tx = -region.x;\n this._tempMatrix.ty = -region.y;\n const transform = displayObject.transform;\n displayObject.transform = tempTransform;\n this.renderer.render(displayObject, {\n renderTexture,\n transform: this._tempMatrix,\n skipUpdateTransform: !!displayObject.parent,\n blit: true\n });\n displayObject.transform = transform;\n return renderTexture;\n }\n destroy() {\n }\n}\nGenerateTextureSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"textureGenerator\"\n};\nextensions.add(GenerateTextureSystem);\n\nexport { GenerateTextureSystem };\n//# sourceMappingURL=GenerateTextureSystem.mjs.map\n","import { string2hex, hex2string, hex2rgb } from '@pixi/utils';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass BackgroundSystem {\n constructor() {\n this.clearBeforeRender = true;\n this._backgroundColor = 0;\n this._backgroundColorRgba = [0, 0, 0, 1];\n this._backgroundColorString = \"#000000\";\n this.color = this._backgroundColor;\n this.alpha = 1;\n }\n init(options) {\n this.clearBeforeRender = options.clearBeforeRender;\n if (options.color) {\n this.color = typeof options.color === \"string\" ? string2hex(options.color) : options.color;\n }\n this.alpha = options.alpha;\n }\n get color() {\n return this._backgroundColor;\n }\n set color(value) {\n this._backgroundColor = value;\n this._backgroundColorString = hex2string(value);\n hex2rgb(value, this._backgroundColorRgba);\n }\n get alpha() {\n return this._backgroundColorRgba[3];\n }\n set alpha(value) {\n this._backgroundColorRgba[3] = value;\n }\n get colorRgba() {\n return this._backgroundColorRgba;\n }\n get colorString() {\n return this._backgroundColorString;\n }\n destroy() {\n }\n}\nBackgroundSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"background\"\n};\nextensions.add(BackgroundSystem);\n\nexport { BackgroundSystem };\n//# sourceMappingURL=BackgroundSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\nimport { Rectangle } from '@pixi/math';\nimport { settings } from '@pixi/settings';\n\nclass ViewSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n init(options) {\n this.screen = new Rectangle(0, 0, options.width, options.height);\n this.element = options.view || settings.ADAPTER.createCanvas();\n this.resolution = options.resolution || settings.RESOLUTION;\n this.autoDensity = !!options.autoDensity;\n }\n resizeView(desiredScreenWidth, desiredScreenHeight) {\n this.element.width = Math.round(desiredScreenWidth * this.resolution);\n this.element.height = Math.round(desiredScreenHeight * this.resolution);\n const screenWidth = this.element.width / this.resolution;\n const screenHeight = this.element.height / this.resolution;\n this.screen.width = screenWidth;\n this.screen.height = screenHeight;\n if (this.autoDensity) {\n this.element.style.width = `${screenWidth}px`;\n this.element.style.height = `${screenHeight}px`;\n }\n this.renderer.emit(\"resize\", screenWidth, screenHeight);\n this.renderer.runners.resize.emit(this.screen.width, this.screen.height);\n }\n destroy(removeView) {\n if (removeView) {\n this.element.parentNode?.removeChild(this.element);\n }\n this.renderer = null;\n this.element = null;\n this.screen = null;\n }\n}\nViewSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"_view\"\n};\nextensions.add(ViewSystem);\n\nexport { ViewSystem };\n//# sourceMappingURL=ViewSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\n\nclass PluginSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.plugins = {};\n }\n init(staticMap) {\n for (const o in staticMap) {\n this.plugins[o] = new staticMap[o](this.renderer);\n }\n }\n destroy() {\n for (const o in this.plugins) {\n this.plugins[o].destroy();\n this.plugins[o] = null;\n }\n }\n}\nPluginSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"_plugin\"\n};\nextensions.add(PluginSystem);\n\nexport { PluginSystem };\n//# sourceMappingURL=PluginSystem.mjs.map\n","import { Runner } from '@pixi/runner';\nimport { EventEmitter } from '@pixi/utils';\n\nclass SystemManager extends EventEmitter {\n constructor() {\n super(...arguments);\n this.runners = {};\n this._systemsHash = {};\n }\n setup(config) {\n this.addRunners(...config.runners);\n const priority = (config.priority ?? []).filter((key) => config.systems[key]);\n const orderByPriority = [\n ...priority,\n ...Object.keys(config.systems).filter((key) => !priority.includes(key))\n ];\n for (const i of orderByPriority) {\n this.addSystem(config.systems[i], i);\n }\n }\n addRunners(...runnerIds) {\n runnerIds.forEach((runnerId) => {\n this.runners[runnerId] = new Runner(runnerId);\n });\n }\n addSystem(ClassRef, name) {\n const system = new ClassRef(this);\n if (this[name]) {\n throw new Error(`Whoops! The name \"${name}\" is already in use`);\n }\n this[name] = system;\n this._systemsHash[name] = system;\n for (const i in this.runners) {\n this.runners[i].add(system);\n }\n return this;\n }\n emitWithCustomOptions(runner, options) {\n const systemHashKeys = Object.keys(this._systemsHash);\n runner.items.forEach((system) => {\n const systemName = systemHashKeys.find((systemId) => this._systemsHash[systemId] === system);\n system[runner.name](options[systemName]);\n });\n }\n destroy() {\n Object.values(this.runners).forEach((runner) => {\n runner.destroy();\n });\n this._systemsHash = {};\n }\n}\n\nexport { SystemManager };\n//# sourceMappingURL=SystemManager.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\n\nclass StartupSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n run(options) {\n const renderer = this.renderer;\n renderer.emitWithCustomOptions(renderer.runners.init, options);\n if (options.hello) {\n console.log(`PixiJS ${\"7.0.2\"} - ${renderer.rendererLogId} - https://pixijs.com`);\n }\n renderer.resize(this.renderer.screen.width, this.renderer.screen.height);\n }\n destroy() {\n }\n}\nStartupSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"startup\"\n};\nextensions.add(StartupSystem);\n\nexport { StartupSystem };\n//# sourceMappingURL=StartupSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\n\nclass TransformFeedbackSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n contextChange() {\n this.gl = this.renderer.gl;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n }\n bind(transformFeedback) {\n const { gl, CONTEXT_UID } = this;\n const glTransformFeedback = transformFeedback._glTransformFeedbacks[CONTEXT_UID] || this.createGLTransformFeedback(transformFeedback);\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, glTransformFeedback);\n }\n unbind() {\n const { gl } = this;\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);\n }\n beginTransformFeedback(drawMode, shader) {\n const { gl, renderer } = this;\n if (shader) {\n renderer.shader.bind(shader);\n }\n gl.beginTransformFeedback(drawMode);\n }\n endTransformFeedback() {\n const { gl } = this;\n gl.endTransformFeedback();\n }\n createGLTransformFeedback(tf) {\n const { gl, renderer, CONTEXT_UID } = this;\n const glTransformFeedback = gl.createTransformFeedback();\n tf._glTransformFeedbacks[CONTEXT_UID] = glTransformFeedback;\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, glTransformFeedback);\n for (let i = 0; i < tf.buffers.length; i++) {\n const buffer = tf.buffers[i];\n if (!buffer)\n continue;\n renderer.buffer.update(buffer);\n buffer._glBuffers[CONTEXT_UID].refCount++;\n gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, i, buffer._glBuffers[CONTEXT_UID].buffer || null);\n }\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);\n tf.disposeRunner.add(this);\n return glTransformFeedback;\n }\n disposeTransformFeedback(tf, contextLost) {\n const glTF = tf._glTransformFeedbacks[this.CONTEXT_UID];\n const gl = this.gl;\n tf.disposeRunner.remove(this);\n const bufferSystem = this.renderer.buffer;\n if (bufferSystem) {\n for (let i = 0; i < tf.buffers.length; i++) {\n const buffer = tf.buffers[i];\n if (!buffer)\n continue;\n const buf = buffer._glBuffers[this.CONTEXT_UID];\n if (buf) {\n buf.refCount--;\n if (buf.refCount === 0 && !contextLost) {\n bufferSystem.dispose(buffer, contextLost);\n }\n }\n }\n }\n if (!glTF) {\n return;\n }\n if (!contextLost) {\n gl.deleteTransformFeedback(glTF);\n }\n delete tf._glTransformFeedbacks[this.CONTEXT_UID];\n }\n destroy() {\n this.renderer = null;\n }\n}\nTransformFeedbackSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"transformFeedback\"\n};\nextensions.add(TransformFeedbackSystem);\n\nexport { TransformFeedbackSystem };\n//# sourceMappingURL=TransformFeedbackSystem.mjs.map\n","import { extensions, ExtensionType } from '@pixi/extensions';\n\nconst renderers = [];\nextensions.handleByList(ExtensionType.Renderer, renderers);\nfunction autoDetectRenderer(options) {\n for (const RendererType of renderers) {\n if (RendererType.test(options)) {\n return new RendererType(options);\n }\n }\n throw new Error(\"Unable to auto-detect a suitable renderer.\");\n}\n\nexport { autoDetectRenderer };\n//# sourceMappingURL=autoDetectRenderer.mjs.map\n","var $defaultVertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n}\";\n\nexport { $defaultVertex as default };\n//# sourceMappingURL=default.mjs.map\n","var $defaultFilterVertex = \"attribute vec2 aVertexPosition;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform vec4 inputSize;\\nuniform vec4 outputFrame;\\n\\nvec4 filterVertexPosition( void )\\n{\\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\\n\\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\\n}\\n\\nvec2 filterTextureCoord( void )\\n{\\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\\n}\\n\\nvoid main(void)\\n{\\n gl_Position = filterVertexPosition();\\n vTextureCoord = filterTextureCoord();\\n}\\n\";\n\nexport { $defaultFilterVertex as default };\n//# sourceMappingURL=defaultFilter.mjs.map\n","import $defaultVertex from './default.mjs';\nimport $defaultFilterVertex from './defaultFilter.mjs';\n\nconst defaultVertex = $defaultVertex;\nconst defaultFilterVertex = $defaultFilterVertex;\n\nexport { defaultFilterVertex, defaultVertex };\n//# sourceMappingURL=index.mjs.map\n","import { isWebGLSupported } from '@pixi/utils';\nimport { UniformGroup } from './shader/UniformGroup.mjs';\nimport { Matrix } from '@pixi/math';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { settings } from '@pixi/settings';\nimport { SystemManager } from './system/SystemManager.mjs';\n\nconst _Renderer = class extends SystemManager {\n constructor(options) {\n super();\n options = Object.assign({}, settings.RENDER_OPTIONS, options);\n this.gl = null;\n this.CONTEXT_UID = 0;\n this.globalUniforms = new UniformGroup({\n projectionMatrix: new Matrix()\n }, true);\n const systemConfig = {\n runners: [\"init\", \"destroy\", \"contextChange\", \"reset\", \"update\", \"postrender\", \"prerender\", \"resize\"],\n systems: _Renderer.__systems,\n priority: [\n \"_view\",\n \"textureGenerator\",\n \"background\",\n \"_plugin\",\n \"startup\",\n \"context\",\n \"state\",\n \"texture\",\n \"buffer\",\n \"geometry\",\n \"framebuffer\",\n \"transformFeedback\",\n \"mask\",\n \"scissor\",\n \"stencil\",\n \"projection\",\n \"textureGC\",\n \"filter\",\n \"renderTexture\",\n \"batch\",\n \"objectRenderer\",\n \"_multisample\"\n ]\n };\n this.setup(systemConfig);\n const startupOptions = {\n hello: options.hello,\n _plugin: _Renderer.__plugins,\n background: {\n alpha: options.backgroundAlpha,\n color: options.background ?? options.backgroundColor,\n clearBeforeRender: options.clearBeforeRender\n },\n _view: {\n height: options.height,\n width: options.width,\n autoDensity: options.autoDensity,\n resolution: options.resolution,\n view: options.view\n },\n context: {\n antialias: options.antialias,\n context: options.context,\n powerPreference: options.powerPreference,\n premultipliedAlpha: options.premultipliedAlpha ?? (options.useContextAlpha && options.useContextAlpha !== \"notMultiplied\"),\n preserveDrawingBuffer: options.preserveDrawingBuffer\n }\n };\n this.startup.run(startupOptions);\n }\n static test(options) {\n if (options?.forceCanvas) {\n return false;\n }\n return isWebGLSupported();\n }\n render(displayObject, options) {\n this.objectRenderer.render(displayObject, options);\n }\n resize(desiredScreenWidth, desiredScreenHeight) {\n this._view.resizeView(desiredScreenWidth, desiredScreenHeight);\n }\n reset() {\n this.runners.reset.emit();\n return this;\n }\n clear() {\n this.renderTexture.bind();\n this.renderTexture.clear();\n }\n destroy(removeView = false) {\n this.runners.destroy.items.reverse();\n this.emitWithCustomOptions(this.runners.destroy, {\n _view: removeView\n });\n super.destroy();\n }\n get plugins() {\n return this._plugin.plugins;\n }\n get multisample() {\n return this._multisample.multisample;\n }\n get width() {\n return this._view.element.width;\n }\n get height() {\n return this._view.element.height;\n }\n get resolution() {\n return this._view.resolution;\n }\n get autoDensity() {\n return this._view.autoDensity;\n }\n get view() {\n return this._view.element;\n }\n get screen() {\n return this._view.screen;\n }\n get lastObjectRendered() {\n return this.objectRenderer.lastObjectRendered;\n }\n get renderingToScreen() {\n return this.objectRenderer.renderingToScreen;\n }\n get rendererLogId() {\n return `WebGL ${this.context.webGLVersion}`;\n }\n get clearBeforeRender() {\n return this.background.clearBeforeRender;\n }\n get useContextAlpha() {\n return this.context.useContextAlpha;\n }\n get preserveDrawingBuffer() {\n return this.context.preserveDrawingBuffer;\n }\n get backgroundColor() {\n return this.background.color;\n }\n set backgroundColor(value) {\n this.background.color = value;\n }\n get backgroundAlpha() {\n return this.background.color;\n }\n set backgroundAlpha(value) {\n this.background.alpha = value;\n }\n get powerPreference() {\n return this.context.powerPreference;\n }\n generateTexture(displayObject, options) {\n return this.textureGenerator.generateTexture(displayObject, options);\n }\n};\nlet Renderer = _Renderer;\nRenderer.extension = {\n type: ExtensionType.Renderer,\n priority: 1\n};\nRenderer.__plugins = {};\nRenderer.__systems = {};\nextensions.handleByMap(ExtensionType.RendererPlugin, Renderer.__plugins);\nextensions.handleByMap(ExtensionType.RendererSystem, Renderer.__systems);\nextensions.add(Renderer);\n\nexport { Renderer };\n//# sourceMappingURL=Renderer.mjs.map\n","import { DRAW_MODES } from '@pixi/constants';\n\nclass BatchDrawCall {\n constructor() {\n this.texArray = null;\n this.blend = 0;\n this.type = DRAW_MODES.TRIANGLES;\n this.start = 0;\n this.size = 0;\n this.data = null;\n }\n}\n\nexport { BatchDrawCall };\n//# sourceMappingURL=BatchDrawCall.mjs.map\n","class BatchTextureArray {\n constructor() {\n this.elements = [];\n this.ids = [];\n this.count = 0;\n }\n clear() {\n for (let i = 0; i < this.count; i++) {\n this.elements[i] = null;\n }\n this.count = 0;\n }\n}\n\nexport { BatchTextureArray };\n//# sourceMappingURL=BatchTextureArray.mjs.map\n","class ViewableBuffer {\n constructor(sizeOrBuffer) {\n if (typeof sizeOrBuffer === \"number\") {\n this.rawBinaryData = new ArrayBuffer(sizeOrBuffer);\n } else if (sizeOrBuffer instanceof Uint8Array) {\n this.rawBinaryData = sizeOrBuffer.buffer;\n } else {\n this.rawBinaryData = sizeOrBuffer;\n }\n this.uint32View = new Uint32Array(this.rawBinaryData);\n this.float32View = new Float32Array(this.rawBinaryData);\n }\n get int8View() {\n if (!this._int8View) {\n this._int8View = new Int8Array(this.rawBinaryData);\n }\n return this._int8View;\n }\n get uint8View() {\n if (!this._uint8View) {\n this._uint8View = new Uint8Array(this.rawBinaryData);\n }\n return this._uint8View;\n }\n get int16View() {\n if (!this._int16View) {\n this._int16View = new Int16Array(this.rawBinaryData);\n }\n return this._int16View;\n }\n get uint16View() {\n if (!this._uint16View) {\n this._uint16View = new Uint16Array(this.rawBinaryData);\n }\n return this._uint16View;\n }\n get int32View() {\n if (!this._int32View) {\n this._int32View = new Int32Array(this.rawBinaryData);\n }\n return this._int32View;\n }\n view(type) {\n return this[`${type}View`];\n }\n destroy() {\n this.rawBinaryData = null;\n this._int8View = null;\n this._uint8View = null;\n this._int16View = null;\n this._uint16View = null;\n this._int32View = null;\n this.uint32View = null;\n this.float32View = null;\n }\n static sizeOf(type) {\n switch (type) {\n case \"int8\":\n case \"uint8\":\n return 1;\n case \"int16\":\n case \"uint16\":\n return 2;\n case \"int32\":\n case \"uint32\":\n case \"float32\":\n return 4;\n default:\n throw new Error(`${type} isn't a valid view type`);\n }\n }\n}\n\nexport { ViewableBuffer };\n//# sourceMappingURL=ViewableBuffer.mjs.map\n","import { Shader } from '../shader/Shader.mjs';\nimport { Program } from '../shader/Program.mjs';\nimport { UniformGroup } from '../shader/UniformGroup.mjs';\nimport { Matrix } from '@pixi/math';\n\nclass BatchShaderGenerator {\n constructor(vertexSrc, fragTemplate) {\n this.vertexSrc = vertexSrc;\n this.fragTemplate = fragTemplate;\n this.programCache = {};\n this.defaultGroupCache = {};\n if (!fragTemplate.includes(\"%count%\")) {\n throw new Error('Fragment template must contain \"%count%\".');\n }\n if (!fragTemplate.includes(\"%forloop%\")) {\n throw new Error('Fragment template must contain \"%forloop%\".');\n }\n }\n generateShader(maxTextures) {\n if (!this.programCache[maxTextures]) {\n const sampleValues = new Int32Array(maxTextures);\n for (let i = 0; i < maxTextures; i++) {\n sampleValues[i] = i;\n }\n this.defaultGroupCache[maxTextures] = UniformGroup.from({ uSamplers: sampleValues }, true);\n let fragmentSrc = this.fragTemplate;\n fragmentSrc = fragmentSrc.replace(/%count%/gi, `${maxTextures}`);\n fragmentSrc = fragmentSrc.replace(/%forloop%/gi, this.generateSampleSrc(maxTextures));\n this.programCache[maxTextures] = new Program(this.vertexSrc, fragmentSrc);\n }\n const uniforms = {\n tint: new Float32Array([1, 1, 1, 1]),\n translationMatrix: new Matrix(),\n default: this.defaultGroupCache[maxTextures]\n };\n return new Shader(this.programCache[maxTextures], uniforms);\n }\n generateSampleSrc(maxTextures) {\n let src = \"\";\n src += \"\\n\";\n src += \"\\n\";\n for (let i = 0; i < maxTextures; i++) {\n if (i > 0) {\n src += \"\\nelse \";\n }\n if (i < maxTextures - 1) {\n src += `if(vTextureId < ${i}.5)`;\n }\n src += \"\\n{\";\n src += `\n\tcolor = texture2D(uSamplers[${i}], vTextureCoord);`;\n src += \"\\n}\";\n }\n src += \"\\n\";\n src += \"\\n\";\n return src;\n }\n}\n\nexport { BatchShaderGenerator };\n//# sourceMappingURL=BatchShaderGenerator.mjs.map\n","import { TYPES } from '@pixi/constants';\nimport { Geometry } from '../geometry/Geometry.mjs';\nimport { Buffer } from '../geometry/Buffer.mjs';\n\nclass BatchGeometry extends Geometry {\n constructor(_static = false) {\n super();\n this._buffer = new Buffer(null, _static, false);\n this._indexBuffer = new Buffer(null, _static, true);\n this.addAttribute(\"aVertexPosition\", this._buffer, 2, false, TYPES.FLOAT).addAttribute(\"aTextureCoord\", this._buffer, 2, false, TYPES.FLOAT).addAttribute(\"aColor\", this._buffer, 4, true, TYPES.UNSIGNED_BYTE).addAttribute(\"aTextureId\", this._buffer, 1, true, TYPES.FLOAT).addIndex(this._indexBuffer);\n }\n}\n\nexport { BatchGeometry };\n//# sourceMappingURL=BatchGeometry.mjs.map\n","var defaultVertex = \"precision highp float;\\nattribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\nattribute float aTextureId;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 translationMatrix;\\nuniform vec4 tint;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying float vTextureId;\\n\\nvoid main(void){\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = aTextureCoord;\\n vTextureId = aTextureId;\\n vColor = aColor * tint;\\n}\\n\";\n\nexport { defaultVertex as default };\n//# sourceMappingURL=texture.mjs.map\n","var defaultFragment = \"varying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying float vTextureId;\\nuniform sampler2D uSamplers[%count%];\\n\\nvoid main(void){\\n vec4 color;\\n %forloop%\\n gl_FragColor = color * vColor;\\n}\\n\";\n\nexport { defaultFragment as default };\n//# sourceMappingURL=texture2.mjs.map\n","import { BatchDrawCall } from './BatchDrawCall.mjs';\nimport { BatchTextureArray } from './BatchTextureArray.mjs';\nimport { BaseTexture } from '../textures/BaseTexture.mjs';\nimport { ObjectRenderer } from './ObjectRenderer.mjs';\nimport { State } from '../state/State.mjs';\nimport { ViewableBuffer } from '../geometry/ViewableBuffer.mjs';\nimport { BatchShaderGenerator } from './BatchShaderGenerator.mjs';\nimport { checkMaxIfStatementsInShader } from '../shader/utils/checkMaxIfStatementsInShader.mjs';\nimport { settings } from '@pixi/settings';\nimport { premultiplyBlendMode, nextPow2, log2, premultiplyTint } from '@pixi/utils';\nimport { ENV } from '@pixi/constants';\nimport { BatchGeometry } from './BatchGeometry.mjs';\nimport defaultVertex from './texture.mjs';\nimport defaultFragment from './texture2.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nconst _BatchRenderer = class extends ObjectRenderer {\n constructor(renderer) {\n super(renderer);\n this.setShaderGenerator();\n this.geometryClass = BatchGeometry;\n this.vertexSize = 6;\n this.state = State.for2d();\n this.size = settings.SPRITE_BATCH_SIZE * 4;\n this._vertexCount = 0;\n this._indexCount = 0;\n this._bufferedElements = [];\n this._bufferedTextures = [];\n this._bufferSize = 0;\n this._shader = null;\n this._packedGeometries = [];\n this._packedGeometryPoolSize = 2;\n this._flushId = 0;\n this._aBuffers = {};\n this._iBuffers = {};\n this.MAX_TEXTURES = 1;\n this.renderer.on(\"prerender\", this.onPrerender, this);\n renderer.runners.contextChange.add(this);\n this._dcIndex = 0;\n this._aIndex = 0;\n this._iIndex = 0;\n this._attributeBuffer = null;\n this._indexBuffer = null;\n this._tempBoundTextures = [];\n }\n static get defaultVertexSrc() {\n return defaultVertex;\n }\n static get defaultFragmentTemplate() {\n return defaultFragment;\n }\n setShaderGenerator({\n vertex = _BatchRenderer.defaultVertexSrc,\n fragment = _BatchRenderer.defaultFragmentTemplate\n } = {}) {\n this.shaderGenerator = new BatchShaderGenerator(vertex, fragment);\n }\n contextChange() {\n const gl = this.renderer.gl;\n if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) {\n this.MAX_TEXTURES = 1;\n } else {\n this.MAX_TEXTURES = Math.min(gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS), settings.SPRITE_MAX_TEXTURES);\n this.MAX_TEXTURES = checkMaxIfStatementsInShader(this.MAX_TEXTURES, gl);\n }\n this._shader = this.shaderGenerator.generateShader(this.MAX_TEXTURES);\n for (let i = 0; i < this._packedGeometryPoolSize; i++) {\n this._packedGeometries[i] = new this.geometryClass();\n }\n this.initFlushBuffers();\n }\n initFlushBuffers() {\n const {\n _drawCallPool,\n _textureArrayPool\n } = _BatchRenderer;\n const MAX_SPRITES = this.size / 4;\n const MAX_TA = Math.floor(MAX_SPRITES / this.MAX_TEXTURES) + 1;\n while (_drawCallPool.length < MAX_SPRITES) {\n _drawCallPool.push(new BatchDrawCall());\n }\n while (_textureArrayPool.length < MAX_TA) {\n _textureArrayPool.push(new BatchTextureArray());\n }\n for (let i = 0; i < this.MAX_TEXTURES; i++) {\n this._tempBoundTextures[i] = null;\n }\n }\n onPrerender() {\n this._flushId = 0;\n }\n render(element) {\n if (!element._texture.valid) {\n return;\n }\n if (this._vertexCount + element.vertexData.length / 2 > this.size) {\n this.flush();\n }\n this._vertexCount += element.vertexData.length / 2;\n this._indexCount += element.indices.length;\n this._bufferedTextures[this._bufferSize] = element._texture.baseTexture;\n this._bufferedElements[this._bufferSize++] = element;\n }\n buildTexturesAndDrawCalls() {\n const {\n _bufferedTextures: textures,\n MAX_TEXTURES\n } = this;\n const textureArrays = _BatchRenderer._textureArrayPool;\n const batch = this.renderer.batch;\n const boundTextures = this._tempBoundTextures;\n const touch = this.renderer.textureGC.count;\n let TICK = ++BaseTexture._globalBatch;\n let countTexArrays = 0;\n let texArray = textureArrays[0];\n let start = 0;\n batch.copyBoundTextures(boundTextures, MAX_TEXTURES);\n for (let i = 0; i < this._bufferSize; ++i) {\n const tex = textures[i];\n textures[i] = null;\n if (tex._batchEnabled === TICK) {\n continue;\n }\n if (texArray.count >= MAX_TEXTURES) {\n batch.boundArray(texArray, boundTextures, TICK, MAX_TEXTURES);\n this.buildDrawCalls(texArray, start, i);\n start = i;\n texArray = textureArrays[++countTexArrays];\n ++TICK;\n }\n tex._batchEnabled = TICK;\n tex.touched = touch;\n texArray.elements[texArray.count++] = tex;\n }\n if (texArray.count > 0) {\n batch.boundArray(texArray, boundTextures, TICK, MAX_TEXTURES);\n this.buildDrawCalls(texArray, start, this._bufferSize);\n ++countTexArrays;\n ++TICK;\n }\n for (let i = 0; i < boundTextures.length; i++) {\n boundTextures[i] = null;\n }\n BaseTexture._globalBatch = TICK;\n }\n buildDrawCalls(texArray, start, finish) {\n const {\n _bufferedElements: elements,\n _attributeBuffer,\n _indexBuffer,\n vertexSize\n } = this;\n const drawCalls = _BatchRenderer._drawCallPool;\n let dcIndex = this._dcIndex;\n let aIndex = this._aIndex;\n let iIndex = this._iIndex;\n let drawCall = drawCalls[dcIndex];\n drawCall.start = this._iIndex;\n drawCall.texArray = texArray;\n for (let i = start; i < finish; ++i) {\n const sprite = elements[i];\n const tex = sprite._texture.baseTexture;\n const spriteBlendMode = premultiplyBlendMode[tex.alphaMode ? 1 : 0][sprite.blendMode];\n elements[i] = null;\n if (start < i && drawCall.blend !== spriteBlendMode) {\n drawCall.size = iIndex - drawCall.start;\n start = i;\n drawCall = drawCalls[++dcIndex];\n drawCall.texArray = texArray;\n drawCall.start = iIndex;\n }\n this.packInterleavedGeometry(sprite, _attributeBuffer, _indexBuffer, aIndex, iIndex);\n aIndex += sprite.vertexData.length / 2 * vertexSize;\n iIndex += sprite.indices.length;\n drawCall.blend = spriteBlendMode;\n }\n if (start < finish) {\n drawCall.size = iIndex - drawCall.start;\n ++dcIndex;\n }\n this._dcIndex = dcIndex;\n this._aIndex = aIndex;\n this._iIndex = iIndex;\n }\n bindAndClearTexArray(texArray) {\n const textureSystem = this.renderer.texture;\n for (let j = 0; j < texArray.count; j++) {\n textureSystem.bind(texArray.elements[j], texArray.ids[j]);\n texArray.elements[j] = null;\n }\n texArray.count = 0;\n }\n updateGeometry() {\n const {\n _packedGeometries: packedGeometries,\n _attributeBuffer: attributeBuffer,\n _indexBuffer: indexBuffer\n } = this;\n if (!settings.CAN_UPLOAD_SAME_BUFFER) {\n if (this._packedGeometryPoolSize <= this._flushId) {\n this._packedGeometryPoolSize++;\n packedGeometries[this._flushId] = new this.geometryClass();\n }\n packedGeometries[this._flushId]._buffer.update(attributeBuffer.rawBinaryData);\n packedGeometries[this._flushId]._indexBuffer.update(indexBuffer);\n this.renderer.geometry.bind(packedGeometries[this._flushId]);\n this.renderer.geometry.updateBuffers();\n this._flushId++;\n } else {\n packedGeometries[this._flushId]._buffer.update(attributeBuffer.rawBinaryData);\n packedGeometries[this._flushId]._indexBuffer.update(indexBuffer);\n this.renderer.geometry.updateBuffers();\n }\n }\n drawBatches() {\n const dcCount = this._dcIndex;\n const { gl, state: stateSystem } = this.renderer;\n const drawCalls = _BatchRenderer._drawCallPool;\n let curTexArray = null;\n for (let i = 0; i < dcCount; i++) {\n const { texArray, type, size, start, blend } = drawCalls[i];\n if (curTexArray !== texArray) {\n curTexArray = texArray;\n this.bindAndClearTexArray(texArray);\n }\n this.state.blendMode = blend;\n stateSystem.set(this.state);\n gl.drawElements(type, size, gl.UNSIGNED_SHORT, start * 2);\n }\n }\n flush() {\n if (this._vertexCount === 0) {\n return;\n }\n this._attributeBuffer = this.getAttributeBuffer(this._vertexCount);\n this._indexBuffer = this.getIndexBuffer(this._indexCount);\n this._aIndex = 0;\n this._iIndex = 0;\n this._dcIndex = 0;\n this.buildTexturesAndDrawCalls();\n this.updateGeometry();\n this.drawBatches();\n this._bufferSize = 0;\n this._vertexCount = 0;\n this._indexCount = 0;\n }\n start() {\n this.renderer.state.set(this.state);\n this.renderer.texture.ensureSamplerType(this.MAX_TEXTURES);\n this.renderer.shader.bind(this._shader);\n if (settings.CAN_UPLOAD_SAME_BUFFER) {\n this.renderer.geometry.bind(this._packedGeometries[this._flushId]);\n }\n }\n stop() {\n this.flush();\n }\n destroy() {\n for (let i = 0; i < this._packedGeometryPoolSize; i++) {\n if (this._packedGeometries[i]) {\n this._packedGeometries[i].destroy();\n }\n }\n this.renderer.off(\"prerender\", this.onPrerender, this);\n this._aBuffers = null;\n this._iBuffers = null;\n this._packedGeometries = null;\n this._attributeBuffer = null;\n this._indexBuffer = null;\n if (this._shader) {\n this._shader.destroy();\n this._shader = null;\n }\n super.destroy();\n }\n getAttributeBuffer(size) {\n const roundedP2 = nextPow2(Math.ceil(size / 8));\n const roundedSizeIndex = log2(roundedP2);\n const roundedSize = roundedP2 * 8;\n if (this._aBuffers.length <= roundedSizeIndex) {\n this._iBuffers.length = roundedSizeIndex + 1;\n }\n let buffer = this._aBuffers[roundedSize];\n if (!buffer) {\n this._aBuffers[roundedSize] = buffer = new ViewableBuffer(roundedSize * this.vertexSize * 4);\n }\n return buffer;\n }\n getIndexBuffer(size) {\n const roundedP2 = nextPow2(Math.ceil(size / 12));\n const roundedSizeIndex = log2(roundedP2);\n const roundedSize = roundedP2 * 12;\n if (this._iBuffers.length <= roundedSizeIndex) {\n this._iBuffers.length = roundedSizeIndex + 1;\n }\n let buffer = this._iBuffers[roundedSizeIndex];\n if (!buffer) {\n this._iBuffers[roundedSizeIndex] = buffer = new Uint16Array(roundedSize);\n }\n return buffer;\n }\n packInterleavedGeometry(element, attributeBuffer, indexBuffer, aIndex, iIndex) {\n const {\n uint32View,\n float32View\n } = attributeBuffer;\n const packedVertices = aIndex / this.vertexSize;\n const uvs = element.uvs;\n const indicies = element.indices;\n const vertexData = element.vertexData;\n const textureId = element._texture.baseTexture._batchLocation;\n const alpha = Math.min(element.worldAlpha, 1);\n const argb = alpha < 1 && element._texture.baseTexture.alphaMode ? premultiplyTint(element._tintRGB, alpha) : element._tintRGB + (alpha * 255 << 24);\n for (let i = 0; i < vertexData.length; i += 2) {\n float32View[aIndex++] = vertexData[i];\n float32View[aIndex++] = vertexData[i + 1];\n float32View[aIndex++] = uvs[i];\n float32View[aIndex++] = uvs[i + 1];\n uint32View[aIndex++] = argb;\n float32View[aIndex++] = textureId;\n }\n for (let i = 0; i < indicies.length; i++) {\n indexBuffer[iIndex++] = packedVertices + indicies[i];\n }\n }\n};\nlet BatchRenderer = _BatchRenderer;\nBatchRenderer.extension = {\n name: \"batch\",\n type: ExtensionType.RendererPlugin\n};\nBatchRenderer._drawCallPool = [];\nBatchRenderer._textureArrayPool = [];\nextensions.add(BatchRenderer);\n\nexport { BatchRenderer };\n//# sourceMappingURL=BatchRenderer.mjs.map\n","import { Runner } from '@pixi/runner';\n\nclass TransformFeedback {\n constructor() {\n this._glTransformFeedbacks = {};\n this.buffers = [];\n this.disposeRunner = new Runner(\"disposeTransformFeedback\");\n }\n bindBuffer(index, buffer) {\n this.buffers[index] = buffer;\n }\n destroy() {\n this.disposeRunner.emit(this, false);\n }\n}\n\nexport { TransformFeedback };\n//# sourceMappingURL=TransformFeedback.mjs.map\n","class GLBuffer {\n constructor(buffer) {\n this.buffer = buffer || null;\n this.updateID = -1;\n this.byteLength = -1;\n this.refCount = 0;\n }\n}\n\nexport { GLBuffer };\n//# sourceMappingURL=GLBuffer.mjs.map\n","import { GLBuffer } from './GLBuffer.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass BufferSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.managedBuffers = {};\n this.boundBufferBases = {};\n }\n destroy() {\n this.renderer = null;\n }\n contextChange() {\n this.disposeAll(true);\n this.gl = this.renderer.gl;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n }\n bind(buffer) {\n const { gl, CONTEXT_UID } = this;\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n gl.bindBuffer(buffer.type, glBuffer.buffer);\n }\n unbind(type) {\n const { gl } = this;\n gl.bindBuffer(type, null);\n }\n bindBufferBase(buffer, index) {\n const { gl, CONTEXT_UID } = this;\n if (this.boundBufferBases[index] !== buffer) {\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n this.boundBufferBases[index] = buffer;\n gl.bindBufferBase(gl.UNIFORM_BUFFER, index, glBuffer.buffer);\n }\n }\n bindBufferRange(buffer, index, offset) {\n const { gl, CONTEXT_UID } = this;\n offset = offset || 0;\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n gl.bindBufferRange(gl.UNIFORM_BUFFER, index || 0, glBuffer.buffer, offset * 256, 256);\n }\n update(buffer) {\n const { gl, CONTEXT_UID } = this;\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n if (buffer._updateID === glBuffer.updateID) {\n return;\n }\n glBuffer.updateID = buffer._updateID;\n gl.bindBuffer(buffer.type, glBuffer.buffer);\n if (glBuffer.byteLength >= buffer.data.byteLength) {\n gl.bufferSubData(buffer.type, 0, buffer.data);\n } else {\n const drawType = buffer.static ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW;\n glBuffer.byteLength = buffer.data.byteLength;\n gl.bufferData(buffer.type, buffer.data, drawType);\n }\n }\n dispose(buffer, contextLost) {\n if (!this.managedBuffers[buffer.id]) {\n return;\n }\n delete this.managedBuffers[buffer.id];\n const glBuffer = buffer._glBuffers[this.CONTEXT_UID];\n const gl = this.gl;\n buffer.disposeRunner.remove(this);\n if (!glBuffer) {\n return;\n }\n if (!contextLost) {\n gl.deleteBuffer(glBuffer.buffer);\n }\n delete buffer._glBuffers[this.CONTEXT_UID];\n }\n disposeAll(contextLost) {\n const all = Object.keys(this.managedBuffers);\n for (let i = 0; i < all.length; i++) {\n this.dispose(this.managedBuffers[all[i]], contextLost);\n }\n }\n createGLBuffer(buffer) {\n const { CONTEXT_UID, gl } = this;\n buffer._glBuffers[CONTEXT_UID] = new GLBuffer(gl.createBuffer());\n this.managedBuffers[buffer.id] = buffer;\n buffer.disposeRunner.add(this);\n return buffer._glBuffers[CONTEXT_UID];\n }\n}\nBufferSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"buffer\"\n};\nextensions.add(BufferSystem);\n\nexport { BufferSystem };\n//# sourceMappingURL=BufferSystem.mjs.map\n","import { MSAA_QUALITY } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass MultisampleSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n contextChange(gl) {\n let samples;\n if (this.renderer.context.webGLVersion === 1) {\n const framebuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n samples = gl.getParameter(gl.SAMPLES);\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n } else {\n const framebuffer = gl.getParameter(gl.DRAW_FRAMEBUFFER_BINDING);\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\n samples = gl.getParameter(gl.SAMPLES);\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, framebuffer);\n }\n if (samples >= MSAA_QUALITY.HIGH) {\n this.multisample = MSAA_QUALITY.HIGH;\n } else if (samples >= MSAA_QUALITY.MEDIUM) {\n this.multisample = MSAA_QUALITY.MEDIUM;\n } else if (samples >= MSAA_QUALITY.LOW) {\n this.multisample = MSAA_QUALITY.LOW;\n } else {\n this.multisample = MSAA_QUALITY.NONE;\n }\n }\n destroy() {\n }\n}\nMultisampleSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"_multisample\"\n};\nextensions.add(MultisampleSystem);\n\nexport { MultisampleSystem };\n//# sourceMappingURL=MultisampleSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\n\nclass ObjectRendererSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n render(displayObject, options) {\n const renderer = this.renderer;\n let renderTexture;\n let clear;\n let transform;\n let skipUpdateTransform;\n if (options) {\n renderTexture = options.renderTexture;\n clear = options.clear;\n transform = options.transform;\n skipUpdateTransform = options.skipUpdateTransform;\n }\n this.renderingToScreen = !renderTexture;\n renderer.runners.prerender.emit();\n renderer.emit(\"prerender\");\n renderer.projection.transform = transform;\n if (renderer.context.isLost) {\n return;\n }\n if (!renderTexture) {\n this.lastObjectRendered = displayObject;\n }\n if (!skipUpdateTransform) {\n const cacheParent = displayObject.enableTempParent();\n displayObject.updateTransform();\n displayObject.disableTempParent(cacheParent);\n }\n renderer.renderTexture.bind(renderTexture);\n renderer.batch.currentRenderer.start();\n if (clear ?? renderer.background.clearBeforeRender) {\n renderer.renderTexture.clear();\n }\n displayObject.render(renderer);\n renderer.batch.currentRenderer.flush();\n if (renderTexture) {\n if (options.blit) {\n renderer.framebuffer.blit();\n }\n renderTexture.baseTexture.update();\n }\n renderer.runners.postrender.emit();\n renderer.projection.transform = null;\n renderer.emit(\"postrender\");\n }\n destroy() {\n this.renderer = null;\n this.lastObjectRendered = null;\n }\n}\nObjectRendererSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"objectRenderer\"\n};\nextensions.add(ObjectRendererSystem);\n\nexport { ObjectRendererSystem };\n//# sourceMappingURL=ObjectRendererSystem.mjs.map\n","import './settings.mjs';\nexport * from '@pixi/constants';\nexport * from '@pixi/extensions';\nexport * from '@pixi/math';\nexport * from '@pixi/runner';\nexport * from '@pixi/settings';\nexport * from '@pixi/ticker';\nimport * as utils from '@pixi/utils';\nexport { utils };\nimport './textures/resources/index.mjs';\nimport './systems.mjs';\nimport './IRenderer.mjs';\nexport { autoDetectRenderer } from './autoDetectRenderer.mjs';\nexport { defaultFilterVertex, defaultVertex } from './fragments/index.mjs';\nimport './system/ISystem.mjs';\nexport { PluginSystem } from './plugin/PluginSystem.mjs';\nexport { Renderer } from './Renderer.mjs';\nexport { Framebuffer } from './framebuffer/Framebuffer.mjs';\nexport { GLFramebuffer } from './framebuffer/GLFramebuffer.mjs';\nexport { Texture } from './textures/Texture.mjs';\nexport { BaseTexture } from './textures/BaseTexture.mjs';\nexport { GLTexture } from './textures/GLTexture.mjs';\nexport { TextureMatrix } from './textures/TextureMatrix.mjs';\nexport { RenderTexture } from './renderTexture/RenderTexture.mjs';\nexport { RenderTexturePool } from './renderTexture/RenderTexturePool.mjs';\nexport { BaseRenderTexture } from './renderTexture/BaseRenderTexture.mjs';\nexport { TextureUvs } from './textures/TextureUvs.mjs';\nexport { State } from './state/State.mjs';\nexport { ObjectRenderer } from './batch/ObjectRenderer.mjs';\nexport { BatchRenderer } from './batch/BatchRenderer.mjs';\nexport { BatchShaderGenerator } from './batch/BatchShaderGenerator.mjs';\nexport { BatchGeometry } from './batch/BatchGeometry.mjs';\nexport { BatchDrawCall } from './batch/BatchDrawCall.mjs';\nexport { BatchTextureArray } from './batch/BatchTextureArray.mjs';\nexport { Quad } from './utils/Quad.mjs';\nexport { QuadUv } from './utils/QuadUv.mjs';\nexport { checkMaxIfStatementsInShader } from './shader/utils/checkMaxIfStatementsInShader.mjs';\nexport { uniformParsers } from './shader/utils/uniformParsers.mjs';\nexport { createUBOElements, generateUniformBufferSync, getUBOData } from './shader/utils/generateUniformBufferSync.mjs';\nexport { getTestContext } from './shader/utils/getTestContext.mjs';\nexport { generateProgram } from './shader/utils/generateProgram.mjs';\nexport { Shader } from './shader/Shader.mjs';\nexport { Program } from './shader/Program.mjs';\nexport { GLProgram, IGLUniformData } from './shader/GLProgram.mjs';\nexport { UniformGroup } from './shader/UniformGroup.mjs';\nexport { MaskData } from './mask/MaskData.mjs';\nexport { SpriteMaskFilter } from './filters/spriteMask/SpriteMaskFilter.mjs';\nexport { Filter } from './filters/Filter.mjs';\nexport { FilterState } from './filters/FilterState.mjs';\nimport './filters/IFilterTarget.mjs';\nexport { Attribute } from './geometry/Attribute.mjs';\nexport { Buffer } from './geometry/Buffer.mjs';\nexport { Geometry } from './geometry/Geometry.mjs';\nexport { ViewableBuffer } from './geometry/ViewableBuffer.mjs';\nexport { TransformFeedback } from './transformFeedback/TransformFeedback.mjs';\nexport { MaskSystem } from './mask/MaskSystem.mjs';\nexport { StencilSystem } from './mask/StencilSystem.mjs';\nexport { ScissorSystem } from './mask/ScissorSystem.mjs';\nexport { FilterSystem } from './filters/FilterSystem.mjs';\nexport { FramebufferSystem } from './framebuffer/FramebufferSystem.mjs';\nexport { RenderTextureSystem } from './renderTexture/RenderTextureSystem.mjs';\nexport { TextureSystem } from './textures/TextureSystem.mjs';\nexport { ProjectionSystem } from './projection/ProjectionSystem.mjs';\nexport { StateSystem } from './state/StateSystem.mjs';\nexport { GeometrySystem } from './geometry/GeometrySystem.mjs';\nexport { ShaderSystem } from './shader/ShaderSystem.mjs';\nexport { ContextSystem } from './context/ContextSystem.mjs';\nexport { BatchSystem } from './batch/BatchSystem.mjs';\nexport { TextureGCSystem } from './textures/TextureGCSystem.mjs';\nexport { BufferSystem } from './geometry/BufferSystem.mjs';\nexport { MultisampleSystem } from './framebuffer/MultisampleSystem.mjs';\nexport { GenerateTextureSystem } from './renderTexture/GenerateTextureSystem.mjs';\nexport { BackgroundSystem } from './background/BackgroundSystem.mjs';\nexport { ViewSystem } from './view/ViewSystem.mjs';\nexport { ObjectRendererSystem } from './render/ObjectRendererSystem.mjs';\nexport { StartupSystem } from './startup/StartupSystem.mjs';\nexport { TransformFeedbackSystem } from './transformFeedback/TransformFeedbackSystem.mjs';\nexport { Resource } from './textures/resources/Resource.mjs';\nexport { BaseImageResource } from './textures/resources/BaseImageResource.mjs';\nexport { INSTALLED, autoDetectResource } from './textures/resources/autoDetectResource.mjs';\nexport { AbstractMultiResource } from './textures/resources/AbstractMultiResource.mjs';\nexport { ArrayResource } from './textures/resources/ArrayResource.mjs';\nexport { BufferResource } from './textures/resources/BufferResource.mjs';\nexport { CanvasResource } from './textures/resources/CanvasResource.mjs';\nexport { CubeResource } from './textures/resources/CubeResource.mjs';\nexport { ImageResource } from './textures/resources/ImageResource.mjs';\nexport { SVGResource } from './textures/resources/SVGResource.mjs';\nexport { VideoResource } from './textures/resources/VideoResource.mjs';\nexport { ImageBitmapResource } from './textures/resources/ImageBitmapResource.mjs';\nexport { SystemManager } from './system/SystemManager.mjs';\n\nconst VERSION = \"7.0.2\";\n\nexport { VERSION };\n//# sourceMappingURL=index.mjs.map\n","var fragment = \"varying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform float uAlpha;\\n\\nvoid main(void)\\n{\\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uAlpha;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=alpha.mjs.map\n","import { Filter, defaultVertex } from '@pixi/core';\nimport fragment from './alpha.mjs';\n\nclass AlphaFilter extends Filter {\n constructor(alpha = 1) {\n super(defaultVertex, fragment, { uAlpha: 1 });\n this.alpha = alpha;\n }\n get alpha() {\n return this.uniforms.uAlpha;\n }\n set alpha(value) {\n this.uniforms.uAlpha = value;\n }\n}\n\nexport { AlphaFilter };\n//# sourceMappingURL=AlphaFilter.mjs.map\n","const vertTemplate = `\n attribute vec2 aVertexPosition;\n\n uniform mat3 projectionMatrix;\n\n uniform float strength;\n\n varying vec2 vBlurTexCoords[%size%];\n\n uniform vec4 inputSize;\n uniform vec4 outputFrame;\n\n vec4 filterVertexPosition( void )\n {\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n }\n\n vec2 filterTextureCoord( void )\n {\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n }\n\n void main(void)\n {\n gl_Position = filterVertexPosition();\n\n vec2 textureCoord = filterTextureCoord();\n %blur%\n }`;\nfunction generateBlurVertSource(kernelSize, x) {\n const halfLength = Math.ceil(kernelSize / 2);\n let vertSource = vertTemplate;\n let blurLoop = \"\";\n let template;\n if (x) {\n template = \"vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * strength, 0.0);\";\n } else {\n template = \"vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * strength);\";\n }\n for (let i = 0; i < kernelSize; i++) {\n let blur = template.replace(\"%index%\", i.toString());\n blur = blur.replace(\"%sampleIndex%\", `${i - (halfLength - 1)}.0`);\n blurLoop += blur;\n blurLoop += \"\\n\";\n }\n vertSource = vertSource.replace(\"%blur%\", blurLoop);\n vertSource = vertSource.replace(\"%size%\", kernelSize.toString());\n return vertSource;\n}\n\nexport { generateBlurVertSource };\n//# sourceMappingURL=generateBlurVertSource.mjs.map\n","const GAUSSIAN_VALUES = {\n 5: [0.153388, 0.221461, 0.250301],\n 7: [0.071303, 0.131514, 0.189879, 0.214607],\n 9: [0.028532, 0.067234, 0.124009, 0.179044, 0.20236],\n 11: [93e-4, 0.028002, 0.065984, 0.121703, 0.175713, 0.198596],\n 13: [2406e-6, 9255e-6, 0.027867, 0.065666, 0.121117, 0.174868, 0.197641],\n 15: [489e-6, 2403e-6, 9246e-6, 0.02784, 0.065602, 0.120999, 0.174697, 0.197448]\n};\nconst fragTemplate = [\n \"varying vec2 vBlurTexCoords[%size%];\",\n \"uniform sampler2D uSampler;\",\n \"void main(void)\",\n \"{\",\n \" gl_FragColor = vec4(0.0);\",\n \" %blur%\",\n \"}\"\n].join(\"\\n\");\nfunction generateBlurFragSource(kernelSize) {\n const kernel = GAUSSIAN_VALUES[kernelSize];\n const halfLength = kernel.length;\n let fragSource = fragTemplate;\n let blurLoop = \"\";\n const template = \"gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;\";\n let value;\n for (let i = 0; i < kernelSize; i++) {\n let blur = template.replace(\"%index%\", i.toString());\n value = i;\n if (i >= halfLength) {\n value = kernelSize - i - 1;\n }\n blur = blur.replace(\"%value%\", kernel[value].toString());\n blurLoop += blur;\n blurLoop += \"\\n\";\n }\n fragSource = fragSource.replace(\"%blur%\", blurLoop);\n fragSource = fragSource.replace(\"%size%\", kernelSize.toString());\n return fragSource;\n}\n\nexport { generateBlurFragSource };\n//# sourceMappingURL=generateBlurFragSource.mjs.map\n","import { Filter, settings, CLEAR_MODES } from '@pixi/core';\nimport { generateBlurVertSource } from './generateBlurVertSource.mjs';\nimport { generateBlurFragSource } from './generateBlurFragSource.mjs';\n\nclass BlurFilterPass extends Filter {\n constructor(horizontal, strength = 8, quality = 4, resolution = settings.FILTER_RESOLUTION, kernelSize = 5) {\n const vertSrc = generateBlurVertSource(kernelSize, horizontal);\n const fragSrc = generateBlurFragSource(kernelSize);\n super(vertSrc, fragSrc);\n this.horizontal = horizontal;\n this.resolution = resolution;\n this._quality = 0;\n this.quality = quality;\n this.blur = strength;\n }\n apply(filterManager, input, output, clearMode) {\n if (output) {\n if (this.horizontal) {\n this.uniforms.strength = 1 / output.width * (output.width / input.width);\n } else {\n this.uniforms.strength = 1 / output.height * (output.height / input.height);\n }\n } else {\n if (this.horizontal) {\n this.uniforms.strength = 1 / filterManager.renderer.width * (filterManager.renderer.width / input.width);\n } else {\n this.uniforms.strength = 1 / filterManager.renderer.height * (filterManager.renderer.height / input.height);\n }\n }\n this.uniforms.strength *= this.strength;\n this.uniforms.strength /= this.passes;\n if (this.passes === 1) {\n filterManager.applyFilter(this, input, output, clearMode);\n } else {\n const renderTarget = filterManager.getFilterTexture();\n const renderer = filterManager.renderer;\n let flip = input;\n let flop = renderTarget;\n this.state.blend = false;\n filterManager.applyFilter(this, flip, flop, CLEAR_MODES.CLEAR);\n for (let i = 1; i < this.passes - 1; i++) {\n filterManager.bindAndClear(flip, CLEAR_MODES.BLIT);\n this.uniforms.uSampler = flop;\n const temp = flop;\n flop = flip;\n flip = temp;\n renderer.shader.bind(this);\n renderer.geometry.draw(5);\n }\n this.state.blend = true;\n filterManager.applyFilter(this, flop, output, clearMode);\n filterManager.returnFilterTexture(renderTarget);\n }\n }\n get blur() {\n return this.strength;\n }\n set blur(value) {\n this.padding = 1 + Math.abs(value) * 2;\n this.strength = value;\n }\n get quality() {\n return this._quality;\n }\n set quality(value) {\n this._quality = value;\n this.passes = value;\n }\n}\n\nexport { BlurFilterPass };\n//# sourceMappingURL=BlurFilterPass.mjs.map\n","import { Filter, settings, CLEAR_MODES } from '@pixi/core';\nimport { BlurFilterPass } from './BlurFilterPass.mjs';\n\nclass BlurFilter extends Filter {\n constructor(strength = 8, quality = 4, resolution = settings.FILTER_RESOLUTION, kernelSize = 5) {\n super();\n this.blurXFilter = new BlurFilterPass(true, strength, quality, resolution, kernelSize);\n this.blurYFilter = new BlurFilterPass(false, strength, quality, resolution, kernelSize);\n this.resolution = resolution;\n this.quality = quality;\n this.blur = strength;\n this.repeatEdgePixels = false;\n }\n apply(filterManager, input, output, clearMode) {\n const xStrength = Math.abs(this.blurXFilter.strength);\n const yStrength = Math.abs(this.blurYFilter.strength);\n if (xStrength && yStrength) {\n const renderTarget = filterManager.getFilterTexture();\n this.blurXFilter.apply(filterManager, input, renderTarget, CLEAR_MODES.CLEAR);\n this.blurYFilter.apply(filterManager, renderTarget, output, clearMode);\n filterManager.returnFilterTexture(renderTarget);\n } else if (yStrength) {\n this.blurYFilter.apply(filterManager, input, output, clearMode);\n } else {\n this.blurXFilter.apply(filterManager, input, output, clearMode);\n }\n }\n updatePadding() {\n if (this._repeatEdgePixels) {\n this.padding = 0;\n } else {\n this.padding = Math.max(Math.abs(this.blurXFilter.strength), Math.abs(this.blurYFilter.strength)) * 2;\n }\n }\n get blur() {\n return this.blurXFilter.blur;\n }\n set blur(value) {\n this.blurXFilter.blur = this.blurYFilter.blur = value;\n this.updatePadding();\n }\n get quality() {\n return this.blurXFilter.quality;\n }\n set quality(value) {\n this.blurXFilter.quality = this.blurYFilter.quality = value;\n }\n get blurX() {\n return this.blurXFilter.blur;\n }\n set blurX(value) {\n this.blurXFilter.blur = value;\n this.updatePadding();\n }\n get blurY() {\n return this.blurYFilter.blur;\n }\n set blurY(value) {\n this.blurYFilter.blur = value;\n this.updatePadding();\n }\n get blendMode() {\n return this.blurYFilter.blendMode;\n }\n set blendMode(value) {\n this.blurYFilter.blendMode = value;\n }\n get repeatEdgePixels() {\n return this._repeatEdgePixels;\n }\n set repeatEdgePixels(value) {\n this._repeatEdgePixels = value;\n this.updatePadding();\n }\n}\n\nexport { BlurFilter };\n//# sourceMappingURL=BlurFilter.mjs.map\n","var fragment = \"varying vec2 vTextureCoord;\\nuniform sampler2D uSampler;\\nuniform float m[20];\\nuniform float uAlpha;\\n\\nvoid main(void)\\n{\\n vec4 c = texture2D(uSampler, vTextureCoord);\\n\\n if (uAlpha == 0.0) {\\n gl_FragColor = c;\\n return;\\n }\\n\\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\\n if (c.a > 0.0) {\\n c.rgb /= c.a;\\n }\\n\\n vec4 result;\\n\\n result.r = (m[0] * c.r);\\n result.r += (m[1] * c.g);\\n result.r += (m[2] * c.b);\\n result.r += (m[3] * c.a);\\n result.r += m[4];\\n\\n result.g = (m[5] * c.r);\\n result.g += (m[6] * c.g);\\n result.g += (m[7] * c.b);\\n result.g += (m[8] * c.a);\\n result.g += m[9];\\n\\n result.b = (m[10] * c.r);\\n result.b += (m[11] * c.g);\\n result.b += (m[12] * c.b);\\n result.b += (m[13] * c.a);\\n result.b += m[14];\\n\\n result.a = (m[15] * c.r);\\n result.a += (m[16] * c.g);\\n result.a += (m[17] * c.b);\\n result.a += (m[18] * c.a);\\n result.a += m[19];\\n\\n vec3 rgb = mix(c.rgb, result.rgb, uAlpha);\\n\\n // Premultiply alpha again.\\n rgb *= result.a;\\n\\n gl_FragColor = vec4(rgb, result.a);\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=colorMatrix.mjs.map\n","import { Filter, defaultFilterVertex } from '@pixi/core';\nimport fragment from './colorMatrix.mjs';\n\nclass ColorMatrixFilter extends Filter {\n constructor() {\n const uniforms = {\n m: new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ]),\n uAlpha: 1\n };\n super(defaultFilterVertex, fragment, uniforms);\n this.alpha = 1;\n }\n _loadMatrix(matrix, multiply = false) {\n let newMatrix = matrix;\n if (multiply) {\n this._multiply(newMatrix, this.uniforms.m, matrix);\n newMatrix = this._colorMatrix(newMatrix);\n }\n this.uniforms.m = newMatrix;\n }\n _multiply(out, a, b) {\n out[0] = a[0] * b[0] + a[1] * b[5] + a[2] * b[10] + a[3] * b[15];\n out[1] = a[0] * b[1] + a[1] * b[6] + a[2] * b[11] + a[3] * b[16];\n out[2] = a[0] * b[2] + a[1] * b[7] + a[2] * b[12] + a[3] * b[17];\n out[3] = a[0] * b[3] + a[1] * b[8] + a[2] * b[13] + a[3] * b[18];\n out[4] = a[0] * b[4] + a[1] * b[9] + a[2] * b[14] + a[3] * b[19] + a[4];\n out[5] = a[5] * b[0] + a[6] * b[5] + a[7] * b[10] + a[8] * b[15];\n out[6] = a[5] * b[1] + a[6] * b[6] + a[7] * b[11] + a[8] * b[16];\n out[7] = a[5] * b[2] + a[6] * b[7] + a[7] * b[12] + a[8] * b[17];\n out[8] = a[5] * b[3] + a[6] * b[8] + a[7] * b[13] + a[8] * b[18];\n out[9] = a[5] * b[4] + a[6] * b[9] + a[7] * b[14] + a[8] * b[19] + a[9];\n out[10] = a[10] * b[0] + a[11] * b[5] + a[12] * b[10] + a[13] * b[15];\n out[11] = a[10] * b[1] + a[11] * b[6] + a[12] * b[11] + a[13] * b[16];\n out[12] = a[10] * b[2] + a[11] * b[7] + a[12] * b[12] + a[13] * b[17];\n out[13] = a[10] * b[3] + a[11] * b[8] + a[12] * b[13] + a[13] * b[18];\n out[14] = a[10] * b[4] + a[11] * b[9] + a[12] * b[14] + a[13] * b[19] + a[14];\n out[15] = a[15] * b[0] + a[16] * b[5] + a[17] * b[10] + a[18] * b[15];\n out[16] = a[15] * b[1] + a[16] * b[6] + a[17] * b[11] + a[18] * b[16];\n out[17] = a[15] * b[2] + a[16] * b[7] + a[17] * b[12] + a[18] * b[17];\n out[18] = a[15] * b[3] + a[16] * b[8] + a[17] * b[13] + a[18] * b[18];\n out[19] = a[15] * b[4] + a[16] * b[9] + a[17] * b[14] + a[18] * b[19] + a[19];\n return out;\n }\n _colorMatrix(matrix) {\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n return m;\n }\n brightness(b, multiply) {\n const matrix = [\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n tint(color, multiply) {\n const r = color >> 16 & 255;\n const g = color >> 8 & 255;\n const b = color & 255;\n const matrix = [\n r / 255,\n 0,\n 0,\n 0,\n 0,\n 0,\n g / 255,\n 0,\n 0,\n 0,\n 0,\n 0,\n b / 255,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n greyscale(scale, multiply) {\n const matrix = [\n scale,\n scale,\n scale,\n 0,\n 0,\n scale,\n scale,\n scale,\n 0,\n 0,\n scale,\n scale,\n scale,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n blackAndWhite(multiply) {\n const matrix = [\n 0.3,\n 0.6,\n 0.1,\n 0,\n 0,\n 0.3,\n 0.6,\n 0.1,\n 0,\n 0,\n 0.3,\n 0.6,\n 0.1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n hue(rotation, multiply) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cosR = Math.cos(rotation);\n const sinR = Math.sin(rotation);\n const sqrt = Math.sqrt;\n const w = 1 / 3;\n const sqrW = sqrt(w);\n const a00 = cosR + (1 - cosR) * w;\n const a01 = w * (1 - cosR) - sqrW * sinR;\n const a02 = w * (1 - cosR) + sqrW * sinR;\n const a10 = w * (1 - cosR) + sqrW * sinR;\n const a11 = cosR + w * (1 - cosR);\n const a12 = w * (1 - cosR) - sqrW * sinR;\n const a20 = w * (1 - cosR) - sqrW * sinR;\n const a21 = w * (1 - cosR) + sqrW * sinR;\n const a22 = cosR + w * (1 - cosR);\n const matrix = [\n a00,\n a01,\n a02,\n 0,\n 0,\n a10,\n a11,\n a12,\n 0,\n 0,\n a20,\n a21,\n a22,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n contrast(amount, multiply) {\n const v = (amount || 0) + 1;\n const o = -0.5 * (v - 1);\n const matrix = [\n v,\n 0,\n 0,\n 0,\n o,\n 0,\n v,\n 0,\n 0,\n o,\n 0,\n 0,\n v,\n 0,\n o,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n saturate(amount = 0, multiply) {\n const x = amount * 2 / 3 + 1;\n const y = (x - 1) * -0.5;\n const matrix = [\n x,\n y,\n y,\n 0,\n 0,\n y,\n x,\n y,\n 0,\n 0,\n y,\n y,\n x,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n desaturate() {\n this.saturate(-1);\n }\n negative(multiply) {\n const matrix = [\n -1,\n 0,\n 0,\n 1,\n 0,\n 0,\n -1,\n 0,\n 1,\n 0,\n 0,\n 0,\n -1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n sepia(multiply) {\n const matrix = [\n 0.393,\n 0.7689999,\n 0.18899999,\n 0,\n 0,\n 0.349,\n 0.6859999,\n 0.16799999,\n 0,\n 0,\n 0.272,\n 0.5339999,\n 0.13099999,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n technicolor(multiply) {\n const matrix = [\n 1.9125277891456083,\n -0.8545344976951645,\n -0.09155508482755585,\n 0,\n 11.793603434377337,\n -0.3087833385928097,\n 1.7658908555458428,\n -0.10601743074722245,\n 0,\n -70.35205161461398,\n -0.231103377548616,\n -0.7501899197440212,\n 1.847597816108189,\n 0,\n 30.950940869491138,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n polaroid(multiply) {\n const matrix = [\n 1.438,\n -0.062,\n -0.062,\n 0,\n 0,\n -0.122,\n 1.378,\n -0.122,\n 0,\n 0,\n -0.016,\n -0.016,\n 1.483,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n toBGR(multiply) {\n const matrix = [\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n kodachrome(multiply) {\n const matrix = [\n 1.1285582396593525,\n -0.3967382283601348,\n -0.03992559172921793,\n 0,\n 63.72958762196502,\n -0.16404339962244616,\n 1.0835251566291304,\n -0.05498805115633132,\n 0,\n 24.732407896706203,\n -0.16786010706155763,\n -0.5603416277695248,\n 1.6014850761964943,\n 0,\n 35.62982807460946,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n browni(multiply) {\n const matrix = [\n 0.5997023498159715,\n 0.34553243048391263,\n -0.2708298674538042,\n 0,\n 47.43192855600873,\n -0.037703249837783157,\n 0.8609577587992641,\n 0.15059552388459913,\n 0,\n -36.96841498319127,\n 0.24113635128153335,\n -0.07441037908422492,\n 0.44972182064877153,\n 0,\n -7.562075277591283,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n vintage(multiply) {\n const matrix = [\n 0.6279345635605994,\n 0.3202183420819367,\n -0.03965408211312453,\n 0,\n 9.651285835294123,\n 0.02578397704808868,\n 0.6441188644374771,\n 0.03259127616149294,\n 0,\n 7.462829176470591,\n 0.0466055556782719,\n -0.0851232987247891,\n 0.5241648018700465,\n 0,\n 5.159190588235296,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n colorTone(desaturation, toned, lightColor, darkColor, multiply) {\n desaturation = desaturation || 0.2;\n toned = toned || 0.15;\n lightColor = lightColor || 16770432;\n darkColor = darkColor || 3375104;\n const lR = (lightColor >> 16 & 255) / 255;\n const lG = (lightColor >> 8 & 255) / 255;\n const lB = (lightColor & 255) / 255;\n const dR = (darkColor >> 16 & 255) / 255;\n const dG = (darkColor >> 8 & 255) / 255;\n const dB = (darkColor & 255) / 255;\n const matrix = [\n 0.3,\n 0.59,\n 0.11,\n 0,\n 0,\n lR,\n lG,\n lB,\n desaturation,\n 0,\n dR,\n dG,\n dB,\n toned,\n 0,\n lR - dR,\n lG - dG,\n lB - dB,\n 0,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n night(intensity, multiply) {\n intensity = intensity || 0.1;\n const matrix = [\n intensity * -2,\n -intensity,\n 0,\n 0,\n 0,\n -intensity,\n 0,\n intensity,\n 0,\n 0,\n 0,\n intensity,\n intensity * 2,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n predator(amount, multiply) {\n const matrix = [\n 11.224130630493164 * amount,\n -4.794486999511719 * amount,\n -2.8746118545532227 * amount,\n 0 * amount,\n 0.40342438220977783 * amount,\n -3.6330697536468506 * amount,\n 9.193157196044922 * amount,\n -2.951810836791992 * amount,\n 0 * amount,\n -1.316135048866272 * amount,\n -3.2184197902679443 * amount,\n -4.2375030517578125 * amount,\n 7.476448059082031 * amount,\n 0 * amount,\n 0.8044459223747253 * amount,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n lsd(multiply) {\n const matrix = [\n 2,\n -0.4,\n 0.5,\n 0,\n 0,\n -0.5,\n 2,\n -0.4,\n 0,\n 0,\n -0.4,\n -0.5,\n 3,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n reset() {\n const matrix = [\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, false);\n }\n get matrix() {\n return this.uniforms.m;\n }\n set matrix(value) {\n this.uniforms.m = value;\n }\n get alpha() {\n return this.uniforms.uAlpha;\n }\n set alpha(value) {\n this.uniforms.uAlpha = value;\n }\n}\nColorMatrixFilter.prototype.grayscale = ColorMatrixFilter.prototype.greyscale;\n\nexport { ColorMatrixFilter };\n//# sourceMappingURL=ColorMatrixFilter.mjs.map\n","var fragment = \"varying vec2 vFilterCoord;\\nvarying vec2 vTextureCoord;\\n\\nuniform vec2 scale;\\nuniform mat2 rotation;\\nuniform sampler2D uSampler;\\nuniform sampler2D mapSampler;\\n\\nuniform highp vec4 inputSize;\\nuniform vec4 inputClamp;\\n\\nvoid main(void)\\n{\\n vec4 map = texture2D(mapSampler, vFilterCoord);\\n\\n map -= 0.5;\\n map.xy = scale * inputSize.zw * (rotation * map.xy);\\n\\n gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw));\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=displacement.mjs.map\n","var vertex = \"attribute vec2 aVertexPosition;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 filterMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vFilterCoord;\\n\\nuniform vec4 inputSize;\\nuniform vec4 outputFrame;\\n\\nvec4 filterVertexPosition( void )\\n{\\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\\n\\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\\n}\\n\\nvec2 filterTextureCoord( void )\\n{\\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\\n}\\n\\nvoid main(void)\\n{\\n\\tgl_Position = filterVertexPosition();\\n\\tvTextureCoord = filterTextureCoord();\\n\\tvFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0) ).xy;\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=displacement2.mjs.map\n","import { Filter, Matrix, Point } from '@pixi/core';\nimport fragment from './displacement.mjs';\nimport vertex from './displacement2.mjs';\n\nclass DisplacementFilter extends Filter {\n constructor(sprite, scale) {\n const maskMatrix = new Matrix();\n sprite.renderable = false;\n super(vertex, fragment, {\n mapSampler: sprite._texture,\n filterMatrix: maskMatrix,\n scale: { x: 1, y: 1 },\n rotation: new Float32Array([1, 0, 0, 1])\n });\n this.maskSprite = sprite;\n this.maskMatrix = maskMatrix;\n if (scale === null || scale === void 0) {\n scale = 20;\n }\n this.scale = new Point(scale, scale);\n }\n apply(filterManager, input, output, clearMode) {\n this.uniforms.filterMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, this.maskSprite);\n this.uniforms.scale.x = this.scale.x;\n this.uniforms.scale.y = this.scale.y;\n const wt = this.maskSprite.worldTransform;\n const lenX = Math.sqrt(wt.a * wt.a + wt.b * wt.b);\n const lenY = Math.sqrt(wt.c * wt.c + wt.d * wt.d);\n if (lenX !== 0 && lenY !== 0) {\n this.uniforms.rotation[0] = wt.a / lenX;\n this.uniforms.rotation[1] = wt.b / lenX;\n this.uniforms.rotation[2] = wt.c / lenY;\n this.uniforms.rotation[3] = wt.d / lenY;\n }\n filterManager.applyFilter(this, input, output, clearMode);\n }\n get map() {\n return this.uniforms.mapSampler;\n }\n set map(value) {\n this.uniforms.mapSampler = value;\n }\n}\n\nexport { DisplacementFilter };\n//# sourceMappingURL=DisplacementFilter.mjs.map\n","var vertex = \"\\nattribute vec2 aVertexPosition;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 v_rgbNW;\\nvarying vec2 v_rgbNE;\\nvarying vec2 v_rgbSW;\\nvarying vec2 v_rgbSE;\\nvarying vec2 v_rgbM;\\n\\nvarying vec2 vFragCoord;\\n\\nuniform vec4 inputSize;\\nuniform vec4 outputFrame;\\n\\nvec4 filterVertexPosition( void )\\n{\\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\\n\\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\\n}\\n\\nvoid texcoords(vec2 fragCoord, vec2 inverseVP,\\n out vec2 v_rgbNW, out vec2 v_rgbNE,\\n out vec2 v_rgbSW, out vec2 v_rgbSE,\\n out vec2 v_rgbM) {\\n v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\\n v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\\n v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\\n v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\\n v_rgbM = vec2(fragCoord * inverseVP);\\n}\\n\\nvoid main(void) {\\n\\n gl_Position = filterVertexPosition();\\n\\n vFragCoord = aVertexPosition * outputFrame.zw;\\n\\n texcoords(vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=fxaa.mjs.map\n","var fragment = \"varying vec2 v_rgbNW;\\nvarying vec2 v_rgbNE;\\nvarying vec2 v_rgbSW;\\nvarying vec2 v_rgbSE;\\nvarying vec2 v_rgbM;\\n\\nvarying vec2 vFragCoord;\\nuniform sampler2D uSampler;\\nuniform highp vec4 inputSize;\\n\\n\\n/**\\n Basic FXAA implementation based on the code on geeks3d.com with the\\n modification that the texture2DLod stuff was removed since it's\\n unsupported by WebGL.\\n\\n --\\n\\n From:\\n https://github.com/mitsuhiko/webgl-meincraft\\n\\n Copyright (c) 2011 by Armin Ronacher.\\n\\n Some rights reserved.\\n\\n Redistribution and use in source and binary forms, with or without\\n modification, are permitted provided that the following conditions are\\n met:\\n\\n * Redistributions of source code must retain the above copyright\\n notice, this list of conditions and the following disclaimer.\\n\\n * Redistributions in binary form must reproduce the above\\n copyright notice, this list of conditions and the following\\n disclaimer in the documentation and/or other materials provided\\n with the distribution.\\n\\n * The names of the contributors may not be used to endorse or\\n promote products derived from this software without specific\\n prior written permission.\\n\\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\\n \\\"AS IS\\\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n#ifndef FXAA_REDUCE_MIN\\n#define FXAA_REDUCE_MIN (1.0/ 128.0)\\n#endif\\n#ifndef FXAA_REDUCE_MUL\\n#define FXAA_REDUCE_MUL (1.0 / 8.0)\\n#endif\\n#ifndef FXAA_SPAN_MAX\\n#define FXAA_SPAN_MAX 8.0\\n#endif\\n\\n//optimized version for mobile, where dependent\\n//texture reads can be a bottleneck\\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 inverseVP,\\n vec2 v_rgbNW, vec2 v_rgbNE,\\n vec2 v_rgbSW, vec2 v_rgbSE,\\n vec2 v_rgbM) {\\n vec4 color;\\n vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\\n vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\\n vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\\n vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\\n vec4 texColor = texture2D(tex, v_rgbM);\\n vec3 rgbM = texColor.xyz;\\n vec3 luma = vec3(0.299, 0.587, 0.114);\\n float lumaNW = dot(rgbNW, luma);\\n float lumaNE = dot(rgbNE, luma);\\n float lumaSW = dot(rgbSW, luma);\\n float lumaSE = dot(rgbSE, luma);\\n float lumaM = dot(rgbM, luma);\\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\\n\\n mediump vec2 dir;\\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\\n\\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\\n\\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\\n dir * rcpDirMin)) * inverseVP;\\n\\n vec3 rgbA = 0.5 * (\\n texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\\n texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\\n texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\\n texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\\n\\n float lumaB = dot(rgbB, luma);\\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\\n color = vec4(rgbA, texColor.a);\\n else\\n color = vec4(rgbB, texColor.a);\\n return color;\\n}\\n\\nvoid main() {\\n\\n vec4 color;\\n\\n color = fxaa(uSampler, vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\\n\\n gl_FragColor = color;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=fxaa2.mjs.map\n","import { Filter } from '@pixi/core';\nimport vertex from './fxaa.mjs';\nimport fragment from './fxaa2.mjs';\n\nclass FXAAFilter extends Filter {\n constructor() {\n super(vertex, fragment);\n }\n}\n\nexport { FXAAFilter };\n//# sourceMappingURL=FXAAFilter.mjs.map\n","var fragment = \"precision highp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nuniform float uNoise;\\nuniform float uSeed;\\nuniform sampler2D uSampler;\\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 = texture2D(uSampler, 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 gl_FragColor = color;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=noise.mjs.map\n","import { Filter, defaultFilterVertex } from '@pixi/core';\nimport fragment from './noise.mjs';\n\nclass NoiseFilter extends Filter {\n constructor(noise = 0.5, seed = Math.random()) {\n super(defaultFilterVertex, fragment, {\n uNoise: 0,\n uSeed: 0\n });\n this.noise = noise;\n this.seed = seed;\n }\n get noise() {\n return this.uniforms.uNoise;\n }\n set noise(value) {\n this.uniforms.uNoise = value;\n }\n get seed() {\n return this.uniforms.uSeed;\n }\n set seed(value) {\n this.uniforms.uSeed = value;\n }\n}\n\nexport { NoiseFilter };\n//# sourceMappingURL=NoiseFilter.mjs.map\n","import { settings } from '@pixi/core';\nexport { settings } from '@pixi/core';\n\nsettings.SORTABLE_CHILDREN = false;\n//# sourceMappingURL=settings.mjs.map\n","import { Rectangle } from '@pixi/core';\n\nclass Bounds {\n constructor() {\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = -Infinity;\n this.maxY = -Infinity;\n this.rect = null;\n this.updateID = -1;\n }\n isEmpty() {\n return this.minX > this.maxX || this.minY > this.maxY;\n }\n clear() {\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = -Infinity;\n this.maxY = -Infinity;\n }\n getRectangle(rect) {\n if (this.minX > this.maxX || this.minY > this.maxY) {\n return Rectangle.EMPTY;\n }\n rect = rect || new Rectangle(0, 0, 1, 1);\n rect.x = this.minX;\n rect.y = this.minY;\n rect.width = this.maxX - this.minX;\n rect.height = this.maxY - this.minY;\n return rect;\n }\n addPoint(point) {\n this.minX = Math.min(this.minX, point.x);\n this.maxX = Math.max(this.maxX, point.x);\n this.minY = Math.min(this.minY, point.y);\n this.maxY = Math.max(this.maxY, point.y);\n }\n addPointMatrix(matrix, point) {\n const { a, b, c, d, tx, ty } = matrix;\n const x = a * point.x + c * point.y + tx;\n const y = b * point.x + d * point.y + ty;\n this.minX = Math.min(this.minX, x);\n this.maxX = Math.max(this.maxX, x);\n this.minY = Math.min(this.minY, y);\n this.maxY = Math.max(this.maxY, y);\n }\n addQuad(vertices) {\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n let x = vertices[0];\n let y = vertices[1];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = vertices[2];\n y = vertices[3];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = vertices[4];\n y = vertices[5];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = vertices[6];\n y = vertices[7];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n addFrame(transform, x0, y0, x1, y1) {\n this.addFrameMatrix(transform.worldTransform, x0, y0, x1, y1);\n }\n addFrameMatrix(matrix, x0, y0, x1, y1) {\n const a = matrix.a;\n const b = matrix.b;\n const c = matrix.c;\n const d = matrix.d;\n const tx = matrix.tx;\n const ty = matrix.ty;\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n let x = a * x0 + c * y0 + tx;\n let y = b * x0 + d * y0 + ty;\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = a * x1 + c * y0 + tx;\n y = b * x1 + d * y0 + ty;\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = a * x0 + c * y1 + tx;\n y = b * x0 + d * y1 + ty;\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = a * x1 + c * y1 + tx;\n y = b * x1 + d * y1 + ty;\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n addVertexData(vertexData, beginOffset, endOffset) {\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n for (let i = beginOffset; i < endOffset; i += 2) {\n const x = vertexData[i];\n const y = vertexData[i + 1];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n }\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n addVertices(transform, vertices, beginOffset, endOffset) {\n this.addVerticesMatrix(transform.worldTransform, vertices, beginOffset, endOffset);\n }\n addVerticesMatrix(matrix, vertices, beginOffset, endOffset, padX = 0, padY = padX) {\n const a = matrix.a;\n const b = matrix.b;\n const c = matrix.c;\n const d = matrix.d;\n const tx = matrix.tx;\n const ty = matrix.ty;\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n for (let i = beginOffset; i < endOffset; i += 2) {\n const rawX = vertices[i];\n const rawY = vertices[i + 1];\n const x = a * rawX + c * rawY + tx;\n const y = d * rawY + b * rawX + ty;\n minX = Math.min(minX, x - padX);\n maxX = Math.max(maxX, x + padX);\n minY = Math.min(minY, y - padY);\n maxY = Math.max(maxY, y + padY);\n }\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n addBounds(bounds) {\n const minX = this.minX;\n const minY = this.minY;\n const maxX = this.maxX;\n const maxY = this.maxY;\n this.minX = bounds.minX < minX ? bounds.minX : minX;\n this.minY = bounds.minY < minY ? bounds.minY : minY;\n this.maxX = bounds.maxX > maxX ? bounds.maxX : maxX;\n this.maxY = bounds.maxY > maxY ? bounds.maxY : maxY;\n }\n addBoundsMask(bounds, mask) {\n const _minX = bounds.minX > mask.minX ? bounds.minX : mask.minX;\n const _minY = bounds.minY > mask.minY ? bounds.minY : mask.minY;\n const _maxX = bounds.maxX < mask.maxX ? bounds.maxX : mask.maxX;\n const _maxY = bounds.maxY < mask.maxY ? bounds.maxY : mask.maxY;\n if (_minX <= _maxX && _minY <= _maxY) {\n const minX = this.minX;\n const minY = this.minY;\n const maxX = this.maxX;\n const maxY = this.maxY;\n this.minX = _minX < minX ? _minX : minX;\n this.minY = _minY < minY ? _minY : minY;\n this.maxX = _maxX > maxX ? _maxX : maxX;\n this.maxY = _maxY > maxY ? _maxY : maxY;\n }\n }\n addBoundsMatrix(bounds, matrix) {\n this.addFrameMatrix(matrix, bounds.minX, bounds.minY, bounds.maxX, bounds.maxY);\n }\n addBoundsArea(bounds, area) {\n const _minX = bounds.minX > area.x ? bounds.minX : area.x;\n const _minY = bounds.minY > area.y ? bounds.minY : area.y;\n const _maxX = bounds.maxX < area.x + area.width ? bounds.maxX : area.x + area.width;\n const _maxY = bounds.maxY < area.y + area.height ? bounds.maxY : area.y + area.height;\n if (_minX <= _maxX && _minY <= _maxY) {\n const minX = this.minX;\n const minY = this.minY;\n const maxX = this.maxX;\n const maxY = this.maxY;\n this.minX = _minX < minX ? _minX : minX;\n this.minY = _minY < minY ? _minY : minY;\n this.maxX = _maxX > maxX ? _maxX : maxX;\n this.maxY = _maxY > maxY ? _maxY : maxY;\n }\n }\n pad(paddingX = 0, paddingY = paddingX) {\n if (!this.isEmpty()) {\n this.minX -= paddingX;\n this.maxX += paddingX;\n this.minY -= paddingY;\n this.maxY += paddingY;\n }\n }\n addFramePad(x0, y0, x1, y1, padX, padY) {\n x0 -= padX;\n y0 -= padY;\n x1 += padX;\n y1 += padY;\n this.minX = this.minX < x0 ? this.minX : x0;\n this.maxX = this.maxX > x1 ? this.maxX : x1;\n this.minY = this.minY < y0 ? this.minY : y0;\n this.maxY = this.maxY > y1 ? this.maxY : y1;\n }\n}\n\nexport { Bounds };\n//# sourceMappingURL=Bounds.mjs.map\n","import { utils, Transform, Rectangle, RAD_TO_DEG, DEG_TO_RAD } from '@pixi/core';\nimport { Bounds } from './Bounds.mjs';\n\nclass DisplayObject extends utils.EventEmitter {\n constructor() {\n super();\n this.tempDisplayObjectParent = null;\n this.transform = new Transform();\n this.alpha = 1;\n this.visible = true;\n this.renderable = true;\n this.cullable = false;\n this.cullArea = null;\n this.parent = null;\n this.worldAlpha = 1;\n this._lastSortedIndex = 0;\n this._zIndex = 0;\n this.filterArea = null;\n this.filters = null;\n this._enabledFilters = null;\n this._bounds = new Bounds();\n this._localBounds = null;\n this._boundsID = 0;\n this._boundsRect = null;\n this._localBoundsRect = null;\n this._mask = null;\n this._maskRefCount = 0;\n this._destroyed = false;\n this.isSprite = false;\n this.isMask = false;\n }\n static mixin(source) {\n const keys = Object.keys(source);\n for (let i = 0; i < keys.length; ++i) {\n const propertyName = keys[i];\n Object.defineProperty(DisplayObject.prototype, propertyName, Object.getOwnPropertyDescriptor(source, propertyName));\n }\n }\n get destroyed() {\n return this._destroyed;\n }\n _recursivePostUpdateTransform() {\n if (this.parent) {\n this.parent._recursivePostUpdateTransform();\n this.transform.updateTransform(this.parent.transform);\n } else {\n this.transform.updateTransform(this._tempDisplayObjectParent.transform);\n }\n }\n updateTransform() {\n this._boundsID++;\n this.transform.updateTransform(this.parent.transform);\n this.worldAlpha = this.alpha * this.parent.worldAlpha;\n }\n getBounds(skipUpdate, rect) {\n if (!skipUpdate) {\n if (!this.parent) {\n this.parent = this._tempDisplayObjectParent;\n this.updateTransform();\n this.parent = null;\n } else {\n this._recursivePostUpdateTransform();\n this.updateTransform();\n }\n }\n if (this._bounds.updateID !== this._boundsID) {\n this.calculateBounds();\n this._bounds.updateID = this._boundsID;\n }\n if (!rect) {\n if (!this._boundsRect) {\n this._boundsRect = new Rectangle();\n }\n rect = this._boundsRect;\n }\n return this._bounds.getRectangle(rect);\n }\n getLocalBounds(rect) {\n if (!rect) {\n if (!this._localBoundsRect) {\n this._localBoundsRect = new Rectangle();\n }\n rect = this._localBoundsRect;\n }\n if (!this._localBounds) {\n this._localBounds = new Bounds();\n }\n const transformRef = this.transform;\n const parentRef = this.parent;\n this.parent = null;\n this.transform = this._tempDisplayObjectParent.transform;\n const worldBounds = this._bounds;\n const worldBoundsID = this._boundsID;\n this._bounds = this._localBounds;\n const bounds = this.getBounds(false, rect);\n this.parent = parentRef;\n this.transform = transformRef;\n this._bounds = worldBounds;\n this._bounds.updateID += this._boundsID - worldBoundsID;\n return bounds;\n }\n toGlobal(position, point, skipUpdate = false) {\n if (!skipUpdate) {\n this._recursivePostUpdateTransform();\n if (!this.parent) {\n this.parent = this._tempDisplayObjectParent;\n this.displayObjectUpdateTransform();\n this.parent = null;\n } else {\n this.displayObjectUpdateTransform();\n }\n }\n return this.worldTransform.apply(position, point);\n }\n toLocal(position, from, point, skipUpdate) {\n if (from) {\n position = from.toGlobal(position, point, skipUpdate);\n }\n if (!skipUpdate) {\n this._recursivePostUpdateTransform();\n if (!this.parent) {\n this.parent = this._tempDisplayObjectParent;\n this.displayObjectUpdateTransform();\n this.parent = null;\n } else {\n this.displayObjectUpdateTransform();\n }\n }\n return this.worldTransform.applyInverse(position, point);\n }\n setParent(container) {\n if (!container || !container.addChild) {\n throw new Error(\"setParent: Argument must be a Container\");\n }\n container.addChild(this);\n return container;\n }\n removeFromParent() {\n this.parent?.removeChild(this);\n }\n setTransform(x = 0, y = 0, scaleX = 1, scaleY = 1, rotation = 0, skewX = 0, skewY = 0, pivotX = 0, pivotY = 0) {\n this.position.x = x;\n this.position.y = y;\n this.scale.x = !scaleX ? 1 : scaleX;\n this.scale.y = !scaleY ? 1 : scaleY;\n this.rotation = rotation;\n this.skew.x = skewX;\n this.skew.y = skewY;\n this.pivot.x = pivotX;\n this.pivot.y = pivotY;\n return this;\n }\n destroy(_options) {\n this.removeFromParent();\n this._destroyed = true;\n this.transform = null;\n this.parent = null;\n this._bounds = null;\n this.mask = null;\n this.cullArea = null;\n this.filters = null;\n this.filterArea = null;\n this.hitArea = null;\n this.interactive = false;\n this.interactiveChildren = false;\n this.emit(\"destroyed\");\n this.removeAllListeners();\n }\n get _tempDisplayObjectParent() {\n if (this.tempDisplayObjectParent === null) {\n this.tempDisplayObjectParent = new TemporaryDisplayObject();\n }\n return this.tempDisplayObjectParent;\n }\n enableTempParent() {\n const myParent = this.parent;\n this.parent = this._tempDisplayObjectParent;\n return myParent;\n }\n disableTempParent(cacheParent) {\n this.parent = cacheParent;\n }\n get x() {\n return this.position.x;\n }\n set x(value) {\n this.transform.position.x = value;\n }\n get y() {\n return this.position.y;\n }\n set y(value) {\n this.transform.position.y = value;\n }\n get worldTransform() {\n return this.transform.worldTransform;\n }\n get localTransform() {\n return this.transform.localTransform;\n }\n get position() {\n return this.transform.position;\n }\n set position(value) {\n this.transform.position.copyFrom(value);\n }\n get scale() {\n return this.transform.scale;\n }\n set scale(value) {\n this.transform.scale.copyFrom(value);\n }\n get pivot() {\n return this.transform.pivot;\n }\n set pivot(value) {\n this.transform.pivot.copyFrom(value);\n }\n get skew() {\n return this.transform.skew;\n }\n set skew(value) {\n this.transform.skew.copyFrom(value);\n }\n get rotation() {\n return this.transform.rotation;\n }\n set rotation(value) {\n this.transform.rotation = value;\n }\n get angle() {\n return this.transform.rotation * RAD_TO_DEG;\n }\n set angle(value) {\n this.transform.rotation = value * DEG_TO_RAD;\n }\n get zIndex() {\n return this._zIndex;\n }\n set zIndex(value) {\n this._zIndex = value;\n if (this.parent) {\n this.parent.sortDirty = true;\n }\n }\n get worldVisible() {\n let item = this;\n do {\n if (!item.visible) {\n return false;\n }\n item = item.parent;\n } while (item);\n return true;\n }\n get mask() {\n return this._mask;\n }\n set mask(value) {\n if (this._mask === value) {\n return;\n }\n if (this._mask) {\n const maskObject = this._mask.isMaskData ? this._mask.maskObject : this._mask;\n if (maskObject) {\n maskObject._maskRefCount--;\n if (maskObject._maskRefCount === 0) {\n maskObject.renderable = true;\n maskObject.isMask = false;\n }\n }\n }\n this._mask = value;\n if (this._mask) {\n const maskObject = this._mask.isMaskData ? this._mask.maskObject : this._mask;\n if (maskObject) {\n if (maskObject._maskRefCount === 0) {\n maskObject.renderable = false;\n maskObject.isMask = true;\n }\n maskObject._maskRefCount++;\n }\n }\n }\n}\nclass TemporaryDisplayObject extends DisplayObject {\n constructor() {\n super(...arguments);\n this.sortDirty = null;\n }\n}\nDisplayObject.prototype.displayObjectUpdateTransform = DisplayObject.prototype.updateTransform;\n\nexport { DisplayObject, TemporaryDisplayObject };\n//# sourceMappingURL=DisplayObject.mjs.map\n","import { settings, utils, MASK_TYPES } from '@pixi/core';\nimport { DisplayObject } from './DisplayObject.mjs';\n\nfunction sortChildren(a, b) {\n if (a.zIndex === b.zIndex) {\n return a._lastSortedIndex - b._lastSortedIndex;\n }\n return a.zIndex - b.zIndex;\n}\nclass Container extends DisplayObject {\n constructor() {\n super();\n this.children = [];\n this.sortableChildren = settings.SORTABLE_CHILDREN;\n this.sortDirty = false;\n }\n onChildrenChange(_length) {\n }\n addChild(...children) {\n if (children.length > 1) {\n for (let i = 0; i < children.length; i++) {\n this.addChild(children[i]);\n }\n } else {\n const child = children[0];\n if (child.parent) {\n child.parent.removeChild(child);\n }\n child.parent = this;\n this.sortDirty = true;\n child.transform._parentID = -1;\n this.children.push(child);\n this._boundsID++;\n this.onChildrenChange(this.children.length - 1);\n this.emit(\"childAdded\", child, this, this.children.length - 1);\n child.emit(\"added\", this);\n }\n return children[0];\n }\n addChildAt(child, index) {\n if (index < 0 || index > this.children.length) {\n throw new Error(`${child}addChildAt: The index ${index} supplied is out of bounds ${this.children.length}`);\n }\n if (child.parent) {\n child.parent.removeChild(child);\n }\n child.parent = this;\n this.sortDirty = true;\n child.transform._parentID = -1;\n this.children.splice(index, 0, child);\n this._boundsID++;\n this.onChildrenChange(index);\n child.emit(\"added\", this);\n this.emit(\"childAdded\", child, this, index);\n return child;\n }\n swapChildren(child, child2) {\n if (child === child2) {\n return;\n }\n const index1 = this.getChildIndex(child);\n const index2 = this.getChildIndex(child2);\n this.children[index1] = child2;\n this.children[index2] = child;\n this.onChildrenChange(index1 < index2 ? index1 : index2);\n }\n getChildIndex(child) {\n const index = this.children.indexOf(child);\n if (index === -1) {\n throw new Error(\"The supplied DisplayObject must be a child of the caller\");\n }\n return index;\n }\n setChildIndex(child, index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error(`The index ${index} supplied is out of bounds ${this.children.length}`);\n }\n const currentIndex = this.getChildIndex(child);\n utils.removeItems(this.children, currentIndex, 1);\n this.children.splice(index, 0, child);\n this.onChildrenChange(index);\n }\n getChildAt(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error(`getChildAt: Index (${index}) does not exist.`);\n }\n return this.children[index];\n }\n removeChild(...children) {\n if (children.length > 1) {\n for (let i = 0; i < children.length; i++) {\n this.removeChild(children[i]);\n }\n } else {\n const child = children[0];\n const index = this.children.indexOf(child);\n if (index === -1)\n return null;\n child.parent = null;\n child.transform._parentID = -1;\n utils.removeItems(this.children, index, 1);\n this._boundsID++;\n this.onChildrenChange(index);\n child.emit(\"removed\", this);\n this.emit(\"childRemoved\", child, this, index);\n }\n return children[0];\n }\n removeChildAt(index) {\n const child = this.getChildAt(index);\n child.parent = null;\n child.transform._parentID = -1;\n utils.removeItems(this.children, index, 1);\n this._boundsID++;\n this.onChildrenChange(index);\n child.emit(\"removed\", this);\n this.emit(\"childRemoved\", child, this, index);\n return child;\n }\n removeChildren(beginIndex = 0, endIndex = this.children.length) {\n const begin = beginIndex;\n const end = endIndex;\n const range = end - begin;\n let removed;\n if (range > 0 && range <= end) {\n removed = this.children.splice(begin, range);\n for (let i = 0; i < removed.length; ++i) {\n removed[i].parent = null;\n if (removed[i].transform) {\n removed[i].transform._parentID = -1;\n }\n }\n this._boundsID++;\n this.onChildrenChange(beginIndex);\n for (let i = 0; i < removed.length; ++i) {\n removed[i].emit(\"removed\", this);\n this.emit(\"childRemoved\", removed[i], this, i);\n }\n return removed;\n } else if (range === 0 && this.children.length === 0) {\n return [];\n }\n throw new RangeError(\"removeChildren: numeric values are outside the acceptable range.\");\n }\n sortChildren() {\n let sortRequired = false;\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n child._lastSortedIndex = i;\n if (!sortRequired && child.zIndex !== 0) {\n sortRequired = true;\n }\n }\n if (sortRequired && this.children.length > 1) {\n this.children.sort(sortChildren);\n }\n this.sortDirty = false;\n }\n updateTransform() {\n if (this.sortableChildren && this.sortDirty) {\n this.sortChildren();\n }\n this._boundsID++;\n this.transform.updateTransform(this.parent.transform);\n this.worldAlpha = this.alpha * this.parent.worldAlpha;\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n if (child.visible) {\n child.updateTransform();\n }\n }\n }\n calculateBounds() {\n this._bounds.clear();\n this._calculateBounds();\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n if (!child.visible || !child.renderable) {\n continue;\n }\n child.calculateBounds();\n if (child._mask) {\n const maskObject = child._mask.isMaskData ? child._mask.maskObject : child._mask;\n if (maskObject) {\n maskObject.calculateBounds();\n this._bounds.addBoundsMask(child._bounds, maskObject._bounds);\n } else {\n this._bounds.addBounds(child._bounds);\n }\n } else if (child.filterArea) {\n this._bounds.addBoundsArea(child._bounds, child.filterArea);\n } else {\n this._bounds.addBounds(child._bounds);\n }\n }\n this._bounds.updateID = this._boundsID;\n }\n getLocalBounds(rect, skipChildrenUpdate = false) {\n const result = super.getLocalBounds(rect);\n if (!skipChildrenUpdate) {\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n if (child.visible) {\n child.updateTransform();\n }\n }\n }\n return result;\n }\n _calculateBounds() {\n }\n _renderWithCulling(renderer) {\n const sourceFrame = renderer.renderTexture.sourceFrame;\n if (!(sourceFrame.width > 0 && sourceFrame.height > 0)) {\n return;\n }\n let bounds;\n let transform;\n if (this.cullArea) {\n bounds = this.cullArea;\n transform = this.worldTransform;\n } else if (this._render !== Container.prototype._render) {\n bounds = this.getBounds(true);\n }\n if (bounds && sourceFrame.intersects(bounds, transform)) {\n this._render(renderer);\n } else if (this.cullArea) {\n return;\n }\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n const childCullable = child.cullable;\n child.cullable = childCullable || !this.cullArea;\n child.render(renderer);\n child.cullable = childCullable;\n }\n }\n render(renderer) {\n if (!this.visible || this.worldAlpha <= 0 || !this.renderable) {\n return;\n }\n if (this._mask || this.filters?.length) {\n this.renderAdvanced(renderer);\n } else if (this.cullable) {\n this._renderWithCulling(renderer);\n } else {\n this._render(renderer);\n for (let i = 0, j = this.children.length; i < j; ++i) {\n this.children[i].render(renderer);\n }\n }\n }\n renderAdvanced(renderer) {\n const filters = this.filters;\n const mask = this._mask;\n if (filters) {\n if (!this._enabledFilters) {\n this._enabledFilters = [];\n }\n this._enabledFilters.length = 0;\n for (let i = 0; i < filters.length; i++) {\n if (filters[i].enabled) {\n this._enabledFilters.push(filters[i]);\n }\n }\n }\n const flush = filters && this._enabledFilters?.length || mask && (!mask.isMaskData || mask.enabled && (mask.autoDetect || mask.type !== MASK_TYPES.NONE));\n if (flush) {\n renderer.batch.flush();\n }\n if (filters && this._enabledFilters?.length) {\n renderer.filter.push(this, this._enabledFilters);\n }\n if (mask) {\n renderer.mask.push(this, this._mask);\n }\n if (this.cullable) {\n this._renderWithCulling(renderer);\n } else {\n this._render(renderer);\n for (let i = 0, j = this.children.length; i < j; ++i) {\n this.children[i].render(renderer);\n }\n }\n if (flush) {\n renderer.batch.flush();\n }\n if (mask) {\n renderer.mask.pop(this);\n }\n if (filters && this._enabledFilters?.length) {\n renderer.filter.pop();\n }\n }\n _render(_renderer) {\n }\n destroy(options) {\n super.destroy();\n this.sortDirty = false;\n const destroyChildren = typeof options === \"boolean\" ? options : options?.children;\n const oldChildren = this.removeChildren(0, this.children.length);\n if (destroyChildren) {\n for (let i = 0; i < oldChildren.length; ++i) {\n oldChildren[i].destroy(options);\n }\n }\n }\n get width() {\n return this.scale.x * this.getLocalBounds().width;\n }\n set width(value) {\n const width = this.getLocalBounds().width;\n if (width !== 0) {\n this.scale.x = value / width;\n } else {\n this.scale.x = 1;\n }\n this._width = value;\n }\n get height() {\n return this.scale.y * this.getLocalBounds().height;\n }\n set height(value) {\n const height = this.getLocalBounds().height;\n if (height !== 0) {\n this.scale.y = value / height;\n } else {\n this.scale.y = 1;\n }\n this._height = value;\n }\n}\nContainer.prototype.containerUpdateTransform = Container.prototype.updateTransform;\n\nexport { Container };\n//# sourceMappingURL=Container.mjs.map\n","import { Point, ObservablePoint, BLEND_MODES, Texture, settings, utils, Rectangle } from '@pixi/core';\nimport { Container, Bounds } from '@pixi/display';\n\nconst tempPoint = new Point();\nconst indices = new Uint16Array([0, 1, 2, 0, 2, 3]);\nclass Sprite extends Container {\n constructor(texture) {\n super();\n this._anchor = new ObservablePoint(this._onAnchorUpdate, this, texture ? texture.defaultAnchor.x : 0, texture ? texture.defaultAnchor.y : 0);\n this._texture = null;\n this._width = 0;\n this._height = 0;\n this._tint = null;\n this._tintRGB = null;\n this.tint = 16777215;\n this.blendMode = BLEND_MODES.NORMAL;\n this._cachedTint = 16777215;\n this.uvs = null;\n this.texture = texture || Texture.EMPTY;\n this.vertexData = new Float32Array(8);\n this.vertexTrimmedData = null;\n this._transformID = -1;\n this._textureID = -1;\n this._transformTrimmedID = -1;\n this._textureTrimmedID = -1;\n this.indices = indices;\n this.pluginName = \"batch\";\n this.isSprite = true;\n this._roundPixels = settings.ROUND_PIXELS;\n }\n _onTextureUpdate() {\n this._textureID = -1;\n this._textureTrimmedID = -1;\n this._cachedTint = 16777215;\n if (this._width) {\n this.scale.x = utils.sign(this.scale.x) * this._width / this._texture.orig.width;\n }\n if (this._height) {\n this.scale.y = utils.sign(this.scale.y) * this._height / this._texture.orig.height;\n }\n }\n _onAnchorUpdate() {\n this._transformID = -1;\n this._transformTrimmedID = -1;\n }\n calculateVertices() {\n const texture = this._texture;\n if (this._transformID === this.transform._worldID && this._textureID === texture._updateID) {\n return;\n }\n if (this._textureID !== texture._updateID) {\n this.uvs = this._texture._uvs.uvsFloat32;\n }\n this._transformID = this.transform._worldID;\n this._textureID = texture._updateID;\n const wt = this.transform.worldTransform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const vertexData = this.vertexData;\n const trim = texture.trim;\n const orig = texture.orig;\n const anchor = this._anchor;\n let w0 = 0;\n let w1 = 0;\n let h0 = 0;\n let h1 = 0;\n if (trim) {\n w1 = trim.x - anchor._x * orig.width;\n w0 = w1 + trim.width;\n h1 = trim.y - anchor._y * orig.height;\n h0 = h1 + trim.height;\n } else {\n w1 = -anchor._x * orig.width;\n w0 = w1 + orig.width;\n h1 = -anchor._y * orig.height;\n h0 = h1 + orig.height;\n }\n vertexData[0] = a * w1 + c * h1 + tx;\n vertexData[1] = d * h1 + b * w1 + ty;\n vertexData[2] = a * w0 + c * h1 + tx;\n vertexData[3] = d * h1 + b * w0 + ty;\n vertexData[4] = a * w0 + c * h0 + tx;\n vertexData[5] = d * h0 + b * w0 + ty;\n vertexData[6] = a * w1 + c * h0 + tx;\n vertexData[7] = d * h0 + b * w1 + ty;\n if (this._roundPixels) {\n const resolution = settings.RESOLUTION;\n for (let i = 0; i < vertexData.length; ++i) {\n vertexData[i] = Math.round((vertexData[i] * resolution | 0) / resolution);\n }\n }\n }\n calculateTrimmedVertices() {\n if (!this.vertexTrimmedData) {\n this.vertexTrimmedData = new Float32Array(8);\n } else if (this._transformTrimmedID === this.transform._worldID && this._textureTrimmedID === this._texture._updateID) {\n return;\n }\n this._transformTrimmedID = this.transform._worldID;\n this._textureTrimmedID = this._texture._updateID;\n const texture = this._texture;\n const vertexData = this.vertexTrimmedData;\n const orig = texture.orig;\n const anchor = this._anchor;\n const wt = this.transform.worldTransform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const w1 = -anchor._x * orig.width;\n const w0 = w1 + orig.width;\n const h1 = -anchor._y * orig.height;\n const h0 = h1 + orig.height;\n vertexData[0] = a * w1 + c * h1 + tx;\n vertexData[1] = d * h1 + b * w1 + ty;\n vertexData[2] = a * w0 + c * h1 + tx;\n vertexData[3] = d * h1 + b * w0 + ty;\n vertexData[4] = a * w0 + c * h0 + tx;\n vertexData[5] = d * h0 + b * w0 + ty;\n vertexData[6] = a * w1 + c * h0 + tx;\n vertexData[7] = d * h0 + b * w1 + ty;\n }\n _render(renderer) {\n this.calculateVertices();\n renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]);\n renderer.plugins[this.pluginName].render(this);\n }\n _calculateBounds() {\n const trim = this._texture.trim;\n const orig = this._texture.orig;\n if (!trim || trim.width === orig.width && trim.height === orig.height) {\n this.calculateVertices();\n this._bounds.addQuad(this.vertexData);\n } else {\n this.calculateTrimmedVertices();\n this._bounds.addQuad(this.vertexTrimmedData);\n }\n }\n getLocalBounds(rect) {\n if (this.children.length === 0) {\n if (!this._localBounds) {\n this._localBounds = new Bounds();\n }\n this._localBounds.minX = this._texture.orig.width * -this._anchor._x;\n this._localBounds.minY = this._texture.orig.height * -this._anchor._y;\n this._localBounds.maxX = this._texture.orig.width * (1 - this._anchor._x);\n this._localBounds.maxY = this._texture.orig.height * (1 - this._anchor._y);\n if (!rect) {\n if (!this._localBoundsRect) {\n this._localBoundsRect = new Rectangle();\n }\n rect = this._localBoundsRect;\n }\n return this._localBounds.getRectangle(rect);\n }\n return super.getLocalBounds.call(this, rect);\n }\n containsPoint(point) {\n this.worldTransform.applyInverse(point, tempPoint);\n const width = this._texture.orig.width;\n const height = this._texture.orig.height;\n const x1 = -width * this.anchor.x;\n let y1 = 0;\n if (tempPoint.x >= x1 && tempPoint.x < x1 + width) {\n y1 = -height * this.anchor.y;\n if (tempPoint.y >= y1 && tempPoint.y < y1 + height) {\n return true;\n }\n }\n return false;\n }\n destroy(options) {\n super.destroy(options);\n this._texture.off(\"update\", this._onTextureUpdate, this);\n this._anchor = null;\n const destroyTexture = typeof options === \"boolean\" ? options : options?.texture;\n if (destroyTexture) {\n const destroyBaseTexture = typeof options === \"boolean\" ? options : options?.baseTexture;\n this._texture.destroy(!!destroyBaseTexture);\n }\n this._texture = null;\n }\n static from(source, options) {\n const texture = source instanceof Texture ? source : Texture.from(source, options);\n return new Sprite(texture);\n }\n set roundPixels(value) {\n if (this._roundPixels !== value) {\n this._transformID = -1;\n }\n this._roundPixels = value;\n }\n get roundPixels() {\n return this._roundPixels;\n }\n get width() {\n return Math.abs(this.scale.x) * this._texture.orig.width;\n }\n set width(value) {\n const s = utils.sign(this.scale.x) || 1;\n this.scale.x = s * value / this._texture.orig.width;\n this._width = value;\n }\n get height() {\n return Math.abs(this.scale.y) * this._texture.orig.height;\n }\n set height(value) {\n const s = utils.sign(this.scale.y) || 1;\n this.scale.y = s * value / this._texture.orig.height;\n this._height = value;\n }\n get anchor() {\n return this._anchor;\n }\n set anchor(value) {\n this._anchor.copyFrom(value);\n }\n get tint() {\n return this._tint;\n }\n set tint(value) {\n this._tint = value;\n this._tintRGB = (value >> 16) + (value & 65280) + ((value & 255) << 16);\n }\n get texture() {\n return this._texture;\n }\n set texture(value) {\n if (this._texture === value) {\n return;\n }\n if (this._texture) {\n this._texture.off(\"update\", this._onTextureUpdate, this);\n }\n this._texture = value || Texture.EMPTY;\n this._cachedTint = 16777215;\n this._textureID = -1;\n this._textureTrimmedID = -1;\n if (value) {\n if (value.baseTexture.valid) {\n this._onTextureUpdate();\n } else {\n value.once(\"update\", this._onTextureUpdate, this);\n }\n }\n }\n}\n\nexport { Sprite };\n//# sourceMappingURL=Sprite.mjs.map\n","import { Matrix, settings, RenderTexture, utils, BaseTexture, Texture } from '@pixi/core';\nimport { Sprite } from '@pixi/sprite';\nimport { DisplayObject } from '@pixi/display';\n\nconst _tempMatrix = new Matrix();\nDisplayObject.prototype._cacheAsBitmap = false;\nDisplayObject.prototype._cacheData = null;\nDisplayObject.prototype._cacheAsBitmapResolution = null;\nDisplayObject.prototype._cacheAsBitmapMultisample = null;\nclass CacheData {\n constructor() {\n this.textureCacheId = null;\n this.originalRender = null;\n this.originalRenderCanvas = null;\n this.originalCalculateBounds = null;\n this.originalGetLocalBounds = null;\n this.originalUpdateTransform = null;\n this.originalDestroy = null;\n this.originalMask = null;\n this.originalFilterArea = null;\n this.originalContainsPoint = null;\n this.sprite = null;\n }\n}\nObject.defineProperties(DisplayObject.prototype, {\n cacheAsBitmapResolution: {\n get() {\n return this._cacheAsBitmapResolution;\n },\n set(resolution) {\n if (resolution === this._cacheAsBitmapResolution) {\n return;\n }\n this._cacheAsBitmapResolution = resolution;\n if (this.cacheAsBitmap) {\n this.cacheAsBitmap = false;\n this.cacheAsBitmap = true;\n }\n }\n },\n cacheAsBitmapMultisample: {\n get() {\n return this._cacheAsBitmapMultisample;\n },\n set(multisample) {\n if (multisample === this._cacheAsBitmapMultisample) {\n return;\n }\n this._cacheAsBitmapMultisample = multisample;\n if (this.cacheAsBitmap) {\n this.cacheAsBitmap = false;\n this.cacheAsBitmap = true;\n }\n }\n },\n cacheAsBitmap: {\n get() {\n return this._cacheAsBitmap;\n },\n set(value) {\n if (this._cacheAsBitmap === value) {\n return;\n }\n this._cacheAsBitmap = value;\n let data;\n if (value) {\n if (!this._cacheData) {\n this._cacheData = new CacheData();\n }\n data = this._cacheData;\n data.originalRender = this.render;\n data.originalRenderCanvas = this.renderCanvas;\n data.originalUpdateTransform = this.updateTransform;\n data.originalCalculateBounds = this.calculateBounds;\n data.originalGetLocalBounds = this.getLocalBounds;\n data.originalDestroy = this.destroy;\n data.originalContainsPoint = this.containsPoint;\n data.originalMask = this._mask;\n data.originalFilterArea = this.filterArea;\n this.render = this._renderCached;\n this.renderCanvas = this._renderCachedCanvas;\n this.destroy = this._cacheAsBitmapDestroy;\n } else {\n data = this._cacheData;\n if (data.sprite) {\n this._destroyCachedDisplayObject();\n }\n this.render = data.originalRender;\n this.renderCanvas = data.originalRenderCanvas;\n this.calculateBounds = data.originalCalculateBounds;\n this.getLocalBounds = data.originalGetLocalBounds;\n this.destroy = data.originalDestroy;\n this.updateTransform = data.originalUpdateTransform;\n this.containsPoint = data.originalContainsPoint;\n this._mask = data.originalMask;\n this.filterArea = data.originalFilterArea;\n }\n }\n }\n});\nDisplayObject.prototype._renderCached = function _renderCached(renderer) {\n if (!this.visible || this.worldAlpha <= 0 || !this.renderable) {\n return;\n }\n this._initCachedDisplayObject(renderer);\n this._cacheData.sprite.transform._worldID = this.transform._worldID;\n this._cacheData.sprite.worldAlpha = this.worldAlpha;\n this._cacheData.sprite._render(renderer);\n};\nDisplayObject.prototype._initCachedDisplayObject = function _initCachedDisplayObject(renderer) {\n if (this._cacheData?.sprite) {\n return;\n }\n const cacheAlpha = this.alpha;\n this.alpha = 1;\n renderer.batch.flush();\n const bounds = this.getLocalBounds(null, true).clone();\n if (this.filters?.length) {\n const padding = this.filters[0].padding;\n bounds.pad(padding);\n }\n bounds.ceil(settings.RESOLUTION);\n const cachedRenderTexture = renderer.renderTexture.current;\n const cachedSourceFrame = renderer.renderTexture.sourceFrame.clone();\n const cachedDestinationFrame = renderer.renderTexture.destinationFrame.clone();\n const cachedProjectionTransform = renderer.projection.transform;\n const renderTexture = RenderTexture.create({\n width: bounds.width,\n height: bounds.height,\n resolution: this.cacheAsBitmapResolution || renderer.resolution,\n multisample: this.cacheAsBitmapMultisample ?? renderer.multisample\n });\n const textureCacheId = `cacheAsBitmap_${utils.uid()}`;\n this._cacheData.textureCacheId = textureCacheId;\n BaseTexture.addToCache(renderTexture.baseTexture, textureCacheId);\n Texture.addToCache(renderTexture, textureCacheId);\n const m = this.transform.localTransform.copyTo(_tempMatrix).invert().translate(-bounds.x, -bounds.y);\n this.render = this._cacheData.originalRender;\n renderer.render(this, { renderTexture, clear: true, transform: m, skipUpdateTransform: false });\n renderer.framebuffer.blit();\n renderer.projection.transform = cachedProjectionTransform;\n renderer.renderTexture.bind(cachedRenderTexture, cachedSourceFrame, cachedDestinationFrame);\n this.render = this._renderCached;\n this.updateTransform = this.displayObjectUpdateTransform;\n this.calculateBounds = this._calculateCachedBounds;\n this.getLocalBounds = this._getCachedLocalBounds;\n this._mask = null;\n this.filterArea = null;\n this.alpha = cacheAlpha;\n const cachedSprite = new Sprite(renderTexture);\n cachedSprite.transform.worldTransform = this.transform.worldTransform;\n cachedSprite.anchor.x = -(bounds.x / bounds.width);\n cachedSprite.anchor.y = -(bounds.y / bounds.height);\n cachedSprite.alpha = cacheAlpha;\n cachedSprite._bounds = this._bounds;\n this._cacheData.sprite = cachedSprite;\n this.transform._parentID = -1;\n if (!this.parent) {\n this.enableTempParent();\n this.updateTransform();\n this.disableTempParent(null);\n } else {\n this.updateTransform();\n }\n this.containsPoint = cachedSprite.containsPoint.bind(cachedSprite);\n};\nDisplayObject.prototype._renderCachedCanvas = function _renderCachedCanvas(renderer) {\n if (!this.visible || this.worldAlpha <= 0 || !this.renderable) {\n return;\n }\n this._initCachedDisplayObjectCanvas(renderer);\n this._cacheData.sprite.worldAlpha = this.worldAlpha;\n this._cacheData.sprite._renderCanvas(renderer);\n};\nDisplayObject.prototype._initCachedDisplayObjectCanvas = function _initCachedDisplayObjectCanvas(renderer) {\n if (this._cacheData?.sprite) {\n return;\n }\n const bounds = this.getLocalBounds(null, true);\n const cacheAlpha = this.alpha;\n this.alpha = 1;\n const cachedRenderTarget = renderer.canvasContext.activeContext;\n const cachedProjectionTransform = renderer._projTransform;\n bounds.ceil(settings.RESOLUTION);\n const renderTexture = RenderTexture.create({ width: bounds.width, height: bounds.height });\n const textureCacheId = `cacheAsBitmap_${utils.uid()}`;\n this._cacheData.textureCacheId = textureCacheId;\n BaseTexture.addToCache(renderTexture.baseTexture, textureCacheId);\n Texture.addToCache(renderTexture, textureCacheId);\n const m = _tempMatrix;\n this.transform.localTransform.copyTo(m);\n m.invert();\n m.tx -= bounds.x;\n m.ty -= bounds.y;\n this.renderCanvas = this._cacheData.originalRenderCanvas;\n renderer.render(this, { renderTexture, clear: true, transform: m, skipUpdateTransform: false });\n renderer.canvasContext.activeContext = cachedRenderTarget;\n renderer._projTransform = cachedProjectionTransform;\n this.renderCanvas = this._renderCachedCanvas;\n this.updateTransform = this.displayObjectUpdateTransform;\n this.calculateBounds = this._calculateCachedBounds;\n this.getLocalBounds = this._getCachedLocalBounds;\n this._mask = null;\n this.filterArea = null;\n this.alpha = cacheAlpha;\n const cachedSprite = new Sprite(renderTexture);\n cachedSprite.transform.worldTransform = this.transform.worldTransform;\n cachedSprite.anchor.x = -(bounds.x / bounds.width);\n cachedSprite.anchor.y = -(bounds.y / bounds.height);\n cachedSprite.alpha = cacheAlpha;\n cachedSprite._bounds = this._bounds;\n this._cacheData.sprite = cachedSprite;\n this.transform._parentID = -1;\n if (!this.parent) {\n this.parent = renderer._tempDisplayObjectParent;\n this.updateTransform();\n this.parent = null;\n } else {\n this.updateTransform();\n }\n this.containsPoint = cachedSprite.containsPoint.bind(cachedSprite);\n};\nDisplayObject.prototype._calculateCachedBounds = function _calculateCachedBounds() {\n this._bounds.clear();\n this._cacheData.sprite.transform._worldID = this.transform._worldID;\n this._cacheData.sprite._calculateBounds();\n this._bounds.updateID = this._boundsID;\n};\nDisplayObject.prototype._getCachedLocalBounds = function _getCachedLocalBounds() {\n return this._cacheData.sprite.getLocalBounds(null);\n};\nDisplayObject.prototype._destroyCachedDisplayObject = function _destroyCachedDisplayObject() {\n this._cacheData.sprite._texture.destroy(true);\n this._cacheData.sprite = null;\n BaseTexture.removeFromCache(this._cacheData.textureCacheId);\n Texture.removeFromCache(this._cacheData.textureCacheId);\n this._cacheData.textureCacheId = null;\n};\nDisplayObject.prototype._cacheAsBitmapDestroy = function _cacheAsBitmapDestroy(options) {\n this.cacheAsBitmap = false;\n this.destroy(options);\n};\n\nexport { CacheData };\n//# sourceMappingURL=index.mjs.map\n","import { DisplayObject, Container } from '@pixi/display';\n\nDisplayObject.prototype.name = null;\nContainer.prototype.getChildByName = function getChildByName(name, deep) {\n for (let i = 0, j = this.children.length; i < j; i++) {\n if (this.children[i].name === name) {\n return this.children[i];\n }\n }\n if (deep) {\n for (let i = 0, j = this.children.length; i < j; i++) {\n const child = this.children[i];\n if (!child.getChildByName) {\n continue;\n }\n const target = child.getChildByName(name, true);\n if (target) {\n return target;\n }\n }\n }\n return null;\n};\n//# sourceMappingURL=index.mjs.map\n","import { DisplayObject } from '@pixi/display';\nimport { Point } from '@pixi/core';\n\nDisplayObject.prototype.getGlobalPosition = function getGlobalPosition(point = new Point(), skipUpdate = false) {\n if (this.parent) {\n this.parent.toGlobal(this.position, point, skipUpdate);\n } else {\n point.x = this.position.x;\n point.y = this.position.y;\n }\n return point;\n};\n//# sourceMappingURL=index.mjs.map\n","const accessibleTarget = {\n accessible: false,\n accessibleTitle: null,\n accessibleHint: null,\n tabIndex: 0,\n _accessibleActive: false,\n _accessibleDiv: null,\n accessibleType: \"button\",\n accessiblePointerEvents: \"auto\",\n accessibleChildren: true,\n renderId: -1\n};\n\nexport { accessibleTarget };\n//# sourceMappingURL=accessibleTarget.mjs.map\n","import { Point } from '@pixi/core';\n\nclass FederatedEvent {\n constructor(manager) {\n this.bubbles = true;\n this.cancelBubble = true;\n this.cancelable = false;\n this.composed = false;\n this.defaultPrevented = false;\n this.eventPhase = FederatedEvent.prototype.NONE;\n this.propagationStopped = false;\n this.propagationImmediatelyStopped = false;\n this.layer = new Point();\n this.page = new Point();\n this.AT_TARGET = 1;\n this.BUBBLING_PHASE = 2;\n this.CAPTURING_PHASE = 3;\n this.NONE = 0;\n this.manager = manager;\n }\n get layerX() {\n return this.layer.x;\n }\n get layerY() {\n return this.layer.y;\n }\n get pageX() {\n return this.page.x;\n }\n get pageY() {\n return this.page.y;\n }\n get data() {\n return this;\n }\n composedPath() {\n if (this.manager && (!this.path || this.path[this.path.length - 1] !== this.target)) {\n this.path = this.target ? this.manager.propagationPath(this.target) : [];\n }\n return this.path;\n }\n initEvent(_type, _bubbles, _cancelable) {\n throw new Error(\"initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.\");\n }\n initUIEvent(_typeArg, _bubblesArg, _cancelableArg, _viewArg, _detailArg) {\n throw new Error(\"initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.\");\n }\n preventDefault() {\n if (this.nativeEvent instanceof Event && this.nativeEvent.cancelable) {\n this.nativeEvent.preventDefault();\n }\n this.defaultPrevented = true;\n }\n stopImmediatePropagation() {\n this.propagationImmediatelyStopped = true;\n }\n stopPropagation() {\n this.propagationStopped = true;\n }\n}\n\nexport { FederatedEvent };\n//# sourceMappingURL=FederatedEvent.mjs.map\n","import { FederatedEvent } from './FederatedEvent.mjs';\nimport { Point } from '@pixi/core';\n\nclass FederatedMouseEvent extends FederatedEvent {\n constructor() {\n super(...arguments);\n this.client = new Point();\n this.movement = new Point();\n this.offset = new Point();\n this.global = new Point();\n this.screen = new Point();\n }\n get clientX() {\n return this.client.x;\n }\n get clientY() {\n return this.client.y;\n }\n get x() {\n return this.clientX;\n }\n get y() {\n return this.clientY;\n }\n get movementX() {\n return this.movement.x;\n }\n get movementY() {\n return this.movement.y;\n }\n get offsetX() {\n return this.offset.x;\n }\n get offsetY() {\n return this.offset.y;\n }\n get globalX() {\n return this.global.x;\n }\n get globalY() {\n return this.global.y;\n }\n get screenX() {\n return this.screen.x;\n }\n get screenY() {\n return this.screen.y;\n }\n getModifierState(key) {\n return \"getModifierState\" in this.nativeEvent && this.nativeEvent.getModifierState(key);\n }\n initMouseEvent(_typeArg, _canBubbleArg, _cancelableArg, _viewArg, _detailArg, _screenXArg, _screenYArg, _clientXArg, _clientYArg, _ctrlKeyArg, _altKeyArg, _shiftKeyArg, _metaKeyArg, _buttonArg, _relatedTargetArg) {\n throw new Error(\"Method not implemented.\");\n }\n}\n\nexport { FederatedMouseEvent };\n//# sourceMappingURL=FederatedMouseEvent.mjs.map\n","import { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\n\nclass FederatedPointerEvent extends FederatedMouseEvent {\n constructor() {\n super(...arguments);\n this.width = 0;\n this.height = 0;\n this.isPrimary = false;\n }\n getCoalescedEvents() {\n if (this.type === \"pointermove\" || this.type === \"mousemove\" || this.type === \"touchmove\") {\n return [this];\n }\n return [];\n }\n getPredictedEvents() {\n throw new Error(\"getPredictedEvents is not supported!\");\n }\n}\n\nexport { FederatedPointerEvent };\n//# sourceMappingURL=FederatedPointerEvent.mjs.map\n","import { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\n\nclass FederatedWheelEvent extends FederatedMouseEvent {\n constructor() {\n super(...arguments);\n this.DOM_DELTA_LINE = 0;\n this.DOM_DELTA_PAGE = 1;\n this.DOM_DELTA_PIXEL = 2;\n }\n}\n\nexport { FederatedWheelEvent };\n//# sourceMappingURL=FederatedWheelEvent.mjs.map\n","import { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\nimport { FederatedPointerEvent } from './FederatedPointerEvent.mjs';\nimport { FederatedWheelEvent } from './FederatedWheelEvent.mjs';\nimport { Point, utils } from '@pixi/core';\n\nconst PROPAGATION_LIMIT = 2048;\nconst tempHitLocation = new Point();\nconst tempLocalMapping = new Point();\nclass EventBoundary {\n constructor(rootTarget) {\n this.dispatch = new utils.EventEmitter();\n this.moveOnAll = false;\n this.mappingState = {\n trackingData: {}\n };\n this.eventPool = /* @__PURE__ */ new Map();\n this.rootTarget = rootTarget;\n this.hitPruneFn = this.hitPruneFn.bind(this);\n this.hitTestFn = this.hitTestFn.bind(this);\n this.mapPointerDown = this.mapPointerDown.bind(this);\n this.mapPointerMove = this.mapPointerMove.bind(this);\n this.mapPointerOut = this.mapPointerOut.bind(this);\n this.mapPointerOver = this.mapPointerOver.bind(this);\n this.mapPointerUp = this.mapPointerUp.bind(this);\n this.mapPointerUpOutside = this.mapPointerUpOutside.bind(this);\n this.mapWheel = this.mapWheel.bind(this);\n this.mappingTable = {};\n this.addEventMapping(\"pointerdown\", this.mapPointerDown);\n this.addEventMapping(\"pointermove\", this.mapPointerMove);\n this.addEventMapping(\"pointerout\", this.mapPointerOut);\n this.addEventMapping(\"pointerleave\", this.mapPointerOut);\n this.addEventMapping(\"pointerover\", this.mapPointerOver);\n this.addEventMapping(\"pointerup\", this.mapPointerUp);\n this.addEventMapping(\"pointerupoutside\", this.mapPointerUpOutside);\n this.addEventMapping(\"wheel\", this.mapWheel);\n }\n addEventMapping(type, fn) {\n if (!this.mappingTable[type]) {\n this.mappingTable[type] = [];\n }\n this.mappingTable[type].push({\n fn,\n priority: 0\n });\n this.mappingTable[type].sort((a, b) => a.priority - b.priority);\n }\n dispatchEvent(e, type) {\n e.propagationStopped = false;\n e.propagationImmediatelyStopped = false;\n this.propagate(e, type);\n this.dispatch.emit(type || e.type, e);\n }\n mapEvent(e) {\n if (!this.rootTarget) {\n return;\n }\n const mappers = this.mappingTable[e.type];\n if (mappers) {\n for (let i = 0, j = mappers.length; i < j; i++) {\n mappers[i].fn(e);\n }\n } else {\n console.warn(`[EventBoundary]: Event mapping not defined for ${e.type}`);\n }\n }\n hitTest(x, y) {\n const invertedPath = this.hitTestRecursive(this.rootTarget, this.rootTarget.interactive, tempHitLocation.set(x, y), this.hitTestFn, this.hitPruneFn);\n return invertedPath && invertedPath[0];\n }\n propagate(e, type) {\n if (!e.target) {\n return;\n }\n const composedPath = e.composedPath();\n e.eventPhase = e.CAPTURING_PHASE;\n for (let i = 0, j = composedPath.length - 1; i < j; i++) {\n e.currentTarget = composedPath[i];\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n }\n e.eventPhase = e.AT_TARGET;\n e.currentTarget = e.target;\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n e.eventPhase = e.BUBBLING_PHASE;\n for (let i = composedPath.length - 2; i >= 0; i--) {\n e.currentTarget = composedPath[i];\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n }\n }\n all(e, type, target = this.rootTarget) {\n e.eventPhase = e.BUBBLING_PHASE;\n const children = target.children;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n this.all(e, type, children[i]);\n }\n }\n e.currentTarget = target;\n this.notifyTarget(e, type);\n }\n propagationPath(target) {\n const propagationPath = [target];\n for (let i = 0; i < PROPAGATION_LIMIT && target !== this.rootTarget; i++) {\n if (!target.parent) {\n throw new Error(\"Cannot find propagation path to disconnected target\");\n }\n propagationPath.push(target.parent);\n target = target.parent;\n }\n propagationPath.reverse();\n return propagationPath;\n }\n hitTestRecursive(currentTarget, interactive, location, testFn, pruneFn) {\n if (!currentTarget || !currentTarget.visible) {\n return null;\n }\n if (pruneFn(currentTarget, location)) {\n return null;\n }\n if (currentTarget.interactiveChildren && currentTarget.children) {\n const children = currentTarget.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n const nestedHit = this.hitTestRecursive(child, interactive || child.interactive, location, testFn, pruneFn);\n if (nestedHit) {\n if (nestedHit.length > 0 && !nestedHit[nestedHit.length - 1].parent) {\n continue;\n }\n if (nestedHit.length > 0 || currentTarget.interactive) {\n nestedHit.push(currentTarget);\n }\n return nestedHit;\n }\n }\n }\n if (interactive && testFn(currentTarget, location)) {\n return currentTarget.interactive ? [currentTarget] : [];\n }\n return null;\n }\n hitPruneFn(displayObject, location) {\n if (displayObject.hitArea) {\n displayObject.worldTransform.applyInverse(location, tempLocalMapping);\n if (!displayObject.hitArea.contains(tempLocalMapping.x, tempLocalMapping.y)) {\n return true;\n }\n }\n if (displayObject._mask) {\n const maskObject = displayObject._mask.isMaskData ? displayObject._mask.maskObject : displayObject._mask;\n if (maskObject && !maskObject.containsPoint?.(location)) {\n return true;\n }\n }\n return false;\n }\n hitTestFn(displayObject, location) {\n if (displayObject.hitArea) {\n return true;\n }\n if (displayObject.containsPoint) {\n return displayObject.containsPoint(location);\n }\n return false;\n }\n notifyTarget(e, type) {\n type = type ?? e.type;\n const key = e.eventPhase === e.CAPTURING_PHASE || e.eventPhase === e.AT_TARGET ? `${type}capture` : type;\n this.notifyListeners(e, key);\n if (e.eventPhase === e.AT_TARGET) {\n this.notifyListeners(e, type);\n }\n }\n mapPointerDown(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const e = this.createPointerEvent(from);\n this.dispatchEvent(e, \"pointerdown\");\n if (e.pointerType === \"touch\") {\n this.dispatchEvent(e, \"touchstart\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.dispatchEvent(e, isRightButton ? \"rightdown\" : \"mousedown\");\n }\n const trackingData = this.trackingData(from.pointerId);\n trackingData.pressTargetsByButton[from.button] = e.composedPath();\n this.freeEvent(e);\n }\n mapPointerMove(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const e = this.createPointerEvent(from);\n const isMouse = e.pointerType === \"mouse\" || e.pointerType === \"pen\";\n const trackingData = this.trackingData(from.pointerId);\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n if (trackingData.overTargets && outTarget !== e.target) {\n const outType = from.type === \"mousemove\" ? \"mouseout\" : \"pointerout\";\n const outEvent = this.createPointerEvent(from, outType, outTarget);\n this.dispatchEvent(outEvent, \"pointerout\");\n if (isMouse)\n this.dispatchEvent(outEvent, \"mouseout\");\n if (!e.composedPath().includes(outTarget)) {\n const leaveEvent = this.createPointerEvent(from, \"pointerleave\", outTarget);\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n while (leaveEvent.target && !e.composedPath().includes(leaveEvent.target)) {\n leaveEvent.currentTarget = leaveEvent.target;\n this.notifyTarget(leaveEvent);\n if (isMouse)\n this.notifyTarget(leaveEvent, \"mouseleave\");\n leaveEvent.target = leaveEvent.target.parent;\n }\n this.freeEvent(leaveEvent);\n }\n this.freeEvent(outEvent);\n }\n if (outTarget !== e.target) {\n const overType = from.type === \"mousemove\" ? \"mouseover\" : \"pointerover\";\n const overEvent = this.clonePointerEvent(e, overType);\n this.dispatchEvent(overEvent, \"pointerover\");\n if (isMouse)\n this.dispatchEvent(overEvent, \"mouseover\");\n let overTargetAncestor = outTarget?.parent;\n while (overTargetAncestor && overTargetAncestor !== this.rootTarget.parent) {\n if (overTargetAncestor === e.target)\n break;\n overTargetAncestor = overTargetAncestor.parent;\n }\n const didPointerEnter = !overTargetAncestor || overTargetAncestor === this.rootTarget.parent;\n if (didPointerEnter) {\n const enterEvent = this.clonePointerEvent(e, \"pointerenter\");\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n while (enterEvent.target && enterEvent.target !== outTarget && enterEvent.target !== this.rootTarget.parent) {\n enterEvent.currentTarget = enterEvent.target;\n this.notifyTarget(enterEvent);\n if (isMouse)\n this.notifyTarget(enterEvent, \"mouseenter\");\n enterEvent.target = enterEvent.target.parent;\n }\n this.freeEvent(enterEvent);\n }\n this.freeEvent(overEvent);\n }\n const propagationMethod = this.moveOnAll ? \"all\" : \"dispatchEvent\";\n this[propagationMethod](e, \"pointermove\");\n if (e.pointerType === \"touch\")\n this[propagationMethod](e, \"touchmove\");\n if (isMouse) {\n this[propagationMethod](e, \"mousemove\");\n this.cursor = e.target?.cursor;\n }\n trackingData.overTargets = e.composedPath();\n this.freeEvent(e);\n }\n mapPointerOver(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n const e = this.createPointerEvent(from);\n const isMouse = e.pointerType === \"mouse\" || e.pointerType === \"pen\";\n this.dispatchEvent(e, \"pointerover\");\n if (isMouse)\n this.dispatchEvent(e, \"mouseover\");\n if (e.pointerType === \"mouse\")\n this.cursor = e.target?.cursor;\n const enterEvent = this.clonePointerEvent(e, \"pointerenter\");\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n while (enterEvent.target && enterEvent.target !== this.rootTarget.parent) {\n enterEvent.currentTarget = enterEvent.target;\n this.notifyTarget(enterEvent);\n if (isMouse)\n this.notifyTarget(enterEvent, \"mouseenter\");\n enterEvent.target = enterEvent.target.parent;\n }\n trackingData.overTargets = e.composedPath();\n this.freeEvent(e);\n this.freeEvent(enterEvent);\n }\n mapPointerOut(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n if (trackingData.overTargets) {\n const isMouse = from.pointerType === \"mouse\" || from.pointerType === \"pen\";\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n const outEvent = this.createPointerEvent(from, \"pointerout\", outTarget);\n this.dispatchEvent(outEvent);\n if (isMouse)\n this.dispatchEvent(outEvent, \"mouseout\");\n const leaveEvent = this.createPointerEvent(from, \"pointerleave\", outTarget);\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n while (leaveEvent.target && leaveEvent.target !== this.rootTarget.parent) {\n leaveEvent.currentTarget = leaveEvent.target;\n this.notifyTarget(leaveEvent);\n if (isMouse)\n this.notifyTarget(leaveEvent, \"mouseleave\");\n leaveEvent.target = leaveEvent.target.parent;\n }\n trackingData.overTargets = null;\n this.freeEvent(outEvent);\n this.freeEvent(leaveEvent);\n }\n this.cursor = null;\n }\n mapPointerUp(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const now = performance.now();\n const e = this.createPointerEvent(from);\n this.dispatchEvent(e, \"pointerup\");\n if (e.pointerType === \"touch\") {\n this.dispatchEvent(e, \"touchend\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.dispatchEvent(e, isRightButton ? \"rightup\" : \"mouseup\");\n }\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n let clickTarget = pressTarget;\n if (pressTarget && !e.composedPath().includes(pressTarget)) {\n let currentTarget = pressTarget;\n while (currentTarget && !e.composedPath().includes(currentTarget)) {\n e.currentTarget = currentTarget;\n this.notifyTarget(e, \"pointerupoutside\");\n if (e.pointerType === \"touch\") {\n this.notifyTarget(e, \"touchendoutside\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.notifyTarget(e, isRightButton ? \"rightupoutside\" : \"mouseupoutside\");\n }\n currentTarget = currentTarget.parent;\n }\n delete trackingData.pressTargetsByButton[from.button];\n clickTarget = currentTarget;\n }\n if (clickTarget) {\n const clickEvent = this.clonePointerEvent(e, \"click\");\n clickEvent.target = clickTarget;\n clickEvent.path = null;\n if (!trackingData.clicksByButton[from.button]) {\n trackingData.clicksByButton[from.button] = {\n clickCount: 0,\n target: clickEvent.target,\n timeStamp: now\n };\n }\n const clickHistory = trackingData.clicksByButton[from.button];\n if (clickHistory.target === clickEvent.target && now - clickHistory.timeStamp < 200) {\n ++clickHistory.clickCount;\n } else {\n clickHistory.clickCount = 1;\n }\n clickHistory.target = clickEvent.target;\n clickHistory.timeStamp = now;\n clickEvent.detail = clickHistory.clickCount;\n if (clickEvent.pointerType === \"mouse\") {\n this.dispatchEvent(clickEvent, \"click\");\n } else if (clickEvent.pointerType === \"touch\") {\n this.dispatchEvent(clickEvent, \"tap\");\n }\n this.dispatchEvent(clickEvent, \"pointertap\");\n this.freeEvent(clickEvent);\n }\n this.freeEvent(e);\n }\n mapPointerUpOutside(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n const e = this.createPointerEvent(from);\n if (pressTarget) {\n let currentTarget = pressTarget;\n while (currentTarget) {\n e.currentTarget = currentTarget;\n this.notifyTarget(e, \"pointerupoutside\");\n if (e.pointerType === \"touch\") {\n this.notifyTarget(e, \"touchendoutside\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n this.notifyTarget(e, e.button === 2 ? \"rightupoutside\" : \"mouseupoutside\");\n }\n currentTarget = currentTarget.parent;\n }\n delete trackingData.pressTargetsByButton[from.button];\n }\n this.freeEvent(e);\n }\n mapWheel(from) {\n if (!(from instanceof FederatedWheelEvent)) {\n console.warn(\"EventBoundary cannot map a non-wheel event as a wheel event\");\n return;\n }\n const wheelEvent = this.createWheelEvent(from);\n this.dispatchEvent(wheelEvent);\n this.freeEvent(wheelEvent);\n }\n findMountedTarget(propagationPath) {\n if (!propagationPath) {\n return null;\n }\n let currentTarget = propagationPath[0];\n for (let i = 1; i < propagationPath.length; i++) {\n if (propagationPath[i].parent === currentTarget) {\n currentTarget = propagationPath[i];\n } else {\n break;\n }\n }\n return currentTarget;\n }\n createPointerEvent(from, type, target) {\n const event = this.allocateEvent(FederatedPointerEvent);\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n event.target = target ?? this.hitTest(event.global.x, event.global.y);\n if (typeof type === \"string\") {\n event.type = type;\n }\n return event;\n }\n createWheelEvent(from) {\n const event = this.allocateEvent(FederatedWheelEvent);\n this.copyWheelData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n event.target = this.hitTest(event.global.x, event.global.y);\n return event;\n }\n clonePointerEvent(from, type) {\n const event = this.allocateEvent(FederatedPointerEvent);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from.originalEvent;\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.target = from.target;\n event.path = from.composedPath().slice();\n event.type = type ?? event.type;\n return event;\n }\n copyWheelData(from, to) {\n to.deltaMode = from.deltaMode;\n to.deltaX = from.deltaX;\n to.deltaY = from.deltaY;\n to.deltaZ = from.deltaZ;\n }\n copyPointerData(from, to) {\n if (!(from instanceof FederatedPointerEvent && to instanceof FederatedPointerEvent))\n return;\n to.pointerId = from.pointerId;\n to.width = from.width;\n to.height = from.height;\n to.isPrimary = from.isPrimary;\n to.pointerType = from.pointerType;\n to.pressure = from.pressure;\n to.tangentialPressure = from.tangentialPressure;\n to.tiltX = from.tiltX;\n to.tiltY = from.tiltY;\n to.twist = from.twist;\n }\n copyMouseData(from, to) {\n if (!(from instanceof FederatedMouseEvent && to instanceof FederatedMouseEvent))\n return;\n to.altKey = from.altKey;\n to.button = from.button;\n to.buttons = from.buttons;\n to.client.copyFrom(from.client);\n to.ctrlKey = from.ctrlKey;\n to.metaKey = from.metaKey;\n to.movement.copyFrom(from.movement);\n to.screen.copyFrom(from.screen);\n to.global.copyFrom(from.global);\n }\n copyData(from, to) {\n to.isTrusted = from.isTrusted;\n to.srcElement = from.srcElement;\n to.timeStamp = performance.now();\n to.type = from.type;\n to.detail = from.detail;\n to.view = from.view;\n to.which = from.which;\n to.layer.copyFrom(from.layer);\n to.page.copyFrom(from.page);\n }\n trackingData(id) {\n if (!this.mappingState.trackingData[id]) {\n this.mappingState.trackingData[id] = {\n pressTargetsByButton: {},\n clicksByButton: {},\n overTarget: null\n };\n }\n return this.mappingState.trackingData[id];\n }\n allocateEvent(constructor) {\n if (!this.eventPool.has(constructor)) {\n this.eventPool.set(constructor, []);\n }\n const event = this.eventPool.get(constructor).pop() || new constructor(this);\n event.eventPhase = event.NONE;\n event.currentTarget = null;\n event.path = null;\n event.target = null;\n return event;\n }\n freeEvent(event) {\n if (event.manager !== this)\n throw new Error(\"It is illegal to free an event not managed by this EventBoundary!\");\n const constructor = event.constructor;\n if (!this.eventPool.has(constructor)) {\n this.eventPool.set(constructor, []);\n }\n this.eventPool.get(constructor).push(event);\n }\n notifyListeners(e, type) {\n const listeners = e.currentTarget._events[type];\n if (!listeners)\n return;\n if (\"fn\" in listeners) {\n listeners.fn.call(listeners.context, e);\n } else {\n for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++) {\n listeners[i].fn.call(listeners[i].context, e);\n }\n }\n }\n}\n\nexport { EventBoundary };\n//# sourceMappingURL=EventBoundary.mjs.map\n","import { EventBoundary } from './EventBoundary.mjs';\nimport { FederatedPointerEvent } from './FederatedPointerEvent.mjs';\nimport { FederatedWheelEvent } from './FederatedWheelEvent.mjs';\nimport { ExtensionType, extensions } from '@pixi/core';\n\nconst MOUSE_POINTER_ID = 1;\nconst TOUCH_TO_POINTER = {\n touchstart: \"pointerdown\",\n touchend: \"pointerup\",\n touchendoutside: \"pointerupoutside\",\n touchmove: \"pointermove\",\n touchcancel: \"pointercancel\"\n};\nclass EventSystem {\n constructor(renderer) {\n this.supportsTouchEvents = \"ontouchstart\" in globalThis;\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.domElement = null;\n this.resolution = 1;\n this.renderer = renderer;\n this.rootBoundary = new EventBoundary(null);\n this.autoPreventDefault = true;\n this.eventsAdded = false;\n this.rootPointerEvent = new FederatedPointerEvent(null);\n this.rootWheelEvent = new FederatedWheelEvent(null);\n this.cursorStyles = {\n default: \"inherit\",\n pointer: \"pointer\"\n };\n this.onPointerDown = this.onPointerDown.bind(this);\n this.onPointerMove = this.onPointerMove.bind(this);\n this.onPointerUp = this.onPointerUp.bind(this);\n this.onPointerOverOut = this.onPointerOverOut.bind(this);\n this.onWheel = this.onWheel.bind(this);\n }\n init() {\n const { view, resolution } = this.renderer;\n this.setTargetElement(view);\n this.resolution = resolution;\n }\n destroy() {\n this.setTargetElement(null);\n this.renderer = null;\n }\n setCursor(mode) {\n mode = mode || \"default\";\n let applyStyles = true;\n if (globalThis.OffscreenCanvas && this.domElement instanceof OffscreenCanvas) {\n applyStyles = false;\n }\n if (this.currentCursor === mode) {\n return;\n }\n this.currentCursor = mode;\n const style = this.cursorStyles[mode];\n if (style) {\n switch (typeof style) {\n case \"string\":\n if (applyStyles) {\n this.domElement.style.cursor = style;\n }\n break;\n case \"function\":\n style(mode);\n break;\n case \"object\":\n if (applyStyles) {\n Object.assign(this.domElement.style, style);\n }\n break;\n }\n } else if (applyStyles && typeof mode === \"string\" && !Object.prototype.hasOwnProperty.call(this.cursorStyles, mode)) {\n this.domElement.style.cursor = mode;\n }\n }\n onPointerDown(nativeEvent) {\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n if (this.supportsTouchEvents && nativeEvent.pointerType === \"touch\")\n return;\n const events = this.normalizeToPointerData(nativeEvent);\n if (this.autoPreventDefault && events[0].isNormalized) {\n const cancelable = nativeEvent.cancelable || !(\"cancelable\" in nativeEvent);\n if (cancelable) {\n nativeEvent.preventDefault();\n }\n }\n for (let i = 0, j = events.length; i < j; i++) {\n const nativeEvent2 = events[i];\n const federatedEvent = this.bootstrapEvent(this.rootPointerEvent, nativeEvent2);\n this.rootBoundary.mapEvent(federatedEvent);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n onPointerMove(nativeEvent) {\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n if (this.supportsTouchEvents && nativeEvent.pointerType === \"touch\")\n return;\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n onPointerUp(nativeEvent) {\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n if (this.supportsTouchEvents && nativeEvent.pointerType === \"touch\")\n return;\n let target = nativeEvent.target;\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) {\n target = nativeEvent.composedPath()[0];\n }\n const outside = target !== this.domElement ? \"outside\" : \"\";\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n event.type += outside;\n this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n onPointerOverOut(nativeEvent) {\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n if (this.supportsTouchEvents && nativeEvent.pointerType === \"touch\")\n return;\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n onWheel(nativeEvent) {\n const wheelEvent = this.normalizeWheelEvent(nativeEvent);\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n this.rootBoundary.mapEvent(wheelEvent);\n }\n setTargetElement(element) {\n this.removeEvents();\n this.domElement = element;\n this.addEvents();\n }\n addEvents() {\n if (this.eventsAdded || !this.domElement) {\n return;\n }\n const style = this.domElement.style;\n if (style) {\n if (globalThis.navigator.msPointerEnabled) {\n style.msContentZooming = \"none\";\n style.msTouchAction = \"none\";\n } else if (this.supportsPointerEvents) {\n style.touchAction = \"none\";\n }\n }\n if (this.supportsPointerEvents) {\n globalThis.document.addEventListener(\"pointermove\", this.onPointerMove, true);\n this.domElement.addEventListener(\"pointerdown\", this.onPointerDown, true);\n this.domElement.addEventListener(\"pointerleave\", this.onPointerOverOut, true);\n this.domElement.addEventListener(\"pointerover\", this.onPointerOverOut, true);\n globalThis.addEventListener(\"pointerup\", this.onPointerUp, true);\n } else {\n globalThis.document.addEventListener(\"mousemove\", this.onPointerMove, true);\n this.domElement.addEventListener(\"mousedown\", this.onPointerDown, true);\n this.domElement.addEventListener(\"mouseout\", this.onPointerOverOut, true);\n this.domElement.addEventListener(\"mouseover\", this.onPointerOverOut, true);\n globalThis.addEventListener(\"mouseup\", this.onPointerUp, true);\n }\n if (this.supportsTouchEvents) {\n this.domElement.addEventListener(\"touchstart\", this.onPointerDown, true);\n this.domElement.addEventListener(\"touchend\", this.onPointerUp, true);\n this.domElement.addEventListener(\"touchmove\", this.onPointerMove, true);\n }\n this.domElement.addEventListener(\"wheel\", this.onWheel, {\n passive: true,\n capture: true\n });\n this.eventsAdded = true;\n }\n removeEvents() {\n if (!this.eventsAdded || !this.domElement) {\n return;\n }\n const style = this.domElement.style;\n if (globalThis.navigator.msPointerEnabled) {\n style.msContentZooming = \"\";\n style.msTouchAction = \"\";\n } else if (this.supportsPointerEvents) {\n style.touchAction = \"\";\n }\n if (this.supportsPointerEvents) {\n globalThis.document.removeEventListener(\"pointermove\", this.onPointerMove, true);\n this.domElement.removeEventListener(\"pointerdown\", this.onPointerDown, true);\n this.domElement.removeEventListener(\"pointerleave\", this.onPointerOverOut, true);\n this.domElement.removeEventListener(\"pointerover\", this.onPointerOverOut, true);\n globalThis.removeEventListener(\"pointerup\", this.onPointerUp, true);\n } else {\n globalThis.document.removeEventListener(\"mousemove\", this.onPointerMove, true);\n this.domElement.removeEventListener(\"mousedown\", this.onPointerDown, true);\n this.domElement.removeEventListener(\"mouseout\", this.onPointerOverOut, true);\n this.domElement.removeEventListener(\"mouseover\", this.onPointerOverOut, true);\n globalThis.removeEventListener(\"mouseup\", this.onPointerUp, true);\n }\n if (this.supportsTouchEvents) {\n this.domElement.removeEventListener(\"touchstart\", this.onPointerDown, true);\n this.domElement.removeEventListener(\"touchend\", this.onPointerUp, true);\n this.domElement.removeEventListener(\"touchmove\", this.onPointerMove, true);\n }\n this.domElement.removeEventListener(\"wheel\", this.onWheel, true);\n this.domElement = null;\n this.eventsAdded = false;\n }\n mapPositionToPoint(point, x, y) {\n let rect;\n if (!this.domElement.parentElement) {\n rect = {\n x: 0,\n y: 0,\n width: this.domElement.width,\n height: this.domElement.height,\n left: 0,\n top: 0\n };\n } else {\n rect = this.domElement.getBoundingClientRect();\n }\n const resolutionMultiplier = 1 / this.resolution;\n point.x = (x - rect.left) * (this.domElement.width / rect.width) * resolutionMultiplier;\n point.y = (y - rect.top) * (this.domElement.height / rect.height) * resolutionMultiplier;\n }\n normalizeToPointerData(event) {\n const normalizedEvents = [];\n if (this.supportsTouchEvents && event instanceof TouchEvent) {\n for (let i = 0, li = event.changedTouches.length; i < li; i++) {\n const touch = event.changedTouches[i];\n if (typeof touch.button === \"undefined\")\n touch.button = 0;\n if (typeof touch.buttons === \"undefined\")\n touch.buttons = 1;\n if (typeof touch.isPrimary === \"undefined\") {\n touch.isPrimary = event.touches.length === 1 && event.type === \"touchstart\";\n }\n if (typeof touch.width === \"undefined\")\n touch.width = touch.radiusX || 1;\n if (typeof touch.height === \"undefined\")\n touch.height = touch.radiusY || 1;\n if (typeof touch.tiltX === \"undefined\")\n touch.tiltX = 0;\n if (typeof touch.tiltY === \"undefined\")\n touch.tiltY = 0;\n if (typeof touch.pointerType === \"undefined\")\n touch.pointerType = \"touch\";\n if (typeof touch.pointerId === \"undefined\")\n touch.pointerId = touch.identifier || 0;\n if (typeof touch.pressure === \"undefined\")\n touch.pressure = touch.force || 0.5;\n if (typeof touch.twist === \"undefined\")\n touch.twist = 0;\n if (typeof touch.tangentialPressure === \"undefined\")\n touch.tangentialPressure = 0;\n if (typeof touch.layerX === \"undefined\")\n touch.layerX = touch.offsetX = touch.clientX;\n if (typeof touch.layerY === \"undefined\")\n touch.layerY = touch.offsetY = touch.clientY;\n touch.isNormalized = true;\n touch.type = event.type;\n normalizedEvents.push(touch);\n }\n } else if (!globalThis.MouseEvent || event instanceof MouseEvent && (!this.supportsPointerEvents || !(event instanceof globalThis.PointerEvent))) {\n const tempEvent = event;\n if (typeof tempEvent.isPrimary === \"undefined\")\n tempEvent.isPrimary = true;\n if (typeof tempEvent.width === \"undefined\")\n tempEvent.width = 1;\n if (typeof tempEvent.height === \"undefined\")\n tempEvent.height = 1;\n if (typeof tempEvent.tiltX === \"undefined\")\n tempEvent.tiltX = 0;\n if (typeof tempEvent.tiltY === \"undefined\")\n tempEvent.tiltY = 0;\n if (typeof tempEvent.pointerType === \"undefined\")\n tempEvent.pointerType = \"mouse\";\n if (typeof tempEvent.pointerId === \"undefined\")\n tempEvent.pointerId = MOUSE_POINTER_ID;\n if (typeof tempEvent.pressure === \"undefined\")\n tempEvent.pressure = 0.5;\n if (typeof tempEvent.twist === \"undefined\")\n tempEvent.twist = 0;\n if (typeof tempEvent.tangentialPressure === \"undefined\")\n tempEvent.tangentialPressure = 0;\n tempEvent.isNormalized = true;\n normalizedEvents.push(tempEvent);\n } else {\n normalizedEvents.push(event);\n }\n return normalizedEvents;\n }\n normalizeWheelEvent(nativeEvent) {\n const event = this.rootWheelEvent;\n this.transferMouseData(event, nativeEvent);\n event.deltaMode = nativeEvent.deltaMode;\n event.deltaX = nativeEvent.deltaX;\n event.deltaY = nativeEvent.deltaY;\n event.deltaZ = nativeEvent.deltaZ;\n this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY);\n event.global.copyFrom(event.screen);\n event.offset.copyFrom(event.screen);\n event.nativeEvent = nativeEvent;\n event.type = nativeEvent.type;\n return event;\n }\n bootstrapEvent(event, nativeEvent) {\n event.originalEvent = null;\n event.nativeEvent = nativeEvent;\n event.pointerId = nativeEvent.pointerId;\n event.width = nativeEvent.width;\n event.height = nativeEvent.height;\n event.isPrimary = nativeEvent.isPrimary;\n event.pointerType = nativeEvent.pointerType;\n event.pressure = nativeEvent.pressure;\n event.tangentialPressure = nativeEvent.tangentialPressure;\n event.tiltX = nativeEvent.tiltX;\n event.tiltY = nativeEvent.tiltY;\n event.twist = nativeEvent.twist;\n this.transferMouseData(event, nativeEvent);\n this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY);\n event.global.copyFrom(event.screen);\n event.offset.copyFrom(event.screen);\n event.isTrusted = nativeEvent.isTrusted;\n if (event.type === \"pointerleave\") {\n event.type = \"pointerout\";\n }\n if (event.type.startsWith(\"mouse\")) {\n event.type = event.type.replace(\"mouse\", \"pointer\");\n }\n if (event.type.startsWith(\"touch\")) {\n event.type = TOUCH_TO_POINTER[event.type] || event.type;\n }\n return event;\n }\n transferMouseData(event, nativeEvent) {\n event.isTrusted = nativeEvent.isTrusted;\n event.srcElement = nativeEvent.srcElement;\n event.timeStamp = performance.now();\n event.type = nativeEvent.type;\n event.altKey = nativeEvent.altKey;\n event.button = nativeEvent.button;\n event.buttons = nativeEvent.buttons;\n event.client.x = nativeEvent.clientX;\n event.client.y = nativeEvent.clientY;\n event.ctrlKey = nativeEvent.ctrlKey;\n event.metaKey = nativeEvent.metaKey;\n event.movement.x = nativeEvent.movementX;\n event.movement.y = nativeEvent.movementY;\n event.page.x = nativeEvent.pageX;\n event.page.y = nativeEvent.pageY;\n event.relatedTarget = null;\n event.shiftKey = nativeEvent.shiftKey;\n }\n}\nEventSystem.extension = {\n name: \"events\",\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ]\n};\nextensions.add(EventSystem);\n\nexport { EventSystem };\n//# sourceMappingURL=EventSystem.mjs.map\n","import { DisplayObject } from '@pixi/display';\nimport { FederatedEvent } from './FederatedEvent.mjs';\n\nconst FederatedDisplayObject = {\n interactive: false,\n interactiveChildren: true,\n hitArea: null,\n addEventListener(type, listener, options) {\n const capture = typeof options === \"boolean\" && options || typeof options === \"object\" && options.capture;\n const context = typeof listener === \"function\" ? void 0 : listener;\n type = capture ? `${type}capture` : type;\n listener = typeof listener === \"function\" ? listener : listener.handleEvent;\n this.on(type, listener, context);\n },\n removeEventListener(type, listener, options) {\n const capture = typeof options === \"boolean\" && options || typeof options === \"object\" && options.capture;\n const context = typeof listener === \"function\" ? void 0 : listener;\n type = capture ? `${type}capture` : type;\n listener = typeof listener === \"function\" ? listener : listener.handleEvent;\n this.off(type, listener, context);\n },\n dispatchEvent(e) {\n if (!(e instanceof FederatedEvent)) {\n throw new Error(\"DisplayObject cannot propagate events outside of the Federated Events API\");\n }\n e.defaultPrevented = false;\n e.path = null;\n e.target = this;\n e.manager.dispatchEvent(e);\n return !e.defaultPrevented;\n }\n};\nDisplayObject.mixin(FederatedDisplayObject);\n\nexport { FederatedDisplayObject };\n//# sourceMappingURL=FederatedEventTarget.mjs.map\n","import { utils, ExtensionType, extensions } from '@pixi/core';\nimport { DisplayObject } from '@pixi/display';\nimport { FederatedEvent } from '@pixi/events';\nimport { accessibleTarget } from './accessibleTarget.mjs';\n\nDisplayObject.mixin(accessibleTarget);\nconst KEY_CODE_TAB = 9;\nconst DIV_TOUCH_SIZE = 100;\nconst DIV_TOUCH_POS_X = 0;\nconst DIV_TOUCH_POS_Y = 0;\nconst DIV_TOUCH_ZINDEX = 2;\nconst DIV_HOOK_SIZE = 1;\nconst DIV_HOOK_POS_X = -1e3;\nconst DIV_HOOK_POS_Y = -1e3;\nconst DIV_HOOK_ZINDEX = 2;\nclass AccessibilityManager {\n constructor(renderer) {\n this.debug = false;\n this._isActive = false;\n this._isMobileAccessibility = false;\n this.pool = [];\n this.renderId = 0;\n this.children = [];\n this.androidUpdateCount = 0;\n this.androidUpdateFrequency = 500;\n this._hookDiv = null;\n if (utils.isMobile.tablet || utils.isMobile.phone) {\n this.createTouchHook();\n }\n const div = document.createElement(\"div\");\n div.style.width = `${DIV_TOUCH_SIZE}px`;\n div.style.height = `${DIV_TOUCH_SIZE}px`;\n div.style.position = \"absolute\";\n div.style.top = `${DIV_TOUCH_POS_X}px`;\n div.style.left = `${DIV_TOUCH_POS_Y}px`;\n div.style.zIndex = DIV_TOUCH_ZINDEX.toString();\n this.div = div;\n this.renderer = renderer;\n this._onKeyDown = this._onKeyDown.bind(this);\n this._onMouseMove = this._onMouseMove.bind(this);\n globalThis.addEventListener(\"keydown\", this._onKeyDown, false);\n }\n get isActive() {\n return this._isActive;\n }\n get isMobileAccessibility() {\n return this._isMobileAccessibility;\n }\n createTouchHook() {\n const hookDiv = document.createElement(\"button\");\n hookDiv.style.width = `${DIV_HOOK_SIZE}px`;\n hookDiv.style.height = `${DIV_HOOK_SIZE}px`;\n hookDiv.style.position = \"absolute\";\n hookDiv.style.top = `${DIV_HOOK_POS_X}px`;\n hookDiv.style.left = `${DIV_HOOK_POS_Y}px`;\n hookDiv.style.zIndex = DIV_HOOK_ZINDEX.toString();\n hookDiv.style.backgroundColor = \"#FF0000\";\n hookDiv.title = \"select to enable accessibility for this content\";\n hookDiv.addEventListener(\"focus\", () => {\n this._isMobileAccessibility = true;\n this.activate();\n this.destroyTouchHook();\n });\n document.body.appendChild(hookDiv);\n this._hookDiv = hookDiv;\n }\n destroyTouchHook() {\n if (!this._hookDiv) {\n return;\n }\n document.body.removeChild(this._hookDiv);\n this._hookDiv = null;\n }\n activate() {\n if (this._isActive) {\n return;\n }\n this._isActive = true;\n globalThis.document.addEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.removeEventListener(\"keydown\", this._onKeyDown, false);\n this.renderer.on(\"postrender\", this.update, this);\n this.renderer.view.parentNode?.appendChild(this.div);\n }\n deactivate() {\n if (!this._isActive || this._isMobileAccessibility) {\n return;\n }\n this._isActive = false;\n globalThis.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.addEventListener(\"keydown\", this._onKeyDown, false);\n this.renderer.off(\"postrender\", this.update);\n this.div.parentNode?.removeChild(this.div);\n }\n updateAccessibleObjects(displayObject) {\n if (!displayObject.visible || !displayObject.accessibleChildren) {\n return;\n }\n if (displayObject.accessible && displayObject.interactive) {\n if (!displayObject._accessibleActive) {\n this.addChild(displayObject);\n }\n displayObject.renderId = this.renderId;\n }\n const children = displayObject.children;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n this.updateAccessibleObjects(children[i]);\n }\n }\n }\n update() {\n const now = performance.now();\n if (utils.isMobile.android.device && now < this.androidUpdateCount) {\n return;\n }\n this.androidUpdateCount = now + this.androidUpdateFrequency;\n if (!this.renderer.renderingToScreen) {\n return;\n }\n if (this.renderer.lastObjectRendered) {\n this.updateAccessibleObjects(this.renderer.lastObjectRendered);\n }\n const { x, y, width, height } = this.renderer.view.getBoundingClientRect();\n const { width: viewWidth, height: viewHeight, resolution } = this.renderer;\n const sx = width / viewWidth * resolution;\n const sy = height / viewHeight * resolution;\n let div = this.div;\n div.style.left = `${x}px`;\n div.style.top = `${y}px`;\n div.style.width = `${viewWidth}px`;\n div.style.height = `${viewHeight}px`;\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n if (child.renderId !== this.renderId) {\n child._accessibleActive = false;\n utils.removeItems(this.children, i, 1);\n this.div.removeChild(child._accessibleDiv);\n this.pool.push(child._accessibleDiv);\n child._accessibleDiv = null;\n i--;\n } else {\n div = child._accessibleDiv;\n let hitArea = child.hitArea;\n const wt = child.worldTransform;\n if (child.hitArea) {\n div.style.left = `${(wt.tx + hitArea.x * wt.a) * sx}px`;\n div.style.top = `${(wt.ty + hitArea.y * wt.d) * sy}px`;\n div.style.width = `${hitArea.width * wt.a * sx}px`;\n div.style.height = `${hitArea.height * wt.d * sy}px`;\n } else {\n hitArea = child.getBounds();\n this.capHitArea(hitArea);\n div.style.left = `${hitArea.x * sx}px`;\n div.style.top = `${hitArea.y * sy}px`;\n div.style.width = `${hitArea.width * sx}px`;\n div.style.height = `${hitArea.height * sy}px`;\n if (div.title !== child.accessibleTitle && child.accessibleTitle !== null) {\n div.title = child.accessibleTitle;\n }\n if (div.getAttribute(\"aria-label\") !== child.accessibleHint && child.accessibleHint !== null) {\n div.setAttribute(\"aria-label\", child.accessibleHint);\n }\n }\n if (child.accessibleTitle !== div.title || child.tabIndex !== div.tabIndex) {\n div.title = child.accessibleTitle;\n div.tabIndex = child.tabIndex;\n if (this.debug)\n this.updateDebugHTML(div);\n }\n }\n }\n this.renderId++;\n }\n updateDebugHTML(div) {\n div.innerHTML = `type: ${div.type}
title : ${div.title}
tabIndex: ${div.tabIndex}`;\n }\n capHitArea(hitArea) {\n if (hitArea.x < 0) {\n hitArea.width += hitArea.x;\n hitArea.x = 0;\n }\n if (hitArea.y < 0) {\n hitArea.height += hitArea.y;\n hitArea.y = 0;\n }\n const { width: viewWidth, height: viewHeight } = this.renderer;\n if (hitArea.x + hitArea.width > viewWidth) {\n hitArea.width = viewWidth - hitArea.x;\n }\n if (hitArea.y + hitArea.height > viewHeight) {\n hitArea.height = viewHeight - hitArea.y;\n }\n }\n addChild(displayObject) {\n let div = this.pool.pop();\n if (!div) {\n div = document.createElement(\"button\");\n div.style.width = `${DIV_TOUCH_SIZE}px`;\n div.style.height = `${DIV_TOUCH_SIZE}px`;\n div.style.backgroundColor = this.debug ? \"rgba(255,255,255,0.5)\" : \"transparent\";\n div.style.position = \"absolute\";\n div.style.zIndex = DIV_TOUCH_ZINDEX.toString();\n div.style.borderStyle = \"none\";\n if (navigator.userAgent.toLowerCase().includes(\"chrome\")) {\n div.setAttribute(\"aria-live\", \"off\");\n } else {\n div.setAttribute(\"aria-live\", \"polite\");\n }\n if (navigator.userAgent.match(/rv:.*Gecko\\//)) {\n div.setAttribute(\"aria-relevant\", \"additions\");\n } else {\n div.setAttribute(\"aria-relevant\", \"text\");\n }\n div.addEventListener(\"click\", this._onClick.bind(this));\n div.addEventListener(\"focus\", this._onFocus.bind(this));\n div.addEventListener(\"focusout\", this._onFocusOut.bind(this));\n }\n div.style.pointerEvents = displayObject.accessiblePointerEvents;\n div.type = displayObject.accessibleType;\n if (displayObject.accessibleTitle && displayObject.accessibleTitle !== null) {\n div.title = displayObject.accessibleTitle;\n } else if (!displayObject.accessibleHint || displayObject.accessibleHint === null) {\n div.title = `displayObject ${displayObject.tabIndex}`;\n }\n if (displayObject.accessibleHint && displayObject.accessibleHint !== null) {\n div.setAttribute(\"aria-label\", displayObject.accessibleHint);\n }\n if (this.debug)\n this.updateDebugHTML(div);\n displayObject._accessibleActive = true;\n displayObject._accessibleDiv = div;\n div.displayObject = displayObject;\n this.children.push(displayObject);\n this.div.appendChild(displayObject._accessibleDiv);\n displayObject._accessibleDiv.tabIndex = displayObject.tabIndex;\n }\n _dispatchEvent(e, type) {\n const { displayObject: target } = e.target;\n const boundry = this.renderer.events.rootBoundary;\n const event = Object.assign(new FederatedEvent(boundry), { target });\n boundry.rootTarget = this.renderer.lastObjectRendered;\n type.forEach((type2) => boundry.dispatchEvent(event, type2));\n }\n _onClick(e) {\n this._dispatchEvent(e, [\"click\", \"pointertap\", \"tap\"]);\n }\n _onFocus(e) {\n if (!e.target.getAttribute(\"aria-live\")) {\n e.target.setAttribute(\"aria-live\", \"assertive\");\n }\n this._dispatchEvent(e, [\"mouseover\"]);\n }\n _onFocusOut(e) {\n if (!e.target.getAttribute(\"aria-live\")) {\n e.target.setAttribute(\"aria-live\", \"polite\");\n }\n this._dispatchEvent(e, [\"mouseout\"]);\n }\n _onKeyDown(e) {\n if (e.keyCode !== KEY_CODE_TAB) {\n return;\n }\n this.activate();\n }\n _onMouseMove(e) {\n if (e.movementX === 0 && e.movementY === 0) {\n return;\n }\n this.deactivate();\n }\n destroy() {\n this.destroyTouchHook();\n this.div = null;\n globalThis.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.removeEventListener(\"keydown\", this._onKeyDown);\n this.pool = null;\n this.children = null;\n this.renderer = null;\n }\n}\nAccessibilityManager.extension = {\n name: \"accessibility\",\n type: [\n ExtensionType.RendererPlugin,\n ExtensionType.CanvasRendererPlugin\n ]\n};\nextensions.add(AccessibilityManager);\n\nexport { AccessibilityManager };\n//# sourceMappingURL=AccessibilityManager.mjs.map\n","import { autoDetectRenderer, extensions, ExtensionType } from '@pixi/core';\nimport { Container } from '@pixi/display';\n\nconst _Application = class {\n constructor(options) {\n this.stage = new Container();\n options = Object.assign({\n forceCanvas: false\n }, options);\n this.renderer = autoDetectRenderer(options);\n _Application._plugins.forEach((plugin) => {\n plugin.init.call(this, options);\n });\n }\n render() {\n this.renderer.render(this.stage);\n }\n get view() {\n return this.renderer.view;\n }\n get screen() {\n return this.renderer.screen;\n }\n destroy(removeView, stageOptions) {\n const plugins = _Application._plugins.slice(0);\n plugins.reverse();\n plugins.forEach((plugin) => {\n plugin.destroy.call(this);\n });\n this.stage.destroy(stageOptions);\n this.stage = null;\n this.renderer.destroy(removeView);\n this.renderer = null;\n }\n};\nlet Application = _Application;\nApplication._plugins = [];\nextensions.handleByList(ExtensionType.Application, Application._plugins);\n\nexport { Application };\n//# sourceMappingURL=Application.mjs.map\n","import { ExtensionType, extensions } from '@pixi/core';\n\nclass ResizePlugin {\n static init(options) {\n Object.defineProperty(this, \"resizeTo\", {\n set(dom) {\n globalThis.removeEventListener(\"resize\", this.queueResize);\n this._resizeTo = dom;\n if (dom) {\n globalThis.addEventListener(\"resize\", this.queueResize);\n this.resize();\n }\n },\n get() {\n return this._resizeTo;\n }\n });\n this.queueResize = () => {\n if (!this._resizeTo) {\n return;\n }\n this.cancelResize();\n this._resizeId = requestAnimationFrame(() => this.resize());\n };\n this.cancelResize = () => {\n if (this._resizeId) {\n cancelAnimationFrame(this._resizeId);\n this._resizeId = null;\n }\n };\n this.resize = () => {\n if (!this._resizeTo) {\n return;\n }\n this.cancelResize();\n let width;\n let height;\n if (this._resizeTo === globalThis.window) {\n width = globalThis.innerWidth;\n height = globalThis.innerHeight;\n } else {\n const { clientWidth, clientHeight } = this._resizeTo;\n width = clientWidth;\n height = clientHeight;\n }\n this.renderer.resize(width, height);\n this.render();\n };\n this._resizeId = null;\n this._resizeTo = null;\n this.resizeTo = options.resizeTo || null;\n }\n static destroy() {\n globalThis.removeEventListener(\"resize\", this.queueResize);\n this.cancelResize();\n this.cancelResize = null;\n this.queueResize = null;\n this.resizeTo = null;\n this.resize = null;\n }\n}\nResizePlugin.extension = ExtensionType.Application;\nextensions.add(ResizePlugin);\n\nexport { ResizePlugin };\n//# sourceMappingURL=ResizePlugin.mjs.map\n","class BackgroundLoader {\n constructor(loader, verbose = false) {\n this._loader = loader;\n this._assetList = [];\n this._isLoading = false;\n this._maxConcurrent = 1;\n this.verbose = verbose;\n }\n add(assetUrls) {\n assetUrls.forEach((a) => {\n this._assetList.push(a);\n });\n if (this.verbose)\n console.log(\"[BackgroundLoader] assets: \", this._assetList);\n if (this._isActive && !this._isLoading) {\n this._next();\n }\n }\n async _next() {\n if (this._assetList.length && this._isActive) {\n this._isLoading = true;\n const toLoad = [];\n const toLoadAmount = Math.min(this._assetList.length, this._maxConcurrent);\n for (let i = 0; i < toLoadAmount; i++) {\n toLoad.push(this._assetList.pop());\n }\n await this._loader.load(toLoad);\n this._isLoading = false;\n this._next();\n }\n }\n get active() {\n return this._isActive;\n }\n set active(value) {\n if (this._isActive === value)\n return;\n this._isActive = value;\n if (value && !this._isLoading) {\n this._next();\n }\n }\n}\n\nexport { BackgroundLoader };\n//# sourceMappingURL=BackgroundLoader.mjs.map\n","const convertToList = (input, transform) => {\n if (!Array.isArray(input)) {\n input = [input];\n }\n if (!transform) {\n return input;\n }\n return input.map((item) => {\n if (typeof item === \"string\") {\n return transform(item);\n }\n return item;\n });\n};\n\nexport { convertToList };\n//# sourceMappingURL=convertToList.mjs.map\n","function processX(base, ids, depth, result, tags) {\n const id = ids[depth];\n for (let i = 0; i < id.length; i++) {\n const value = id[i];\n if (depth < ids.length - 1) {\n processX(base.replace(result[depth], value), ids, depth + 1, result, tags);\n } else {\n tags.push(base.replace(result[depth], value));\n }\n }\n}\nfunction createStringVariations(string) {\n const regex = /\\{(.*?)\\}/g;\n const result = string.match(regex);\n const tags = [];\n if (result) {\n const ids = [];\n result.forEach((vars) => {\n const split = vars.substring(1, vars.length - 1).split(\",\");\n ids.push(split);\n });\n processX(string, ids, 0, result, tags);\n } else {\n tags.push(string);\n }\n return tags;\n}\n\nexport { createStringVariations };\n//# sourceMappingURL=createStringVariations.mjs.map\n","const isSingleItem = (item) => !Array.isArray(item);\n\nexport { isSingleItem };\n//# sourceMappingURL=isSingleItem.mjs.map\n","import { Texture, BaseTexture } from '@pixi/core';\nimport '../utils/index.mjs';\nimport { convertToList } from '../utils/convertToList.mjs';\n\nclass CacheClass {\n constructor() {\n this._parsers = [];\n this._cache = /* @__PURE__ */ new Map();\n this._cacheMap = /* @__PURE__ */ new Map();\n }\n reset() {\n this._cacheMap.clear();\n this._cache.clear();\n }\n has(key) {\n return this._cache.has(key);\n }\n get(key) {\n const result = this._cache.get(key);\n if (!result) {\n }\n return result;\n }\n set(key, value) {\n const keys = convertToList(key);\n let cacheableAssets;\n for (let i = 0; i < this.parsers.length; i++) {\n const parser = this.parsers[i];\n if (parser.test(value)) {\n cacheableAssets = parser.getCacheableAssets(keys, value);\n break;\n }\n }\n if (!cacheableAssets) {\n cacheableAssets = {};\n keys.forEach((key2) => {\n cacheableAssets[key2] = value;\n });\n }\n const cacheKeys = Object.keys(cacheableAssets);\n const cachedAssets = {\n cacheKeys,\n keys\n };\n keys.forEach((key2) => {\n this._cacheMap.set(key2, cachedAssets);\n });\n cacheKeys.forEach((key2) => {\n if (this._cache.has(key2) && this._cache.get(key2) !== value) {\n }\n this._cache.set(key2, cacheableAssets[key2]);\n });\n if (value instanceof Texture) {\n const texture = value;\n keys.forEach((key2) => {\n if (texture.baseTexture !== Texture.EMPTY.baseTexture) {\n BaseTexture.addToCache(texture.baseTexture, key2);\n }\n Texture.addToCache(texture, key2);\n });\n }\n }\n remove(key) {\n this._cacheMap.get(key);\n if (!this._cacheMap.has(key)) {\n return;\n }\n const cacheMap = this._cacheMap.get(key);\n const cacheKeys = cacheMap.cacheKeys;\n cacheKeys.forEach((key2) => {\n this._cache.delete(key2);\n });\n cacheMap.keys.forEach((key2) => {\n this._cacheMap.delete(key2);\n });\n }\n get parsers() {\n return this._parsers;\n }\n}\nconst Cache = new CacheClass();\n\nexport { Cache };\n//# sourceMappingURL=Cache.mjs.map\n","import { utils } from '@pixi/core';\nimport '../utils/index.mjs';\nimport { isSingleItem } from '../utils/isSingleItem.mjs';\nimport { convertToList } from '../utils/convertToList.mjs';\n\nclass Loader {\n constructor() {\n this._parsers = [];\n this.promiseCache = {};\n }\n reset() {\n this.promiseCache = {};\n }\n _getLoadPromiseAndParser(url, data) {\n const result = {\n promise: null,\n parser: null\n };\n result.promise = (async () => {\n let asset = null;\n for (let i = 0; i < this.parsers.length; i++) {\n const parser = this.parsers[i];\n if (parser.load && parser.test?.(url, data, this)) {\n asset = await parser.load(url, data, this);\n result.parser = parser;\n break;\n }\n }\n if (!result.parser) {\n return null;\n }\n for (let i = 0; i < this.parsers.length; i++) {\n const parser = this.parsers[i];\n if (parser.parse) {\n if (parser.parse && await parser.testParse?.(asset, data, this)) {\n asset = await parser.parse(asset, data, this) || asset;\n result.parser = parser;\n }\n }\n }\n return asset;\n })();\n return result;\n }\n async load(assetsToLoadIn, onProgress) {\n let count = 0;\n const assets = {};\n const singleAsset = isSingleItem(assetsToLoadIn);\n const assetsToLoad = convertToList(assetsToLoadIn, (item) => ({\n src: item\n }));\n const total = assetsToLoad.length;\n const promises = assetsToLoad.map(async (asset) => {\n const url = utils.path.toAbsolute(asset.src);\n if (!assets[asset.src]) {\n try {\n if (!this.promiseCache[url]) {\n this.promiseCache[url] = this._getLoadPromiseAndParser(url, asset);\n }\n assets[asset.src] = await this.promiseCache[url].promise;\n if (onProgress)\n onProgress(++count / total);\n } catch (e) {\n delete this.promiseCache[url];\n delete assets[asset.src];\n throw new Error(`[Loader.load] Failed to load ${url}.\n${e}`);\n }\n }\n });\n await Promise.all(promises);\n return singleAsset ? assets[assetsToLoad[0].src] : assets;\n }\n async unload(assetsToUnloadIn) {\n const assetsToUnload = convertToList(assetsToUnloadIn, (item) => ({\n src: item\n }));\n const promises = assetsToUnload.map(async (asset) => {\n const url = utils.path.toAbsolute(asset.src);\n const loadPromise = this.promiseCache[url];\n if (loadPromise) {\n const loadedAsset = await loadPromise.promise;\n loadPromise.parser?.unload?.(loadedAsset, asset, this);\n delete this.promiseCache[url];\n }\n });\n await Promise.all(promises);\n }\n get parsers() {\n return this._parsers;\n }\n}\n\nexport { Loader };\n//# sourceMappingURL=Loader.mjs.map\n","import { utils } from '@pixi/core';\nimport { convertToList } from '../utils/convertToList.mjs';\nimport { createStringVariations } from '../utils/createStringVariations.mjs';\nimport { isSingleItem } from '../utils/isSingleItem.mjs';\n\nclass Resolver {\n constructor() {\n this._assetMap = {};\n this._preferredOrder = [];\n this._parsers = [];\n this._resolverHash = {};\n this._bundles = {};\n }\n prefer(...preferOrders) {\n preferOrders.forEach((prefer) => {\n this._preferredOrder.push(prefer);\n if (!prefer.priority) {\n prefer.priority = Object.keys(prefer.params);\n }\n });\n this._resolverHash = {};\n }\n set basePath(basePath) {\n this._basePath = basePath;\n }\n get basePath() {\n return this._basePath;\n }\n set rootPath(rootPath) {\n this._rootPath = rootPath;\n }\n get rootPath() {\n return this._rootPath;\n }\n get parsers() {\n return this._parsers;\n }\n reset() {\n this._preferredOrder = [];\n this._resolverHash = {};\n this._assetMap = {};\n this._rootPath = null;\n this._basePath = null;\n this._manifest = null;\n }\n addManifest(manifest) {\n if (this._manifest) {\n }\n this._manifest = manifest;\n manifest.bundles.forEach((bundle) => {\n this.addBundle(bundle.name, bundle.assets);\n });\n }\n addBundle(bundleId, assets) {\n const assetNames = [];\n if (Array.isArray(assets)) {\n assets.forEach((asset) => {\n if (typeof asset.name === \"string\") {\n assetNames.push(asset.name);\n } else {\n assetNames.push(...asset.name);\n }\n this.add(asset.name, asset.srcs);\n });\n } else {\n Object.keys(assets).forEach((key) => {\n assetNames.push(key);\n this.add(key, assets[key]);\n });\n }\n this._bundles[bundleId] = assetNames;\n }\n add(keysIn, assetsIn, data) {\n const keys = convertToList(keysIn);\n keys.forEach((key) => {\n if (this._assetMap[key]) {\n }\n });\n if (!Array.isArray(assetsIn)) {\n if (typeof assetsIn === \"string\") {\n assetsIn = createStringVariations(assetsIn);\n } else {\n assetsIn = [assetsIn];\n }\n }\n const assetMap = assetsIn.map((asset) => {\n let formattedAsset = asset;\n if (typeof asset === \"string\") {\n let parsed = false;\n for (let i = 0; i < this._parsers.length; i++) {\n const parser = this._parsers[i];\n if (parser.test(asset)) {\n formattedAsset = parser.parse(asset);\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n formattedAsset = {\n src: asset\n };\n }\n }\n if (!formattedAsset.format) {\n formattedAsset.format = formattedAsset.src.split(\".\").pop();\n }\n if (!formattedAsset.alias) {\n formattedAsset.alias = keys;\n }\n if (this._basePath || this._rootPath) {\n formattedAsset.src = utils.path.toAbsolute(formattedAsset.src, this._basePath, this._rootPath);\n }\n formattedAsset.data = formattedAsset.data ?? data;\n return formattedAsset;\n });\n keys.forEach((key) => {\n this._assetMap[key] = assetMap;\n });\n }\n resolveBundle(bundleIds) {\n const singleAsset = isSingleItem(bundleIds);\n bundleIds = convertToList(bundleIds);\n const out = {};\n bundleIds.forEach((bundleId) => {\n const assetNames = this._bundles[bundleId];\n if (assetNames) {\n out[bundleId] = this.resolve(assetNames);\n }\n });\n return singleAsset ? out[bundleIds[0]] : out;\n }\n resolveUrl(key) {\n const result = this.resolve(key);\n if (typeof key !== \"string\") {\n const out = {};\n for (const i in result) {\n out[i] = result[i].src;\n }\n return out;\n }\n return result.src;\n }\n resolve(keys) {\n const singleAsset = isSingleItem(keys);\n keys = convertToList(keys);\n const result = {};\n keys.forEach((key) => {\n if (!this._resolverHash[key]) {\n if (this._assetMap[key]) {\n let assets = this._assetMap[key];\n const preferredOrder = this._getPreferredOrder(assets);\n const bestAsset = assets[0];\n preferredOrder?.priority.forEach((priorityKey) => {\n preferredOrder.params[priorityKey].forEach((value) => {\n const filteredAssets = assets.filter((asset) => {\n if (asset[priorityKey]) {\n return asset[priorityKey] === value;\n }\n return false;\n });\n if (filteredAssets.length) {\n assets = filteredAssets;\n }\n });\n });\n this._resolverHash[key] = assets[0] ?? bestAsset;\n } else {\n let src = key;\n if (this._basePath || this._rootPath) {\n src = utils.path.toAbsolute(src, this._basePath, this._rootPath);\n }\n this._resolverHash[key] = {\n src\n };\n }\n }\n result[key] = this._resolverHash[key];\n });\n return singleAsset ? result[keys[0]] : result;\n }\n _getPreferredOrder(assets) {\n for (let i = 0; i < assets.length; i++) {\n const asset = assets[0];\n const preferred = this._preferredOrder.find((preference) => preference.params.format.includes(asset.format));\n if (preferred) {\n return preferred;\n }\n }\n return this._preferredOrder[0];\n }\n}\n\nexport { Resolver };\n//# sourceMappingURL=Resolver.mjs.map\n","import { extensions, ExtensionType } from '@pixi/core';\nimport { BackgroundLoader } from './BackgroundLoader.mjs';\nimport { Cache } from './cache/Cache.mjs';\nimport { Loader } from './loader/Loader.mjs';\nimport { Resolver } from './resolver/Resolver.mjs';\nimport { convertToList } from './utils/convertToList.mjs';\nimport { isSingleItem } from './utils/isSingleItem.mjs';\n\nclass AssetsClass {\n constructor() {\n this._detections = [];\n this._initialized = false;\n this.resolver = new Resolver();\n this.loader = new Loader();\n this.cache = Cache;\n this._backgroundLoader = new BackgroundLoader(this.loader);\n this._backgroundLoader.active = true;\n this.reset();\n }\n async init(options = {}) {\n if (this._initialized) {\n return;\n }\n this._initialized = true;\n if (options.basePath) {\n this.resolver.basePath = options.basePath;\n }\n if (options.manifest) {\n let manifest = options.manifest;\n if (typeof manifest === \"string\") {\n manifest = await this.load(manifest);\n }\n this.resolver.addManifest(manifest);\n }\n const resolutionPref = options.texturePreference?.resolution ?? 1;\n const resolution = typeof resolutionPref === \"number\" ? [resolutionPref] : resolutionPref;\n let formats = [];\n if (options.texturePreference?.format) {\n const formatPref = options.texturePreference?.format;\n formats = typeof formatPref === \"string\" ? [formatPref] : formatPref;\n for (const detection of this._detections) {\n if (!await detection.test()) {\n formats = await detection.remove(formats);\n }\n }\n } else {\n for (const detection of this._detections) {\n if (await detection.test()) {\n formats = await detection.add(formats);\n }\n }\n }\n this.resolver.prefer({\n params: {\n format: formats,\n resolution\n }\n });\n }\n add(keysIn, assetsIn, data) {\n this.resolver.add(keysIn, assetsIn, data);\n }\n async load(urls, onProgress) {\n if (!this._initialized) {\n await this.init();\n }\n const singleAsset = isSingleItem(urls);\n const urlArray = convertToList(urls).map((url) => {\n if (typeof url !== \"string\") {\n this.resolver.add(url.src, url);\n return url.src;\n }\n return url;\n });\n const resolveResults = this.resolver.resolve(urlArray);\n const out = await this._mapLoadToResolve(resolveResults, onProgress);\n return singleAsset ? out[urlArray[0]] : out;\n }\n addBundle(bundleId, assets) {\n this.resolver.addBundle(bundleId, assets);\n }\n async loadBundle(bundleIds, onProgress) {\n if (!this._initialized) {\n await this.init();\n }\n let singleAsset = false;\n if (typeof bundleIds === \"string\") {\n singleAsset = true;\n bundleIds = [bundleIds];\n }\n const resolveResults = this.resolver.resolveBundle(bundleIds);\n const out = {};\n const keys = Object.keys(resolveResults);\n let count = 0;\n let total = 0;\n const _onProgress = () => {\n onProgress?.(++count / total);\n };\n const promises = keys.map((bundleId) => {\n const resolveResult = resolveResults[bundleId];\n total += Object.keys(resolveResult).length;\n return this._mapLoadToResolve(resolveResult, _onProgress).then((resolveResult2) => {\n out[bundleId] = resolveResult2;\n });\n });\n await Promise.all(promises);\n return singleAsset ? out[bundleIds[0]] : out;\n }\n async backgroundLoad(urls) {\n if (!this._initialized) {\n await this.init();\n }\n if (typeof urls === \"string\") {\n urls = [urls];\n }\n const resolveResults = this.resolver.resolve(urls);\n this._backgroundLoader.add(Object.values(resolveResults));\n }\n async backgroundLoadBundle(bundleIds) {\n if (!this._initialized) {\n await this.init();\n }\n if (typeof bundleIds === \"string\") {\n bundleIds = [bundleIds];\n }\n const resolveResults = this.resolver.resolveBundle(bundleIds);\n Object.values(resolveResults).forEach((resolveResult) => {\n this._backgroundLoader.add(Object.values(resolveResult));\n });\n }\n reset() {\n this.resolver.reset();\n this.loader.reset();\n this.cache.reset();\n this._initialized = false;\n }\n get(keys) {\n if (typeof keys === \"string\") {\n return Cache.get(keys);\n }\n const assets = {};\n for (let i = 0; i < keys.length; i++) {\n assets[i] = Cache.get(keys[i]);\n }\n return assets;\n }\n async _mapLoadToResolve(resolveResults, onProgress) {\n const resolveArray = Object.values(resolveResults);\n const resolveKeys = Object.keys(resolveResults);\n this._backgroundLoader.active = false;\n const loadedAssets = await this.loader.load(resolveArray, onProgress);\n this._backgroundLoader.active = true;\n const out = {};\n resolveArray.forEach((resolveResult, i) => {\n const asset = loadedAssets[resolveResult.src];\n const keys = [resolveResult.src];\n if (resolveResult.alias) {\n keys.push(...resolveResult.alias);\n }\n out[resolveKeys[i]] = asset;\n Cache.set(keys, asset);\n });\n return out;\n }\n async unload(urls) {\n if (!this._initialized) {\n await this.init();\n }\n const urlArray = convertToList(urls).map((url) => typeof url !== \"string\" ? url.src : url);\n const resolveResults = this.resolver.resolve(urlArray);\n await this._unloadFromResolved(resolveResults);\n }\n async unloadBundle(bundleIds) {\n if (!this._initialized) {\n await this.init();\n }\n bundleIds = convertToList(bundleIds);\n const resolveResults = this.resolver.resolveBundle(bundleIds);\n const promises = Object.keys(resolveResults).map((bundleId) => this._unloadFromResolved(resolveResults[bundleId]));\n await Promise.all(promises);\n }\n async _unloadFromResolved(resolveResult) {\n const resolveArray = Object.values(resolveResult);\n resolveArray.forEach((resolveResult2) => {\n Cache.remove(resolveResult2.src);\n });\n await this.loader.unload(resolveArray);\n }\n get detections() {\n return this._detections;\n }\n}\nconst Assets = new AssetsClass();\nextensions.handleByList(ExtensionType.LoadParser, Assets.loader.parsers).handleByList(ExtensionType.ResolveParser, Assets.resolver.parsers).handleByList(ExtensionType.CacheParser, Assets.cache.parsers).handleByList(ExtensionType.DetectionParser, Assets.detections);\n\nexport { Assets, AssetsClass };\n//# sourceMappingURL=Assets.mjs.map\n","import { ExtensionType, extensions } from '@pixi/core';\n\nconst assetKeyMap = {\n loader: ExtensionType.LoadParser,\n resolver: ExtensionType.ResolveParser,\n cache: ExtensionType.CacheParser,\n detection: ExtensionType.DetectionParser\n};\nextensions.handle(ExtensionType.Asset, (extension) => {\n const ref = extension.ref;\n Object.entries(assetKeyMap).filter(([key]) => !!ref[key]).forEach(([key, type]) => extensions.add(Object.assign(ref[key], { extension: ref[key].extension ?? type })));\n}, (extension) => {\n const ref = extension.ref;\n Object.keys(assetKeyMap).filter((key) => !!ref[key]).forEach((key) => extensions.remove(ref[key]));\n});\n//# sourceMappingURL=AssetExtension.mjs.map\n","import { ExtensionType, Texture, extensions } from '@pixi/core';\n\nconst cacheTextureArray = {\n extension: ExtensionType.CacheParser,\n test: (asset) => Array.isArray(asset) && asset.every((t) => t instanceof Texture),\n getCacheableAssets: (keys, asset) => {\n const out = {};\n keys.forEach((key) => {\n asset.forEach((item, i) => {\n out[key + (i === 0 ? \"\" : i + 1)] = item;\n });\n });\n return out;\n }\n};\nextensions.add(cacheTextureArray);\n\nexport { cacheTextureArray };\n//# sourceMappingURL=cacheTextureArray.mjs.map\n","var LoaderParserPriority = /* @__PURE__ */ ((LoaderParserPriority2) => {\n LoaderParserPriority2[LoaderParserPriority2[\"Low\"] = 0] = \"Low\";\n LoaderParserPriority2[LoaderParserPriority2[\"Normal\"] = 1] = \"Normal\";\n LoaderParserPriority2[LoaderParserPriority2[\"High\"] = 2] = \"High\";\n return LoaderParserPriority2;\n})(LoaderParserPriority || {});\n\nexport { LoaderParserPriority };\n//# sourceMappingURL=LoaderParser.mjs.map\n","import { ExtensionType, utils, settings, extensions } from '@pixi/core';\nimport { LoaderParserPriority } from './LoaderParser.mjs';\n\nconst loadJson = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low\n },\n test(url) {\n return utils.path.extname(url).includes(\".json\");\n },\n async load(url) {\n const response = await settings.ADAPTER.fetch(url);\n const json = await response.json();\n return json;\n }\n};\nextensions.add(loadJson);\n\nexport { loadJson };\n//# sourceMappingURL=loadJson.mjs.map\n","import { ExtensionType, utils, settings, extensions } from '@pixi/core';\nimport { LoaderParserPriority } from './LoaderParser.mjs';\n\nconst loadTxt = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low\n },\n test(url) {\n return utils.path.extname(url).includes(\".txt\");\n },\n async load(url) {\n const response = await settings.ADAPTER.fetch(url);\n const txt = await response.text();\n return txt;\n }\n};\nextensions.add(loadTxt);\n\nexport { loadTxt };\n//# sourceMappingURL=loadTxt.mjs.map\n","import { utils, ExtensionType, settings, extensions } from '@pixi/core';\nimport { LoaderParserPriority } from './LoaderParser.mjs';\n\nconst validWeights = [\n \"normal\",\n \"bold\",\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\"\n];\nconst validFonts = [\"woff\", \"woff2\", \"ttf\", \"otf\"];\nfunction getFontFamilyName(url) {\n const ext = utils.path.extname(url);\n const name = utils.path.basename(url, ext);\n const nameWithSpaces = name.replace(/(-|_)/g, \" \");\n const nameTitleCase = nameWithSpaces.toLowerCase().split(\" \").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(\" \");\n return nameTitleCase;\n}\nconst loadWebFont = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low\n },\n test(url) {\n const tempURL = url.split(\"?\")[0];\n const extension = tempURL.split(\".\").pop();\n return validFonts.includes(extension);\n },\n async load(url, options) {\n if (!globalThis.navigator.onLine) {\n throw new Error(\"[loadWebFont] Cannot load font - navigator is offline\");\n }\n const fonts = settings.ADAPTER.getFontFaceSet();\n if (fonts) {\n const fontFaces = [];\n const name = options.data?.family ?? getFontFamilyName(url);\n const weights = options.data?.weights?.filter((weight) => validWeights.includes(weight)) ?? [\"normal\"];\n const data = options.data ?? {};\n for (let i = 0; i < weights.length; i++) {\n const weight = weights[i];\n const font = new FontFace(name, `url(${url})`, {\n ...data,\n weight\n });\n await font.load();\n fonts.add(font);\n fontFaces.push(font);\n }\n return fontFaces.length === 1 ? fontFaces[0] : fontFaces;\n }\n return null;\n },\n unload(font) {\n (Array.isArray(font) ? font : [font]).forEach((t) => settings.ADAPTER.getFontFaceSet().delete(t));\n }\n};\nextensions.add(loadWebFont);\n\nexport { getFontFamilyName, loadWebFont };\n//# sourceMappingURL=loadWebFont.mjs.map\n","let UUID = 0;\nlet MAX_WORKERS;\nconst WHITE_PNG = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=\";\nconst checkImageBitmapCode = {\n id: \"checkImageBitmap\",\n code: `\n async function checkImageBitmap()\n {\n try\n {\n if (typeof createImageBitmap !== 'function') return false;\n\n const response = await fetch('${WHITE_PNG}');\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n\n return imageBitmap.width === 1 && imageBitmap.height === 1;\n }\n catch (e)\n {\n return false;\n }\n }\n checkImageBitmap().then((result) => { self.postMessage(result); });\n `\n};\nconst workerCode = {\n id: \"loadImageBitmap\",\n code: `\n async function loadImageBitmap(url)\n {\n const response = await fetch(url);\n\n if (!response.ok)\n {\n throw new Error(\\`[WorkerManager.loadImageBitmap] Failed to fetch \\${url}: \\`\n + \\`\\${response.status} \\${response.statusText}\\`);\n }\n\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n\n return imageBitmap;\n }\n self.onmessage = async (event) =>\n {\n try\n {\n const imageBitmap = await loadImageBitmap(event.data.data[0]);\n\n self.postMessage({\n data: imageBitmap,\n uuid: event.data.uuid,\n id: event.data.id,\n }, [imageBitmap]);\n }\n catch(e)\n {\n self.postMessage({\n error: e,\n uuid: event.data.uuid,\n id: event.data.id,\n });\n }\n };`\n};\nlet workerURL;\nclass WorkerManagerClass {\n constructor() {\n this._initialized = false;\n this._createdWorkers = 0;\n this.workerPool = [];\n this.queue = [];\n this.resolveHash = {};\n }\n isImageBitmapSupported() {\n if (this._isImageBitmapSupported !== void 0)\n return this._isImageBitmapSupported;\n this._isImageBitmapSupported = new Promise((resolve) => {\n const workerURL2 = URL.createObjectURL(new Blob([checkImageBitmapCode.code], { type: \"application/javascript\" }));\n const worker = new Worker(workerURL2);\n worker.addEventListener(\"message\", (event) => {\n worker.terminate();\n URL.revokeObjectURL(workerURL2);\n resolve(event.data);\n });\n });\n return this._isImageBitmapSupported;\n }\n loadImageBitmap(src) {\n return this._run(\"loadImageBitmap\", [src]);\n }\n async _initWorkers() {\n if (this._initialized)\n return;\n this._initialized = true;\n }\n getWorker() {\n if (MAX_WORKERS === void 0) {\n MAX_WORKERS = navigator.hardwareConcurrency || 4;\n }\n let worker = this.workerPool.pop();\n if (!worker && this._createdWorkers < MAX_WORKERS) {\n if (!workerURL) {\n workerURL = URL.createObjectURL(new Blob([workerCode.code], { type: \"application/javascript\" }));\n }\n this._createdWorkers++;\n worker = new Worker(workerURL);\n worker.addEventListener(\"message\", (event) => {\n this.complete(event.data);\n this.returnWorker(event.target);\n this.next();\n });\n }\n return worker;\n }\n returnWorker(worker) {\n this.workerPool.push(worker);\n }\n complete(data) {\n if (data.error !== void 0) {\n this.resolveHash[data.uuid].reject(data.error);\n } else {\n this.resolveHash[data.uuid].resolve(data.data);\n }\n this.resolveHash[data.uuid] = null;\n }\n async _run(id, args) {\n await this._initWorkers();\n const promise = new Promise((resolve, reject) => {\n this.queue.push({ id, arguments: args, resolve, reject });\n });\n this.next();\n return promise;\n }\n next() {\n if (!this.queue.length)\n return;\n const worker = this.getWorker();\n if (!worker) {\n return;\n }\n const toDo = this.queue.pop();\n const id = toDo.id;\n this.resolveHash[UUID] = { resolve: toDo.resolve, reject: toDo.reject };\n worker.postMessage({\n data: toDo.arguments,\n uuid: UUID++,\n id\n });\n }\n}\nconst WorkerManager = new WorkerManagerClass();\n\nexport { WorkerManager };\n//# sourceMappingURL=WorkerManager.mjs.map\n","import { utils } from '@pixi/core';\n\nfunction checkExtension(url, extension) {\n const tempURL = url.split(\"?\")[0];\n const ext = utils.path.extname(tempURL).toLowerCase();\n if (Array.isArray(extension)) {\n return extension.includes(ext.toLowerCase());\n }\n return ext.toLowerCase() === extension;\n}\n\nexport { checkExtension };\n//# sourceMappingURL=checkExtension.mjs.map\n","import { Texture } from '@pixi/core';\n\nfunction createTexture(base, loader, url) {\n const texture = new Texture(base);\n texture.baseTexture.on(\"dispose\", () => {\n delete loader.promiseCache[url];\n });\n return texture;\n}\n\nexport { createTexture };\n//# sourceMappingURL=createTexture.mjs.map\n","import { settings, ExtensionType, BaseTexture, utils, extensions } from '@pixi/core';\nimport { LoaderParserPriority } from '../LoaderParser.mjs';\nimport { WorkerManager } from '../WorkerManager.mjs';\nimport { checkExtension } from './utils/checkExtension.mjs';\nimport { createTexture } from './utils/createTexture.mjs';\n\nconst validImages = [\".jpg\", \".png\", \".jpeg\", \".avif\", \".webp\"];\nasync function loadImageBitmap(url) {\n const response = await settings.ADAPTER.fetch(url);\n if (!response.ok) {\n throw new Error(`[loadImageBitmap] Failed to fetch ${url}: ${response.status} ${response.statusText}`);\n }\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n return imageBitmap;\n}\nconst loadTextures = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n config: {\n preferWorkers: true\n },\n test(url) {\n let isValidBase64Suffix = false;\n for (let i = 0; i < validImages.length; i++) {\n if (url.startsWith(`data:image/${validImages[i].slice(1)}`)) {\n isValidBase64Suffix = true;\n break;\n }\n }\n return isValidBase64Suffix || checkExtension(url, validImages);\n },\n async load(url, asset, loader) {\n let src = null;\n if (globalThis.createImageBitmap) {\n if (this.config.preferWorkers && await WorkerManager.isImageBitmapSupported()) {\n src = await WorkerManager.loadImageBitmap(url);\n } else {\n src = await loadImageBitmap(url);\n }\n } else {\n src = await new Promise((resolve) => {\n src = new Image();\n src.crossOrigin = \"anonymous\";\n src.src = url;\n if (src.complete) {\n resolve(src);\n } else {\n src.onload = () => {\n resolve(src);\n };\n }\n });\n }\n const base = new BaseTexture(src, {\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data\n });\n base.resource.src = url;\n return createTexture(base, loader, url);\n },\n unload(texture) {\n texture.destroy(true);\n }\n};\nextensions.add(loadTextures);\n\nexport { loadImageBitmap, loadTextures };\n//# sourceMappingURL=loadTexture.mjs.map\n","import { ExtensionType, utils, SVGResource, BaseTexture, settings } from '@pixi/core';\nimport { LoaderParserPriority } from '../LoaderParser.mjs';\nimport { loadTextures } from './loadTexture.mjs';\nimport { createTexture } from './utils/createTexture.mjs';\n\nconst loadSVG = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n test(url) {\n return utils.path.extname(url).includes(\".svg\");\n },\n async testParse(data) {\n return SVGResource.test(data);\n },\n async parse(asset, data, loader) {\n const src = new SVGResource(asset, data?.data?.resourceOptions);\n const base = new BaseTexture(src, {\n resolution: utils.getResolutionOfUrl(asset),\n ...data?.data\n });\n base.resource.src = asset;\n const texture = createTexture(base, loader, asset);\n if (!data?.data?.resourceOptions?.autoLoad) {\n await src.load();\n }\n return texture;\n },\n async load(url, _options) {\n const response = await settings.ADAPTER.fetch(url);\n return response.text();\n },\n unload: loadTextures.unload\n};\n\nexport { loadSVG };\n//# sourceMappingURL=loadSVG.mjs.map\n","import { ExtensionType, settings, extensions } from '@pixi/core';\nimport '../../loader/index.mjs';\nimport { loadTextures } from '../../loader/parsers/textures/loadTexture.mjs';\n\nconst resolveTextureUrl = {\n extension: ExtensionType.ResolveParser,\n test: loadTextures.test,\n parse: (value) => ({\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: value.split(\".\").pop(),\n src: value\n })\n};\nextensions.add(resolveTextureUrl);\n\nexport { resolveTextureUrl };\n//# sourceMappingURL=resolveTextureUrl.mjs.map\n","import { ExtensionType, settings, extensions } from '@pixi/core';\n\nconst detectAvif = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 1\n },\n test: async () => {\n if (!globalThis.createImageBitmap)\n return false;\n const avifData = \"data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=\";\n const blob = await settings.ADAPTER.fetch(avifData).then((r) => r.blob());\n return createImageBitmap(blob).then(() => true, () => false);\n },\n add: async (formats) => [...formats, \"avif\"],\n remove: async (formats) => formats.filter((f) => f !== \"avif\")\n};\nextensions.add(detectAvif);\n\nexport { detectAvif };\n//# sourceMappingURL=detectAvif.mjs.map\n","import { ExtensionType, settings, extensions } from '@pixi/core';\n\nconst detectWebp = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 0\n },\n test: async () => {\n if (!globalThis.createImageBitmap)\n return false;\n const webpData = \"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=\";\n const blob = await settings.ADAPTER.fetch(webpData).then((r) => r.blob());\n return createImageBitmap(blob).then(() => true, () => false);\n },\n add: async (formats) => [...formats, \"webp\"],\n remove: async (formats) => formats.filter((f) => f !== \"webp\")\n};\nextensions.add(detectWebp);\n\nexport { detectWebp };\n//# sourceMappingURL=detectWebp.mjs.map\n","import { ExtensionType, extensions } from '@pixi/core';\n\nconst imageFormats = [\"png\", \"jpg\", \"jpeg\"];\nconst detectDefaults = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: -1\n },\n test: () => Promise.resolve(true),\n add: async (formats) => [...formats, ...imageFormats],\n remove: async (formats) => formats.filter((f) => !imageFormats.includes(f))\n};\nextensions.add(detectDefaults);\n\nexport { detectDefaults };\n//# sourceMappingURL=detectDefaults.mjs.map\n","var INTERNAL_FORMATS = /* @__PURE__ */ ((INTERNAL_FORMATS2) => {\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_S3TC_DXT1_EXT\"] = 33776] = \"COMPRESSED_RGB_S3TC_DXT1_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_S3TC_DXT1_EXT\"] = 33777] = \"COMPRESSED_RGBA_S3TC_DXT1_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_S3TC_DXT3_EXT\"] = 33778] = \"COMPRESSED_RGBA_S3TC_DXT3_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_S3TC_DXT5_EXT\"] = 33779] = \"COMPRESSED_RGBA_S3TC_DXT5_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT\"] = 35917] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT\"] = 35918] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\"] = 35919] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB_S3TC_DXT1_EXT\"] = 35916] = \"COMPRESSED_SRGB_S3TC_DXT1_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_R11_EAC\"] = 37488] = \"COMPRESSED_R11_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SIGNED_R11_EAC\"] = 37489] = \"COMPRESSED_SIGNED_R11_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RG11_EAC\"] = 37490] = \"COMPRESSED_RG11_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SIGNED_RG11_EAC\"] = 37491] = \"COMPRESSED_SIGNED_RG11_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB8_ETC2\"] = 37492] = \"COMPRESSED_RGB8_ETC2\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA8_ETC2_EAC\"] = 37496] = \"COMPRESSED_RGBA8_ETC2_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB8_ETC2\"] = 37493] = \"COMPRESSED_SRGB8_ETC2\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\"] = 37497] = \"COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\"] = 37494] = \"COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\"] = 37495] = \"COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_PVRTC_4BPPV1_IMG\"] = 35840] = \"COMPRESSED_RGB_PVRTC_4BPPV1_IMG\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\"] = 35842] = \"COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_PVRTC_2BPPV1_IMG\"] = 35841] = \"COMPRESSED_RGB_PVRTC_2BPPV1_IMG\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_PVRTC_2BPPV1_IMG\"] = 35843] = \"COMPRESSED_RGBA_PVRTC_2BPPV1_IMG\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_ETC1_WEBGL\"] = 36196] = \"COMPRESSED_RGB_ETC1_WEBGL\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_ATC_WEBGL\"] = 35986] = \"COMPRESSED_RGB_ATC_WEBGL\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL\"] = 35986] = \"COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\"] = 34798] = \"COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_ASTC_4x4_KHR\"] = 37808] = \"COMPRESSED_RGBA_ASTC_4x4_KHR\";\n return INTERNAL_FORMATS2;\n})(INTERNAL_FORMATS || {});\nconst INTERNAL_FORMAT_TO_BYTES_PER_PIXEL = {\n [33776 /* COMPRESSED_RGB_S3TC_DXT1_EXT */]: 0.5,\n [33777 /* COMPRESSED_RGBA_S3TC_DXT1_EXT */]: 0.5,\n [33778 /* COMPRESSED_RGBA_S3TC_DXT3_EXT */]: 1,\n [33779 /* COMPRESSED_RGBA_S3TC_DXT5_EXT */]: 1,\n [35916 /* COMPRESSED_SRGB_S3TC_DXT1_EXT */]: 0.5,\n [35917 /* COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT */]: 0.5,\n [35918 /* COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT */]: 1,\n [35919 /* COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT */]: 1,\n [37488 /* COMPRESSED_R11_EAC */]: 0.5,\n [37489 /* COMPRESSED_SIGNED_R11_EAC */]: 0.5,\n [37490 /* COMPRESSED_RG11_EAC */]: 1,\n [37491 /* COMPRESSED_SIGNED_RG11_EAC */]: 1,\n [37492 /* COMPRESSED_RGB8_ETC2 */]: 0.5,\n [37496 /* COMPRESSED_RGBA8_ETC2_EAC */]: 1,\n [37493 /* COMPRESSED_SRGB8_ETC2 */]: 0.5,\n [37497 /* COMPRESSED_SRGB8_ALPHA8_ETC2_EAC */]: 1,\n [37494 /* COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 */]: 0.5,\n [37495 /* COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 */]: 0.5,\n [35840 /* COMPRESSED_RGB_PVRTC_4BPPV1_IMG */]: 0.5,\n [35842 /* COMPRESSED_RGBA_PVRTC_4BPPV1_IMG */]: 0.5,\n [35841 /* COMPRESSED_RGB_PVRTC_2BPPV1_IMG */]: 0.25,\n [35843 /* COMPRESSED_RGBA_PVRTC_2BPPV1_IMG */]: 0.25,\n [36196 /* COMPRESSED_RGB_ETC1_WEBGL */]: 0.5,\n [35986 /* COMPRESSED_RGB_ATC_WEBGL */]: 0.5,\n [35986 /* COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL */]: 1,\n [34798 /* COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL */]: 1,\n [37808 /* COMPRESSED_RGBA_ASTC_4x4_KHR */]: 1\n};\n\nexport { INTERNAL_FORMATS, INTERNAL_FORMAT_TO_BYTES_PER_PIXEL };\n//# sourceMappingURL=const.mjs.map\n","import { BufferResource, ViewableBuffer } from '@pixi/core';\n\nclass BlobResource extends BufferResource {\n constructor(source, options = { width: 1, height: 1, autoLoad: true }) {\n let origin;\n let data;\n if (typeof source === \"string\") {\n origin = source;\n data = new Uint8Array();\n } else {\n origin = null;\n data = source;\n }\n super(data, options);\n this.origin = origin;\n this.buffer = data ? new ViewableBuffer(data) : null;\n if (this.origin && options.autoLoad !== false) {\n this.load();\n }\n if (data?.length) {\n this.loaded = true;\n this.onBlobLoaded(this.buffer.rawBinaryData);\n }\n }\n onBlobLoaded(_data) {\n }\n async load() {\n const response = await fetch(this.origin);\n const blob = await response.blob();\n const arrayBuffer = await blob.arrayBuffer();\n this.data = new Uint32Array(arrayBuffer);\n this.buffer = new ViewableBuffer(arrayBuffer);\n this.loaded = true;\n this.onBlobLoaded(arrayBuffer);\n this.update();\n return this;\n }\n}\n\nexport { BlobResource };\n//# sourceMappingURL=BlobResource.mjs.map\n","import { BlobResource } from './BlobResource.mjs';\nimport { INTERNAL_FORMAT_TO_BYTES_PER_PIXEL } from '../const.mjs';\n\nclass CompressedTextureResource extends BlobResource {\n constructor(source, options) {\n super(source, options);\n this.format = options.format;\n this.levels = options.levels || 1;\n this._width = options.width;\n this._height = options.height;\n this._extension = CompressedTextureResource._formatToExtension(this.format);\n if (options.levelBuffers || this.buffer) {\n this._levelBuffers = options.levelBuffers || CompressedTextureResource._createLevelBuffers(source instanceof Uint8Array ? source : this.buffer.uint8View, this.format, this.levels, 4, 4, this.width, this.height);\n }\n }\n upload(renderer, _texture, _glTexture) {\n const gl = renderer.gl;\n const extension = renderer.context.extensions[this._extension];\n if (!extension) {\n throw new Error(`${this._extension} textures are not supported on the current machine`);\n }\n if (!this._levelBuffers) {\n return false;\n }\n for (let i = 0, j = this.levels; i < j; i++) {\n const { levelID, levelWidth, levelHeight, levelBuffer } = this._levelBuffers[i];\n gl.compressedTexImage2D(gl.TEXTURE_2D, levelID, this.format, levelWidth, levelHeight, 0, levelBuffer);\n }\n return true;\n }\n onBlobLoaded() {\n this._levelBuffers = CompressedTextureResource._createLevelBuffers(this.buffer.uint8View, this.format, this.levels, 4, 4, this.width, this.height);\n }\n static _formatToExtension(format) {\n if (format >= 33776 && format <= 33779) {\n return \"s3tc\";\n } else if (format >= 37488 && format <= 37497) {\n return \"etc\";\n } else if (format >= 35840 && format <= 35843) {\n return \"pvrtc\";\n } else if (format >= 36196) {\n return \"etc1\";\n } else if (format >= 35986 && format <= 34798) {\n return \"atc\";\n }\n throw new Error(\"Invalid (compressed) texture format given!\");\n }\n static _createLevelBuffers(buffer, format, levels, blockWidth, blockHeight, imageWidth, imageHeight) {\n const buffers = new Array(levels);\n let offset = buffer.byteOffset;\n let levelWidth = imageWidth;\n let levelHeight = imageHeight;\n let alignedLevelWidth = levelWidth + blockWidth - 1 & ~(blockWidth - 1);\n let alignedLevelHeight = levelHeight + blockHeight - 1 & ~(blockHeight - 1);\n let levelSize = alignedLevelWidth * alignedLevelHeight * INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[format];\n for (let i = 0; i < levels; i++) {\n buffers[i] = {\n levelID: i,\n levelWidth: levels > 1 ? levelWidth : alignedLevelWidth,\n levelHeight: levels > 1 ? levelHeight : alignedLevelHeight,\n levelBuffer: new Uint8Array(buffer.buffer, offset, levelSize)\n };\n offset += levelSize;\n levelWidth = levelWidth >> 1 || 1;\n levelHeight = levelHeight >> 1 || 1;\n alignedLevelWidth = levelWidth + blockWidth - 1 & ~(blockWidth - 1);\n alignedLevelHeight = levelHeight + blockHeight - 1 & ~(blockHeight - 1);\n levelSize = alignedLevelWidth * alignedLevelHeight * INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[format];\n }\n return buffers;\n }\n}\n\nexport { CompressedTextureResource };\n//# sourceMappingURL=CompressedTextureResource.mjs.map\n","import { ExtensionType, settings, extensions as extensions$1 } from '@pixi/core';\n\nlet storedGl;\nlet extensions;\nfunction getCompressedTextureExtensions() {\n extensions = {\n s3tc: storedGl.getExtension(\"WEBGL_compressed_texture_s3tc\"),\n s3tc_sRGB: storedGl.getExtension(\"WEBGL_compressed_texture_s3tc_srgb\"),\n etc: storedGl.getExtension(\"WEBGL_compressed_texture_etc\"),\n etc1: storedGl.getExtension(\"WEBGL_compressed_texture_etc1\"),\n pvrtc: storedGl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || storedGl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\"),\n atc: storedGl.getExtension(\"WEBGL_compressed_texture_atc\"),\n astc: storedGl.getExtension(\"WEBGL_compressed_texture_astc\")\n };\n}\nconst detectCompressedTextures = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 2\n },\n test: async () => {\n const canvas = settings.ADAPTER.createCanvas();\n const gl = canvas.getContext(\"webgl\");\n if (!gl) {\n return false;\n }\n storedGl = gl;\n return true;\n },\n add: async (formats) => {\n if (!extensions)\n getCompressedTextureExtensions();\n const textureFormats = [];\n for (const extensionName in extensions) {\n const extension = extensions[extensionName];\n if (!extension) {\n continue;\n }\n textureFormats.push(extensionName);\n }\n return [...textureFormats, ...formats];\n },\n remove: async (formats) => {\n if (!extensions)\n getCompressedTextureExtensions();\n return formats.filter((f) => !(f in extensions));\n }\n};\nextensions$1.add(detectCompressedTextures);\n\nexport { detectCompressedTextures };\n//# sourceMappingURL=detectCompressedTextures.mjs.map\n","import '../resources/index.mjs';\nimport { INTERNAL_FORMATS, INTERNAL_FORMAT_TO_BYTES_PER_PIXEL } from '../const.mjs';\nimport { CompressedTextureResource } from '../resources/CompressedTextureResource.mjs';\n\nconst DDS_MAGIC_SIZE = 4;\nconst DDS_HEADER_SIZE = 124;\nconst DDS_HEADER_PF_SIZE = 32;\nconst DDS_HEADER_DX10_SIZE = 20;\nconst DDS_MAGIC = 542327876;\nconst DDS_FIELDS = {\n SIZE: 1,\n FLAGS: 2,\n HEIGHT: 3,\n WIDTH: 4,\n MIPMAP_COUNT: 7,\n PIXEL_FORMAT: 19\n};\nconst DDS_PF_FIELDS = {\n SIZE: 0,\n FLAGS: 1,\n FOURCC: 2,\n RGB_BITCOUNT: 3,\n R_BIT_MASK: 4,\n G_BIT_MASK: 5,\n B_BIT_MASK: 6,\n A_BIT_MASK: 7\n};\nconst DDS_DX10_FIELDS = {\n DXGI_FORMAT: 0,\n RESOURCE_DIMENSION: 1,\n MISC_FLAG: 2,\n ARRAY_SIZE: 3,\n MISC_FLAGS2: 4\n};\nvar DXGI_FORMAT = /* @__PURE__ */ ((DXGI_FORMAT2) => {\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_UNKNOWN\"] = 0] = \"DXGI_FORMAT_UNKNOWN\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32A32_TYPELESS\"] = 1] = \"DXGI_FORMAT_R32G32B32A32_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32A32_FLOAT\"] = 2] = \"DXGI_FORMAT_R32G32B32A32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32A32_UINT\"] = 3] = \"DXGI_FORMAT_R32G32B32A32_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32A32_SINT\"] = 4] = \"DXGI_FORMAT_R32G32B32A32_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32_TYPELESS\"] = 5] = \"DXGI_FORMAT_R32G32B32_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32_FLOAT\"] = 6] = \"DXGI_FORMAT_R32G32B32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32_UINT\"] = 7] = \"DXGI_FORMAT_R32G32B32_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32_SINT\"] = 8] = \"DXGI_FORMAT_R32G32B32_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_TYPELESS\"] = 9] = \"DXGI_FORMAT_R16G16B16A16_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_FLOAT\"] = 10] = \"DXGI_FORMAT_R16G16B16A16_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_UNORM\"] = 11] = \"DXGI_FORMAT_R16G16B16A16_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_UINT\"] = 12] = \"DXGI_FORMAT_R16G16B16A16_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_SNORM\"] = 13] = \"DXGI_FORMAT_R16G16B16A16_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_SINT\"] = 14] = \"DXGI_FORMAT_R16G16B16A16_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32_TYPELESS\"] = 15] = \"DXGI_FORMAT_R32G32_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32_FLOAT\"] = 16] = \"DXGI_FORMAT_R32G32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32_UINT\"] = 17] = \"DXGI_FORMAT_R32G32_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32_SINT\"] = 18] = \"DXGI_FORMAT_R32G32_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G8X24_TYPELESS\"] = 19] = \"DXGI_FORMAT_R32G8X24_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_D32_FLOAT_S8X24_UINT\"] = 20] = \"DXGI_FORMAT_D32_FLOAT_S8X24_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS\"] = 21] = \"DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_X32_TYPELESS_G8X24_UINT\"] = 22] = \"DXGI_FORMAT_X32_TYPELESS_G8X24_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R10G10B10A2_TYPELESS\"] = 23] = \"DXGI_FORMAT_R10G10B10A2_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R10G10B10A2_UNORM\"] = 24] = \"DXGI_FORMAT_R10G10B10A2_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R10G10B10A2_UINT\"] = 25] = \"DXGI_FORMAT_R10G10B10A2_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R11G11B10_FLOAT\"] = 26] = \"DXGI_FORMAT_R11G11B10_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_TYPELESS\"] = 27] = \"DXGI_FORMAT_R8G8B8A8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_UNORM\"] = 28] = \"DXGI_FORMAT_R8G8B8A8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_UNORM_SRGB\"] = 29] = \"DXGI_FORMAT_R8G8B8A8_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_UINT\"] = 30] = \"DXGI_FORMAT_R8G8B8A8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_SNORM\"] = 31] = \"DXGI_FORMAT_R8G8B8A8_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_SINT\"] = 32] = \"DXGI_FORMAT_R8G8B8A8_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_TYPELESS\"] = 33] = \"DXGI_FORMAT_R16G16_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_FLOAT\"] = 34] = \"DXGI_FORMAT_R16G16_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_UNORM\"] = 35] = \"DXGI_FORMAT_R16G16_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_UINT\"] = 36] = \"DXGI_FORMAT_R16G16_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_SNORM\"] = 37] = \"DXGI_FORMAT_R16G16_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_SINT\"] = 38] = \"DXGI_FORMAT_R16G16_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_TYPELESS\"] = 39] = \"DXGI_FORMAT_R32_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_D32_FLOAT\"] = 40] = \"DXGI_FORMAT_D32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_FLOAT\"] = 41] = \"DXGI_FORMAT_R32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_UINT\"] = 42] = \"DXGI_FORMAT_R32_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_SINT\"] = 43] = \"DXGI_FORMAT_R32_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R24G8_TYPELESS\"] = 44] = \"DXGI_FORMAT_R24G8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_D24_UNORM_S8_UINT\"] = 45] = \"DXGI_FORMAT_D24_UNORM_S8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R24_UNORM_X8_TYPELESS\"] = 46] = \"DXGI_FORMAT_R24_UNORM_X8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_X24_TYPELESS_G8_UINT\"] = 47] = \"DXGI_FORMAT_X24_TYPELESS_G8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_TYPELESS\"] = 48] = \"DXGI_FORMAT_R8G8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_UNORM\"] = 49] = \"DXGI_FORMAT_R8G8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_UINT\"] = 50] = \"DXGI_FORMAT_R8G8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_SNORM\"] = 51] = \"DXGI_FORMAT_R8G8_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_SINT\"] = 52] = \"DXGI_FORMAT_R8G8_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_TYPELESS\"] = 53] = \"DXGI_FORMAT_R16_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_FLOAT\"] = 54] = \"DXGI_FORMAT_R16_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_D16_UNORM\"] = 55] = \"DXGI_FORMAT_D16_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_UNORM\"] = 56] = \"DXGI_FORMAT_R16_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_UINT\"] = 57] = \"DXGI_FORMAT_R16_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_SNORM\"] = 58] = \"DXGI_FORMAT_R16_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_SINT\"] = 59] = \"DXGI_FORMAT_R16_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_TYPELESS\"] = 60] = \"DXGI_FORMAT_R8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_UNORM\"] = 61] = \"DXGI_FORMAT_R8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_UINT\"] = 62] = \"DXGI_FORMAT_R8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_SNORM\"] = 63] = \"DXGI_FORMAT_R8_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_SINT\"] = 64] = \"DXGI_FORMAT_R8_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_A8_UNORM\"] = 65] = \"DXGI_FORMAT_A8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R1_UNORM\"] = 66] = \"DXGI_FORMAT_R1_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R9G9B9E5_SHAREDEXP\"] = 67] = \"DXGI_FORMAT_R9G9B9E5_SHAREDEXP\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_B8G8_UNORM\"] = 68] = \"DXGI_FORMAT_R8G8_B8G8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_G8R8_G8B8_UNORM\"] = 69] = \"DXGI_FORMAT_G8R8_G8B8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC1_TYPELESS\"] = 70] = \"DXGI_FORMAT_BC1_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC1_UNORM\"] = 71] = \"DXGI_FORMAT_BC1_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC1_UNORM_SRGB\"] = 72] = \"DXGI_FORMAT_BC1_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC2_TYPELESS\"] = 73] = \"DXGI_FORMAT_BC2_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC2_UNORM\"] = 74] = \"DXGI_FORMAT_BC2_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC2_UNORM_SRGB\"] = 75] = \"DXGI_FORMAT_BC2_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC3_TYPELESS\"] = 76] = \"DXGI_FORMAT_BC3_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC3_UNORM\"] = 77] = \"DXGI_FORMAT_BC3_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC3_UNORM_SRGB\"] = 78] = \"DXGI_FORMAT_BC3_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC4_TYPELESS\"] = 79] = \"DXGI_FORMAT_BC4_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC4_UNORM\"] = 80] = \"DXGI_FORMAT_BC4_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC4_SNORM\"] = 81] = \"DXGI_FORMAT_BC4_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC5_TYPELESS\"] = 82] = \"DXGI_FORMAT_BC5_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC5_UNORM\"] = 83] = \"DXGI_FORMAT_BC5_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC5_SNORM\"] = 84] = \"DXGI_FORMAT_BC5_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B5G6R5_UNORM\"] = 85] = \"DXGI_FORMAT_B5G6R5_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B5G5R5A1_UNORM\"] = 86] = \"DXGI_FORMAT_B5G5R5A1_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8A8_UNORM\"] = 87] = \"DXGI_FORMAT_B8G8R8A8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8X8_UNORM\"] = 88] = \"DXGI_FORMAT_B8G8R8X8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM\"] = 89] = \"DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8A8_TYPELESS\"] = 90] = \"DXGI_FORMAT_B8G8R8A8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8A8_UNORM_SRGB\"] = 91] = \"DXGI_FORMAT_B8G8R8A8_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8X8_TYPELESS\"] = 92] = \"DXGI_FORMAT_B8G8R8X8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8X8_UNORM_SRGB\"] = 93] = \"DXGI_FORMAT_B8G8R8X8_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC6H_TYPELESS\"] = 94] = \"DXGI_FORMAT_BC6H_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC6H_UF16\"] = 95] = \"DXGI_FORMAT_BC6H_UF16\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC6H_SF16\"] = 96] = \"DXGI_FORMAT_BC6H_SF16\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC7_TYPELESS\"] = 97] = \"DXGI_FORMAT_BC7_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC7_UNORM\"] = 98] = \"DXGI_FORMAT_BC7_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC7_UNORM_SRGB\"] = 99] = \"DXGI_FORMAT_BC7_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_AYUV\"] = 100] = \"DXGI_FORMAT_AYUV\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_Y410\"] = 101] = \"DXGI_FORMAT_Y410\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_Y416\"] = 102] = \"DXGI_FORMAT_Y416\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_NV12\"] = 103] = \"DXGI_FORMAT_NV12\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_P010\"] = 104] = \"DXGI_FORMAT_P010\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_P016\"] = 105] = \"DXGI_FORMAT_P016\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_420_OPAQUE\"] = 106] = \"DXGI_FORMAT_420_OPAQUE\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_YUY2\"] = 107] = \"DXGI_FORMAT_YUY2\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_Y210\"] = 108] = \"DXGI_FORMAT_Y210\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_Y216\"] = 109] = \"DXGI_FORMAT_Y216\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_NV11\"] = 110] = \"DXGI_FORMAT_NV11\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_AI44\"] = 111] = \"DXGI_FORMAT_AI44\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_IA44\"] = 112] = \"DXGI_FORMAT_IA44\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_P8\"] = 113] = \"DXGI_FORMAT_P8\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_A8P8\"] = 114] = \"DXGI_FORMAT_A8P8\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B4G4R4A4_UNORM\"] = 115] = \"DXGI_FORMAT_B4G4R4A4_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_P208\"] = 116] = \"DXGI_FORMAT_P208\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_V208\"] = 117] = \"DXGI_FORMAT_V208\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_V408\"] = 118] = \"DXGI_FORMAT_V408\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE\"] = 119] = \"DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE\"] = 120] = \"DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_FORCE_UINT\"] = 121] = \"DXGI_FORMAT_FORCE_UINT\";\n return DXGI_FORMAT2;\n})(DXGI_FORMAT || {});\nvar D3D10_RESOURCE_DIMENSION = /* @__PURE__ */ ((D3D10_RESOURCE_DIMENSION2) => {\n D3D10_RESOURCE_DIMENSION2[D3D10_RESOURCE_DIMENSION2[\"DDS_DIMENSION_TEXTURE1D\"] = 2] = \"DDS_DIMENSION_TEXTURE1D\";\n D3D10_RESOURCE_DIMENSION2[D3D10_RESOURCE_DIMENSION2[\"DDS_DIMENSION_TEXTURE2D\"] = 3] = \"DDS_DIMENSION_TEXTURE2D\";\n D3D10_RESOURCE_DIMENSION2[D3D10_RESOURCE_DIMENSION2[\"DDS_DIMENSION_TEXTURE3D\"] = 6] = \"DDS_DIMENSION_TEXTURE3D\";\n return D3D10_RESOURCE_DIMENSION2;\n})(D3D10_RESOURCE_DIMENSION || {});\nconst PF_FLAGS = 1;\nconst DDPF_ALPHA = 2;\nconst DDPF_FOURCC = 4;\nconst DDPF_RGB = 64;\nconst DDPF_YUV = 512;\nconst DDPF_LUMINANCE = 131072;\nconst FOURCC_DXT1 = 827611204;\nconst FOURCC_DXT3 = 861165636;\nconst FOURCC_DXT5 = 894720068;\nconst FOURCC_DX10 = 808540228;\nconst DDS_RESOURCE_MISC_TEXTURECUBE = 4;\nconst FOURCC_TO_FORMAT = {\n [FOURCC_DXT1]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n [FOURCC_DXT3]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n [FOURCC_DXT5]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT\n};\nconst DXGI_TO_FORMAT = {\n [70 /* DXGI_FORMAT_BC1_TYPELESS */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n [71 /* DXGI_FORMAT_BC1_UNORM */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n [73 /* DXGI_FORMAT_BC2_TYPELESS */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n [74 /* DXGI_FORMAT_BC2_UNORM */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n [76 /* DXGI_FORMAT_BC3_TYPELESS */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n [77 /* DXGI_FORMAT_BC3_UNORM */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n [72 /* DXGI_FORMAT_BC1_UNORM_SRGB */]: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,\n [75 /* DXGI_FORMAT_BC2_UNORM_SRGB */]: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,\n [78 /* DXGI_FORMAT_BC3_UNORM_SRGB */]: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\n};\nfunction parseDDS(arrayBuffer) {\n const data = new Uint32Array(arrayBuffer);\n const magicWord = data[0];\n if (magicWord !== DDS_MAGIC) {\n throw new Error(\"Invalid DDS file magic word\");\n }\n const header = new Uint32Array(arrayBuffer, 0, DDS_HEADER_SIZE / Uint32Array.BYTES_PER_ELEMENT);\n const height = header[DDS_FIELDS.HEIGHT];\n const width = header[DDS_FIELDS.WIDTH];\n const mipmapCount = header[DDS_FIELDS.MIPMAP_COUNT];\n const pixelFormat = new Uint32Array(arrayBuffer, DDS_FIELDS.PIXEL_FORMAT * Uint32Array.BYTES_PER_ELEMENT, DDS_HEADER_PF_SIZE / Uint32Array.BYTES_PER_ELEMENT);\n const formatFlags = pixelFormat[PF_FLAGS];\n if (formatFlags & DDPF_FOURCC) {\n const fourCC = pixelFormat[DDS_PF_FIELDS.FOURCC];\n if (fourCC !== FOURCC_DX10) {\n const internalFormat2 = FOURCC_TO_FORMAT[fourCC];\n const dataOffset2 = DDS_MAGIC_SIZE + DDS_HEADER_SIZE;\n const texData = new Uint8Array(arrayBuffer, dataOffset2);\n const resource = new CompressedTextureResource(texData, {\n format: internalFormat2,\n width,\n height,\n levels: mipmapCount\n });\n return [resource];\n }\n const dx10Offset = DDS_MAGIC_SIZE + DDS_HEADER_SIZE;\n const dx10Header = new Uint32Array(data.buffer, dx10Offset, DDS_HEADER_DX10_SIZE / Uint32Array.BYTES_PER_ELEMENT);\n const dxgiFormat = dx10Header[DDS_DX10_FIELDS.DXGI_FORMAT];\n const resourceDimension = dx10Header[DDS_DX10_FIELDS.RESOURCE_DIMENSION];\n const miscFlag = dx10Header[DDS_DX10_FIELDS.MISC_FLAG];\n const arraySize = dx10Header[DDS_DX10_FIELDS.ARRAY_SIZE];\n const internalFormat = DXGI_TO_FORMAT[dxgiFormat];\n if (internalFormat === void 0) {\n throw new Error(`DDSParser cannot parse texture data with DXGI format ${dxgiFormat}`);\n }\n if (miscFlag === DDS_RESOURCE_MISC_TEXTURECUBE) {\n throw new Error(\"DDSParser does not support cubemap textures\");\n }\n if (resourceDimension === 6 /* DDS_DIMENSION_TEXTURE3D */) {\n throw new Error(\"DDSParser does not supported 3D texture data\");\n }\n const imageBuffers = new Array();\n const dataOffset = DDS_MAGIC_SIZE + DDS_HEADER_SIZE + DDS_HEADER_DX10_SIZE;\n if (arraySize === 1) {\n imageBuffers.push(new Uint8Array(arrayBuffer, dataOffset));\n } else {\n const pixelSize = INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[internalFormat];\n let imageSize = 0;\n let levelWidth = width;\n let levelHeight = height;\n for (let i = 0; i < mipmapCount; i++) {\n const alignedLevelWidth = Math.max(1, levelWidth + 3 & ~3);\n const alignedLevelHeight = Math.max(1, levelHeight + 3 & ~3);\n const levelSize = alignedLevelWidth * alignedLevelHeight * pixelSize;\n imageSize += levelSize;\n levelWidth = levelWidth >>> 1;\n levelHeight = levelHeight >>> 1;\n }\n let imageOffset = dataOffset;\n for (let i = 0; i < arraySize; i++) {\n imageBuffers.push(new Uint8Array(arrayBuffer, imageOffset, imageSize));\n imageOffset += imageSize;\n }\n }\n return imageBuffers.map((buffer) => new CompressedTextureResource(buffer, {\n format: internalFormat,\n width,\n height,\n levels: mipmapCount\n }));\n }\n if (formatFlags & DDPF_RGB) {\n throw new Error(\"DDSParser does not support uncompressed texture data.\");\n }\n if (formatFlags & DDPF_YUV) {\n throw new Error(\"DDSParser does not supported YUV uncompressed texture data.\");\n }\n if (formatFlags & DDPF_LUMINANCE) {\n throw new Error(\"DDSParser does not support single-channel (lumninance) texture data!\");\n }\n if (formatFlags & DDPF_ALPHA) {\n throw new Error(\"DDSParser does not support single-channel (alpha) texture data!\");\n }\n throw new Error(\"DDSParser failed to load a texture file due to an unknown reason!\");\n}\n\nexport { parseDDS };\n//# sourceMappingURL=parseDDS.mjs.map\n","import { TYPES, FORMATS, BufferResource } from '@pixi/core';\nimport { INTERNAL_FORMAT_TO_BYTES_PER_PIXEL } from '../const.mjs';\nimport '../resources/index.mjs';\nimport { CompressedTextureResource } from '../resources/CompressedTextureResource.mjs';\n\nconst FILE_IDENTIFIER = [171, 75, 84, 88, 32, 49, 49, 187, 13, 10, 26, 10];\nconst ENDIANNESS = 67305985;\nconst KTX_FIELDS = {\n FILE_IDENTIFIER: 0,\n ENDIANNESS: 12,\n GL_TYPE: 16,\n GL_TYPE_SIZE: 20,\n GL_FORMAT: 24,\n GL_INTERNAL_FORMAT: 28,\n GL_BASE_INTERNAL_FORMAT: 32,\n PIXEL_WIDTH: 36,\n PIXEL_HEIGHT: 40,\n PIXEL_DEPTH: 44,\n NUMBER_OF_ARRAY_ELEMENTS: 48,\n NUMBER_OF_FACES: 52,\n NUMBER_OF_MIPMAP_LEVELS: 56,\n BYTES_OF_KEY_VALUE_DATA: 60\n};\nconst FILE_HEADER_SIZE = 64;\nconst TYPES_TO_BYTES_PER_COMPONENT = {\n [TYPES.UNSIGNED_BYTE]: 1,\n [TYPES.UNSIGNED_SHORT]: 2,\n [TYPES.INT]: 4,\n [TYPES.UNSIGNED_INT]: 4,\n [TYPES.FLOAT]: 4,\n [TYPES.HALF_FLOAT]: 8\n};\nconst FORMATS_TO_COMPONENTS = {\n [FORMATS.RGBA]: 4,\n [FORMATS.RGB]: 3,\n [FORMATS.RG]: 2,\n [FORMATS.RED]: 1,\n [FORMATS.LUMINANCE]: 1,\n [FORMATS.LUMINANCE_ALPHA]: 2,\n [FORMATS.ALPHA]: 1\n};\nconst TYPES_TO_BYTES_PER_PIXEL = {\n [TYPES.UNSIGNED_SHORT_4_4_4_4]: 2,\n [TYPES.UNSIGNED_SHORT_5_5_5_1]: 2,\n [TYPES.UNSIGNED_SHORT_5_6_5]: 2\n};\nfunction parseKTX(url, arrayBuffer, loadKeyValueData = false) {\n const dataView = new DataView(arrayBuffer);\n if (!validate(url, dataView)) {\n return null;\n }\n const littleEndian = dataView.getUint32(KTX_FIELDS.ENDIANNESS, true) === ENDIANNESS;\n const glType = dataView.getUint32(KTX_FIELDS.GL_TYPE, littleEndian);\n const glFormat = dataView.getUint32(KTX_FIELDS.GL_FORMAT, littleEndian);\n const glInternalFormat = dataView.getUint32(KTX_FIELDS.GL_INTERNAL_FORMAT, littleEndian);\n const pixelWidth = dataView.getUint32(KTX_FIELDS.PIXEL_WIDTH, littleEndian);\n const pixelHeight = dataView.getUint32(KTX_FIELDS.PIXEL_HEIGHT, littleEndian) || 1;\n const pixelDepth = dataView.getUint32(KTX_FIELDS.PIXEL_DEPTH, littleEndian) || 1;\n const numberOfArrayElements = dataView.getUint32(KTX_FIELDS.NUMBER_OF_ARRAY_ELEMENTS, littleEndian) || 1;\n const numberOfFaces = dataView.getUint32(KTX_FIELDS.NUMBER_OF_FACES, littleEndian);\n const numberOfMipmapLevels = dataView.getUint32(KTX_FIELDS.NUMBER_OF_MIPMAP_LEVELS, littleEndian);\n const bytesOfKeyValueData = dataView.getUint32(KTX_FIELDS.BYTES_OF_KEY_VALUE_DATA, littleEndian);\n if (pixelHeight === 0 || pixelDepth !== 1) {\n throw new Error(\"Only 2D textures are supported\");\n }\n if (numberOfFaces !== 1) {\n throw new Error(\"CubeTextures are not supported by KTXLoader yet!\");\n }\n if (numberOfArrayElements !== 1) {\n throw new Error(\"WebGL does not support array textures\");\n }\n const blockWidth = 4;\n const blockHeight = 4;\n const alignedWidth = pixelWidth + 3 & ~3;\n const alignedHeight = pixelHeight + 3 & ~3;\n const imageBuffers = new Array(numberOfArrayElements);\n let imagePixels = pixelWidth * pixelHeight;\n if (glType === 0) {\n imagePixels = alignedWidth * alignedHeight;\n }\n let imagePixelByteSize;\n if (glType !== 0) {\n if (TYPES_TO_BYTES_PER_COMPONENT[glType]) {\n imagePixelByteSize = TYPES_TO_BYTES_PER_COMPONENT[glType] * FORMATS_TO_COMPONENTS[glFormat];\n } else {\n imagePixelByteSize = TYPES_TO_BYTES_PER_PIXEL[glType];\n }\n } else {\n imagePixelByteSize = INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[glInternalFormat];\n }\n if (imagePixelByteSize === void 0) {\n throw new Error(\"Unable to resolve the pixel format stored in the *.ktx file!\");\n }\n const kvData = loadKeyValueData ? parseKvData(dataView, bytesOfKeyValueData, littleEndian) : null;\n const imageByteSize = imagePixels * imagePixelByteSize;\n let mipByteSize = imageByteSize;\n let mipWidth = pixelWidth;\n let mipHeight = pixelHeight;\n let alignedMipWidth = alignedWidth;\n let alignedMipHeight = alignedHeight;\n let imageOffset = FILE_HEADER_SIZE + bytesOfKeyValueData;\n for (let mipmapLevel = 0; mipmapLevel < numberOfMipmapLevels; mipmapLevel++) {\n const imageSize = dataView.getUint32(imageOffset, littleEndian);\n let elementOffset = imageOffset + 4;\n for (let arrayElement = 0; arrayElement < numberOfArrayElements; arrayElement++) {\n let mips = imageBuffers[arrayElement];\n if (!mips) {\n mips = imageBuffers[arrayElement] = new Array(numberOfMipmapLevels);\n }\n mips[mipmapLevel] = {\n levelID: mipmapLevel,\n levelWidth: numberOfMipmapLevels > 1 || glType !== 0 ? mipWidth : alignedMipWidth,\n levelHeight: numberOfMipmapLevels > 1 || glType !== 0 ? mipHeight : alignedMipHeight,\n levelBuffer: new Uint8Array(arrayBuffer, elementOffset, mipByteSize)\n };\n elementOffset += mipByteSize;\n }\n imageOffset += imageSize + 4;\n imageOffset = imageOffset % 4 !== 0 ? imageOffset + 4 - imageOffset % 4 : imageOffset;\n mipWidth = mipWidth >> 1 || 1;\n mipHeight = mipHeight >> 1 || 1;\n alignedMipWidth = mipWidth + blockWidth - 1 & ~(blockWidth - 1);\n alignedMipHeight = mipHeight + blockHeight - 1 & ~(blockHeight - 1);\n mipByteSize = alignedMipWidth * alignedMipHeight * imagePixelByteSize;\n }\n if (glType !== 0) {\n return {\n uncompressed: imageBuffers.map((levelBuffers) => {\n let buffer = levelBuffers[0].levelBuffer;\n let convertToInt = false;\n if (glType === TYPES.FLOAT) {\n buffer = new Float32Array(levelBuffers[0].levelBuffer.buffer, levelBuffers[0].levelBuffer.byteOffset, levelBuffers[0].levelBuffer.byteLength / 4);\n } else if (glType === TYPES.UNSIGNED_INT) {\n convertToInt = true;\n buffer = new Uint32Array(levelBuffers[0].levelBuffer.buffer, levelBuffers[0].levelBuffer.byteOffset, levelBuffers[0].levelBuffer.byteLength / 4);\n } else if (glType === TYPES.INT) {\n convertToInt = true;\n buffer = new Int32Array(levelBuffers[0].levelBuffer.buffer, levelBuffers[0].levelBuffer.byteOffset, levelBuffers[0].levelBuffer.byteLength / 4);\n }\n return {\n resource: new BufferResource(buffer, {\n width: levelBuffers[0].levelWidth,\n height: levelBuffers[0].levelHeight\n }),\n type: glType,\n format: convertToInt ? convertFormatToInteger(glFormat) : glFormat\n };\n }),\n kvData\n };\n }\n return {\n compressed: imageBuffers.map((levelBuffers) => new CompressedTextureResource(null, {\n format: glInternalFormat,\n width: pixelWidth,\n height: pixelHeight,\n levels: numberOfMipmapLevels,\n levelBuffers\n })),\n kvData\n };\n}\nfunction validate(url, dataView) {\n for (let i = 0; i < FILE_IDENTIFIER.length; i++) {\n if (dataView.getUint8(i) !== FILE_IDENTIFIER[i]) {\n return false;\n }\n }\n return true;\n}\nfunction convertFormatToInteger(format) {\n switch (format) {\n case FORMATS.RGBA:\n return FORMATS.RGBA_INTEGER;\n case FORMATS.RGB:\n return FORMATS.RGB_INTEGER;\n case FORMATS.RG:\n return FORMATS.RG_INTEGER;\n case FORMATS.RED:\n return FORMATS.RED_INTEGER;\n default:\n return format;\n }\n}\nfunction parseKvData(dataView, bytesOfKeyValueData, littleEndian) {\n const kvData = /* @__PURE__ */ new Map();\n let bytesIntoKeyValueData = 0;\n while (bytesIntoKeyValueData < bytesOfKeyValueData) {\n const keyAndValueByteSize = dataView.getUint32(FILE_HEADER_SIZE + bytesIntoKeyValueData, littleEndian);\n const keyAndValueByteOffset = FILE_HEADER_SIZE + bytesIntoKeyValueData + 4;\n const valuePadding = 3 - (keyAndValueByteSize + 3) % 4;\n if (keyAndValueByteSize === 0 || keyAndValueByteSize > bytesOfKeyValueData - bytesIntoKeyValueData) {\n console.error(\"KTXLoader: keyAndValueByteSize out of bounds\");\n break;\n }\n let keyNulByte = 0;\n for (; keyNulByte < keyAndValueByteSize; keyNulByte++) {\n if (dataView.getUint8(keyAndValueByteOffset + keyNulByte) === 0) {\n break;\n }\n }\n if (keyNulByte === -1) {\n console.error(\"KTXLoader: Failed to find null byte terminating kvData key\");\n break;\n }\n const key = new TextDecoder().decode(new Uint8Array(dataView.buffer, keyAndValueByteOffset, keyNulByte));\n const value = new DataView(dataView.buffer, keyAndValueByteOffset + keyNulByte + 1, keyAndValueByteSize - keyNulByte - 1);\n kvData.set(key, value);\n bytesIntoKeyValueData += 4 + keyAndValueByteSize + valuePadding;\n }\n return kvData;\n}\n\nexport { FORMATS_TO_COMPONENTS, TYPES_TO_BYTES_PER_COMPONENT, TYPES_TO_BYTES_PER_PIXEL, parseKTX };\n//# sourceMappingURL=parseKTX.mjs.map\n","import { ExtensionType, settings, BaseTexture, MIPMAP_MODES, ALPHA_MODES, utils, extensions } from '@pixi/core';\nimport { LoaderParserPriority, checkExtension, createTexture } from '@pixi/assets';\nimport '../parsers/index.mjs';\nimport { parseDDS } from '../parsers/parseDDS.mjs';\n\nconst loadDDS = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n test(url) {\n return checkExtension(url, \".dds\");\n },\n async load(url, asset, loader) {\n const response = await settings.ADAPTER.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n const resources = parseDDS(arrayBuffer);\n const textures = resources.map((resource) => {\n const base = new BaseTexture(resource, {\n mipmap: MIPMAP_MODES.OFF,\n alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data\n });\n return createTexture(base, loader, url);\n });\n return textures.length === 1 ? textures[0] : textures;\n },\n unload(texture) {\n if (Array.isArray(texture)) {\n texture.forEach((t) => t.destroy(true));\n } else {\n texture.destroy(true);\n }\n }\n};\nextensions.add(loadDDS);\n\nexport { loadDDS };\n//# sourceMappingURL=loadDDS.mjs.map\n","import { ExtensionType, settings, MIPMAP_MODES, ALPHA_MODES, utils, BaseTexture, extensions } from '@pixi/core';\nimport { LoaderParserPriority, checkExtension, createTexture } from '@pixi/assets';\nimport '../parsers/index.mjs';\nimport { parseKTX } from '../parsers/parseKTX.mjs';\n\nconst loadKTX = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n test(url) {\n return checkExtension(url, \".ktx\");\n },\n async load(url, asset, loader) {\n const response = await settings.ADAPTER.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n const { compressed, uncompressed, kvData } = parseKTX(url, arrayBuffer);\n const resources = compressed ?? uncompressed;\n const options = {\n mipmap: MIPMAP_MODES.OFF,\n alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data\n };\n const textures = resources.map((resource) => {\n if (resources === uncompressed) {\n Object.assign(options, {\n type: resource.type,\n format: resource.format\n });\n }\n const base = new BaseTexture(resource, options);\n base.ktxKeyValueData = kvData;\n return createTexture(base, loader, url);\n });\n return textures.length === 1 ? textures[0] : textures;\n },\n unload(texture) {\n if (Array.isArray(texture)) {\n texture.forEach((t) => t.destroy(true));\n } else {\n texture.destroy(true);\n }\n }\n};\nextensions.add(loadKTX);\n\nexport { loadKTX };\n//# sourceMappingURL=loadKTX.mjs.map\n","import { ExtensionType, settings, extensions } from '@pixi/core';\n\nconst resolveCompressedTextureUrl = {\n extension: ExtensionType.ResolveParser,\n test: (value) => {\n const temp = value.split(\"?\")[0];\n const extension = temp.split(\".\").pop();\n return [\"basis\", \"ktx\", \"dds\"].includes(extension);\n },\n parse: (value) => {\n const temp = value.split(\"?\")[0];\n const extension = temp.split(\".\").pop();\n if (extension === \"ktx\") {\n const extensions2 = [\n \".s3tc.ktx\",\n \".s3tc_sRGB.ktx\",\n \".etc.ktx\",\n \".etc1.ktx\",\n \".pvrt.ktx\",\n \".atc.ktx\",\n \".astc.ktx\"\n ];\n if (extensions2.some((ext) => value.endsWith(ext))) {\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: extensions2.find((ext) => value.endsWith(ext)),\n src: value\n };\n }\n }\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: value.split(\".\").pop(),\n src: value\n };\n }\n};\nextensions.add(resolveCompressedTextureUrl);\n\nexport { resolveCompressedTextureUrl };\n//# sourceMappingURL=resolveCompressedTextureUrl.mjs.map\n","import { Rectangle, RenderTexture, utils, ExtensionType, extensions } from '@pixi/core';\n\nconst TEMP_RECT = new Rectangle();\nconst BYTES_PER_PIXEL = 4;\nconst _Extract = class {\n constructor(renderer) {\n this.renderer = renderer;\n }\n async image(target, format, quality) {\n const image = new Image();\n image.src = await this.base64(target, format, quality);\n return image;\n }\n async base64(target, format, quality) {\n const canvas = this.canvas(target);\n if (canvas.toDataURL !== void 0) {\n return canvas.toDataURL(format, quality);\n }\n if (canvas.convertToBlob !== void 0) {\n const blob = await canvas.convertToBlob({ type: format, quality });\n return await new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n }\n throw new Error(\"Extract.base64() requires ICanvas.toDataURL or ICanvas.convertToBlob to be implemented\");\n }\n canvas(target, frame) {\n const renderer = this.renderer;\n let resolution;\n let flipY = false;\n let renderTexture;\n let generated = false;\n if (target) {\n if (target instanceof RenderTexture) {\n renderTexture = target;\n } else {\n renderTexture = this.renderer.generateTexture(target);\n generated = true;\n }\n }\n if (renderTexture) {\n resolution = renderTexture.baseTexture.resolution;\n frame = frame ?? renderTexture.frame;\n flipY = false;\n renderer.renderTexture.bind(renderTexture);\n } else {\n resolution = renderer.resolution;\n if (!frame) {\n frame = TEMP_RECT;\n frame.width = renderer.width;\n frame.height = renderer.height;\n }\n flipY = true;\n renderer.renderTexture.bind(null);\n }\n const width = Math.round(frame.width * resolution);\n const height = Math.round(frame.height * resolution);\n let canvasBuffer = new utils.CanvasRenderTarget(width, height, 1);\n const webglPixels = new Uint8Array(BYTES_PER_PIXEL * width * height);\n const gl = renderer.gl;\n gl.readPixels(Math.round(frame.x * resolution), Math.round(frame.y * resolution), width, height, gl.RGBA, gl.UNSIGNED_BYTE, webglPixels);\n const canvasData = canvasBuffer.context.getImageData(0, 0, width, height);\n _Extract.arrayPostDivide(webglPixels, canvasData.data);\n canvasBuffer.context.putImageData(canvasData, 0, 0);\n if (flipY) {\n const target2 = new utils.CanvasRenderTarget(canvasBuffer.width, canvasBuffer.height, 1);\n target2.context.scale(1, -1);\n target2.context.drawImage(canvasBuffer.canvas, 0, -height);\n canvasBuffer.destroy();\n canvasBuffer = target2;\n }\n if (generated) {\n renderTexture.destroy(true);\n }\n return canvasBuffer.canvas;\n }\n pixels(target, frame) {\n const renderer = this.renderer;\n let resolution;\n let renderTexture;\n let generated = false;\n if (target) {\n if (target instanceof RenderTexture) {\n renderTexture = target;\n } else {\n renderTexture = this.renderer.generateTexture(target);\n generated = true;\n }\n }\n if (renderTexture) {\n resolution = renderTexture.baseTexture.resolution;\n frame = frame ?? renderTexture.frame;\n renderer.renderTexture.bind(renderTexture);\n } else {\n resolution = renderer.resolution;\n if (!frame) {\n frame = TEMP_RECT;\n frame.width = renderer.width;\n frame.height = renderer.height;\n }\n renderer.renderTexture.bind(null);\n }\n const width = Math.round(frame.width * resolution);\n const height = Math.round(frame.height * resolution);\n const webglPixels = new Uint8Array(BYTES_PER_PIXEL * width * height);\n const gl = renderer.gl;\n gl.readPixels(Math.round(frame.x * resolution), Math.round(frame.y * resolution), width, height, gl.RGBA, gl.UNSIGNED_BYTE, webglPixels);\n if (generated) {\n renderTexture.destroy(true);\n }\n _Extract.arrayPostDivide(webglPixels, webglPixels);\n return webglPixels;\n }\n destroy() {\n this.renderer = null;\n }\n static arrayPostDivide(pixels, out) {\n for (let i = 0; i < pixels.length; i += 4) {\n const alpha = out[i + 3] = pixels[i + 3];\n if (alpha !== 0) {\n out[i] = Math.round(Math.min(pixels[i] * 255 / alpha, 255));\n out[i + 1] = Math.round(Math.min(pixels[i + 1] * 255 / alpha, 255));\n out[i + 2] = Math.round(Math.min(pixels[i + 2] * 255 / alpha, 255));\n } else {\n out[i] = pixels[i];\n out[i + 1] = pixels[i + 1];\n out[i + 2] = pixels[i + 2];\n }\n }\n }\n};\nlet Extract = _Extract;\nExtract.extension = {\n name: \"extract\",\n type: ExtensionType.RendererSystem\n};\nextensions.add(Extract);\n\nexport { Extract };\n//# sourceMappingURL=Extract.mjs.map\n","var LINE_JOIN = /* @__PURE__ */ ((LINE_JOIN2) => {\n LINE_JOIN2[\"MITER\"] = \"miter\";\n LINE_JOIN2[\"BEVEL\"] = \"bevel\";\n LINE_JOIN2[\"ROUND\"] = \"round\";\n return LINE_JOIN2;\n})(LINE_JOIN || {});\nvar LINE_CAP = /* @__PURE__ */ ((LINE_CAP2) => {\n LINE_CAP2[\"BUTT\"] = \"butt\";\n LINE_CAP2[\"ROUND\"] = \"round\";\n LINE_CAP2[\"SQUARE\"] = \"square\";\n return LINE_CAP2;\n})(LINE_CAP || {});\nconst GRAPHICS_CURVES = {\n adaptive: true,\n maxLength: 10,\n minSegments: 8,\n maxSegments: 2048,\n epsilon: 1e-4,\n _segmentsCount(length, defaultSegments = 20) {\n if (!this.adaptive || !length || isNaN(length)) {\n return defaultSegments;\n }\n let result = Math.ceil(length / this.maxLength);\n if (result < this.minSegments) {\n result = this.minSegments;\n } else if (result > this.maxSegments) {\n result = this.maxSegments;\n }\n return result;\n }\n};\n\nexport { GRAPHICS_CURVES, LINE_CAP, LINE_JOIN };\n//# sourceMappingURL=const.mjs.map\n","import { Texture } from '@pixi/core';\n\nclass FillStyle {\n constructor() {\n this.color = 16777215;\n this.alpha = 1;\n this.texture = Texture.WHITE;\n this.matrix = null;\n this.visible = false;\n this.reset();\n }\n clone() {\n const obj = new FillStyle();\n obj.color = this.color;\n obj.alpha = this.alpha;\n obj.texture = this.texture;\n obj.matrix = this.matrix;\n obj.visible = this.visible;\n return obj;\n }\n reset() {\n this.color = 16777215;\n this.alpha = 1;\n this.texture = Texture.WHITE;\n this.matrix = null;\n this.visible = false;\n }\n destroy() {\n this.texture = null;\n this.matrix = null;\n }\n}\n\nexport { FillStyle };\n//# sourceMappingURL=FillStyle.mjs.map\n","import { utils } from '@pixi/core';\n\nfunction fixOrientation(points, hole = false) {\n const m = points.length;\n if (m < 6) {\n return;\n }\n let area = 0;\n for (let i = 0, x1 = points[m - 2], y1 = points[m - 1]; i < m; i += 2) {\n const x2 = points[i];\n const y2 = points[i + 1];\n area += (x2 - x1) * (y2 + y1);\n x1 = x2;\n y1 = y2;\n }\n if (!hole && area > 0 || hole && area <= 0) {\n const n = m / 2;\n for (let i = n + n % 2; i < m; i += 2) {\n const i1 = m - i - 2;\n const i2 = m - i - 1;\n const i3 = i;\n const i4 = i + 1;\n [points[i1], points[i3]] = [points[i3], points[i1]];\n [points[i2], points[i4]] = [points[i4], points[i2]];\n }\n }\n}\nconst buildPoly = {\n build(graphicsData) {\n graphicsData.points = graphicsData.shape.points.slice();\n },\n triangulate(graphicsData, graphicsGeometry) {\n let points = graphicsData.points;\n const holes = graphicsData.holes;\n const verts = graphicsGeometry.points;\n const indices = graphicsGeometry.indices;\n if (points.length >= 6) {\n fixOrientation(points, false);\n const holeArray = [];\n for (let i = 0; i < holes.length; i++) {\n const hole = holes[i];\n fixOrientation(hole.points, true);\n holeArray.push(points.length / 2);\n points = points.concat(hole.points);\n }\n const triangles = utils.earcut(points, holeArray, 2);\n if (!triangles) {\n return;\n }\n const vertPos = verts.length / 2;\n for (let i = 0; i < triangles.length; i += 3) {\n indices.push(triangles[i] + vertPos);\n indices.push(triangles[i + 1] + vertPos);\n indices.push(triangles[i + 2] + vertPos);\n }\n for (let i = 0; i < points.length; i++) {\n verts.push(points[i]);\n }\n }\n }\n};\n\nexport { buildPoly };\n//# sourceMappingURL=buildPoly.mjs.map\n","import { SHAPES } from '@pixi/core';\n\nconst buildCircle = {\n build(graphicsData) {\n const points = graphicsData.points;\n let x;\n let y;\n let dx;\n let dy;\n let rx;\n let ry;\n if (graphicsData.type === SHAPES.CIRC) {\n const circle = graphicsData.shape;\n x = circle.x;\n y = circle.y;\n rx = ry = circle.radius;\n dx = dy = 0;\n } else if (graphicsData.type === SHAPES.ELIP) {\n const ellipse = graphicsData.shape;\n x = ellipse.x;\n y = ellipse.y;\n rx = ellipse.width;\n ry = ellipse.height;\n dx = dy = 0;\n } else {\n const roundedRect = graphicsData.shape;\n const halfWidth = roundedRect.width / 2;\n const halfHeight = roundedRect.height / 2;\n x = roundedRect.x + halfWidth;\n y = roundedRect.y + halfHeight;\n rx = ry = Math.max(0, Math.min(roundedRect.radius, Math.min(halfWidth, halfHeight)));\n dx = halfWidth - rx;\n dy = halfHeight - ry;\n }\n if (!(rx >= 0 && ry >= 0 && dx >= 0 && dy >= 0)) {\n points.length = 0;\n return;\n }\n const n = Math.ceil(2.3 * Math.sqrt(rx + ry));\n const m = n * 8 + (dx ? 4 : 0) + (dy ? 4 : 0);\n points.length = m;\n if (m === 0) {\n return;\n }\n if (n === 0) {\n points.length = 8;\n points[0] = points[6] = x + dx;\n points[1] = points[3] = y + dy;\n points[2] = points[4] = x - dx;\n points[5] = points[7] = y - dy;\n return;\n }\n let j1 = 0;\n let j2 = n * 4 + (dx ? 2 : 0) + 2;\n let j3 = j2;\n let j4 = m;\n {\n const x0 = dx + rx;\n const y0 = dy;\n const x1 = x + x0;\n const x2 = x - x0;\n const y1 = y + y0;\n points[j1++] = x1;\n points[j1++] = y1;\n points[--j2] = y1;\n points[--j2] = x2;\n if (dy) {\n const y2 = y - y0;\n points[j3++] = x2;\n points[j3++] = y2;\n points[--j4] = y2;\n points[--j4] = x1;\n }\n }\n for (let i = 1; i < n; i++) {\n const a = Math.PI / 2 * (i / n);\n const x0 = dx + Math.cos(a) * rx;\n const y0 = dy + Math.sin(a) * ry;\n const x1 = x + x0;\n const x2 = x - x0;\n const y1 = y + y0;\n const y2 = y - y0;\n points[j1++] = x1;\n points[j1++] = y1;\n points[--j2] = y1;\n points[--j2] = x2;\n points[j3++] = x2;\n points[j3++] = y2;\n points[--j4] = y2;\n points[--j4] = x1;\n }\n {\n const x0 = dx;\n const y0 = dy + ry;\n const x1 = x + x0;\n const x2 = x - x0;\n const y1 = y + y0;\n const y2 = y - y0;\n points[j1++] = x1;\n points[j1++] = y1;\n points[--j4] = y2;\n points[--j4] = x1;\n if (dx) {\n points[j1++] = x2;\n points[j1++] = y1;\n points[--j4] = y2;\n points[--j4] = x2;\n }\n }\n },\n triangulate(graphicsData, graphicsGeometry) {\n const points = graphicsData.points;\n const verts = graphicsGeometry.points;\n const indices = graphicsGeometry.indices;\n if (points.length === 0) {\n return;\n }\n let vertPos = verts.length / 2;\n const center = vertPos;\n let x;\n let y;\n if (graphicsData.type !== SHAPES.RREC) {\n const circle = graphicsData.shape;\n x = circle.x;\n y = circle.y;\n } else {\n const roundedRect = graphicsData.shape;\n x = roundedRect.x + roundedRect.width / 2;\n y = roundedRect.y + roundedRect.height / 2;\n }\n const matrix = graphicsData.matrix;\n verts.push(graphicsData.matrix ? matrix.a * x + matrix.c * y + matrix.tx : x, graphicsData.matrix ? matrix.b * x + matrix.d * y + matrix.ty : y);\n vertPos++;\n verts.push(points[0], points[1]);\n for (let i = 2; i < points.length; i += 2) {\n verts.push(points[i], points[i + 1]);\n indices.push(vertPos++, center, vertPos);\n }\n indices.push(center + 1, center, vertPos);\n }\n};\n\nexport { buildCircle };\n//# sourceMappingURL=buildCircle.mjs.map\n","const buildRectangle = {\n build(graphicsData) {\n const rectData = graphicsData.shape;\n const x = rectData.x;\n const y = rectData.y;\n const width = rectData.width;\n const height = rectData.height;\n const points = graphicsData.points;\n points.length = 0;\n if (!(width >= 0 && height >= 0)) {\n return;\n }\n points.push(x, y, x + width, y, x + width, y + height, x, y + height);\n },\n triangulate(graphicsData, graphicsGeometry) {\n const points = graphicsData.points;\n const verts = graphicsGeometry.points;\n if (points.length === 0) {\n return;\n }\n const vertPos = verts.length / 2;\n verts.push(points[0], points[1], points[2], points[3], points[6], points[7], points[4], points[5]);\n graphicsGeometry.indices.push(vertPos, vertPos + 1, vertPos + 2, vertPos + 1, vertPos + 2, vertPos + 3);\n }\n};\n\nexport { buildRectangle };\n//# sourceMappingURL=buildRectangle.mjs.map\n","import { buildCircle } from './buildCircle.mjs';\n\nconst buildRoundedRectangle = {\n build(graphicsData) {\n buildCircle.build(graphicsData);\n },\n triangulate(graphicsData, graphicsGeometry) {\n buildCircle.triangulate(graphicsData, graphicsGeometry);\n }\n};\n\nexport { buildRoundedRectangle };\n//# sourceMappingURL=buildRoundedRectangle.mjs.map\n","import { Point, SHAPES } from '@pixi/core';\nimport { LINE_CAP, LINE_JOIN, GRAPHICS_CURVES } from '../const.mjs';\n\nfunction square(x, y, nx, ny, innerWeight, outerWeight, clockwise, verts) {\n const ix = x - nx * innerWeight;\n const iy = y - ny * innerWeight;\n const ox = x + nx * outerWeight;\n const oy = y + ny * outerWeight;\n let exx;\n let eyy;\n if (clockwise) {\n exx = ny;\n eyy = -nx;\n } else {\n exx = -ny;\n eyy = nx;\n }\n const eix = ix + exx;\n const eiy = iy + eyy;\n const eox = ox + exx;\n const eoy = oy + eyy;\n verts.push(eix, eiy);\n verts.push(eox, eoy);\n return 2;\n}\nfunction round(cx, cy, sx, sy, ex, ey, verts, clockwise) {\n const cx2p0x = sx - cx;\n const cy2p0y = sy - cy;\n let angle0 = Math.atan2(cx2p0x, cy2p0y);\n let angle1 = Math.atan2(ex - cx, ey - cy);\n if (clockwise && angle0 < angle1) {\n angle0 += Math.PI * 2;\n } else if (!clockwise && angle0 > angle1) {\n angle1 += Math.PI * 2;\n }\n let startAngle = angle0;\n const angleDiff = angle1 - angle0;\n const absAngleDiff = Math.abs(angleDiff);\n const radius = Math.sqrt(cx2p0x * cx2p0x + cy2p0y * cy2p0y);\n const segCount = (15 * absAngleDiff * Math.sqrt(radius) / Math.PI >> 0) + 1;\n const angleInc = angleDiff / segCount;\n startAngle += angleInc;\n if (clockwise) {\n verts.push(cx, cy);\n verts.push(sx, sy);\n for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) {\n verts.push(cx, cy);\n verts.push(cx + Math.sin(angle) * radius, cy + Math.cos(angle) * radius);\n }\n verts.push(cx, cy);\n verts.push(ex, ey);\n } else {\n verts.push(sx, sy);\n verts.push(cx, cy);\n for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) {\n verts.push(cx + Math.sin(angle) * radius, cy + Math.cos(angle) * radius);\n verts.push(cx, cy);\n }\n verts.push(ex, ey);\n verts.push(cx, cy);\n }\n return segCount * 2;\n}\nfunction buildNonNativeLine(graphicsData, graphicsGeometry) {\n const shape = graphicsData.shape;\n let points = graphicsData.points || shape.points.slice();\n const eps = graphicsGeometry.closePointEps;\n if (points.length === 0) {\n return;\n }\n const style = graphicsData.lineStyle;\n const firstPoint = new Point(points[0], points[1]);\n const lastPoint = new Point(points[points.length - 2], points[points.length - 1]);\n const closedShape = shape.type !== SHAPES.POLY || shape.closeStroke;\n const closedPath = Math.abs(firstPoint.x - lastPoint.x) < eps && Math.abs(firstPoint.y - lastPoint.y) < eps;\n if (closedShape) {\n points = points.slice();\n if (closedPath) {\n points.pop();\n points.pop();\n lastPoint.set(points[points.length - 2], points[points.length - 1]);\n }\n const midPointX = (firstPoint.x + lastPoint.x) * 0.5;\n const midPointY = (lastPoint.y + firstPoint.y) * 0.5;\n points.unshift(midPointX, midPointY);\n points.push(midPointX, midPointY);\n }\n const verts = graphicsGeometry.points;\n const length = points.length / 2;\n let indexCount = points.length;\n const indexStart = verts.length / 2;\n const width = style.width / 2;\n const widthSquared = width * width;\n const miterLimitSquared = style.miterLimit * style.miterLimit;\n let x0 = points[0];\n let y0 = points[1];\n let x1 = points[2];\n let y1 = points[3];\n let x2 = 0;\n let y2 = 0;\n let perpx = -(y0 - y1);\n let perpy = x0 - x1;\n let perp1x = 0;\n let perp1y = 0;\n let dist = Math.sqrt(perpx * perpx + perpy * perpy);\n perpx /= dist;\n perpy /= dist;\n perpx *= width;\n perpy *= width;\n const ratio = style.alignment;\n const innerWeight = (1 - ratio) * 2;\n const outerWeight = ratio * 2;\n if (!closedShape) {\n if (style.cap === LINE_CAP.ROUND) {\n indexCount += round(x0 - perpx * (innerWeight - outerWeight) * 0.5, y0 - perpy * (innerWeight - outerWeight) * 0.5, x0 - perpx * innerWeight, y0 - perpy * innerWeight, x0 + perpx * outerWeight, y0 + perpy * outerWeight, verts, true) + 2;\n } else if (style.cap === LINE_CAP.SQUARE) {\n indexCount += square(x0, y0, perpx, perpy, innerWeight, outerWeight, true, verts);\n }\n }\n verts.push(x0 - perpx * innerWeight, y0 - perpy * innerWeight);\n verts.push(x0 + perpx * outerWeight, y0 + perpy * outerWeight);\n for (let i = 1; i < length - 1; ++i) {\n x0 = points[(i - 1) * 2];\n y0 = points[(i - 1) * 2 + 1];\n x1 = points[i * 2];\n y1 = points[i * 2 + 1];\n x2 = points[(i + 1) * 2];\n y2 = points[(i + 1) * 2 + 1];\n perpx = -(y0 - y1);\n perpy = x0 - x1;\n dist = Math.sqrt(perpx * perpx + perpy * perpy);\n perpx /= dist;\n perpy /= dist;\n perpx *= width;\n perpy *= width;\n perp1x = -(y1 - y2);\n perp1y = x1 - x2;\n dist = Math.sqrt(perp1x * perp1x + perp1y * perp1y);\n perp1x /= dist;\n perp1y /= dist;\n perp1x *= width;\n perp1y *= width;\n const dx0 = x1 - x0;\n const dy0 = y0 - y1;\n const dx1 = x1 - x2;\n const dy1 = y2 - y1;\n const dot = dx0 * dx1 + dy0 * dy1;\n const cross = dy0 * dx1 - dy1 * dx0;\n const clockwise = cross < 0;\n if (Math.abs(cross) < 1e-3 * Math.abs(dot)) {\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight);\n verts.push(x1 + perpx * outerWeight, y1 + perpy * outerWeight);\n if (dot >= 0) {\n if (style.join === LINE_JOIN.ROUND) {\n indexCount += round(x1, y1, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, verts, false) + 4;\n } else {\n indexCount += 2;\n }\n verts.push(x1 - perp1x * outerWeight, y1 - perp1y * outerWeight);\n verts.push(x1 + perp1x * innerWeight, y1 + perp1y * innerWeight);\n }\n continue;\n }\n const c1 = (-perpx + x0) * (-perpy + y1) - (-perpx + x1) * (-perpy + y0);\n const c2 = (-perp1x + x2) * (-perp1y + y1) - (-perp1x + x1) * (-perp1y + y2);\n const px = (dx0 * c2 - dx1 * c1) / cross;\n const py = (dy1 * c1 - dy0 * c2) / cross;\n const pdist = (px - x1) * (px - x1) + (py - y1) * (py - y1);\n const imx = x1 + (px - x1) * innerWeight;\n const imy = y1 + (py - y1) * innerWeight;\n const omx = x1 - (px - x1) * outerWeight;\n const omy = y1 - (py - y1) * outerWeight;\n const smallerInsideSegmentSq = Math.min(dx0 * dx0 + dy0 * dy0, dx1 * dx1 + dy1 * dy1);\n const insideWeight = clockwise ? innerWeight : outerWeight;\n const smallerInsideDiagonalSq = smallerInsideSegmentSq + insideWeight * insideWeight * widthSquared;\n const insideMiterOk = pdist <= smallerInsideDiagonalSq;\n if (insideMiterOk) {\n if (style.join === LINE_JOIN.BEVEL || pdist / widthSquared > miterLimitSquared) {\n if (clockwise) {\n verts.push(imx, imy);\n verts.push(x1 + perpx * outerWeight, y1 + perpy * outerWeight);\n verts.push(imx, imy);\n verts.push(x1 + perp1x * outerWeight, y1 + perp1y * outerWeight);\n } else {\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight);\n verts.push(omx, omy);\n verts.push(x1 - perp1x * innerWeight, y1 - perp1y * innerWeight);\n verts.push(omx, omy);\n }\n indexCount += 2;\n } else if (style.join === LINE_JOIN.ROUND) {\n if (clockwise) {\n verts.push(imx, imy);\n verts.push(x1 + perpx * outerWeight, y1 + perpy * outerWeight);\n indexCount += round(x1, y1, x1 + perpx * outerWeight, y1 + perpy * outerWeight, x1 + perp1x * outerWeight, y1 + perp1y * outerWeight, verts, true) + 4;\n verts.push(imx, imy);\n verts.push(x1 + perp1x * outerWeight, y1 + perp1y * outerWeight);\n } else {\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight);\n verts.push(omx, omy);\n indexCount += round(x1, y1, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, verts, false) + 4;\n verts.push(x1 - perp1x * innerWeight, y1 - perp1y * innerWeight);\n verts.push(omx, omy);\n }\n } else {\n verts.push(imx, imy);\n verts.push(omx, omy);\n }\n } else {\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight);\n verts.push(x1 + perpx * outerWeight, y1 + perpy * outerWeight);\n if (style.join === LINE_JOIN.ROUND) {\n if (clockwise) {\n indexCount += round(x1, y1, x1 + perpx * outerWeight, y1 + perpy * outerWeight, x1 + perp1x * outerWeight, y1 + perp1y * outerWeight, verts, true) + 2;\n } else {\n indexCount += round(x1, y1, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, verts, false) + 2;\n }\n } else if (style.join === LINE_JOIN.MITER && pdist / widthSquared <= miterLimitSquared) {\n if (clockwise) {\n verts.push(omx, omy);\n verts.push(omx, omy);\n } else {\n verts.push(imx, imy);\n verts.push(imx, imy);\n }\n indexCount += 2;\n }\n verts.push(x1 - perp1x * innerWeight, y1 - perp1y * innerWeight);\n verts.push(x1 + perp1x * outerWeight, y1 + perp1y * outerWeight);\n indexCount += 2;\n }\n }\n x0 = points[(length - 2) * 2];\n y0 = points[(length - 2) * 2 + 1];\n x1 = points[(length - 1) * 2];\n y1 = points[(length - 1) * 2 + 1];\n perpx = -(y0 - y1);\n perpy = x0 - x1;\n dist = Math.sqrt(perpx * perpx + perpy * perpy);\n perpx /= dist;\n perpy /= dist;\n perpx *= width;\n perpy *= width;\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight);\n verts.push(x1 + perpx * outerWeight, y1 + perpy * outerWeight);\n if (!closedShape) {\n if (style.cap === LINE_CAP.ROUND) {\n indexCount += round(x1 - perpx * (innerWeight - outerWeight) * 0.5, y1 - perpy * (innerWeight - outerWeight) * 0.5, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 + perpx * outerWeight, y1 + perpy * outerWeight, verts, false) + 2;\n } else if (style.cap === LINE_CAP.SQUARE) {\n indexCount += square(x1, y1, perpx, perpy, innerWeight, outerWeight, false, verts);\n }\n }\n const indices = graphicsGeometry.indices;\n const eps2 = GRAPHICS_CURVES.epsilon * GRAPHICS_CURVES.epsilon;\n for (let i = indexStart; i < indexCount + indexStart - 2; ++i) {\n x0 = verts[i * 2];\n y0 = verts[i * 2 + 1];\n x1 = verts[(i + 1) * 2];\n y1 = verts[(i + 1) * 2 + 1];\n x2 = verts[(i + 2) * 2];\n y2 = verts[(i + 2) * 2 + 1];\n if (Math.abs(x0 * (y1 - y2) + x1 * (y2 - y0) + x2 * (y0 - y1)) < eps2) {\n continue;\n }\n indices.push(i, i + 1, i + 2);\n }\n}\nfunction buildNativeLine(graphicsData, graphicsGeometry) {\n let i = 0;\n const shape = graphicsData.shape;\n const points = graphicsData.points || shape.points;\n const closedShape = shape.type !== SHAPES.POLY || shape.closeStroke;\n if (points.length === 0)\n return;\n const verts = graphicsGeometry.points;\n const indices = graphicsGeometry.indices;\n const length = points.length / 2;\n const startIndex = verts.length / 2;\n let currentIndex = startIndex;\n verts.push(points[0], points[1]);\n for (i = 1; i < length; i++) {\n verts.push(points[i * 2], points[i * 2 + 1]);\n indices.push(currentIndex, currentIndex + 1);\n currentIndex++;\n }\n if (closedShape) {\n indices.push(currentIndex, startIndex);\n }\n}\nfunction buildLine(graphicsData, graphicsGeometry) {\n if (graphicsData.lineStyle.native) {\n buildNativeLine(graphicsData, graphicsGeometry);\n } else {\n buildNonNativeLine(graphicsData, graphicsGeometry);\n }\n}\n\nexport { buildLine };\n//# sourceMappingURL=buildLine.mjs.map\n","import { GRAPHICS_CURVES } from '../const.mjs';\nimport { PI_2 } from '@pixi/core';\n\nclass ArcUtils {\n static curveTo(x1, y1, x2, y2, radius, points) {\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n const a1 = fromY - y1;\n const b1 = fromX - x1;\n const a2 = y2 - y1;\n const b2 = x2 - x1;\n const mm = Math.abs(a1 * b2 - b1 * a2);\n if (mm < 1e-8 || radius === 0) {\n if (points[points.length - 2] !== x1 || points[points.length - 1] !== y1) {\n points.push(x1, y1);\n }\n return null;\n }\n const dd = a1 * a1 + b1 * b1;\n const cc = a2 * a2 + b2 * b2;\n const tt = a1 * a2 + b1 * b2;\n const k1 = radius * Math.sqrt(dd) / mm;\n const k2 = radius * Math.sqrt(cc) / mm;\n const j1 = k1 * tt / dd;\n const j2 = k2 * tt / cc;\n const cx = k1 * b2 + k2 * b1;\n const cy = k1 * a2 + k2 * a1;\n const px = b1 * (k2 + j1);\n const py = a1 * (k2 + j1);\n const qx = b2 * (k1 + j2);\n const qy = a2 * (k1 + j2);\n const startAngle = Math.atan2(py - cy, px - cx);\n const endAngle = Math.atan2(qy - cy, qx - cx);\n return {\n cx: cx + x1,\n cy: cy + y1,\n radius,\n startAngle,\n endAngle,\n anticlockwise: b1 * a2 > b2 * a1\n };\n }\n static arc(_startX, _startY, cx, cy, radius, startAngle, endAngle, _anticlockwise, points) {\n const sweep = endAngle - startAngle;\n const n = GRAPHICS_CURVES._segmentsCount(Math.abs(sweep) * radius, Math.ceil(Math.abs(sweep) / PI_2) * 40);\n const theta = sweep / (n * 2);\n const theta2 = theta * 2;\n const cTheta = Math.cos(theta);\n const sTheta = Math.sin(theta);\n const segMinus = n - 1;\n const remainder = segMinus % 1 / segMinus;\n for (let i = 0; i <= segMinus; ++i) {\n const real = i + remainder * i;\n const angle = theta + startAngle + theta2 * real;\n const c = Math.cos(angle);\n const s = -Math.sin(angle);\n points.push((cTheta * c + sTheta * s) * radius + cx, (cTheta * -s + sTheta * c) * radius + cy);\n }\n }\n}\n\nexport { ArcUtils };\n//# sourceMappingURL=ArcUtils.mjs.map\n","import { GRAPHICS_CURVES } from '../const.mjs';\n\nclass BezierUtils {\n static curveLength(fromX, fromY, cpX, cpY, cpX2, cpY2, toX, toY) {\n const n = 10;\n let result = 0;\n let t = 0;\n let t2 = 0;\n let t3 = 0;\n let nt = 0;\n let nt2 = 0;\n let nt3 = 0;\n let x = 0;\n let y = 0;\n let dx = 0;\n let dy = 0;\n let prevX = fromX;\n let prevY = fromY;\n for (let i = 1; i <= n; ++i) {\n t = i / n;\n t2 = t * t;\n t3 = t2 * t;\n nt = 1 - t;\n nt2 = nt * nt;\n nt3 = nt2 * nt;\n x = nt3 * fromX + 3 * nt2 * t * cpX + 3 * nt * t2 * cpX2 + t3 * toX;\n y = nt3 * fromY + 3 * nt2 * t * cpY + 3 * nt * t2 * cpY2 + t3 * toY;\n dx = prevX - x;\n dy = prevY - y;\n prevX = x;\n prevY = y;\n result += Math.sqrt(dx * dx + dy * dy);\n }\n return result;\n }\n static curveTo(cpX, cpY, cpX2, cpY2, toX, toY, points) {\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n points.length -= 2;\n const n = GRAPHICS_CURVES._segmentsCount(BezierUtils.curveLength(fromX, fromY, cpX, cpY, cpX2, cpY2, toX, toY));\n let dt = 0;\n let dt2 = 0;\n let dt3 = 0;\n let t2 = 0;\n let t3 = 0;\n points.push(fromX, fromY);\n for (let i = 1, j = 0; i <= n; ++i) {\n j = i / n;\n dt = 1 - j;\n dt2 = dt * dt;\n dt3 = dt2 * dt;\n t2 = j * j;\n t3 = t2 * j;\n points.push(dt3 * fromX + 3 * dt2 * j * cpX + 3 * dt * t2 * cpX2 + t3 * toX, dt3 * fromY + 3 * dt2 * j * cpY + 3 * dt * t2 * cpY2 + t3 * toY);\n }\n }\n}\n\nexport { BezierUtils };\n//# sourceMappingURL=BezierUtils.mjs.map\n","import { GRAPHICS_CURVES } from '../const.mjs';\n\nclass QuadraticUtils {\n static curveLength(fromX, fromY, cpX, cpY, toX, toY) {\n const ax = fromX - 2 * cpX + toX;\n const ay = fromY - 2 * cpY + toY;\n const bx = 2 * cpX - 2 * fromX;\n const by = 2 * cpY - 2 * fromY;\n const a = 4 * (ax * ax + ay * ay);\n const b = 4 * (ax * bx + ay * by);\n const c = bx * bx + by * by;\n const s = 2 * Math.sqrt(a + b + c);\n const a2 = Math.sqrt(a);\n const a32 = 2 * a * a2;\n const c2 = 2 * Math.sqrt(c);\n const ba = b / a2;\n return (a32 * s + a2 * b * (s - c2) + (4 * c * a - b * b) * Math.log((2 * a2 + ba + s) / (ba + c2))) / (4 * a32);\n }\n static curveTo(cpX, cpY, toX, toY, points) {\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n const n = GRAPHICS_CURVES._segmentsCount(QuadraticUtils.curveLength(fromX, fromY, cpX, cpY, toX, toY));\n let xa = 0;\n let ya = 0;\n for (let i = 1; i <= n; ++i) {\n const j = i / n;\n xa = fromX + (cpX - fromX) * j;\n ya = fromY + (cpY - fromY) * j;\n points.push(xa + (cpX + (toX - cpX) * j - xa) * j, ya + (cpY + (toY - cpY) * j - ya) * j);\n }\n }\n}\n\nexport { QuadraticUtils };\n//# sourceMappingURL=QuadraticUtils.mjs.map\n","class BatchPart {\n constructor() {\n this.reset();\n }\n begin(style, startIndex, attribStart) {\n this.reset();\n this.style = style;\n this.start = startIndex;\n this.attribStart = attribStart;\n }\n end(endIndex, endAttrib) {\n this.attribSize = endAttrib - this.attribStart;\n this.size = endIndex - this.start;\n }\n reset() {\n this.style = null;\n this.size = 0;\n this.start = 0;\n this.attribStart = 0;\n this.attribSize = 0;\n }\n}\n\nexport { BatchPart };\n//# sourceMappingURL=BatchPart.mjs.map\n","import { buildPoly } from './buildPoly.mjs';\nexport { buildPoly } from './buildPoly.mjs';\nimport { buildCircle } from './buildCircle.mjs';\nexport { buildCircle } from './buildCircle.mjs';\nimport { buildRectangle } from './buildRectangle.mjs';\nexport { buildRectangle } from './buildRectangle.mjs';\nimport { buildRoundedRectangle } from './buildRoundedRectangle.mjs';\nexport { buildRoundedRectangle } from './buildRoundedRectangle.mjs';\nexport { buildLine } from './buildLine.mjs';\nexport { ArcUtils } from './ArcUtils.mjs';\nexport { BezierUtils } from './BezierUtils.mjs';\nexport { QuadraticUtils } from './QuadraticUtils.mjs';\nexport { BatchPart } from './BatchPart.mjs';\nimport { SHAPES } from '@pixi/core';\n\nconst FILL_COMMANDS = {\n [SHAPES.POLY]: buildPoly,\n [SHAPES.CIRC]: buildCircle,\n [SHAPES.ELIP]: buildCircle,\n [SHAPES.RECT]: buildRectangle,\n [SHAPES.RREC]: buildRoundedRectangle\n};\nconst BATCH_POOL = [];\nconst DRAW_CALL_POOL = [];\n\nexport { BATCH_POOL, DRAW_CALL_POOL, FILL_COMMANDS };\n//# sourceMappingURL=index.mjs.map\n","class GraphicsData {\n constructor(shape, fillStyle = null, lineStyle = null, matrix = null) {\n this.points = [];\n this.holes = [];\n this.shape = shape;\n this.lineStyle = lineStyle;\n this.fillStyle = fillStyle;\n this.matrix = matrix;\n this.type = shape.type;\n }\n clone() {\n return new GraphicsData(this.shape, this.fillStyle, this.lineStyle, this.matrix);\n }\n destroy() {\n this.shape = null;\n this.holes.length = 0;\n this.holes = null;\n this.points.length = 0;\n this.points = null;\n this.lineStyle = null;\n this.fillStyle = null;\n }\n}\n\nexport { GraphicsData };\n//# sourceMappingURL=GraphicsData.mjs.map\n","import { DRAW_CALL_POOL, BATCH_POOL, FILL_COMMANDS } from './utils/index.mjs';\nimport { Point, BatchGeometry, WRAP_MODES, BaseTexture, BatchDrawCall, BatchTextureArray, DRAW_MODES, utils } from '@pixi/core';\nimport { GraphicsData } from './GraphicsData.mjs';\nimport { Bounds } from '@pixi/display';\nimport { BatchPart } from './utils/BatchPart.mjs';\nimport { buildPoly } from './utils/buildPoly.mjs';\nimport { buildLine } from './utils/buildLine.mjs';\n\nconst tmpPoint = new Point();\nconst _GraphicsGeometry = class extends BatchGeometry {\n constructor() {\n super();\n this.closePointEps = 1e-4;\n this.boundsPadding = 0;\n this.uvsFloat32 = null;\n this.indicesUint16 = null;\n this.batchable = false;\n this.points = [];\n this.colors = [];\n this.uvs = [];\n this.indices = [];\n this.textureIds = [];\n this.graphicsData = [];\n this.drawCalls = [];\n this.batchDirty = -1;\n this.batches = [];\n this.dirty = 0;\n this.cacheDirty = -1;\n this.clearDirty = 0;\n this.shapeIndex = 0;\n this._bounds = new Bounds();\n this.boundsDirty = -1;\n }\n get bounds() {\n this.updateBatches();\n if (this.boundsDirty !== this.dirty) {\n this.boundsDirty = this.dirty;\n this.calculateBounds();\n }\n return this._bounds;\n }\n invalidate() {\n this.boundsDirty = -1;\n this.dirty++;\n this.batchDirty++;\n this.shapeIndex = 0;\n this.points.length = 0;\n this.colors.length = 0;\n this.uvs.length = 0;\n this.indices.length = 0;\n this.textureIds.length = 0;\n for (let i = 0; i < this.drawCalls.length; i++) {\n this.drawCalls[i].texArray.clear();\n DRAW_CALL_POOL.push(this.drawCalls[i]);\n }\n this.drawCalls.length = 0;\n for (let i = 0; i < this.batches.length; i++) {\n const batchPart = this.batches[i];\n batchPart.reset();\n BATCH_POOL.push(batchPart);\n }\n this.batches.length = 0;\n }\n clear() {\n if (this.graphicsData.length > 0) {\n this.invalidate();\n this.clearDirty++;\n this.graphicsData.length = 0;\n }\n return this;\n }\n drawShape(shape, fillStyle = null, lineStyle = null, matrix = null) {\n const data = new GraphicsData(shape, fillStyle, lineStyle, matrix);\n this.graphicsData.push(data);\n this.dirty++;\n return this;\n }\n drawHole(shape, matrix = null) {\n if (!this.graphicsData.length) {\n return null;\n }\n const data = new GraphicsData(shape, null, null, matrix);\n const lastShape = this.graphicsData[this.graphicsData.length - 1];\n data.lineStyle = lastShape.lineStyle;\n lastShape.holes.push(data);\n this.dirty++;\n return this;\n }\n destroy() {\n super.destroy();\n for (let i = 0; i < this.graphicsData.length; ++i) {\n this.graphicsData[i].destroy();\n }\n this.points.length = 0;\n this.points = null;\n this.colors.length = 0;\n this.colors = null;\n this.uvs.length = 0;\n this.uvs = null;\n this.indices.length = 0;\n this.indices = null;\n this.indexBuffer.destroy();\n this.indexBuffer = null;\n this.graphicsData.length = 0;\n this.graphicsData = null;\n this.drawCalls.length = 0;\n this.drawCalls = null;\n this.batches.length = 0;\n this.batches = null;\n this._bounds = null;\n }\n containsPoint(point) {\n const graphicsData = this.graphicsData;\n for (let i = 0; i < graphicsData.length; ++i) {\n const data = graphicsData[i];\n if (!data.fillStyle.visible) {\n continue;\n }\n if (data.shape) {\n if (data.matrix) {\n data.matrix.applyInverse(point, tmpPoint);\n } else {\n tmpPoint.copyFrom(point);\n }\n if (data.shape.contains(tmpPoint.x, tmpPoint.y)) {\n let hitHole = false;\n if (data.holes) {\n for (let i2 = 0; i2 < data.holes.length; i2++) {\n const hole = data.holes[i2];\n if (hole.shape.contains(tmpPoint.x, tmpPoint.y)) {\n hitHole = true;\n break;\n }\n }\n }\n if (!hitHole) {\n return true;\n }\n }\n }\n }\n return false;\n }\n updateBatches() {\n if (!this.graphicsData.length) {\n this.batchable = true;\n return;\n }\n if (!this.validateBatching()) {\n return;\n }\n this.cacheDirty = this.dirty;\n const uvs = this.uvs;\n const graphicsData = this.graphicsData;\n let batchPart = null;\n let currentStyle = null;\n if (this.batches.length > 0) {\n batchPart = this.batches[this.batches.length - 1];\n currentStyle = batchPart.style;\n }\n for (let i = this.shapeIndex; i < graphicsData.length; i++) {\n this.shapeIndex++;\n const data = graphicsData[i];\n const fillStyle = data.fillStyle;\n const lineStyle = data.lineStyle;\n const command = FILL_COMMANDS[data.type];\n command.build(data);\n if (data.matrix) {\n this.transformPoints(data.points, data.matrix);\n }\n if (fillStyle.visible || lineStyle.visible) {\n this.processHoles(data.holes);\n }\n for (let j = 0; j < 2; j++) {\n const style = j === 0 ? fillStyle : lineStyle;\n if (!style.visible)\n continue;\n const nextTexture = style.texture.baseTexture;\n const index2 = this.indices.length;\n const attribIndex = this.points.length / 2;\n nextTexture.wrapMode = WRAP_MODES.REPEAT;\n if (j === 0) {\n this.processFill(data);\n } else {\n this.processLine(data);\n }\n const size = this.points.length / 2 - attribIndex;\n if (size === 0)\n continue;\n if (batchPart && !this._compareStyles(currentStyle, style)) {\n batchPart.end(index2, attribIndex);\n batchPart = null;\n }\n if (!batchPart) {\n batchPart = BATCH_POOL.pop() || new BatchPart();\n batchPart.begin(style, index2, attribIndex);\n this.batches.push(batchPart);\n currentStyle = style;\n }\n this.addUvs(this.points, uvs, style.texture, attribIndex, size, style.matrix);\n }\n }\n const index = this.indices.length;\n const attrib = this.points.length / 2;\n if (batchPart) {\n batchPart.end(index, attrib);\n }\n if (this.batches.length === 0) {\n this.batchable = true;\n return;\n }\n const need32 = attrib > 65535;\n if (this.indicesUint16 && this.indices.length === this.indicesUint16.length && need32 === this.indicesUint16.BYTES_PER_ELEMENT > 2) {\n this.indicesUint16.set(this.indices);\n } else {\n this.indicesUint16 = need32 ? new Uint32Array(this.indices) : new Uint16Array(this.indices);\n }\n this.batchable = this.isBatchable();\n if (this.batchable) {\n this.packBatches();\n } else {\n this.buildDrawCalls();\n }\n }\n _compareStyles(styleA, styleB) {\n if (!styleA || !styleB) {\n return false;\n }\n if (styleA.texture.baseTexture !== styleB.texture.baseTexture) {\n return false;\n }\n if (styleA.color + styleA.alpha !== styleB.color + styleB.alpha) {\n return false;\n }\n if (!!styleA.native !== !!styleB.native) {\n return false;\n }\n return true;\n }\n validateBatching() {\n if (this.dirty === this.cacheDirty || !this.graphicsData.length) {\n return false;\n }\n for (let i = 0, l = this.graphicsData.length; i < l; i++) {\n const data = this.graphicsData[i];\n const fill = data.fillStyle;\n const line = data.lineStyle;\n if (fill && !fill.texture.baseTexture.valid)\n return false;\n if (line && !line.texture.baseTexture.valid)\n return false;\n }\n return true;\n }\n packBatches() {\n this.batchDirty++;\n this.uvsFloat32 = new Float32Array(this.uvs);\n const batches = this.batches;\n for (let i = 0, l = batches.length; i < l; i++) {\n const batch = batches[i];\n for (let j = 0; j < batch.size; j++) {\n const index = batch.start + j;\n this.indicesUint16[index] = this.indicesUint16[index] - batch.attribStart;\n }\n }\n }\n isBatchable() {\n if (this.points.length > 65535 * 2) {\n return false;\n }\n const batches = this.batches;\n for (let i = 0; i < batches.length; i++) {\n if (batches[i].style.native) {\n return false;\n }\n }\n return this.points.length < _GraphicsGeometry.BATCHABLE_SIZE * 2;\n }\n buildDrawCalls() {\n let TICK = ++BaseTexture._globalBatch;\n for (let i = 0; i < this.drawCalls.length; i++) {\n this.drawCalls[i].texArray.clear();\n DRAW_CALL_POOL.push(this.drawCalls[i]);\n }\n this.drawCalls.length = 0;\n const colors = this.colors;\n const textureIds = this.textureIds;\n let currentGroup = DRAW_CALL_POOL.pop();\n if (!currentGroup) {\n currentGroup = new BatchDrawCall();\n currentGroup.texArray = new BatchTextureArray();\n }\n currentGroup.texArray.count = 0;\n currentGroup.start = 0;\n currentGroup.size = 0;\n currentGroup.type = DRAW_MODES.TRIANGLES;\n let textureCount = 0;\n let currentTexture = null;\n let textureId = 0;\n let native = false;\n let drawMode = DRAW_MODES.TRIANGLES;\n let index = 0;\n this.drawCalls.push(currentGroup);\n for (let i = 0; i < this.batches.length; i++) {\n const data = this.batches[i];\n const MAX_TEXTURES = 8;\n const style = data.style;\n const nextTexture = style.texture.baseTexture;\n if (native !== !!style.native) {\n native = !!style.native;\n drawMode = native ? DRAW_MODES.LINES : DRAW_MODES.TRIANGLES;\n currentTexture = null;\n textureCount = MAX_TEXTURES;\n TICK++;\n }\n if (currentTexture !== nextTexture) {\n currentTexture = nextTexture;\n if (nextTexture._batchEnabled !== TICK) {\n if (textureCount === MAX_TEXTURES) {\n TICK++;\n textureCount = 0;\n if (currentGroup.size > 0) {\n currentGroup = DRAW_CALL_POOL.pop();\n if (!currentGroup) {\n currentGroup = new BatchDrawCall();\n currentGroup.texArray = new BatchTextureArray();\n }\n this.drawCalls.push(currentGroup);\n }\n currentGroup.start = index;\n currentGroup.size = 0;\n currentGroup.texArray.count = 0;\n currentGroup.type = drawMode;\n }\n nextTexture.touched = 1;\n nextTexture._batchEnabled = TICK;\n nextTexture._batchLocation = textureCount;\n nextTexture.wrapMode = WRAP_MODES.REPEAT;\n currentGroup.texArray.elements[currentGroup.texArray.count++] = nextTexture;\n textureCount++;\n }\n }\n currentGroup.size += data.size;\n index += data.size;\n textureId = nextTexture._batchLocation;\n this.addColors(colors, style.color, style.alpha, data.attribSize, data.attribStart);\n this.addTextureIds(textureIds, textureId, data.attribSize, data.attribStart);\n }\n BaseTexture._globalBatch = TICK;\n this.packAttributes();\n }\n packAttributes() {\n const verts = this.points;\n const uvs = this.uvs;\n const colors = this.colors;\n const textureIds = this.textureIds;\n const glPoints = new ArrayBuffer(verts.length * 3 * 4);\n const f32 = new Float32Array(glPoints);\n const u32 = new Uint32Array(glPoints);\n let p = 0;\n for (let i = 0; i < verts.length / 2; i++) {\n f32[p++] = verts[i * 2];\n f32[p++] = verts[i * 2 + 1];\n f32[p++] = uvs[i * 2];\n f32[p++] = uvs[i * 2 + 1];\n u32[p++] = colors[i];\n f32[p++] = textureIds[i];\n }\n this._buffer.update(glPoints);\n this._indexBuffer.update(this.indicesUint16);\n }\n processFill(data) {\n if (data.holes.length) {\n buildPoly.triangulate(data, this);\n } else {\n const command = FILL_COMMANDS[data.type];\n command.triangulate(data, this);\n }\n }\n processLine(data) {\n buildLine(data, this);\n for (let i = 0; i < data.holes.length; i++) {\n buildLine(data.holes[i], this);\n }\n }\n processHoles(holes) {\n for (let i = 0; i < holes.length; i++) {\n const hole = holes[i];\n const command = FILL_COMMANDS[hole.type];\n command.build(hole);\n if (hole.matrix) {\n this.transformPoints(hole.points, hole.matrix);\n }\n }\n }\n calculateBounds() {\n const bounds = this._bounds;\n bounds.clear();\n bounds.addVertexData(this.points, 0, this.points.length);\n bounds.pad(this.boundsPadding, this.boundsPadding);\n }\n transformPoints(points, matrix) {\n for (let i = 0; i < points.length / 2; i++) {\n const x = points[i * 2];\n const y = points[i * 2 + 1];\n points[i * 2] = matrix.a * x + matrix.c * y + matrix.tx;\n points[i * 2 + 1] = matrix.b * x + matrix.d * y + matrix.ty;\n }\n }\n addColors(colors, color, alpha, size, offset = 0) {\n const rgb = (color >> 16) + (color & 65280) + ((color & 255) << 16);\n const rgba = utils.premultiplyTint(rgb, alpha);\n colors.length = Math.max(colors.length, offset + size);\n for (let i = 0; i < size; i++) {\n colors[offset + i] = rgba;\n }\n }\n addTextureIds(textureIds, id, size, offset = 0) {\n textureIds.length = Math.max(textureIds.length, offset + size);\n for (let i = 0; i < size; i++) {\n textureIds[offset + i] = id;\n }\n }\n addUvs(verts, uvs, texture, start, size, matrix = null) {\n let index = 0;\n const uvsStart = uvs.length;\n const frame = texture.frame;\n while (index < size) {\n let x = verts[(start + index) * 2];\n let y = verts[(start + index) * 2 + 1];\n if (matrix) {\n const nx = matrix.a * x + matrix.c * y + matrix.tx;\n y = matrix.b * x + matrix.d * y + matrix.ty;\n x = nx;\n }\n index++;\n uvs.push(x / frame.width, y / frame.height);\n }\n const baseTexture = texture.baseTexture;\n if (frame.width < baseTexture.width || frame.height < baseTexture.height) {\n this.adjustUvs(uvs, texture, uvsStart, size);\n }\n }\n adjustUvs(uvs, texture, start, size) {\n const baseTexture = texture.baseTexture;\n const eps = 1e-6;\n const finish = start + size * 2;\n const frame = texture.frame;\n const scaleX = frame.width / baseTexture.width;\n const scaleY = frame.height / baseTexture.height;\n let offsetX = frame.x / frame.width;\n let offsetY = frame.y / frame.height;\n let minX = Math.floor(uvs[start] + eps);\n let minY = Math.floor(uvs[start + 1] + eps);\n for (let i = start + 2; i < finish; i += 2) {\n minX = Math.min(minX, Math.floor(uvs[i] + eps));\n minY = Math.min(minY, Math.floor(uvs[i + 1] + eps));\n }\n offsetX -= minX;\n offsetY -= minY;\n for (let i = start; i < finish; i += 2) {\n uvs[i] = (uvs[i] + offsetX) * scaleX;\n uvs[i + 1] = (uvs[i + 1] + offsetY) * scaleY;\n }\n }\n};\nlet GraphicsGeometry = _GraphicsGeometry;\nGraphicsGeometry.BATCHABLE_SIZE = 100;\n\nexport { GraphicsGeometry };\n//# sourceMappingURL=GraphicsGeometry.mjs.map\n","import { FillStyle } from './FillStyle.mjs';\nimport { LINE_CAP, LINE_JOIN } from '../const.mjs';\n\nclass LineStyle extends FillStyle {\n constructor() {\n super(...arguments);\n this.width = 0;\n this.alignment = 0.5;\n this.native = false;\n this.cap = LINE_CAP.BUTT;\n this.join = LINE_JOIN.MITER;\n this.miterLimit = 10;\n }\n clone() {\n const obj = new LineStyle();\n obj.color = this.color;\n obj.alpha = this.alpha;\n obj.texture = this.texture;\n obj.matrix = this.matrix;\n obj.visible = this.visible;\n obj.width = this.width;\n obj.alignment = this.alignment;\n obj.native = this.native;\n obj.cap = this.cap;\n obj.join = this.join;\n obj.miterLimit = this.miterLimit;\n return obj;\n }\n reset() {\n super.reset();\n this.color = 0;\n this.alignment = 0.5;\n this.width = 0;\n this.native = false;\n }\n}\n\nexport { LineStyle };\n//# sourceMappingURL=LineStyle.mjs.map\n","import { State, BLEND_MODES, Texture, Polygon, PI_2, Rectangle, RoundedRectangle, Circle, Ellipse, SHAPES, utils, Matrix, UniformGroup, Shader, Point } from '@pixi/core';\nimport './utils/index.mjs';\nimport { GraphicsGeometry } from './GraphicsGeometry.mjs';\nimport { FillStyle } from './styles/FillStyle.mjs';\nimport { LineStyle } from './styles/LineStyle.mjs';\nimport { Container } from '@pixi/display';\nimport { LINE_CAP, LINE_JOIN } from './const.mjs';\nimport { QuadraticUtils } from './utils/QuadraticUtils.mjs';\nimport { BezierUtils } from './utils/BezierUtils.mjs';\nimport { ArcUtils } from './utils/ArcUtils.mjs';\n\nconst temp = new Float32Array(3);\nconst DEFAULT_SHADERS = {};\nconst _Graphics = class extends Container {\n constructor(geometry = null) {\n super();\n this.shader = null;\n this.pluginName = \"batch\";\n this.currentPath = null;\n this.batches = [];\n this.batchTint = -1;\n this.batchDirty = -1;\n this.vertexData = null;\n this._fillStyle = new FillStyle();\n this._lineStyle = new LineStyle();\n this._matrix = null;\n this._holeMode = false;\n this.state = State.for2d();\n this._geometry = geometry || new GraphicsGeometry();\n this._geometry.refCount++;\n this._transformID = -1;\n this.tint = 16777215;\n this.blendMode = BLEND_MODES.NORMAL;\n }\n get geometry() {\n return this._geometry;\n }\n clone() {\n this.finishPoly();\n return new _Graphics(this._geometry);\n }\n set blendMode(value) {\n this.state.blendMode = value;\n }\n get blendMode() {\n return this.state.blendMode;\n }\n get tint() {\n return this._tint;\n }\n set tint(value) {\n this._tint = value;\n }\n get fill() {\n return this._fillStyle;\n }\n get line() {\n return this._lineStyle;\n }\n lineStyle(options = null, color = 0, alpha = 1, alignment = 0.5, native = false) {\n if (typeof options === \"number\") {\n options = { width: options, color, alpha, alignment, native };\n }\n return this.lineTextureStyle(options);\n }\n lineTextureStyle(options) {\n options = Object.assign({\n width: 0,\n texture: Texture.WHITE,\n color: options?.texture ? 16777215 : 0,\n alpha: 1,\n matrix: null,\n alignment: 0.5,\n native: false,\n cap: LINE_CAP.BUTT,\n join: LINE_JOIN.MITER,\n miterLimit: 10\n }, options);\n if (this.currentPath) {\n this.startPoly();\n }\n const visible = options.width > 0 && options.alpha > 0;\n if (!visible) {\n this._lineStyle.reset();\n } else {\n if (options.matrix) {\n options.matrix = options.matrix.clone();\n options.matrix.invert();\n }\n Object.assign(this._lineStyle, { visible }, options);\n }\n return this;\n }\n startPoly() {\n if (this.currentPath) {\n const points = this.currentPath.points;\n const len = this.currentPath.points.length;\n if (len > 2) {\n this.drawShape(this.currentPath);\n this.currentPath = new Polygon();\n this.currentPath.closeStroke = false;\n this.currentPath.points.push(points[len - 2], points[len - 1]);\n }\n } else {\n this.currentPath = new Polygon();\n this.currentPath.closeStroke = false;\n }\n }\n finishPoly() {\n if (this.currentPath) {\n if (this.currentPath.points.length > 2) {\n this.drawShape(this.currentPath);\n this.currentPath = null;\n } else {\n this.currentPath.points.length = 0;\n }\n }\n }\n moveTo(x, y) {\n this.startPoly();\n this.currentPath.points[0] = x;\n this.currentPath.points[1] = y;\n return this;\n }\n lineTo(x, y) {\n if (!this.currentPath) {\n this.moveTo(0, 0);\n }\n const points = this.currentPath.points;\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n if (fromX !== x || fromY !== y) {\n points.push(x, y);\n }\n return this;\n }\n _initCurve(x = 0, y = 0) {\n if (this.currentPath) {\n if (this.currentPath.points.length === 0) {\n this.currentPath.points = [x, y];\n }\n } else {\n this.moveTo(x, y);\n }\n }\n quadraticCurveTo(cpX, cpY, toX, toY) {\n this._initCurve();\n const points = this.currentPath.points;\n if (points.length === 0) {\n this.moveTo(0, 0);\n }\n QuadraticUtils.curveTo(cpX, cpY, toX, toY, points);\n return this;\n }\n bezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY) {\n this._initCurve();\n BezierUtils.curveTo(cpX, cpY, cpX2, cpY2, toX, toY, this.currentPath.points);\n return this;\n }\n arcTo(x1, y1, x2, y2, radius) {\n this._initCurve(x1, y1);\n const points = this.currentPath.points;\n const result = ArcUtils.curveTo(x1, y1, x2, y2, radius, points);\n if (result) {\n const { cx, cy, radius: radius2, startAngle, endAngle, anticlockwise } = result;\n this.arc(cx, cy, radius2, startAngle, endAngle, anticlockwise);\n }\n return this;\n }\n arc(cx, cy, radius, startAngle, endAngle, anticlockwise = false) {\n if (startAngle === endAngle) {\n return this;\n }\n if (!anticlockwise && endAngle <= startAngle) {\n endAngle += PI_2;\n } else if (anticlockwise && startAngle <= endAngle) {\n startAngle += PI_2;\n }\n const sweep = endAngle - startAngle;\n if (sweep === 0) {\n return this;\n }\n const startX = cx + Math.cos(startAngle) * radius;\n const startY = cy + Math.sin(startAngle) * radius;\n const eps = this._geometry.closePointEps;\n let points = this.currentPath ? this.currentPath.points : null;\n if (points) {\n const xDiff = Math.abs(points[points.length - 2] - startX);\n const yDiff = Math.abs(points[points.length - 1] - startY);\n if (xDiff < eps && yDiff < eps) {\n } else {\n points.push(startX, startY);\n }\n } else {\n this.moveTo(startX, startY);\n points = this.currentPath.points;\n }\n ArcUtils.arc(startX, startY, cx, cy, radius, startAngle, endAngle, anticlockwise, points);\n return this;\n }\n beginFill(color = 0, alpha = 1) {\n return this.beginTextureFill({ texture: Texture.WHITE, color, alpha });\n }\n beginTextureFill(options) {\n options = Object.assign({\n texture: Texture.WHITE,\n color: 16777215,\n alpha: 1,\n matrix: null\n }, options);\n if (this.currentPath) {\n this.startPoly();\n }\n const visible = options.alpha > 0;\n if (!visible) {\n this._fillStyle.reset();\n } else {\n if (options.matrix) {\n options.matrix = options.matrix.clone();\n options.matrix.invert();\n }\n Object.assign(this._fillStyle, { visible }, options);\n }\n return this;\n }\n endFill() {\n this.finishPoly();\n this._fillStyle.reset();\n return this;\n }\n drawRect(x, y, width, height) {\n return this.drawShape(new Rectangle(x, y, width, height));\n }\n drawRoundedRect(x, y, width, height, radius) {\n return this.drawShape(new RoundedRectangle(x, y, width, height, radius));\n }\n drawCircle(x, y, radius) {\n return this.drawShape(new Circle(x, y, radius));\n }\n drawEllipse(x, y, width, height) {\n return this.drawShape(new Ellipse(x, y, width, height));\n }\n drawPolygon(...path) {\n let points;\n let closeStroke = true;\n const poly = path[0];\n if (poly.points) {\n closeStroke = poly.closeStroke;\n points = poly.points;\n } else if (Array.isArray(path[0])) {\n points = path[0];\n } else {\n points = path;\n }\n const shape = new Polygon(points);\n shape.closeStroke = closeStroke;\n this.drawShape(shape);\n return this;\n }\n drawShape(shape) {\n if (!this._holeMode) {\n this._geometry.drawShape(shape, this._fillStyle.clone(), this._lineStyle.clone(), this._matrix);\n } else {\n this._geometry.drawHole(shape, this._matrix);\n }\n return this;\n }\n clear() {\n this._geometry.clear();\n this._lineStyle.reset();\n this._fillStyle.reset();\n this._boundsID++;\n this._matrix = null;\n this._holeMode = false;\n this.currentPath = null;\n return this;\n }\n isFastRect() {\n const data = this._geometry.graphicsData;\n return data.length === 1 && data[0].shape.type === SHAPES.RECT && !data[0].matrix && !data[0].holes.length && !(data[0].lineStyle.visible && data[0].lineStyle.width);\n }\n _render(renderer) {\n this.finishPoly();\n const geometry = this._geometry;\n geometry.updateBatches();\n if (geometry.batchable) {\n if (this.batchDirty !== geometry.batchDirty) {\n this._populateBatches();\n }\n this._renderBatched(renderer);\n } else {\n renderer.batch.flush();\n this._renderDirect(renderer);\n }\n }\n _populateBatches() {\n const geometry = this._geometry;\n const blendMode = this.blendMode;\n const len = geometry.batches.length;\n this.batchTint = -1;\n this._transformID = -1;\n this.batchDirty = geometry.batchDirty;\n this.batches.length = len;\n this.vertexData = new Float32Array(geometry.points);\n for (let i = 0; i < len; i++) {\n const gI = geometry.batches[i];\n const color = gI.style.color;\n const vertexData = new Float32Array(this.vertexData.buffer, gI.attribStart * 4 * 2, gI.attribSize * 2);\n const uvs = new Float32Array(geometry.uvsFloat32.buffer, gI.attribStart * 4 * 2, gI.attribSize * 2);\n const indices = new Uint16Array(geometry.indicesUint16.buffer, gI.start * 2, gI.size);\n const batch = {\n vertexData,\n blendMode,\n indices,\n uvs,\n _batchRGB: utils.hex2rgb(color),\n _tintRGB: color,\n _texture: gI.style.texture,\n alpha: gI.style.alpha,\n worldAlpha: 1\n };\n this.batches[i] = batch;\n }\n }\n _renderBatched(renderer) {\n if (!this.batches.length) {\n return;\n }\n renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]);\n this.calculateVertices();\n this.calculateTints();\n for (let i = 0, l = this.batches.length; i < l; i++) {\n const batch = this.batches[i];\n batch.worldAlpha = this.worldAlpha * batch.alpha;\n renderer.plugins[this.pluginName].render(batch);\n }\n }\n _renderDirect(renderer) {\n const shader = this._resolveDirectShader(renderer);\n const geometry = this._geometry;\n const tint = this.tint;\n const worldAlpha = this.worldAlpha;\n const uniforms = shader.uniforms;\n const drawCalls = geometry.drawCalls;\n uniforms.translationMatrix = this.transform.worldTransform;\n uniforms.tint[0] = (tint >> 16 & 255) / 255 * worldAlpha;\n uniforms.tint[1] = (tint >> 8 & 255) / 255 * worldAlpha;\n uniforms.tint[2] = (tint & 255) / 255 * worldAlpha;\n uniforms.tint[3] = worldAlpha;\n renderer.shader.bind(shader);\n renderer.geometry.bind(geometry, shader);\n renderer.state.set(this.state);\n for (let i = 0, l = drawCalls.length; i < l; i++) {\n this._renderDrawCallDirect(renderer, geometry.drawCalls[i]);\n }\n }\n _renderDrawCallDirect(renderer, drawCall) {\n const { texArray, type, size, start } = drawCall;\n const groupTextureCount = texArray.count;\n for (let j = 0; j < groupTextureCount; j++) {\n renderer.texture.bind(texArray.elements[j], j);\n }\n renderer.geometry.draw(type, size, start);\n }\n _resolveDirectShader(renderer) {\n let shader = this.shader;\n const pluginName = this.pluginName;\n if (!shader) {\n if (!DEFAULT_SHADERS[pluginName]) {\n const { MAX_TEXTURES } = renderer.plugins[pluginName];\n const sampleValues = new Int32Array(MAX_TEXTURES);\n for (let i = 0; i < MAX_TEXTURES; i++) {\n sampleValues[i] = i;\n }\n const uniforms = {\n tint: new Float32Array([1, 1, 1, 1]),\n translationMatrix: new Matrix(),\n default: UniformGroup.from({ uSamplers: sampleValues }, true)\n };\n const program = renderer.plugins[pluginName]._shader.program;\n DEFAULT_SHADERS[pluginName] = new Shader(program, uniforms);\n }\n shader = DEFAULT_SHADERS[pluginName];\n }\n return shader;\n }\n _calculateBounds() {\n this.finishPoly();\n const geometry = this._geometry;\n if (!geometry.graphicsData.length) {\n return;\n }\n const { minX, minY, maxX, maxY } = geometry.bounds;\n this._bounds.addFrame(this.transform, minX, minY, maxX, maxY);\n }\n containsPoint(point) {\n this.worldTransform.applyInverse(point, _Graphics._TEMP_POINT);\n return this._geometry.containsPoint(_Graphics._TEMP_POINT);\n }\n calculateTints() {\n if (this.batchTint !== this.tint) {\n this.batchTint = this.tint;\n const tintRGB = utils.hex2rgb(this.tint, temp);\n for (let i = 0; i < this.batches.length; i++) {\n const batch = this.batches[i];\n const batchTint = batch._batchRGB;\n const r = tintRGB[0] * batchTint[0] * 255;\n const g = tintRGB[1] * batchTint[1] * 255;\n const b = tintRGB[2] * batchTint[2] * 255;\n const color = (r << 16) + (g << 8) + (b | 0);\n batch._tintRGB = (color >> 16) + (color & 65280) + ((color & 255) << 16);\n }\n }\n }\n calculateVertices() {\n const wtID = this.transform._worldID;\n if (this._transformID === wtID) {\n return;\n }\n this._transformID = wtID;\n const wt = this.transform.worldTransform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const data = this._geometry.points;\n const vertexData = this.vertexData;\n let count = 0;\n for (let i = 0; i < data.length; i += 2) {\n const x = data[i];\n const y = data[i + 1];\n vertexData[count++] = a * x + c * y + tx;\n vertexData[count++] = d * y + b * x + ty;\n }\n }\n closePath() {\n const currentPath = this.currentPath;\n if (currentPath) {\n currentPath.closeStroke = true;\n this.finishPoly();\n }\n return this;\n }\n setMatrix(matrix) {\n this._matrix = matrix;\n return this;\n }\n beginHole() {\n this.finishPoly();\n this._holeMode = true;\n return this;\n }\n endHole() {\n this.finishPoly();\n this._holeMode = false;\n return this;\n }\n destroy(options) {\n this._geometry.refCount--;\n if (this._geometry.refCount === 0) {\n this._geometry.dispose();\n }\n this._matrix = null;\n this.currentPath = null;\n this._lineStyle.destroy();\n this._lineStyle = null;\n this._fillStyle.destroy();\n this._fillStyle = null;\n this._geometry = null;\n this.shader = null;\n this.vertexData = null;\n this.batches.length = 0;\n this.batches = null;\n super.destroy(options);\n }\n};\nlet Graphics = _Graphics;\nGraphics._TEMP_POINT = new Point();\n\nexport { Graphics };\n//# sourceMappingURL=Graphics.mjs.map\n","export { GRAPHICS_CURVES, LINE_CAP, LINE_JOIN } from './const.mjs';\nexport { FillStyle } from './styles/FillStyle.mjs';\nexport { Graphics } from './Graphics.mjs';\nexport { GraphicsData } from './GraphicsData.mjs';\nexport { GraphicsGeometry } from './GraphicsGeometry.mjs';\nexport { LineStyle } from './styles/LineStyle.mjs';\nimport { FILL_COMMANDS, BATCH_POOL, DRAW_CALL_POOL } from './utils/index.mjs';\nimport { buildPoly } from './utils/buildPoly.mjs';\nimport { buildCircle } from './utils/buildCircle.mjs';\nimport { buildRectangle } from './utils/buildRectangle.mjs';\nimport { buildRoundedRectangle } from './utils/buildRoundedRectangle.mjs';\nimport { buildLine } from './utils/buildLine.mjs';\nimport { ArcUtils } from './utils/ArcUtils.mjs';\nimport { BezierUtils } from './utils/BezierUtils.mjs';\nimport { QuadraticUtils } from './utils/QuadraticUtils.mjs';\nimport { BatchPart } from './utils/BatchPart.mjs';\n\nconst graphicsUtils = {\n buildPoly,\n buildCircle,\n buildRectangle,\n buildRoundedRectangle,\n buildLine,\n ArcUtils,\n BezierUtils,\n QuadraticUtils,\n BatchPart,\n FILL_COMMANDS,\n BATCH_POOL,\n DRAW_CALL_POOL\n};\n\nexport { graphicsUtils };\n//# sourceMappingURL=index.mjs.map\n","class MeshBatchUvs {\n constructor(uvBuffer, uvMatrix) {\n this.uvBuffer = uvBuffer;\n this.uvMatrix = uvMatrix;\n this.data = null;\n this._bufferUpdateId = -1;\n this._textureUpdateId = -1;\n this._updateID = 0;\n }\n update(forceUpdate) {\n if (!forceUpdate && this._bufferUpdateId === this.uvBuffer._updateID && this._textureUpdateId === this.uvMatrix._updateID) {\n return;\n }\n this._bufferUpdateId = this.uvBuffer._updateID;\n this._textureUpdateId = this.uvMatrix._updateID;\n const data = this.uvBuffer.data;\n if (!this.data || this.data.length !== data.length) {\n this.data = new Float32Array(data.length);\n }\n this.uvMatrix.multiplyUvs(data, this.data);\n this._updateID++;\n }\n}\n\nexport { MeshBatchUvs };\n//# sourceMappingURL=MeshBatchUvs.mjs.map\n","import { Point, Polygon, State, settings, DRAW_MODES } from '@pixi/core';\nimport { Container } from '@pixi/display';\nimport { MeshBatchUvs } from './MeshBatchUvs.mjs';\n\nconst tempPoint = new Point();\nconst tempPolygon = new Polygon();\nconst _Mesh = class extends Container {\n constructor(geometry, shader, state, drawMode = DRAW_MODES.TRIANGLES) {\n super();\n this.geometry = geometry;\n this.shader = shader;\n this.state = state || State.for2d();\n this.drawMode = drawMode;\n this.start = 0;\n this.size = 0;\n this.uvs = null;\n this.indices = null;\n this.vertexData = new Float32Array(1);\n this.vertexDirty = -1;\n this._transformID = -1;\n this._roundPixels = settings.ROUND_PIXELS;\n this.batchUvs = null;\n }\n get geometry() {\n return this._geometry;\n }\n set geometry(value) {\n if (this._geometry === value) {\n return;\n }\n if (this._geometry) {\n this._geometry.refCount--;\n if (this._geometry.refCount === 0) {\n this._geometry.dispose();\n }\n }\n this._geometry = value;\n if (this._geometry) {\n this._geometry.refCount++;\n }\n this.vertexDirty = -1;\n }\n get uvBuffer() {\n return this.geometry.buffers[1];\n }\n get verticesBuffer() {\n return this.geometry.buffers[0];\n }\n set material(value) {\n this.shader = value;\n }\n get material() {\n return this.shader;\n }\n set blendMode(value) {\n this.state.blendMode = value;\n }\n get blendMode() {\n return this.state.blendMode;\n }\n set roundPixels(value) {\n if (this._roundPixels !== value) {\n this._transformID = -1;\n }\n this._roundPixels = value;\n }\n get roundPixels() {\n return this._roundPixels;\n }\n get tint() {\n return \"tint\" in this.shader ? this.shader.tint : null;\n }\n set tint(value) {\n this.shader.tint = value;\n }\n get texture() {\n return \"texture\" in this.shader ? this.shader.texture : null;\n }\n set texture(value) {\n this.shader.texture = value;\n }\n _render(renderer) {\n const vertices = this.geometry.buffers[0].data;\n const shader = this.shader;\n if (shader.batchable && this.drawMode === DRAW_MODES.TRIANGLES && vertices.length < _Mesh.BATCHABLE_SIZE * 2) {\n this._renderToBatch(renderer);\n } else {\n this._renderDefault(renderer);\n }\n }\n _renderDefault(renderer) {\n const shader = this.shader;\n shader.alpha = this.worldAlpha;\n if (shader.update) {\n shader.update();\n }\n renderer.batch.flush();\n shader.uniforms.translationMatrix = this.transform.worldTransform.toArray(true);\n renderer.shader.bind(shader);\n renderer.state.set(this.state);\n renderer.geometry.bind(this.geometry, shader);\n renderer.geometry.draw(this.drawMode, this.size, this.start, this.geometry.instanceCount);\n }\n _renderToBatch(renderer) {\n const geometry = this.geometry;\n const shader = this.shader;\n if (shader.uvMatrix) {\n shader.uvMatrix.update();\n this.calculateUvs();\n }\n this.calculateVertices();\n this.indices = geometry.indexBuffer.data;\n this._tintRGB = shader._tintRGB;\n this._texture = shader.texture;\n const pluginName = this.material.pluginName;\n renderer.batch.setObjectRenderer(renderer.plugins[pluginName]);\n renderer.plugins[pluginName].render(this);\n }\n calculateVertices() {\n const geometry = this.geometry;\n const verticesBuffer = geometry.buffers[0];\n const vertices = verticesBuffer.data;\n const vertexDirtyId = verticesBuffer._updateID;\n if (vertexDirtyId === this.vertexDirty && this._transformID === this.transform._worldID) {\n return;\n }\n this._transformID = this.transform._worldID;\n if (this.vertexData.length !== vertices.length) {\n this.vertexData = new Float32Array(vertices.length);\n }\n const wt = this.transform.worldTransform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const vertexData = this.vertexData;\n for (let i = 0; i < vertexData.length / 2; i++) {\n const x = vertices[i * 2];\n const y = vertices[i * 2 + 1];\n vertexData[i * 2] = a * x + c * y + tx;\n vertexData[i * 2 + 1] = b * x + d * y + ty;\n }\n if (this._roundPixels) {\n const resolution = settings.RESOLUTION;\n for (let i = 0; i < vertexData.length; ++i) {\n vertexData[i] = Math.round((vertexData[i] * resolution | 0) / resolution);\n }\n }\n this.vertexDirty = vertexDirtyId;\n }\n calculateUvs() {\n const geomUvs = this.geometry.buffers[1];\n const shader = this.shader;\n if (!shader.uvMatrix.isSimple) {\n if (!this.batchUvs) {\n this.batchUvs = new MeshBatchUvs(geomUvs, shader.uvMatrix);\n }\n this.batchUvs.update();\n this.uvs = this.batchUvs.data;\n } else {\n this.uvs = geomUvs.data;\n }\n }\n _calculateBounds() {\n this.calculateVertices();\n this._bounds.addVertexData(this.vertexData, 0, this.vertexData.length);\n }\n containsPoint(point) {\n if (!this.getBounds().contains(point.x, point.y)) {\n return false;\n }\n this.worldTransform.applyInverse(point, tempPoint);\n const vertices = this.geometry.getBuffer(\"aVertexPosition\").data;\n const points = tempPolygon.points;\n const indices = this.geometry.getIndex().data;\n const len = indices.length;\n const step = this.drawMode === 4 ? 3 : 1;\n for (let i = 0; i + 2 < len; i += step) {\n const ind0 = indices[i] * 2;\n const ind1 = indices[i + 1] * 2;\n const ind2 = indices[i + 2] * 2;\n points[0] = vertices[ind0];\n points[1] = vertices[ind0 + 1];\n points[2] = vertices[ind1];\n points[3] = vertices[ind1 + 1];\n points[4] = vertices[ind2];\n points[5] = vertices[ind2 + 1];\n if (tempPolygon.contains(tempPoint.x, tempPoint.y)) {\n return true;\n }\n }\n return false;\n }\n destroy(options) {\n super.destroy(options);\n if (this._cachedTexture) {\n this._cachedTexture.destroy();\n this._cachedTexture = null;\n }\n this.geometry = null;\n this.shader = null;\n this.state = null;\n this.uvs = null;\n this.indices = null;\n this.vertexData = null;\n }\n};\nlet Mesh = _Mesh;\nMesh.BATCHABLE_SIZE = 100;\n\nexport { Mesh };\n//# sourceMappingURL=Mesh.mjs.map\n","var fragment = \"varying vec2 vTextureCoord;\\nuniform vec4 uColor;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=mesh.mjs.map\n","var vertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 translationMatrix;\\nuniform mat3 uTextureMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=mesh2.mjs.map\n","import { Shader, Matrix, Program, TextureMatrix, utils } from '@pixi/core';\nimport fragment from './shader/mesh.mjs';\nimport vertex from './shader/mesh2.mjs';\n\nclass MeshMaterial extends Shader {\n constructor(uSampler, options) {\n const uniforms = {\n uSampler,\n alpha: 1,\n uTextureMatrix: Matrix.IDENTITY,\n uColor: new Float32Array([1, 1, 1, 1])\n };\n options = Object.assign({\n tint: 16777215,\n alpha: 1,\n pluginName: \"batch\"\n }, options);\n if (options.uniforms) {\n Object.assign(uniforms, options.uniforms);\n }\n super(options.program || Program.from(vertex, fragment), uniforms);\n this._colorDirty = false;\n this.uvMatrix = new TextureMatrix(uSampler);\n this.batchable = options.program === void 0;\n this.pluginName = options.pluginName;\n this.tint = options.tint;\n this.alpha = options.alpha;\n }\n get texture() {\n return this.uniforms.uSampler;\n }\n set texture(value) {\n if (this.uniforms.uSampler !== value) {\n if (!this.uniforms.uSampler.baseTexture.alphaMode !== !value.baseTexture.alphaMode) {\n this._colorDirty = true;\n }\n this.uniforms.uSampler = value;\n this.uvMatrix.texture = value;\n }\n }\n set alpha(value) {\n if (value === this._alpha)\n return;\n this._alpha = value;\n this._colorDirty = true;\n }\n get alpha() {\n return this._alpha;\n }\n set tint(value) {\n if (value === this._tint)\n return;\n this._tint = value;\n this._tintRGB = (value >> 16) + (value & 65280) + ((value & 255) << 16);\n this._colorDirty = true;\n }\n get tint() {\n return this._tint;\n }\n update() {\n if (this._colorDirty) {\n this._colorDirty = false;\n const baseTexture = this.texture.baseTexture;\n utils.premultiplyTintToRgba(this._tint, this._alpha, this.uniforms.uColor, baseTexture.alphaMode);\n }\n if (this.uvMatrix.update()) {\n this.uniforms.uTextureMatrix = this.uvMatrix.mapCoord;\n }\n }\n}\n\nexport { MeshMaterial };\n//# sourceMappingURL=MeshMaterial.mjs.map\n","import { Geometry, Buffer, TYPES } from '@pixi/core';\n\nclass MeshGeometry extends Geometry {\n constructor(vertices, uvs, index) {\n super();\n const verticesBuffer = new Buffer(vertices);\n const uvsBuffer = new Buffer(uvs, true);\n const indexBuffer = new Buffer(index, true, true);\n this.addAttribute(\"aVertexPosition\", verticesBuffer, 2, false, TYPES.FLOAT).addAttribute(\"aTextureCoord\", uvsBuffer, 2, false, TYPES.FLOAT).addIndex(indexBuffer);\n this._updateId = -1;\n }\n get vertexDirtyId() {\n return this.buffers[0]._updateID;\n }\n}\n\nexport { MeshGeometry };\n//# sourceMappingURL=MeshGeometry.mjs.map\n","import { MeshGeometry } from '@pixi/mesh';\n\nclass PlaneGeometry extends MeshGeometry {\n constructor(width = 100, height = 100, segWidth = 10, segHeight = 10) {\n super();\n this.segWidth = segWidth;\n this.segHeight = segHeight;\n this.width = width;\n this.height = height;\n this.build();\n }\n build() {\n const total = this.segWidth * this.segHeight;\n const verts = [];\n const uvs = [];\n const indices = [];\n const segmentsX = this.segWidth - 1;\n const segmentsY = this.segHeight - 1;\n const sizeX = this.width / segmentsX;\n const sizeY = this.height / segmentsY;\n for (let i = 0; i < total; i++) {\n const x = i % this.segWidth;\n const y = i / this.segWidth | 0;\n verts.push(x * sizeX, y * sizeY);\n uvs.push(x / segmentsX, y / segmentsY);\n }\n const totalSub = segmentsX * segmentsY;\n for (let i = 0; i < totalSub; i++) {\n const xpos = i % segmentsX;\n const ypos = i / segmentsX | 0;\n const value = ypos * this.segWidth + xpos;\n const value2 = ypos * this.segWidth + xpos + 1;\n const value3 = (ypos + 1) * this.segWidth + xpos;\n const value4 = (ypos + 1) * this.segWidth + xpos + 1;\n indices.push(value, value2, value3, value2, value4, value3);\n }\n this.buffers[0].data = new Float32Array(verts);\n this.buffers[1].data = new Float32Array(uvs);\n this.indexBuffer.data = new Uint16Array(indices);\n this.buffers[0].update();\n this.buffers[1].update();\n this.indexBuffer.update();\n }\n}\n\nexport { PlaneGeometry };\n//# sourceMappingURL=PlaneGeometry.mjs.map\n","import { MeshGeometry } from '@pixi/mesh';\n\nclass RopeGeometry extends MeshGeometry {\n constructor(width = 200, points, textureScale = 0) {\n super(new Float32Array(points.length * 4), new Float32Array(points.length * 4), new Uint16Array((points.length - 1) * 6));\n this.points = points;\n this._width = width;\n this.textureScale = textureScale;\n this.build();\n }\n get width() {\n return this._width;\n }\n build() {\n const points = this.points;\n if (!points)\n return;\n const vertexBuffer = this.getBuffer(\"aVertexPosition\");\n const uvBuffer = this.getBuffer(\"aTextureCoord\");\n const indexBuffer = this.getIndex();\n if (points.length < 1) {\n return;\n }\n if (vertexBuffer.data.length / 4 !== points.length) {\n vertexBuffer.data = new Float32Array(points.length * 4);\n uvBuffer.data = new Float32Array(points.length * 4);\n indexBuffer.data = new Uint16Array((points.length - 1) * 6);\n }\n const uvs = uvBuffer.data;\n const indices = indexBuffer.data;\n uvs[0] = 0;\n uvs[1] = 0;\n uvs[2] = 0;\n uvs[3] = 1;\n let amount = 0;\n let prev = points[0];\n const textureWidth = this._width * this.textureScale;\n const total = points.length;\n for (let i = 0; i < total; i++) {\n const index = i * 4;\n if (this.textureScale > 0) {\n const dx = prev.x - points[i].x;\n const dy = prev.y - points[i].y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n prev = points[i];\n amount += distance / textureWidth;\n } else {\n amount = i / (total - 1);\n }\n uvs[index] = amount;\n uvs[index + 1] = 0;\n uvs[index + 2] = amount;\n uvs[index + 3] = 1;\n }\n let indexCount = 0;\n for (let i = 0; i < total - 1; i++) {\n const index = i * 2;\n indices[indexCount++] = index;\n indices[indexCount++] = index + 1;\n indices[indexCount++] = index + 2;\n indices[indexCount++] = index + 2;\n indices[indexCount++] = index + 1;\n indices[indexCount++] = index + 3;\n }\n uvBuffer.update();\n indexBuffer.update();\n this.updateVertices();\n }\n updateVertices() {\n const points = this.points;\n if (points.length < 1) {\n return;\n }\n let lastPoint = points[0];\n let nextPoint;\n let perpX = 0;\n let perpY = 0;\n const vertices = this.buffers[0].data;\n const total = points.length;\n for (let i = 0; i < total; i++) {\n const point = points[i];\n const index = i * 4;\n if (i < points.length - 1) {\n nextPoint = points[i + 1];\n } else {\n nextPoint = point;\n }\n perpY = -(nextPoint.x - lastPoint.x);\n perpX = nextPoint.y - lastPoint.y;\n let ratio = (1 - i / (total - 1)) * 10;\n if (ratio > 1) {\n ratio = 1;\n }\n const perpLength = Math.sqrt(perpX * perpX + perpY * perpY);\n const num = this.textureScale > 0 ? this.textureScale * this._width / 2 : this._width / 2;\n perpX /= perpLength;\n perpY /= perpLength;\n perpX *= num;\n perpY *= num;\n vertices[index] = point.x + perpX;\n vertices[index + 1] = point.y + perpY;\n vertices[index + 2] = point.x - perpX;\n vertices[index + 3] = point.y - perpY;\n lastPoint = point;\n }\n this.buffers[0].update();\n }\n update() {\n if (this.textureScale > 0) {\n this.build();\n } else {\n this.updateVertices();\n }\n }\n}\n\nexport { RopeGeometry };\n//# sourceMappingURL=RopeGeometry.mjs.map\n","import { Mesh, MeshMaterial } from '@pixi/mesh';\nimport { WRAP_MODES } from '@pixi/core';\nimport { RopeGeometry } from './geometry/RopeGeometry.mjs';\n\nclass SimpleRope extends Mesh {\n constructor(texture, points, textureScale = 0) {\n const ropeGeometry = new RopeGeometry(texture.height, points, textureScale);\n const meshMaterial = new MeshMaterial(texture);\n if (textureScale > 0) {\n texture.baseTexture.wrapMode = WRAP_MODES.REPEAT;\n }\n super(ropeGeometry, meshMaterial);\n this.autoUpdate = true;\n }\n _render(renderer) {\n const geometry = this.geometry;\n if (this.autoUpdate || geometry._width !== this.shader.texture.height) {\n geometry._width = this.shader.texture.height;\n geometry.update();\n }\n super._render(renderer);\n }\n}\n\nexport { SimpleRope };\n//# sourceMappingURL=SimpleRope.mjs.map\n","import { Texture } from '@pixi/core';\nimport { Mesh, MeshMaterial } from '@pixi/mesh';\nimport { PlaneGeometry } from './geometry/PlaneGeometry.mjs';\n\nclass SimplePlane extends Mesh {\n constructor(texture, verticesX, verticesY) {\n const planeGeometry = new PlaneGeometry(texture.width, texture.height, verticesX, verticesY);\n const meshMaterial = new MeshMaterial(Texture.WHITE);\n super(planeGeometry, meshMaterial);\n this.texture = texture;\n this.autoResize = true;\n }\n textureUpdated() {\n this._textureID = this.shader.texture._updateID;\n const geometry = this.geometry;\n const { width, height } = this.shader.texture;\n if (this.autoResize && (geometry.width !== width || geometry.height !== height)) {\n geometry.width = this.shader.texture.width;\n geometry.height = this.shader.texture.height;\n geometry.build();\n }\n }\n set texture(value) {\n if (this.shader.texture === value) {\n return;\n }\n this.shader.texture = value;\n this._textureID = -1;\n if (value.baseTexture.valid) {\n this.textureUpdated();\n } else {\n value.once(\"update\", this.textureUpdated, this);\n }\n }\n get texture() {\n return this.shader.texture;\n }\n _render(renderer) {\n if (this._textureID !== this.shader.texture._updateID) {\n this.textureUpdated();\n }\n super._render(renderer);\n }\n destroy(options) {\n this.shader.texture.off(\"update\", this.textureUpdated, this);\n super.destroy(options);\n }\n}\n\nexport { SimplePlane };\n//# sourceMappingURL=SimplePlane.mjs.map\n","import { Mesh, MeshGeometry, MeshMaterial } from '@pixi/mesh';\nimport { Texture } from '@pixi/core';\n\nclass SimpleMesh extends Mesh {\n constructor(texture = Texture.EMPTY, vertices, uvs, indices, drawMode) {\n const geometry = new MeshGeometry(vertices, uvs, indices);\n geometry.getBuffer(\"aVertexPosition\").static = false;\n const meshMaterial = new MeshMaterial(texture);\n super(geometry, meshMaterial, null, drawMode);\n this.autoUpdate = true;\n }\n get vertices() {\n return this.geometry.getBuffer(\"aVertexPosition\").data;\n }\n set vertices(value) {\n this.geometry.getBuffer(\"aVertexPosition\").data = value;\n }\n _render(renderer) {\n if (this.autoUpdate) {\n this.geometry.getBuffer(\"aVertexPosition\").update();\n }\n super._render(renderer);\n }\n}\n\nexport { SimpleMesh };\n//# sourceMappingURL=SimpleMesh.mjs.map\n","import { Texture } from '@pixi/core';\nimport { SimplePlane } from './SimplePlane.mjs';\n\nconst DEFAULT_BORDER_SIZE = 10;\nclass NineSlicePlane extends SimplePlane {\n constructor(texture, leftWidth = DEFAULT_BORDER_SIZE, topHeight = DEFAULT_BORDER_SIZE, rightWidth = DEFAULT_BORDER_SIZE, bottomHeight = DEFAULT_BORDER_SIZE) {\n super(Texture.WHITE, 4, 4);\n this._origWidth = texture.orig.width;\n this._origHeight = texture.orig.height;\n this._width = this._origWidth;\n this._height = this._origHeight;\n this._leftWidth = leftWidth;\n this._rightWidth = rightWidth;\n this._topHeight = topHeight;\n this._bottomHeight = bottomHeight;\n this.texture = texture;\n }\n textureUpdated() {\n this._textureID = this.shader.texture._updateID;\n this._refresh();\n }\n get vertices() {\n return this.geometry.getBuffer(\"aVertexPosition\").data;\n }\n set vertices(value) {\n this.geometry.getBuffer(\"aVertexPosition\").data = value;\n }\n updateHorizontalVertices() {\n const vertices = this.vertices;\n const scale = this._getMinScale();\n vertices[9] = vertices[11] = vertices[13] = vertices[15] = this._topHeight * scale;\n vertices[17] = vertices[19] = vertices[21] = vertices[23] = this._height - this._bottomHeight * scale;\n vertices[25] = vertices[27] = vertices[29] = vertices[31] = this._height;\n }\n updateVerticalVertices() {\n const vertices = this.vertices;\n const scale = this._getMinScale();\n vertices[2] = vertices[10] = vertices[18] = vertices[26] = this._leftWidth * scale;\n vertices[4] = vertices[12] = vertices[20] = vertices[28] = this._width - this._rightWidth * scale;\n vertices[6] = vertices[14] = vertices[22] = vertices[30] = this._width;\n }\n _getMinScale() {\n const w = this._leftWidth + this._rightWidth;\n const scaleW = this._width > w ? 1 : this._width / w;\n const h = this._topHeight + this._bottomHeight;\n const scaleH = this._height > h ? 1 : this._height / h;\n const scale = Math.min(scaleW, scaleH);\n return scale;\n }\n get width() {\n return this._width;\n }\n set width(value) {\n this._width = value;\n this._refresh();\n }\n get height() {\n return this._height;\n }\n set height(value) {\n this._height = value;\n this._refresh();\n }\n get leftWidth() {\n return this._leftWidth;\n }\n set leftWidth(value) {\n this._leftWidth = value;\n this._refresh();\n }\n get rightWidth() {\n return this._rightWidth;\n }\n set rightWidth(value) {\n this._rightWidth = value;\n this._refresh();\n }\n get topHeight() {\n return this._topHeight;\n }\n set topHeight(value) {\n this._topHeight = value;\n this._refresh();\n }\n get bottomHeight() {\n return this._bottomHeight;\n }\n set bottomHeight(value) {\n this._bottomHeight = value;\n this._refresh();\n }\n _refresh() {\n const texture = this.texture;\n const uvs = this.geometry.buffers[1].data;\n this._origWidth = texture.orig.width;\n this._origHeight = texture.orig.height;\n const _uvw = 1 / this._origWidth;\n const _uvh = 1 / this._origHeight;\n uvs[0] = uvs[8] = uvs[16] = uvs[24] = 0;\n uvs[1] = uvs[3] = uvs[5] = uvs[7] = 0;\n uvs[6] = uvs[14] = uvs[22] = uvs[30] = 1;\n uvs[25] = uvs[27] = uvs[29] = uvs[31] = 1;\n uvs[2] = uvs[10] = uvs[18] = uvs[26] = _uvw * this._leftWidth;\n uvs[4] = uvs[12] = uvs[20] = uvs[28] = 1 - _uvw * this._rightWidth;\n uvs[9] = uvs[11] = uvs[13] = uvs[15] = _uvh * this._topHeight;\n uvs[17] = uvs[19] = uvs[21] = uvs[23] = 1 - _uvh * this._bottomHeight;\n this.updateHorizontalVertices();\n this.updateVerticalVertices();\n this.geometry.buffers[0].update();\n this.geometry.buffers[1].update();\n }\n}\n\nexport { NineSlicePlane };\n//# sourceMappingURL=NineSlicePlane.mjs.map\n","import { BLEND_MODES, utils } from '@pixi/core';\nimport { Container } from '@pixi/display';\n\nclass ParticleContainer extends Container {\n constructor(maxSize = 1500, properties, batchSize = 16384, autoResize = false) {\n super();\n const maxBatchSize = 16384;\n if (batchSize > maxBatchSize) {\n batchSize = maxBatchSize;\n }\n this._properties = [false, true, false, false, false];\n this._maxSize = maxSize;\n this._batchSize = batchSize;\n this._buffers = null;\n this._bufferUpdateIDs = [];\n this._updateID = 0;\n this.interactiveChildren = false;\n this.blendMode = BLEND_MODES.NORMAL;\n this.autoResize = autoResize;\n this.roundPixels = true;\n this.baseTexture = null;\n this.setProperties(properties);\n this._tint = 0;\n this.tintRgb = new Float32Array(4);\n this.tint = 16777215;\n }\n setProperties(properties) {\n if (properties) {\n this._properties[0] = \"vertices\" in properties || \"scale\" in properties ? !!properties.vertices || !!properties.scale : this._properties[0];\n this._properties[1] = \"position\" in properties ? !!properties.position : this._properties[1];\n this._properties[2] = \"rotation\" in properties ? !!properties.rotation : this._properties[2];\n this._properties[3] = \"uvs\" in properties ? !!properties.uvs : this._properties[3];\n this._properties[4] = \"tint\" in properties || \"alpha\" in properties ? !!properties.tint || !!properties.alpha : this._properties[4];\n }\n }\n updateTransform() {\n this.displayObjectUpdateTransform();\n }\n get tint() {\n return this._tint;\n }\n set tint(value) {\n this._tint = value;\n utils.hex2rgb(value, this.tintRgb);\n }\n render(renderer) {\n if (!this.visible || this.worldAlpha <= 0 || !this.children.length || !this.renderable) {\n return;\n }\n if (!this.baseTexture) {\n this.baseTexture = this.children[0]._texture.baseTexture;\n if (!this.baseTexture.valid) {\n this.baseTexture.once(\"update\", () => this.onChildrenChange(0));\n }\n }\n renderer.batch.setObjectRenderer(renderer.plugins.particle);\n renderer.plugins.particle.render(this);\n }\n onChildrenChange(smallestChildIndex) {\n const bufferIndex = Math.floor(smallestChildIndex / this._batchSize);\n while (this._bufferUpdateIDs.length < bufferIndex) {\n this._bufferUpdateIDs.push(0);\n }\n this._bufferUpdateIDs[bufferIndex] = ++this._updateID;\n }\n dispose() {\n if (this._buffers) {\n for (let i = 0; i < this._buffers.length; ++i) {\n this._buffers[i].destroy();\n }\n this._buffers = null;\n }\n }\n destroy(options) {\n super.destroy(options);\n this.dispose();\n this._properties = null;\n this._buffers = null;\n this._bufferUpdateIDs = null;\n }\n}\n\nexport { ParticleContainer };\n//# sourceMappingURL=ParticleContainer.mjs.map\n","import { Geometry, TYPES, Buffer, utils } from '@pixi/core';\n\nclass ParticleBuffer {\n constructor(properties, dynamicPropertyFlags, size) {\n this.geometry = new Geometry();\n this.indexBuffer = null;\n this.size = size;\n this.dynamicProperties = [];\n this.staticProperties = [];\n for (let i = 0; i < properties.length; ++i) {\n let property = properties[i];\n property = {\n attributeName: property.attributeName,\n size: property.size,\n uploadFunction: property.uploadFunction,\n type: property.type || TYPES.FLOAT,\n offset: property.offset\n };\n if (dynamicPropertyFlags[i]) {\n this.dynamicProperties.push(property);\n } else {\n this.staticProperties.push(property);\n }\n }\n this.staticStride = 0;\n this.staticBuffer = null;\n this.staticData = null;\n this.staticDataUint32 = null;\n this.dynamicStride = 0;\n this.dynamicBuffer = null;\n this.dynamicData = null;\n this.dynamicDataUint32 = null;\n this._updateID = 0;\n this.initBuffers();\n }\n initBuffers() {\n const geometry = this.geometry;\n let dynamicOffset = 0;\n this.indexBuffer = new Buffer(utils.createIndicesForQuads(this.size), true, true);\n geometry.addIndex(this.indexBuffer);\n this.dynamicStride = 0;\n for (let i = 0; i < this.dynamicProperties.length; ++i) {\n const property = this.dynamicProperties[i];\n property.offset = dynamicOffset;\n dynamicOffset += property.size;\n this.dynamicStride += property.size;\n }\n const dynBuffer = new ArrayBuffer(this.size * this.dynamicStride * 4 * 4);\n this.dynamicData = new Float32Array(dynBuffer);\n this.dynamicDataUint32 = new Uint32Array(dynBuffer);\n this.dynamicBuffer = new Buffer(this.dynamicData, false, false);\n let staticOffset = 0;\n this.staticStride = 0;\n for (let i = 0; i < this.staticProperties.length; ++i) {\n const property = this.staticProperties[i];\n property.offset = staticOffset;\n staticOffset += property.size;\n this.staticStride += property.size;\n }\n const statBuffer = new ArrayBuffer(this.size * this.staticStride * 4 * 4);\n this.staticData = new Float32Array(statBuffer);\n this.staticDataUint32 = new Uint32Array(statBuffer);\n this.staticBuffer = new Buffer(this.staticData, true, false);\n for (let i = 0; i < this.dynamicProperties.length; ++i) {\n const property = this.dynamicProperties[i];\n geometry.addAttribute(property.attributeName, this.dynamicBuffer, 0, property.type === TYPES.UNSIGNED_BYTE, property.type, this.dynamicStride * 4, property.offset * 4);\n }\n for (let i = 0; i < this.staticProperties.length; ++i) {\n const property = this.staticProperties[i];\n geometry.addAttribute(property.attributeName, this.staticBuffer, 0, property.type === TYPES.UNSIGNED_BYTE, property.type, this.staticStride * 4, property.offset * 4);\n }\n }\n uploadDynamic(children, startIndex, amount) {\n for (let i = 0; i < this.dynamicProperties.length; i++) {\n const property = this.dynamicProperties[i];\n property.uploadFunction(children, startIndex, amount, property.type === TYPES.UNSIGNED_BYTE ? this.dynamicDataUint32 : this.dynamicData, this.dynamicStride, property.offset);\n }\n this.dynamicBuffer._updateID++;\n }\n uploadStatic(children, startIndex, amount) {\n for (let i = 0; i < this.staticProperties.length; i++) {\n const property = this.staticProperties[i];\n property.uploadFunction(children, startIndex, amount, property.type === TYPES.UNSIGNED_BYTE ? this.staticDataUint32 : this.staticData, this.staticStride, property.offset);\n }\n this.staticBuffer._updateID++;\n }\n destroy() {\n this.indexBuffer = null;\n this.dynamicProperties = null;\n this.dynamicBuffer = null;\n this.dynamicData = null;\n this.dynamicDataUint32 = null;\n this.staticProperties = null;\n this.staticBuffer = null;\n this.staticData = null;\n this.staticDataUint32 = null;\n this.geometry.destroy();\n }\n}\n\nexport { ParticleBuffer };\n//# sourceMappingURL=ParticleBuffer.mjs.map\n","var fragment = \"varying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void){\\n vec4 color = texture2D(uSampler, vTextureCoord) * vColor;\\n gl_FragColor = color;\\n}\";\n\nexport { fragment as default };\n//# sourceMappingURL=particles.mjs.map\n","var vertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nattribute vec2 aPositionCoord;\\nattribute float aRotation;\\n\\nuniform mat3 translationMatrix;\\nuniform vec4 uColor;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nvoid main(void){\\n float x = (aVertexPosition.x) * cos(aRotation) - (aVertexPosition.y) * sin(aRotation);\\n float y = (aVertexPosition.x) * sin(aRotation) + (aVertexPosition.y) * cos(aRotation);\\n\\n vec2 v = vec2(x, y);\\n v = v + aPositionCoord;\\n\\n gl_Position = vec4((translationMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = aTextureCoord;\\n vColor = aColor * uColor;\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=particles2.mjs.map\n","import { ObjectRenderer, Matrix, TYPES, Shader, State, utils, ExtensionType, extensions } from '@pixi/core';\nimport { ParticleBuffer } from './ParticleBuffer.mjs';\nimport fragment from './particles.mjs';\nimport vertex from './particles2.mjs';\n\nclass ParticleRenderer extends ObjectRenderer {\n constructor(renderer) {\n super(renderer);\n this.shader = null;\n this.properties = null;\n this.tempMatrix = new Matrix();\n this.properties = [\n {\n attributeName: \"aVertexPosition\",\n size: 2,\n uploadFunction: this.uploadVertices,\n offset: 0\n },\n {\n attributeName: \"aPositionCoord\",\n size: 2,\n uploadFunction: this.uploadPosition,\n offset: 0\n },\n {\n attributeName: \"aRotation\",\n size: 1,\n uploadFunction: this.uploadRotation,\n offset: 0\n },\n {\n attributeName: \"aTextureCoord\",\n size: 2,\n uploadFunction: this.uploadUvs,\n offset: 0\n },\n {\n attributeName: \"aColor\",\n size: 1,\n type: TYPES.UNSIGNED_BYTE,\n uploadFunction: this.uploadTint,\n offset: 0\n }\n ];\n this.shader = Shader.from(vertex, fragment, {});\n this.state = State.for2d();\n }\n render(container) {\n const children = container.children;\n const maxSize = container._maxSize;\n const batchSize = container._batchSize;\n const renderer = this.renderer;\n let totalChildren = children.length;\n if (totalChildren === 0) {\n return;\n } else if (totalChildren > maxSize && !container.autoResize) {\n totalChildren = maxSize;\n }\n let buffers = container._buffers;\n if (!buffers) {\n buffers = container._buffers = this.generateBuffers(container);\n }\n const baseTexture = children[0]._texture.baseTexture;\n const premultiplied = baseTexture.alphaMode > 0;\n this.state.blendMode = utils.correctBlendMode(container.blendMode, premultiplied);\n renderer.state.set(this.state);\n const gl = renderer.gl;\n const m = container.worldTransform.copyTo(this.tempMatrix);\n m.prepend(renderer.globalUniforms.uniforms.projectionMatrix);\n this.shader.uniforms.translationMatrix = m.toArray(true);\n this.shader.uniforms.uColor = utils.premultiplyRgba(container.tintRgb, container.worldAlpha, this.shader.uniforms.uColor, premultiplied);\n this.shader.uniforms.uSampler = baseTexture;\n this.renderer.shader.bind(this.shader);\n let updateStatic = false;\n for (let i = 0, j = 0; i < totalChildren; i += batchSize, j += 1) {\n let amount = totalChildren - i;\n if (amount > batchSize) {\n amount = batchSize;\n }\n if (j >= buffers.length) {\n buffers.push(this._generateOneMoreBuffer(container));\n }\n const buffer = buffers[j];\n buffer.uploadDynamic(children, i, amount);\n const bid = container._bufferUpdateIDs[j] || 0;\n updateStatic = updateStatic || buffer._updateID < bid;\n if (updateStatic) {\n buffer._updateID = container._updateID;\n buffer.uploadStatic(children, i, amount);\n }\n renderer.geometry.bind(buffer.geometry);\n gl.drawElements(gl.TRIANGLES, amount * 6, gl.UNSIGNED_SHORT, 0);\n }\n }\n generateBuffers(container) {\n const buffers = [];\n const size = container._maxSize;\n const batchSize = container._batchSize;\n const dynamicPropertyFlags = container._properties;\n for (let i = 0; i < size; i += batchSize) {\n buffers.push(new ParticleBuffer(this.properties, dynamicPropertyFlags, batchSize));\n }\n return buffers;\n }\n _generateOneMoreBuffer(container) {\n const batchSize = container._batchSize;\n const dynamicPropertyFlags = container._properties;\n return new ParticleBuffer(this.properties, dynamicPropertyFlags, batchSize);\n }\n uploadVertices(children, startIndex, amount, array, stride, offset) {\n let w0 = 0;\n let w1 = 0;\n let h0 = 0;\n let h1 = 0;\n for (let i = 0; i < amount; ++i) {\n const sprite = children[startIndex + i];\n const texture = sprite._texture;\n const sx = sprite.scale.x;\n const sy = sprite.scale.y;\n const trim = texture.trim;\n const orig = texture.orig;\n if (trim) {\n w1 = trim.x - sprite.anchor.x * orig.width;\n w0 = w1 + trim.width;\n h1 = trim.y - sprite.anchor.y * orig.height;\n h0 = h1 + trim.height;\n } else {\n w0 = orig.width * (1 - sprite.anchor.x);\n w1 = orig.width * -sprite.anchor.x;\n h0 = orig.height * (1 - sprite.anchor.y);\n h1 = orig.height * -sprite.anchor.y;\n }\n array[offset] = w1 * sx;\n array[offset + 1] = h1 * sy;\n array[offset + stride] = w0 * sx;\n array[offset + stride + 1] = h1 * sy;\n array[offset + stride * 2] = w0 * sx;\n array[offset + stride * 2 + 1] = h0 * sy;\n array[offset + stride * 3] = w1 * sx;\n array[offset + stride * 3 + 1] = h0 * sy;\n offset += stride * 4;\n }\n }\n uploadPosition(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; i++) {\n const spritePosition = children[startIndex + i].position;\n array[offset] = spritePosition.x;\n array[offset + 1] = spritePosition.y;\n array[offset + stride] = spritePosition.x;\n array[offset + stride + 1] = spritePosition.y;\n array[offset + stride * 2] = spritePosition.x;\n array[offset + stride * 2 + 1] = spritePosition.y;\n array[offset + stride * 3] = spritePosition.x;\n array[offset + stride * 3 + 1] = spritePosition.y;\n offset += stride * 4;\n }\n }\n uploadRotation(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; i++) {\n const spriteRotation = children[startIndex + i].rotation;\n array[offset] = spriteRotation;\n array[offset + stride] = spriteRotation;\n array[offset + stride * 2] = spriteRotation;\n array[offset + stride * 3] = spriteRotation;\n offset += stride * 4;\n }\n }\n uploadUvs(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; ++i) {\n const textureUvs = children[startIndex + i]._texture._uvs;\n if (textureUvs) {\n array[offset] = textureUvs.x0;\n array[offset + 1] = textureUvs.y0;\n array[offset + stride] = textureUvs.x1;\n array[offset + stride + 1] = textureUvs.y1;\n array[offset + stride * 2] = textureUvs.x2;\n array[offset + stride * 2 + 1] = textureUvs.y2;\n array[offset + stride * 3] = textureUvs.x3;\n array[offset + stride * 3 + 1] = textureUvs.y3;\n offset += stride * 4;\n } else {\n array[offset] = 0;\n array[offset + 1] = 0;\n array[offset + stride] = 0;\n array[offset + stride + 1] = 0;\n array[offset + stride * 2] = 0;\n array[offset + stride * 2 + 1] = 0;\n array[offset + stride * 3] = 0;\n array[offset + stride * 3 + 1] = 0;\n offset += stride * 4;\n }\n }\n }\n uploadTint(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; ++i) {\n const sprite = children[startIndex + i];\n const premultiplied = sprite._texture.baseTexture.alphaMode > 0;\n const alpha = sprite.alpha;\n const argb = alpha < 1 && premultiplied ? utils.premultiplyTint(sprite._tintRGB, alpha) : sprite._tintRGB + (alpha * 255 << 24);\n array[offset] = argb;\n array[offset + stride] = argb;\n array[offset + stride * 2] = argb;\n array[offset + stride * 3] = argb;\n offset += stride * 4;\n }\n }\n destroy() {\n super.destroy();\n if (this.shader) {\n this.shader.destroy();\n this.shader = null;\n }\n this.tempMatrix = null;\n }\n}\nParticleRenderer.extension = {\n name: \"particle\",\n type: ExtensionType.RendererPlugin\n};\nextensions.add(ParticleRenderer);\n\nexport { ParticleRenderer };\n//# sourceMappingURL=ParticleRenderer.mjs.map\n","import { settings } from '@pixi/core';\nexport { settings } from '@pixi/core';\n\nsettings.UPLOADS_PER_FRAME = 4;\n//# sourceMappingURL=settings.mjs.map\n","var TEXT_GRADIENT = /* @__PURE__ */ ((TEXT_GRADIENT2) => {\n TEXT_GRADIENT2[TEXT_GRADIENT2[\"LINEAR_VERTICAL\"] = 0] = \"LINEAR_VERTICAL\";\n TEXT_GRADIENT2[TEXT_GRADIENT2[\"LINEAR_HORIZONTAL\"] = 1] = \"LINEAR_HORIZONTAL\";\n return TEXT_GRADIENT2;\n})(TEXT_GRADIENT || {});\n\nexport { TEXT_GRADIENT };\n//# sourceMappingURL=const.mjs.map\n","import { TEXT_GRADIENT } from './const.mjs';\nimport { utils } from '@pixi/core';\n\nconst defaultStyle = {\n align: \"left\",\n breakWords: false,\n dropShadow: false,\n dropShadowAlpha: 1,\n dropShadowAngle: Math.PI / 6,\n dropShadowBlur: 0,\n dropShadowColor: \"black\",\n dropShadowDistance: 5,\n fill: \"black\",\n fillGradientType: TEXT_GRADIENT.LINEAR_VERTICAL,\n fillGradientStops: [],\n fontFamily: \"Arial\",\n fontSize: 26,\n fontStyle: \"normal\",\n fontVariant: \"normal\",\n fontWeight: \"normal\",\n letterSpacing: 0,\n lineHeight: 0,\n lineJoin: \"miter\",\n miterLimit: 10,\n padding: 0,\n stroke: \"black\",\n strokeThickness: 0,\n textBaseline: \"alphabetic\",\n trim: false,\n whiteSpace: \"pre\",\n wordWrap: false,\n wordWrapWidth: 100,\n leading: 0\n};\nconst genericFontFamilies = [\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\"\n];\nclass TextStyle {\n constructor(style) {\n this.styleID = 0;\n this.reset();\n deepCopyProperties(this, style, style);\n }\n clone() {\n const clonedProperties = {};\n deepCopyProperties(clonedProperties, this, defaultStyle);\n return new TextStyle(clonedProperties);\n }\n reset() {\n deepCopyProperties(this, defaultStyle, defaultStyle);\n }\n get align() {\n return this._align;\n }\n set align(align) {\n if (this._align !== align) {\n this._align = align;\n this.styleID++;\n }\n }\n get breakWords() {\n return this._breakWords;\n }\n set breakWords(breakWords) {\n if (this._breakWords !== breakWords) {\n this._breakWords = breakWords;\n this.styleID++;\n }\n }\n get dropShadow() {\n return this._dropShadow;\n }\n set dropShadow(dropShadow) {\n if (this._dropShadow !== dropShadow) {\n this._dropShadow = dropShadow;\n this.styleID++;\n }\n }\n get dropShadowAlpha() {\n return this._dropShadowAlpha;\n }\n set dropShadowAlpha(dropShadowAlpha) {\n if (this._dropShadowAlpha !== dropShadowAlpha) {\n this._dropShadowAlpha = dropShadowAlpha;\n this.styleID++;\n }\n }\n get dropShadowAngle() {\n return this._dropShadowAngle;\n }\n set dropShadowAngle(dropShadowAngle) {\n if (this._dropShadowAngle !== dropShadowAngle) {\n this._dropShadowAngle = dropShadowAngle;\n this.styleID++;\n }\n }\n get dropShadowBlur() {\n return this._dropShadowBlur;\n }\n set dropShadowBlur(dropShadowBlur) {\n if (this._dropShadowBlur !== dropShadowBlur) {\n this._dropShadowBlur = dropShadowBlur;\n this.styleID++;\n }\n }\n get dropShadowColor() {\n return this._dropShadowColor;\n }\n set dropShadowColor(dropShadowColor) {\n const outputColor = getColor(dropShadowColor);\n if (this._dropShadowColor !== outputColor) {\n this._dropShadowColor = outputColor;\n this.styleID++;\n }\n }\n get dropShadowDistance() {\n return this._dropShadowDistance;\n }\n set dropShadowDistance(dropShadowDistance) {\n if (this._dropShadowDistance !== dropShadowDistance) {\n this._dropShadowDistance = dropShadowDistance;\n this.styleID++;\n }\n }\n get fill() {\n return this._fill;\n }\n set fill(fill) {\n const outputColor = getColor(fill);\n if (this._fill !== outputColor) {\n this._fill = outputColor;\n this.styleID++;\n }\n }\n get fillGradientType() {\n return this._fillGradientType;\n }\n set fillGradientType(fillGradientType) {\n if (this._fillGradientType !== fillGradientType) {\n this._fillGradientType = fillGradientType;\n this.styleID++;\n }\n }\n get fillGradientStops() {\n return this._fillGradientStops;\n }\n set fillGradientStops(fillGradientStops) {\n if (!areArraysEqual(this._fillGradientStops, fillGradientStops)) {\n this._fillGradientStops = fillGradientStops;\n this.styleID++;\n }\n }\n get fontFamily() {\n return this._fontFamily;\n }\n set fontFamily(fontFamily) {\n if (this.fontFamily !== fontFamily) {\n this._fontFamily = fontFamily;\n this.styleID++;\n }\n }\n get fontSize() {\n return this._fontSize;\n }\n set fontSize(fontSize) {\n if (this._fontSize !== fontSize) {\n this._fontSize = fontSize;\n this.styleID++;\n }\n }\n get fontStyle() {\n return this._fontStyle;\n }\n set fontStyle(fontStyle) {\n if (this._fontStyle !== fontStyle) {\n this._fontStyle = fontStyle;\n this.styleID++;\n }\n }\n get fontVariant() {\n return this._fontVariant;\n }\n set fontVariant(fontVariant) {\n if (this._fontVariant !== fontVariant) {\n this._fontVariant = fontVariant;\n this.styleID++;\n }\n }\n get fontWeight() {\n return this._fontWeight;\n }\n set fontWeight(fontWeight) {\n if (this._fontWeight !== fontWeight) {\n this._fontWeight = fontWeight;\n this.styleID++;\n }\n }\n get letterSpacing() {\n return this._letterSpacing;\n }\n set letterSpacing(letterSpacing) {\n if (this._letterSpacing !== letterSpacing) {\n this._letterSpacing = letterSpacing;\n this.styleID++;\n }\n }\n get lineHeight() {\n return this._lineHeight;\n }\n set lineHeight(lineHeight) {\n if (this._lineHeight !== lineHeight) {\n this._lineHeight = lineHeight;\n this.styleID++;\n }\n }\n get leading() {\n return this._leading;\n }\n set leading(leading) {\n if (this._leading !== leading) {\n this._leading = leading;\n this.styleID++;\n }\n }\n get lineJoin() {\n return this._lineJoin;\n }\n set lineJoin(lineJoin) {\n if (this._lineJoin !== lineJoin) {\n this._lineJoin = lineJoin;\n this.styleID++;\n }\n }\n get miterLimit() {\n return this._miterLimit;\n }\n set miterLimit(miterLimit) {\n if (this._miterLimit !== miterLimit) {\n this._miterLimit = miterLimit;\n this.styleID++;\n }\n }\n get padding() {\n return this._padding;\n }\n set padding(padding) {\n if (this._padding !== padding) {\n this._padding = padding;\n this.styleID++;\n }\n }\n get stroke() {\n return this._stroke;\n }\n set stroke(stroke) {\n const outputColor = getColor(stroke);\n if (this._stroke !== outputColor) {\n this._stroke = outputColor;\n this.styleID++;\n }\n }\n get strokeThickness() {\n return this._strokeThickness;\n }\n set strokeThickness(strokeThickness) {\n if (this._strokeThickness !== strokeThickness) {\n this._strokeThickness = strokeThickness;\n this.styleID++;\n }\n }\n get textBaseline() {\n return this._textBaseline;\n }\n set textBaseline(textBaseline) {\n if (this._textBaseline !== textBaseline) {\n this._textBaseline = textBaseline;\n this.styleID++;\n }\n }\n get trim() {\n return this._trim;\n }\n set trim(trim) {\n if (this._trim !== trim) {\n this._trim = trim;\n this.styleID++;\n }\n }\n get whiteSpace() {\n return this._whiteSpace;\n }\n set whiteSpace(whiteSpace) {\n if (this._whiteSpace !== whiteSpace) {\n this._whiteSpace = whiteSpace;\n this.styleID++;\n }\n }\n get wordWrap() {\n return this._wordWrap;\n }\n set wordWrap(wordWrap) {\n if (this._wordWrap !== wordWrap) {\n this._wordWrap = wordWrap;\n this.styleID++;\n }\n }\n get wordWrapWidth() {\n return this._wordWrapWidth;\n }\n set wordWrapWidth(wordWrapWidth) {\n if (this._wordWrapWidth !== wordWrapWidth) {\n this._wordWrapWidth = wordWrapWidth;\n this.styleID++;\n }\n }\n toFontString() {\n const fontSizeString = typeof this.fontSize === \"number\" ? `${this.fontSize}px` : this.fontSize;\n let fontFamilies = this.fontFamily;\n if (!Array.isArray(this.fontFamily)) {\n fontFamilies = this.fontFamily.split(\",\");\n }\n for (let i = fontFamilies.length - 1; i >= 0; i--) {\n let fontFamily = fontFamilies[i].trim();\n if (!/([\\\"\\'])[^\\'\\\"]+\\1/.test(fontFamily) && !genericFontFamilies.includes(fontFamily)) {\n fontFamily = `\"${fontFamily}\"`;\n }\n fontFamilies[i] = fontFamily;\n }\n return `${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${fontSizeString} ${fontFamilies.join(\",\")}`;\n }\n}\nfunction getSingleColor(color) {\n if (typeof color === \"number\") {\n return utils.hex2string(color);\n } else if (typeof color === \"string\") {\n if (color.startsWith(\"0x\")) {\n color = color.replace(\"0x\", \"#\");\n }\n }\n return color;\n}\nfunction getColor(color) {\n if (!Array.isArray(color)) {\n return getSingleColor(color);\n } else {\n for (let i = 0; i < color.length; ++i) {\n color[i] = getSingleColor(color[i]);\n }\n return color;\n }\n}\nfunction areArraysEqual(array1, array2) {\n if (!Array.isArray(array1) || !Array.isArray(array2)) {\n return false;\n }\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction deepCopyProperties(target, source, propertyObj) {\n for (const prop in propertyObj) {\n if (Array.isArray(source[prop])) {\n target[prop] = source[prop].slice();\n } else {\n target[prop] = source[prop];\n }\n }\n}\n\nexport { TextStyle };\n//# sourceMappingURL=TextStyle.mjs.map\n","import { settings } from '@pixi/core';\n\nconst contextSettings = {\n willReadFrequently: true\n};\nclass TextMetrics {\n constructor(text, style, width, height, lines, lineWidths, lineHeight, maxLineWidth, fontProperties) {\n this.text = text;\n this.style = style;\n this.width = width;\n this.height = height;\n this.lines = lines;\n this.lineWidths = lineWidths;\n this.lineHeight = lineHeight;\n this.maxLineWidth = maxLineWidth;\n this.fontProperties = fontProperties;\n }\n static measureText(text, style, wordWrap, canvas = TextMetrics._canvas) {\n wordWrap = wordWrap === void 0 || wordWrap === null ? style.wordWrap : wordWrap;\n const font = style.toFontString();\n const fontProperties = TextMetrics.measureFont(font);\n if (fontProperties.fontSize === 0) {\n fontProperties.fontSize = style.fontSize;\n fontProperties.ascent = style.fontSize;\n }\n const context = canvas.getContext(\"2d\", contextSettings);\n context.font = font;\n const outputText = wordWrap ? TextMetrics.wordWrap(text, style, canvas) : text;\n const lines = outputText.split(/(?:\\r\\n|\\r|\\n)/);\n const lineWidths = new Array(lines.length);\n let maxLineWidth = 0;\n for (let i = 0; i < lines.length; i++) {\n const lineWidth = context.measureText(lines[i]).width + (lines[i].length - 1) * style.letterSpacing;\n lineWidths[i] = lineWidth;\n maxLineWidth = Math.max(maxLineWidth, lineWidth);\n }\n let width = maxLineWidth + style.strokeThickness;\n if (style.dropShadow) {\n width += style.dropShadowDistance;\n }\n const lineHeight = style.lineHeight || fontProperties.fontSize + style.strokeThickness;\n let height = Math.max(lineHeight, fontProperties.fontSize + style.strokeThickness) + (lines.length - 1) * (lineHeight + style.leading);\n if (style.dropShadow) {\n height += style.dropShadowDistance;\n }\n return new TextMetrics(text, style, width, height, lines, lineWidths, lineHeight + style.leading, maxLineWidth, fontProperties);\n }\n static wordWrap(text, style, canvas = TextMetrics._canvas) {\n const context = canvas.getContext(\"2d\", contextSettings);\n let width = 0;\n let line = \"\";\n let lines = \"\";\n const cache = /* @__PURE__ */ Object.create(null);\n const { letterSpacing, whiteSpace } = style;\n const collapseSpaces = TextMetrics.collapseSpaces(whiteSpace);\n const collapseNewlines = TextMetrics.collapseNewlines(whiteSpace);\n let canPrependSpaces = !collapseSpaces;\n const wordWrapWidth = style.wordWrapWidth + letterSpacing;\n const tokens = TextMetrics.tokenize(text);\n for (let i = 0; i < tokens.length; i++) {\n let token = tokens[i];\n if (TextMetrics.isNewline(token)) {\n if (!collapseNewlines) {\n lines += TextMetrics.addLine(line);\n canPrependSpaces = !collapseSpaces;\n line = \"\";\n width = 0;\n continue;\n }\n token = \" \";\n }\n if (collapseSpaces) {\n const currIsBreakingSpace = TextMetrics.isBreakingSpace(token);\n const lastIsBreakingSpace = TextMetrics.isBreakingSpace(line[line.length - 1]);\n if (currIsBreakingSpace && lastIsBreakingSpace) {\n continue;\n }\n }\n const tokenWidth = TextMetrics.getFromCache(token, letterSpacing, cache, context);\n if (tokenWidth > wordWrapWidth) {\n if (line !== \"\") {\n lines += TextMetrics.addLine(line);\n line = \"\";\n width = 0;\n }\n if (TextMetrics.canBreakWords(token, style.breakWords)) {\n const characters = TextMetrics.wordWrapSplit(token);\n for (let j = 0; j < characters.length; j++) {\n let char = characters[j];\n let k = 1;\n while (characters[j + k]) {\n const nextChar = characters[j + k];\n const lastChar = char[char.length - 1];\n if (!TextMetrics.canBreakChars(lastChar, nextChar, token, j, style.breakWords)) {\n char += nextChar;\n } else {\n break;\n }\n k++;\n }\n j += char.length - 1;\n const characterWidth = TextMetrics.getFromCache(char, letterSpacing, cache, context);\n if (characterWidth + width > wordWrapWidth) {\n lines += TextMetrics.addLine(line);\n canPrependSpaces = false;\n line = \"\";\n width = 0;\n }\n line += char;\n width += characterWidth;\n }\n } else {\n if (line.length > 0) {\n lines += TextMetrics.addLine(line);\n line = \"\";\n width = 0;\n }\n const isLastToken = i === tokens.length - 1;\n lines += TextMetrics.addLine(token, !isLastToken);\n canPrependSpaces = false;\n line = \"\";\n width = 0;\n }\n } else {\n if (tokenWidth + width > wordWrapWidth) {\n canPrependSpaces = false;\n lines += TextMetrics.addLine(line);\n line = \"\";\n width = 0;\n }\n if (line.length > 0 || !TextMetrics.isBreakingSpace(token) || canPrependSpaces) {\n line += token;\n width += tokenWidth;\n }\n }\n }\n lines += TextMetrics.addLine(line, false);\n return lines;\n }\n static addLine(line, newLine = true) {\n line = TextMetrics.trimRight(line);\n line = newLine ? `${line}\n` : line;\n return line;\n }\n static getFromCache(key, letterSpacing, cache, context) {\n let width = cache[key];\n if (typeof width !== \"number\") {\n const spacing = key.length * letterSpacing;\n width = context.measureText(key).width + spacing;\n cache[key] = width;\n }\n return width;\n }\n static collapseSpaces(whiteSpace) {\n return whiteSpace === \"normal\" || whiteSpace === \"pre-line\";\n }\n static collapseNewlines(whiteSpace) {\n return whiteSpace === \"normal\";\n }\n static trimRight(text) {\n if (typeof text !== \"string\") {\n return \"\";\n }\n for (let i = text.length - 1; i >= 0; i--) {\n const char = text[i];\n if (!TextMetrics.isBreakingSpace(char)) {\n break;\n }\n text = text.slice(0, -1);\n }\n return text;\n }\n static isNewline(char) {\n if (typeof char !== \"string\") {\n return false;\n }\n return TextMetrics._newlines.includes(char.charCodeAt(0));\n }\n static isBreakingSpace(char, _nextChar) {\n if (typeof char !== \"string\") {\n return false;\n }\n return TextMetrics._breakingSpaces.includes(char.charCodeAt(0));\n }\n static tokenize(text) {\n const tokens = [];\n let token = \"\";\n if (typeof text !== \"string\") {\n return tokens;\n }\n for (let i = 0; i < text.length; i++) {\n const char = text[i];\n const nextChar = text[i + 1];\n if (TextMetrics.isBreakingSpace(char, nextChar) || TextMetrics.isNewline(char)) {\n if (token !== \"\") {\n tokens.push(token);\n token = \"\";\n }\n tokens.push(char);\n continue;\n }\n token += char;\n }\n if (token !== \"\") {\n tokens.push(token);\n }\n return tokens;\n }\n static canBreakWords(_token, breakWords) {\n return breakWords;\n }\n static canBreakChars(_char, _nextChar, _token, _index, _breakWords) {\n return true;\n }\n static wordWrapSplit(token) {\n return token.split(\"\");\n }\n static measureFont(font) {\n if (TextMetrics._fonts[font]) {\n return TextMetrics._fonts[font];\n }\n const properties = {\n ascent: 0,\n descent: 0,\n fontSize: 0\n };\n const canvas = TextMetrics._canvas;\n const context = TextMetrics._context;\n context.font = font;\n const metricsString = TextMetrics.METRICS_STRING + TextMetrics.BASELINE_SYMBOL;\n const width = Math.ceil(context.measureText(metricsString).width);\n let baseline = Math.ceil(context.measureText(TextMetrics.BASELINE_SYMBOL).width);\n const height = Math.ceil(TextMetrics.HEIGHT_MULTIPLIER * baseline);\n baseline = baseline * TextMetrics.BASELINE_MULTIPLIER | 0;\n canvas.width = width;\n canvas.height = height;\n context.fillStyle = \"#f00\";\n context.fillRect(0, 0, width, height);\n context.font = font;\n context.textBaseline = \"alphabetic\";\n context.fillStyle = \"#000\";\n context.fillText(metricsString, 0, baseline);\n const imagedata = context.getImageData(0, 0, width, height).data;\n const pixels = imagedata.length;\n const line = width * 4;\n let i = 0;\n let idx = 0;\n let stop = false;\n for (i = 0; i < baseline; ++i) {\n for (let j = 0; j < line; j += 4) {\n if (imagedata[idx + j] !== 255) {\n stop = true;\n break;\n }\n }\n if (!stop) {\n idx += line;\n } else {\n break;\n }\n }\n properties.ascent = baseline - i;\n idx = pixels - line;\n stop = false;\n for (i = height; i > baseline; --i) {\n for (let j = 0; j < line; j += 4) {\n if (imagedata[idx + j] !== 255) {\n stop = true;\n break;\n }\n }\n if (!stop) {\n idx -= line;\n } else {\n break;\n }\n }\n properties.descent = i - baseline;\n properties.fontSize = properties.ascent + properties.descent;\n TextMetrics._fonts[font] = properties;\n return properties;\n }\n static clearMetrics(font = \"\") {\n if (font) {\n delete TextMetrics._fonts[font];\n } else {\n TextMetrics._fonts = {};\n }\n }\n static get _canvas() {\n if (!TextMetrics.__canvas) {\n let canvas;\n try {\n const c = new OffscreenCanvas(0, 0);\n const context = c.getContext(\"2d\", contextSettings);\n if (context?.measureText) {\n TextMetrics.__canvas = c;\n return c;\n }\n canvas = settings.ADAPTER.createCanvas();\n } catch (ex) {\n canvas = settings.ADAPTER.createCanvas();\n }\n canvas.width = canvas.height = 10;\n TextMetrics.__canvas = canvas;\n }\n return TextMetrics.__canvas;\n }\n static get _context() {\n if (!TextMetrics.__context) {\n TextMetrics.__context = TextMetrics._canvas.getContext(\"2d\", contextSettings);\n }\n return TextMetrics.__context;\n }\n}\nTextMetrics._fonts = {};\nTextMetrics.METRICS_STRING = \"|\\xC9q\\xC5\";\nTextMetrics.BASELINE_SYMBOL = \"M\";\nTextMetrics.BASELINE_MULTIPLIER = 1.4;\nTextMetrics.HEIGHT_MULTIPLIER = 2;\nTextMetrics._newlines = [\n 10,\n 13\n];\nTextMetrics._breakingSpaces = [\n 9,\n 32,\n 8192,\n 8193,\n 8194,\n 8195,\n 8196,\n 8197,\n 8198,\n 8200,\n 8201,\n 8202,\n 8287,\n 12288\n];\n\nexport { TextMetrics };\n//# sourceMappingURL=TextMetrics.mjs.map\n","import { Sprite } from '@pixi/sprite';\nimport { settings, Texture, Rectangle, utils } from '@pixi/core';\nimport { TEXT_GRADIENT } from './const.mjs';\nimport { TextStyle } from './TextStyle.mjs';\nimport { TextMetrics } from './TextMetrics.mjs';\n\nconst defaultDestroyOptions = {\n texture: true,\n children: false,\n baseTexture: true\n};\nconst _Text = class extends Sprite {\n constructor(text, style, canvas) {\n let ownCanvas = false;\n if (!canvas) {\n canvas = settings.ADAPTER.createCanvas();\n ownCanvas = true;\n }\n canvas.width = 3;\n canvas.height = 3;\n const texture = Texture.from(canvas);\n texture.orig = new Rectangle();\n texture.trim = new Rectangle();\n super(texture);\n this._ownCanvas = ownCanvas;\n this.canvas = canvas;\n this.context = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n this._resolution = settings.RESOLUTION;\n this._autoResolution = true;\n this._text = null;\n this._style = null;\n this._styleListener = null;\n this._font = \"\";\n this.text = text;\n this.style = style;\n this.localStyleID = -1;\n }\n updateText(respectDirty) {\n const style = this._style;\n if (this.localStyleID !== style.styleID) {\n this.dirty = true;\n this.localStyleID = style.styleID;\n }\n if (!this.dirty && respectDirty) {\n return;\n }\n this._font = this._style.toFontString();\n const context = this.context;\n const measured = TextMetrics.measureText(this._text || \" \", this._style, this._style.wordWrap, this.canvas);\n const width = measured.width;\n const height = measured.height;\n const lines = measured.lines;\n const lineHeight = measured.lineHeight;\n const lineWidths = measured.lineWidths;\n const maxLineWidth = measured.maxLineWidth;\n const fontProperties = measured.fontProperties;\n this.canvas.width = Math.ceil(Math.ceil(Math.max(1, width) + style.padding * 2) * this._resolution);\n this.canvas.height = Math.ceil(Math.ceil(Math.max(1, height) + style.padding * 2) * this._resolution);\n context.scale(this._resolution, this._resolution);\n context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n context.font = this._font;\n context.lineWidth = style.strokeThickness;\n context.textBaseline = style.textBaseline;\n context.lineJoin = style.lineJoin;\n context.miterLimit = style.miterLimit;\n let linePositionX;\n let linePositionY;\n const passesCount = style.dropShadow ? 2 : 1;\n for (let i = 0; i < passesCount; ++i) {\n const isShadowPass = style.dropShadow && i === 0;\n const dsOffsetText = isShadowPass ? Math.ceil(Math.max(1, height) + style.padding * 2) : 0;\n const dsOffsetShadow = dsOffsetText * this._resolution;\n if (isShadowPass) {\n context.fillStyle = \"black\";\n context.strokeStyle = \"black\";\n const dropShadowColor = style.dropShadowColor;\n const rgb = utils.hex2rgb(typeof dropShadowColor === \"number\" ? dropShadowColor : utils.string2hex(dropShadowColor));\n const dropShadowBlur = style.dropShadowBlur * this._resolution;\n const dropShadowDistance = style.dropShadowDistance * this._resolution;\n context.shadowColor = `rgba(${rgb[0] * 255},${rgb[1] * 255},${rgb[2] * 255},${style.dropShadowAlpha})`;\n context.shadowBlur = dropShadowBlur;\n context.shadowOffsetX = Math.cos(style.dropShadowAngle) * dropShadowDistance;\n context.shadowOffsetY = Math.sin(style.dropShadowAngle) * dropShadowDistance + dsOffsetShadow;\n } else {\n context.fillStyle = this._generateFillStyle(style, lines, measured);\n context.strokeStyle = style.stroke;\n context.shadowColor = \"black\";\n context.shadowBlur = 0;\n context.shadowOffsetX = 0;\n context.shadowOffsetY = 0;\n }\n let linePositionYShift = (lineHeight - fontProperties.fontSize) / 2;\n if (lineHeight - fontProperties.fontSize < 0) {\n linePositionYShift = 0;\n }\n for (let i2 = 0; i2 < lines.length; i2++) {\n linePositionX = style.strokeThickness / 2;\n linePositionY = style.strokeThickness / 2 + i2 * lineHeight + fontProperties.ascent + linePositionYShift;\n if (style.align === \"right\") {\n linePositionX += maxLineWidth - lineWidths[i2];\n } else if (style.align === \"center\") {\n linePositionX += (maxLineWidth - lineWidths[i2]) / 2;\n }\n if (style.stroke && style.strokeThickness) {\n this.drawLetterSpacing(lines[i2], linePositionX + style.padding, linePositionY + style.padding - dsOffsetText, true);\n }\n if (style.fill) {\n this.drawLetterSpacing(lines[i2], linePositionX + style.padding, linePositionY + style.padding - dsOffsetText);\n }\n }\n }\n this.updateTexture();\n }\n drawLetterSpacing(text, x, y, isStroke = false) {\n const style = this._style;\n const letterSpacing = style.letterSpacing;\n const supportLetterSpacing = _Text.experimentalLetterSpacing && (\"letterSpacing\" in CanvasRenderingContext2D.prototype || \"textLetterSpacing\" in CanvasRenderingContext2D.prototype);\n if (letterSpacing === 0 || supportLetterSpacing) {\n if (supportLetterSpacing) {\n this.context.letterSpacing = letterSpacing;\n this.context.textLetterSpacing = letterSpacing;\n }\n if (isStroke) {\n this.context.strokeText(text, x, y);\n } else {\n this.context.fillText(text, x, y);\n }\n return;\n }\n let currentPosition = x;\n const stringArray = Array.from ? Array.from(text) : text.split(\"\");\n let previousWidth = this.context.measureText(text).width;\n let currentWidth = 0;\n for (let i = 0; i < stringArray.length; ++i) {\n const currentChar = stringArray[i];\n if (isStroke) {\n this.context.strokeText(currentChar, currentPosition, y);\n } else {\n this.context.fillText(currentChar, currentPosition, y);\n }\n let textStr = \"\";\n for (let j = i + 1; j < stringArray.length; ++j) {\n textStr += stringArray[j];\n }\n currentWidth = this.context.measureText(textStr).width;\n currentPosition += previousWidth - currentWidth + letterSpacing;\n previousWidth = currentWidth;\n }\n }\n updateTexture() {\n const canvas = this.canvas;\n if (this._style.trim) {\n const trimmed = utils.trimCanvas(canvas);\n if (trimmed.data) {\n canvas.width = trimmed.width;\n canvas.height = trimmed.height;\n this.context.putImageData(trimmed.data, 0, 0);\n }\n }\n const texture = this._texture;\n const style = this._style;\n const padding = style.trim ? 0 : style.padding;\n const baseTexture = texture.baseTexture;\n texture.trim.width = texture._frame.width = canvas.width / this._resolution;\n texture.trim.height = texture._frame.height = canvas.height / this._resolution;\n texture.trim.x = -padding;\n texture.trim.y = -padding;\n texture.orig.width = texture._frame.width - padding * 2;\n texture.orig.height = texture._frame.height - padding * 2;\n this._onTextureUpdate();\n baseTexture.setRealSize(canvas.width, canvas.height, this._resolution);\n texture.updateUvs();\n this.dirty = false;\n }\n _render(renderer) {\n if (this._autoResolution && this._resolution !== renderer.resolution) {\n this._resolution = renderer.resolution;\n this.dirty = true;\n }\n this.updateText(true);\n super._render(renderer);\n }\n updateTransform() {\n this.updateText(true);\n super.updateTransform();\n }\n getBounds(skipUpdate, rect) {\n this.updateText(true);\n if (this._textureID === -1) {\n skipUpdate = false;\n }\n return super.getBounds(skipUpdate, rect);\n }\n getLocalBounds(rect) {\n this.updateText(true);\n return super.getLocalBounds.call(this, rect);\n }\n _calculateBounds() {\n this.calculateVertices();\n this._bounds.addQuad(this.vertexData);\n }\n _generateFillStyle(style, lines, metrics) {\n const fillStyle = style.fill;\n if (!Array.isArray(fillStyle)) {\n return fillStyle;\n } else if (fillStyle.length === 1) {\n return fillStyle[0];\n }\n let gradient;\n const dropShadowCorrection = style.dropShadow ? style.dropShadowDistance : 0;\n const padding = style.padding || 0;\n const width = this.canvas.width / this._resolution - dropShadowCorrection - padding * 2;\n const height = this.canvas.height / this._resolution - dropShadowCorrection - padding * 2;\n const fill = fillStyle.slice();\n const fillGradientStops = style.fillGradientStops.slice();\n if (!fillGradientStops.length) {\n const lengthPlus1 = fill.length + 1;\n for (let i = 1; i < lengthPlus1; ++i) {\n fillGradientStops.push(i / lengthPlus1);\n }\n }\n fill.unshift(fillStyle[0]);\n fillGradientStops.unshift(0);\n fill.push(fillStyle[fillStyle.length - 1]);\n fillGradientStops.push(1);\n if (style.fillGradientType === TEXT_GRADIENT.LINEAR_VERTICAL) {\n gradient = this.context.createLinearGradient(width / 2, padding, width / 2, height + padding);\n const textHeight = metrics.fontProperties.fontSize + style.strokeThickness;\n for (let i = 0; i < lines.length; i++) {\n const lastLineBottom = metrics.lineHeight * (i - 1) + textHeight;\n const thisLineTop = metrics.lineHeight * i;\n let thisLineGradientStart = thisLineTop;\n if (i > 0 && lastLineBottom > thisLineTop) {\n thisLineGradientStart = (thisLineTop + lastLineBottom) / 2;\n }\n const thisLineBottom = thisLineTop + textHeight;\n const nextLineTop = metrics.lineHeight * (i + 1);\n let thisLineGradientEnd = thisLineBottom;\n if (i + 1 < lines.length && nextLineTop < thisLineBottom) {\n thisLineGradientEnd = (thisLineBottom + nextLineTop) / 2;\n }\n const gradStopLineHeight = (thisLineGradientEnd - thisLineGradientStart) / height;\n for (let j = 0; j < fill.length; j++) {\n let lineStop = 0;\n if (typeof fillGradientStops[j] === \"number\") {\n lineStop = fillGradientStops[j];\n } else {\n lineStop = j / fill.length;\n }\n let globalStop = Math.min(1, Math.max(0, thisLineGradientStart / height + lineStop * gradStopLineHeight));\n globalStop = Number(globalStop.toFixed(5));\n gradient.addColorStop(globalStop, fill[j]);\n }\n }\n } else {\n gradient = this.context.createLinearGradient(padding, height / 2, width + padding, height / 2);\n const totalIterations = fill.length + 1;\n let currentIteration = 1;\n for (let i = 0; i < fill.length; i++) {\n let stop;\n if (typeof fillGradientStops[i] === \"number\") {\n stop = fillGradientStops[i];\n } else {\n stop = currentIteration / totalIterations;\n }\n gradient.addColorStop(stop, fill[i]);\n currentIteration++;\n }\n }\n return gradient;\n }\n destroy(options) {\n if (typeof options === \"boolean\") {\n options = { children: options };\n }\n options = Object.assign({}, defaultDestroyOptions, options);\n super.destroy(options);\n if (this._ownCanvas) {\n this.canvas.height = this.canvas.width = 0;\n }\n this.context = null;\n this.canvas = null;\n this._style = null;\n }\n get width() {\n this.updateText(true);\n return Math.abs(this.scale.x) * this._texture.orig.width;\n }\n set width(value) {\n this.updateText(true);\n const s = utils.sign(this.scale.x) || 1;\n this.scale.x = s * value / this._texture.orig.width;\n this._width = value;\n }\n get height() {\n this.updateText(true);\n return Math.abs(this.scale.y) * this._texture.orig.height;\n }\n set height(value) {\n this.updateText(true);\n const s = utils.sign(this.scale.y) || 1;\n this.scale.y = s * value / this._texture.orig.height;\n this._height = value;\n }\n get style() {\n return this._style;\n }\n set style(style) {\n style = style || {};\n if (style instanceof TextStyle) {\n this._style = style;\n } else {\n this._style = new TextStyle(style);\n }\n this.localStyleID = -1;\n this.dirty = true;\n }\n get text() {\n return this._text;\n }\n set text(text) {\n text = String(text === null || text === void 0 ? \"\" : text);\n if (this._text === text) {\n return;\n }\n this._text = text;\n this.dirty = true;\n }\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._autoResolution = false;\n if (this._resolution === value) {\n return;\n }\n this._resolution = value;\n this.dirty = true;\n }\n};\nlet Text = _Text;\nText.experimentalLetterSpacing = false;\n\nexport { Text };\n//# sourceMappingURL=Text.mjs.map\n","class CountLimiter {\n constructor(maxItemsPerFrame) {\n this.maxItemsPerFrame = maxItemsPerFrame;\n this.itemsLeft = 0;\n }\n beginFrame() {\n this.itemsLeft = this.maxItemsPerFrame;\n }\n allowedToUpload() {\n return this.itemsLeft-- > 0;\n }\n}\n\nexport { CountLimiter };\n//# sourceMappingURL=CountLimiter.mjs.map\n","import { Texture, BaseTexture, settings, Ticker, UPDATE_PRIORITY } from '@pixi/core';\nimport { Container } from '@pixi/display';\nimport { Text, TextStyle, TextMetrics } from '@pixi/text';\nimport { CountLimiter } from './CountLimiter.mjs';\n\nfunction findMultipleBaseTextures(item, queue) {\n let result = false;\n if (item?._textures?.length) {\n for (let i = 0; i < item._textures.length; i++) {\n if (item._textures[i] instanceof Texture) {\n const baseTexture = item._textures[i].baseTexture;\n if (!queue.includes(baseTexture)) {\n queue.push(baseTexture);\n result = true;\n }\n }\n }\n }\n return result;\n}\nfunction findBaseTexture(item, queue) {\n if (item.baseTexture instanceof BaseTexture) {\n const texture = item.baseTexture;\n if (!queue.includes(texture)) {\n queue.push(texture);\n }\n return true;\n }\n return false;\n}\nfunction findTexture(item, queue) {\n if (item._texture && item._texture instanceof Texture) {\n const texture = item._texture.baseTexture;\n if (!queue.includes(texture)) {\n queue.push(texture);\n }\n return true;\n }\n return false;\n}\nfunction drawText(_helper, item) {\n if (item instanceof Text) {\n item.updateText(true);\n return true;\n }\n return false;\n}\nfunction calculateTextStyle(_helper, item) {\n if (item instanceof TextStyle) {\n const font = item.toFontString();\n TextMetrics.measureFont(font);\n return true;\n }\n return false;\n}\nfunction findText(item, queue) {\n if (item instanceof Text) {\n if (!queue.includes(item.style)) {\n queue.push(item.style);\n }\n if (!queue.includes(item)) {\n queue.push(item);\n }\n const texture = item._texture.baseTexture;\n if (!queue.includes(texture)) {\n queue.push(texture);\n }\n return true;\n }\n return false;\n}\nfunction findTextStyle(item, queue) {\n if (item instanceof TextStyle) {\n if (!queue.includes(item)) {\n queue.push(item);\n }\n return true;\n }\n return false;\n}\nclass BasePrepare {\n constructor(renderer) {\n this.limiter = new CountLimiter(settings.UPLOADS_PER_FRAME);\n this.renderer = renderer;\n this.uploadHookHelper = null;\n this.queue = [];\n this.addHooks = [];\n this.uploadHooks = [];\n this.completes = [];\n this.ticking = false;\n this.delayedTick = () => {\n if (!this.queue) {\n return;\n }\n this.prepareItems();\n };\n this.registerFindHook(findText);\n this.registerFindHook(findTextStyle);\n this.registerFindHook(findMultipleBaseTextures);\n this.registerFindHook(findBaseTexture);\n this.registerFindHook(findTexture);\n this.registerUploadHook(drawText);\n this.registerUploadHook(calculateTextStyle);\n }\n upload(item) {\n return new Promise((resolve) => {\n if (item) {\n this.add(item);\n }\n if (this.queue.length) {\n this.completes.push(resolve);\n if (!this.ticking) {\n this.ticking = true;\n Ticker.system.addOnce(this.tick, this, UPDATE_PRIORITY.UTILITY);\n }\n } else {\n resolve();\n }\n });\n }\n tick() {\n setTimeout(this.delayedTick, 0);\n }\n prepareItems() {\n this.limiter.beginFrame();\n while (this.queue.length && this.limiter.allowedToUpload()) {\n const item = this.queue[0];\n let uploaded = false;\n if (item && !item._destroyed) {\n for (let i = 0, len = this.uploadHooks.length; i < len; i++) {\n if (this.uploadHooks[i](this.uploadHookHelper, item)) {\n this.queue.shift();\n uploaded = true;\n break;\n }\n }\n }\n if (!uploaded) {\n this.queue.shift();\n }\n }\n if (!this.queue.length) {\n this.ticking = false;\n const completes = this.completes.slice(0);\n this.completes.length = 0;\n for (let i = 0, len = completes.length; i < len; i++) {\n completes[i]();\n }\n } else {\n Ticker.system.addOnce(this.tick, this, UPDATE_PRIORITY.UTILITY);\n }\n }\n registerFindHook(addHook) {\n if (addHook) {\n this.addHooks.push(addHook);\n }\n return this;\n }\n registerUploadHook(uploadHook) {\n if (uploadHook) {\n this.uploadHooks.push(uploadHook);\n }\n return this;\n }\n add(item) {\n for (let i = 0, len = this.addHooks.length; i < len; i++) {\n if (this.addHooks[i](item, this.queue)) {\n break;\n }\n }\n if (item instanceof Container) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n this.add(item.children[i]);\n }\n }\n return this;\n }\n destroy() {\n if (this.ticking) {\n Ticker.system.remove(this.tick, this);\n }\n this.ticking = false;\n this.addHooks = null;\n this.uploadHooks = null;\n this.renderer = null;\n this.completes = null;\n this.queue = null;\n this.limiter = null;\n this.uploadHookHelper = null;\n }\n}\n\nexport { BasePrepare };\n//# sourceMappingURL=BasePrepare.mjs.map\n","import { BaseTexture, ExtensionType, extensions } from '@pixi/core';\nimport { Graphics } from '@pixi/graphics';\nimport { BasePrepare } from './BasePrepare.mjs';\n\nfunction uploadBaseTextures(renderer, item) {\n if (item instanceof BaseTexture) {\n if (!item._glTextures[renderer.CONTEXT_UID]) {\n renderer.texture.bind(item);\n }\n return true;\n }\n return false;\n}\nfunction uploadGraphics(renderer, item) {\n if (!(item instanceof Graphics)) {\n return false;\n }\n const { geometry } = item;\n item.finishPoly();\n geometry.updateBatches();\n const { batches } = geometry;\n for (let i = 0; i < batches.length; i++) {\n const { texture } = batches[i].style;\n if (texture) {\n uploadBaseTextures(renderer, texture.baseTexture);\n }\n }\n if (!geometry.batchable) {\n renderer.geometry.bind(geometry, item._resolveDirectShader(renderer));\n }\n return true;\n}\nfunction findGraphics(item, queue) {\n if (item instanceof Graphics) {\n queue.push(item);\n return true;\n }\n return false;\n}\nclass Prepare extends BasePrepare {\n constructor(renderer) {\n super(renderer);\n this.uploadHookHelper = this.renderer;\n this.registerFindHook(findGraphics);\n this.registerUploadHook(uploadBaseTextures);\n this.registerUploadHook(uploadGraphics);\n }\n}\nPrepare.extension = {\n name: \"prepare\",\n type: ExtensionType.RendererSystem\n};\nextensions.add(Prepare);\n\nexport { Prepare };\n//# sourceMappingURL=Prepare.mjs.map\n","class TimeLimiter {\n constructor(maxMilliseconds) {\n this.maxMilliseconds = maxMilliseconds;\n this.frameStart = 0;\n }\n beginFrame() {\n this.frameStart = Date.now();\n }\n allowedToUpload() {\n return Date.now() - this.frameStart < this.maxMilliseconds;\n }\n}\n\nexport { TimeLimiter };\n//# sourceMappingURL=TimeLimiter.mjs.map\n","import { Texture, BaseTexture, utils, Rectangle } from '@pixi/core';\n\nconst _Spritesheet = class {\n constructor(texture, data, resolutionFilename = null) {\n this.linkedSheets = [];\n this._texture = texture instanceof Texture ? texture : null;\n this.baseTexture = texture instanceof BaseTexture ? texture : this._texture.baseTexture;\n this.textures = {};\n this.animations = {};\n this.data = data;\n const resource = this.baseTexture.resource;\n this.resolution = this._updateResolution(resolutionFilename || (resource ? resource.url : null));\n this._frames = this.data.frames;\n this._frameKeys = Object.keys(this._frames);\n this._batchIndex = 0;\n this._callback = null;\n }\n _updateResolution(resolutionFilename = null) {\n const { scale } = this.data.meta;\n let resolution = utils.getResolutionOfUrl(resolutionFilename, null);\n if (resolution === null) {\n resolution = parseFloat(scale ?? \"1\");\n }\n if (resolution !== 1) {\n this.baseTexture.setResolution(resolution);\n }\n return resolution;\n }\n parse() {\n return new Promise((resolve) => {\n this._callback = resolve;\n this._batchIndex = 0;\n if (this._frameKeys.length <= _Spritesheet.BATCH_SIZE) {\n this._processFrames(0);\n this._processAnimations();\n this._parseComplete();\n } else {\n this._nextBatch();\n }\n });\n }\n _processFrames(initialFrameIndex) {\n let frameIndex = initialFrameIndex;\n const maxFrames = _Spritesheet.BATCH_SIZE;\n while (frameIndex - initialFrameIndex < maxFrames && frameIndex < this._frameKeys.length) {\n const i = this._frameKeys[frameIndex];\n const data = this._frames[i];\n const rect = data.frame;\n if (rect) {\n let frame = null;\n let trim = null;\n const sourceSize = data.trimmed !== false && data.sourceSize ? data.sourceSize : data.frame;\n const orig = new Rectangle(0, 0, Math.floor(sourceSize.w) / this.resolution, Math.floor(sourceSize.h) / this.resolution);\n if (data.rotated) {\n frame = 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);\n } else {\n frame = 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);\n }\n if (data.trimmed !== false && data.spriteSourceSize) {\n 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);\n }\n this.textures[i] = new Texture(this.baseTexture, frame, orig, trim, data.rotated ? 2 : 0, data.anchor);\n Texture.addToCache(this.textures[i], i);\n }\n frameIndex++;\n }\n }\n _processAnimations() {\n const animations = this.data.animations || {};\n for (const animName in animations) {\n this.animations[animName] = [];\n for (let i = 0; i < animations[animName].length; i++) {\n const frameName = animations[animName][i];\n this.animations[animName].push(this.textures[frameName]);\n }\n }\n }\n _parseComplete() {\n const callback = this._callback;\n this._callback = null;\n this._batchIndex = 0;\n callback.call(this, this.textures);\n }\n _nextBatch() {\n this._processFrames(this._batchIndex * _Spritesheet.BATCH_SIZE);\n this._batchIndex++;\n setTimeout(() => {\n if (this._batchIndex * _Spritesheet.BATCH_SIZE < this._frameKeys.length) {\n this._nextBatch();\n } else {\n this._processAnimations();\n this._parseComplete();\n }\n }, 0);\n }\n destroy(destroyBase = false) {\n for (const i in this.textures) {\n this.textures[i].destroy();\n }\n this._frames = null;\n this._frameKeys = null;\n this.data = null;\n this.textures = null;\n if (destroyBase) {\n this._texture?.destroy();\n this.baseTexture.destroy();\n }\n this._texture = null;\n this.baseTexture = null;\n this.linkedSheets = [];\n }\n};\nlet Spritesheet = _Spritesheet;\nSpritesheet.BATCH_SIZE = 1e3;\n\nexport { Spritesheet };\n//# sourceMappingURL=Spritesheet.mjs.map\n","import { utils, ExtensionType, settings, extensions } from '@pixi/core';\nimport { LoaderParserPriority } from '@pixi/assets';\nimport { Spritesheet } from './Spritesheet.mjs';\n\nconst validImages = [\"jpg\", \"png\", \"jpeg\", \"avif\", \"webp\"];\nfunction getCacheableAssets(keys, asset, ignoreMultiPack) {\n const out = {};\n keys.forEach((key) => {\n out[key] = asset;\n });\n Object.keys(asset.textures).forEach((key) => {\n out[key] = asset.textures[key];\n });\n if (!ignoreMultiPack) {\n const basePath = utils.path.dirname(keys[0]);\n asset.linkedSheets.forEach((item, i) => {\n const out2 = getCacheableAssets([`${basePath}/${asset.data.meta.related_multi_packs[i]}`], item, true);\n Object.assign(out, out2);\n });\n }\n return out;\n}\nconst spritesheetAsset = {\n extension: ExtensionType.Asset,\n cache: {\n test: (asset) => asset instanceof Spritesheet,\n getCacheableAssets: (keys, asset) => getCacheableAssets(keys, asset, false)\n },\n resolver: {\n test: (value) => {\n const tempURL = value.split(\"?\")[0];\n const split = tempURL.split(\".\");\n const extension = split.pop();\n const format = split.pop();\n return extension === \"json\" && validImages.includes(format);\n },\n parse: (value) => {\n const split = value.split(\".\");\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: split[split.length - 2],\n src: value\n };\n }\n },\n loader: {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal\n },\n async testParse(asset, options) {\n return utils.path.extname(options.src).includes(\".json\") && !!asset.frames;\n },\n async parse(asset, options, loader) {\n let basePath = utils.path.dirname(options.src);\n if (basePath && basePath.lastIndexOf(\"/\") !== basePath.length - 1) {\n basePath += \"/\";\n }\n const imagePath = basePath + asset.meta.image;\n const assets = await loader.load([imagePath]);\n const texture = assets[imagePath];\n const spritesheet = new Spritesheet(texture.baseTexture, asset, options.src);\n await spritesheet.parse();\n const multiPacks = asset?.meta?.related_multi_packs;\n if (Array.isArray(multiPacks)) {\n const promises = [];\n for (const item of multiPacks) {\n if (typeof item !== \"string\") {\n continue;\n }\n const itemUrl = basePath + item;\n if (options.data?.ignoreMultiPack) {\n continue;\n }\n promises.push(loader.load({\n src: itemUrl,\n data: {\n ignoreMultiPack: true\n }\n }));\n }\n const res = await Promise.all(promises);\n spritesheet.linkedSheets = res;\n res.forEach((item) => {\n item.linkedSheets = [spritesheet].concat(spritesheet.linkedSheets.filter((sp) => sp !== item));\n });\n }\n return spritesheet;\n },\n unload(spritesheet) {\n spritesheet.destroy(true);\n }\n }\n};\nextensions.add(spritesheetAsset);\n\nexport { spritesheetAsset };\n//# sourceMappingURL=spritesheetAsset.mjs.map\n","import { Sprite } from '@pixi/sprite';\nimport { Texture, Ticker, UPDATE_PRIORITY } from '@pixi/core';\n\nclass AnimatedSprite extends Sprite {\n constructor(textures, autoUpdate = true) {\n super(textures[0] instanceof Texture ? textures[0] : textures[0].texture);\n this._textures = null;\n this._durations = null;\n this._autoUpdate = autoUpdate;\n this._isConnectedToTicker = false;\n this.animationSpeed = 1;\n this.loop = true;\n this.updateAnchor = false;\n this.onComplete = null;\n this.onFrameChange = null;\n this.onLoop = null;\n this._currentTime = 0;\n this._playing = false;\n this._previousFrame = null;\n this.textures = textures;\n }\n stop() {\n if (!this._playing) {\n return;\n }\n this._playing = false;\n if (this._autoUpdate && this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n }\n play() {\n if (this._playing) {\n return;\n }\n this._playing = true;\n if (this._autoUpdate && !this._isConnectedToTicker) {\n Ticker.shared.add(this.update, this, UPDATE_PRIORITY.HIGH);\n this._isConnectedToTicker = true;\n }\n }\n gotoAndStop(frameNumber) {\n this.stop();\n this.currentFrame = frameNumber;\n }\n gotoAndPlay(frameNumber) {\n this.currentFrame = frameNumber;\n this.play();\n }\n update(deltaTime) {\n if (!this._playing) {\n return;\n }\n const elapsed = this.animationSpeed * deltaTime;\n const previousFrame = this.currentFrame;\n if (this._durations !== null) {\n let lag = this._currentTime % 1 * this._durations[this.currentFrame];\n lag += elapsed / 60 * 1e3;\n while (lag < 0) {\n this._currentTime--;\n lag += this._durations[this.currentFrame];\n }\n const sign = Math.sign(this.animationSpeed * deltaTime);\n this._currentTime = Math.floor(this._currentTime);\n while (lag >= this._durations[this.currentFrame]) {\n lag -= this._durations[this.currentFrame] * sign;\n this._currentTime += sign;\n }\n this._currentTime += lag / this._durations[this.currentFrame];\n } else {\n this._currentTime += elapsed;\n }\n if (this._currentTime < 0 && !this.loop) {\n this.gotoAndStop(0);\n if (this.onComplete) {\n this.onComplete();\n }\n } else if (this._currentTime >= this._textures.length && !this.loop) {\n this.gotoAndStop(this._textures.length - 1);\n if (this.onComplete) {\n this.onComplete();\n }\n } else if (previousFrame !== this.currentFrame) {\n if (this.loop && this.onLoop) {\n if (this.animationSpeed > 0 && this.currentFrame < previousFrame) {\n this.onLoop();\n } else if (this.animationSpeed < 0 && this.currentFrame > previousFrame) {\n this.onLoop();\n }\n }\n this.updateTexture();\n }\n }\n updateTexture() {\n const currentFrame = this.currentFrame;\n if (this._previousFrame === currentFrame) {\n return;\n }\n this._previousFrame = currentFrame;\n this._texture = this._textures[currentFrame];\n this._textureID = -1;\n this._textureTrimmedID = -1;\n this._cachedTint = 16777215;\n this.uvs = this._texture._uvs.uvsFloat32;\n if (this.updateAnchor) {\n this._anchor.copyFrom(this._texture.defaultAnchor);\n }\n if (this.onFrameChange) {\n this.onFrameChange(this.currentFrame);\n }\n }\n destroy(options) {\n this.stop();\n super.destroy(options);\n this.onComplete = null;\n this.onFrameChange = null;\n this.onLoop = null;\n }\n static fromFrames(frames) {\n const textures = [];\n for (let i = 0; i < frames.length; ++i) {\n textures.push(Texture.from(frames[i]));\n }\n return new AnimatedSprite(textures);\n }\n static fromImages(images) {\n const textures = [];\n for (let i = 0; i < images.length; ++i) {\n textures.push(Texture.from(images[i]));\n }\n return new AnimatedSprite(textures);\n }\n get totalFrames() {\n return this._textures.length;\n }\n get textures() {\n return this._textures;\n }\n set textures(value) {\n if (value[0] instanceof Texture) {\n this._textures = value;\n this._durations = null;\n } else {\n this._textures = [];\n this._durations = [];\n for (let i = 0; i < value.length; i++) {\n this._textures.push(value[i].texture);\n this._durations.push(value[i].time);\n }\n }\n this._previousFrame = null;\n this.gotoAndStop(0);\n this.updateTexture();\n }\n get currentFrame() {\n let currentFrame = Math.floor(this._currentTime) % this._textures.length;\n if (currentFrame < 0) {\n currentFrame += this._textures.length;\n }\n return currentFrame;\n }\n set currentFrame(value) {\n if (value < 0 || value > this.totalFrames - 1) {\n throw new Error(`[AnimatedSprite]: Invalid frame index value ${value}, expected to be between 0 and totalFrames ${this.totalFrames}.`);\n }\n const previousFrame = this.currentFrame;\n this._currentTime = value;\n if (previousFrame !== this.currentFrame) {\n this.updateTexture();\n }\n }\n get playing() {\n return this._playing;\n }\n get autoUpdate() {\n return this._autoUpdate;\n }\n set autoUpdate(value) {\n if (value !== this._autoUpdate) {\n this._autoUpdate = value;\n if (!this._autoUpdate && this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n } else if (this._autoUpdate && !this._isConnectedToTicker && this._playing) {\n Ticker.shared.add(this.update, this);\n this._isConnectedToTicker = true;\n }\n }\n }\n}\n\nexport { AnimatedSprite };\n//# sourceMappingURL=AnimatedSprite.mjs.map\n","import { Point, Transform, TextureMatrix, Rectangle, Texture } from '@pixi/core';\nimport { Sprite } from '@pixi/sprite';\n\nconst tempPoint = new Point();\nclass TilingSprite extends Sprite {\n constructor(texture, width = 100, height = 100) {\n super(texture);\n this.tileTransform = new Transform();\n this._width = width;\n this._height = height;\n this.uvMatrix = this.texture.uvMatrix || new TextureMatrix(texture);\n this.pluginName = \"tilingSprite\";\n this.uvRespectAnchor = false;\n }\n get clampMargin() {\n return this.uvMatrix.clampMargin;\n }\n set clampMargin(value) {\n this.uvMatrix.clampMargin = value;\n this.uvMatrix.update(true);\n }\n get tileScale() {\n return this.tileTransform.scale;\n }\n set tileScale(value) {\n this.tileTransform.scale.copyFrom(value);\n }\n get tilePosition() {\n return this.tileTransform.position;\n }\n set tilePosition(value) {\n this.tileTransform.position.copyFrom(value);\n }\n _onTextureUpdate() {\n if (this.uvMatrix) {\n this.uvMatrix.texture = this._texture;\n }\n this._cachedTint = 16777215;\n }\n _render(renderer) {\n const texture = this._texture;\n if (!texture || !texture.valid) {\n return;\n }\n this.tileTransform.updateLocalTransform();\n this.uvMatrix.update();\n renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]);\n renderer.plugins[this.pluginName].render(this);\n }\n _calculateBounds() {\n const minX = this._width * -this._anchor._x;\n const minY = this._height * -this._anchor._y;\n const maxX = this._width * (1 - this._anchor._x);\n const maxY = this._height * (1 - this._anchor._y);\n this._bounds.addFrame(this.transform, minX, minY, maxX, maxY);\n }\n getLocalBounds(rect) {\n if (this.children.length === 0) {\n this._bounds.minX = this._width * -this._anchor._x;\n this._bounds.minY = this._height * -this._anchor._y;\n this._bounds.maxX = this._width * (1 - this._anchor._x);\n this._bounds.maxY = this._height * (1 - this._anchor._y);\n if (!rect) {\n if (!this._localBoundsRect) {\n this._localBoundsRect = new Rectangle();\n }\n rect = this._localBoundsRect;\n }\n return this._bounds.getRectangle(rect);\n }\n return super.getLocalBounds.call(this, rect);\n }\n containsPoint(point) {\n this.worldTransform.applyInverse(point, tempPoint);\n const width = this._width;\n const height = this._height;\n const x1 = -width * this.anchor._x;\n if (tempPoint.x >= x1 && tempPoint.x < x1 + width) {\n const y1 = -height * this.anchor._y;\n if (tempPoint.y >= y1 && tempPoint.y < y1 + height) {\n return true;\n }\n }\n return false;\n }\n destroy(options) {\n super.destroy(options);\n this.tileTransform = null;\n this.uvMatrix = null;\n }\n static from(source, options) {\n const texture = source instanceof Texture ? source : Texture.from(source, options);\n return new TilingSprite(texture, options.width, options.height);\n }\n get width() {\n return this._width;\n }\n set width(value) {\n this._width = value;\n }\n get height() {\n return this._height;\n }\n set height(value) {\n this._height = value;\n }\n}\n\nexport { TilingSprite };\n//# sourceMappingURL=TilingSprite.mjs.map\n","var fragmentSimpleSrc = \"#version 100\\n#define SHADER_NAME Tiling-Sprite-Simple-100\\n\\nprecision lowp float;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform vec4 uColor;\\n\\nvoid main(void)\\n{\\n vec4 texSample = texture2D(uSampler, vTextureCoord);\\n gl_FragColor = texSample * uColor;\\n}\\n\";\n\nexport { fragmentSimpleSrc as default };\n//# sourceMappingURL=sprite-tiling-simple.mjs.map\n","var gl1VertexSrc = \"#version 100\\n#define SHADER_NAME Tiling-Sprite-100\\n\\nprecision lowp float;\\n\\nattribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 translationMatrix;\\nuniform mat3 uTransform;\\n\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\\n}\\n\";\n\nexport { gl1VertexSrc as default };\n//# sourceMappingURL=sprite-tiling-fallback.mjs.map\n","var gl1FragmentSrc = \"#version 100\\n#ifdef GL_EXT_shader_texture_lod\\n #extension GL_EXT_shader_texture_lod : enable\\n#endif\\n#define SHADER_NAME Tiling-Sprite-100\\n\\nprecision lowp float;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform vec4 uColor;\\nuniform mat3 uMapCoord;\\nuniform vec4 uClampFrame;\\nuniform vec2 uClampOffset;\\n\\nvoid main(void)\\n{\\n vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);\\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\\n vec2 unclamped = coord;\\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\\n\\n #ifdef GL_EXT_shader_texture_lod\\n vec4 texSample = unclamped == coord\\n ? texture2D(uSampler, coord) \\n : texture2DLodEXT(uSampler, coord, 0);\\n #else\\n vec4 texSample = texture2D(uSampler, coord);\\n #endif\\n\\n gl_FragColor = texSample * uColor;\\n}\\n\";\n\nexport { gl1FragmentSrc as default };\n//# sourceMappingURL=sprite-tiling-fallback2.mjs.map\n","var gl2VertexSrc = \"#version 300 es\\n#define SHADER_NAME Tiling-Sprite-300\\n\\nprecision lowp float;\\n\\nin vec2 aVertexPosition;\\nin vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 translationMatrix;\\nuniform mat3 uTransform;\\n\\nout vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\\n}\\n\";\n\nexport { gl2VertexSrc as default };\n//# sourceMappingURL=sprite-tiling.mjs.map\n","var gl2FragmentSrc = \"#version 300 es\\n#define SHADER_NAME Tiling-Sprite-100\\n\\nprecision lowp float;\\n\\nin vec2 vTextureCoord;\\n\\nout vec4 fragmentColor;\\n\\nuniform sampler2D uSampler;\\nuniform vec4 uColor;\\nuniform mat3 uMapCoord;\\nuniform vec4 uClampFrame;\\nuniform vec2 uClampOffset;\\n\\nvoid main(void)\\n{\\n vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);\\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\\n vec2 unclamped = coord;\\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\\n\\n vec4 texSample = texture(uSampler, coord, unclamped == coord ? 0.0f : -32.0f);// lod-bias very negative to force lod 0\\n\\n fragmentColor = texSample * uColor;\\n}\\n\";\n\nexport { gl2FragmentSrc as default };\n//# sourceMappingURL=sprite-tiling2.mjs.map\n","import { Matrix, ObjectRenderer, QuadUv, State, Shader, WRAP_MODES, utils, ExtensionType, extensions } from '@pixi/core';\nimport fragmentSimpleSrc from './sprite-tiling-simple.mjs';\nimport gl1VertexSrc from './sprite-tiling-fallback.mjs';\nimport gl1FragmentSrc from './sprite-tiling-fallback2.mjs';\nimport gl2VertexSrc from './sprite-tiling.mjs';\nimport gl2FragmentSrc from './sprite-tiling2.mjs';\n\nconst tempMat = new Matrix();\nclass TilingSpriteRenderer extends ObjectRenderer {\n constructor(renderer) {\n super(renderer);\n renderer.runners.contextChange.add(this);\n this.quad = new QuadUv();\n this.state = State.for2d();\n }\n contextChange() {\n const renderer = this.renderer;\n const uniforms = { globals: renderer.globalUniforms };\n this.simpleShader = Shader.from(gl1VertexSrc, fragmentSimpleSrc, uniforms);\n this.shader = renderer.context.webGLVersion > 1 ? Shader.from(gl2VertexSrc, gl2FragmentSrc, uniforms) : Shader.from(gl1VertexSrc, gl1FragmentSrc, uniforms);\n }\n render(ts) {\n const renderer = this.renderer;\n const quad = this.quad;\n let vertices = quad.vertices;\n vertices[0] = vertices[6] = ts._width * -ts.anchor.x;\n vertices[1] = vertices[3] = ts._height * -ts.anchor.y;\n vertices[2] = vertices[4] = ts._width * (1 - ts.anchor.x);\n vertices[5] = vertices[7] = ts._height * (1 - ts.anchor.y);\n const anchorX = ts.uvRespectAnchor ? ts.anchor.x : 0;\n const anchorY = ts.uvRespectAnchor ? ts.anchor.y : 0;\n vertices = quad.uvs;\n vertices[0] = vertices[6] = -anchorX;\n vertices[1] = vertices[3] = -anchorY;\n vertices[2] = vertices[4] = 1 - anchorX;\n vertices[5] = vertices[7] = 1 - anchorY;\n quad.invalidate();\n const tex = ts._texture;\n const baseTex = tex.baseTexture;\n const premultiplied = baseTex.alphaMode > 0;\n const lt = ts.tileTransform.localTransform;\n const uv = ts.uvMatrix;\n let isSimple = baseTex.isPowerOfTwo && tex.frame.width === baseTex.width && tex.frame.height === baseTex.height;\n if (isSimple) {\n if (!baseTex._glTextures[renderer.CONTEXT_UID]) {\n if (baseTex.wrapMode === WRAP_MODES.CLAMP) {\n baseTex.wrapMode = WRAP_MODES.REPEAT;\n }\n } else {\n isSimple = baseTex.wrapMode !== WRAP_MODES.CLAMP;\n }\n }\n const shader = isSimple ? this.simpleShader : this.shader;\n const w = tex.width;\n const h = tex.height;\n const W = ts._width;\n const H = ts._height;\n tempMat.set(lt.a * w / W, lt.b * w / H, lt.c * h / W, lt.d * h / H, lt.tx / W, lt.ty / H);\n tempMat.invert();\n if (isSimple) {\n tempMat.prepend(uv.mapCoord);\n } else {\n shader.uniforms.uMapCoord = uv.mapCoord.toArray(true);\n shader.uniforms.uClampFrame = uv.uClampFrame;\n shader.uniforms.uClampOffset = uv.uClampOffset;\n }\n shader.uniforms.uTransform = tempMat.toArray(true);\n shader.uniforms.uColor = utils.premultiplyTintToRgba(ts.tint, ts.worldAlpha, shader.uniforms.uColor, premultiplied);\n shader.uniforms.translationMatrix = ts.transform.worldTransform.toArray(true);\n shader.uniforms.uSampler = tex;\n renderer.shader.bind(shader);\n renderer.geometry.bind(quad);\n this.state.blendMode = utils.correctBlendMode(ts.blendMode, premultiplied);\n renderer.state.set(this.state);\n renderer.geometry.draw(this.renderer.gl.TRIANGLES, 6, 0);\n }\n}\nTilingSpriteRenderer.extension = {\n name: \"tilingSprite\",\n type: ExtensionType.RendererPlugin\n};\nextensions.add(TilingSpriteRenderer);\n\nexport { TilingSpriteRenderer };\n//# sourceMappingURL=TilingSpriteRenderer.mjs.map\n","class BitmapFontData {\n constructor() {\n this.info = [];\n this.common = [];\n this.page = [];\n this.char = [];\n this.kerning = [];\n this.distanceField = [];\n }\n}\n\nexport { BitmapFontData };\n//# sourceMappingURL=BitmapFontData.mjs.map\n","import { BitmapFontData } from '../BitmapFontData.mjs';\n\nclass TextFormat {\n static test(data) {\n return typeof data === \"string\" && data.startsWith(\"info face=\");\n }\n static parse(txt) {\n const items = txt.match(/^[a-z]+\\s+.+$/gm);\n const rawData = {\n info: [],\n common: [],\n page: [],\n char: [],\n chars: [],\n kerning: [],\n kernings: [],\n distanceField: []\n };\n for (const i in items) {\n const name = items[i].match(/^[a-z]+/gm)[0];\n const attributeList = items[i].match(/[a-zA-Z]+=([^\\s\"']+|\"([^\"]*)\")/gm);\n const itemData = {};\n for (const i2 in attributeList) {\n const split = attributeList[i2].split(\"=\");\n const key = split[0];\n const strValue = split[1].replace(/\"/gm, \"\");\n const floatValue = parseFloat(strValue);\n const value = isNaN(floatValue) ? strValue : floatValue;\n itemData[key] = value;\n }\n rawData[name].push(itemData);\n }\n const font = new BitmapFontData();\n rawData.info.forEach((info) => font.info.push({\n face: info.face,\n size: parseInt(info.size, 10)\n }));\n rawData.common.forEach((common) => font.common.push({\n lineHeight: parseInt(common.lineHeight, 10)\n }));\n rawData.page.forEach((page) => font.page.push({\n id: parseInt(page.id, 10),\n file: page.file\n }));\n rawData.char.forEach((char) => font.char.push({\n id: parseInt(char.id, 10),\n page: parseInt(char.page, 10),\n x: parseInt(char.x, 10),\n y: parseInt(char.y, 10),\n width: parseInt(char.width, 10),\n height: parseInt(char.height, 10),\n xoffset: parseInt(char.xoffset, 10),\n yoffset: parseInt(char.yoffset, 10),\n xadvance: parseInt(char.xadvance, 10)\n }));\n rawData.kerning.forEach((kerning) => font.kerning.push({\n first: parseInt(kerning.first, 10),\n second: parseInt(kerning.second, 10),\n amount: parseInt(kerning.amount, 10)\n }));\n rawData.distanceField.forEach((df) => font.distanceField.push({\n distanceRange: parseInt(df.distanceRange, 10),\n fieldType: df.fieldType\n }));\n return font;\n }\n}\n\nexport { TextFormat };\n//# sourceMappingURL=TextFormat.mjs.map\n","import { BitmapFontData } from '../BitmapFontData.mjs';\n\nclass XMLFormat {\n static test(data) {\n return data instanceof XMLDocument && data.getElementsByTagName(\"page\").length && data.getElementsByTagName(\"info\")[0].getAttribute(\"face\") !== null;\n }\n static parse(xml) {\n const data = new BitmapFontData();\n const info = xml.getElementsByTagName(\"info\");\n const common = xml.getElementsByTagName(\"common\");\n const page = xml.getElementsByTagName(\"page\");\n const char = xml.getElementsByTagName(\"char\");\n const kerning = xml.getElementsByTagName(\"kerning\");\n const distanceField = xml.getElementsByTagName(\"distanceField\");\n for (let i = 0; i < info.length; i++) {\n data.info.push({\n face: info[i].getAttribute(\"face\"),\n size: parseInt(info[i].getAttribute(\"size\"), 10)\n });\n }\n for (let i = 0; i < common.length; i++) {\n data.common.push({\n lineHeight: parseInt(common[i].getAttribute(\"lineHeight\"), 10)\n });\n }\n for (let i = 0; i < page.length; i++) {\n data.page.push({\n id: parseInt(page[i].getAttribute(\"id\"), 10) || 0,\n file: page[i].getAttribute(\"file\")\n });\n }\n for (let i = 0; i < char.length; i++) {\n const letter = char[i];\n data.char.push({\n id: parseInt(letter.getAttribute(\"id\"), 10),\n page: parseInt(letter.getAttribute(\"page\"), 10) || 0,\n x: parseInt(letter.getAttribute(\"x\"), 10),\n y: parseInt(letter.getAttribute(\"y\"), 10),\n width: parseInt(letter.getAttribute(\"width\"), 10),\n height: parseInt(letter.getAttribute(\"height\"), 10),\n xoffset: parseInt(letter.getAttribute(\"xoffset\"), 10),\n yoffset: parseInt(letter.getAttribute(\"yoffset\"), 10),\n xadvance: parseInt(letter.getAttribute(\"xadvance\"), 10)\n });\n }\n for (let i = 0; i < kerning.length; i++) {\n data.kerning.push({\n first: parseInt(kerning[i].getAttribute(\"first\"), 10),\n second: parseInt(kerning[i].getAttribute(\"second\"), 10),\n amount: parseInt(kerning[i].getAttribute(\"amount\"), 10)\n });\n }\n for (let i = 0; i < distanceField.length; i++) {\n data.distanceField.push({\n fieldType: distanceField[i].getAttribute(\"fieldType\"),\n distanceRange: parseInt(distanceField[i].getAttribute(\"distanceRange\"), 10)\n });\n }\n return data;\n }\n}\n\nexport { XMLFormat };\n//# sourceMappingURL=XMLFormat.mjs.map\n","import { XMLFormat } from './XMLFormat.mjs';\n\nclass XMLStringFormat {\n static test(data) {\n if (typeof data === \"string\" && data.includes(\"\")) {\n const xml = new globalThis.DOMParser().parseFromString(data, \"text/xml\");\n return XMLFormat.test(xml);\n }\n return false;\n }\n static parse(xmlTxt) {\n const xml = new globalThis.DOMParser().parseFromString(xmlTxt, \"text/xml\");\n return XMLFormat.parse(xml);\n }\n}\n\nexport { XMLStringFormat };\n//# sourceMappingURL=XMLStringFormat.mjs.map\n","import { TextFormat } from './TextFormat.mjs';\nexport { TextFormat } from './TextFormat.mjs';\nimport { XMLFormat } from './XMLFormat.mjs';\nexport { XMLFormat } from './XMLFormat.mjs';\nimport { XMLStringFormat } from './XMLStringFormat.mjs';\nexport { XMLStringFormat } from './XMLStringFormat.mjs';\n\nconst formats = [\n TextFormat,\n XMLFormat,\n XMLStringFormat\n];\nfunction autoDetectFormat(data) {\n for (let i = 0; i < formats.length; i++) {\n if (formats[i].test(data)) {\n return formats[i];\n }\n }\n return null;\n}\n\nexport { autoDetectFormat };\n//# sourceMappingURL=index.mjs.map\n","import { TEXT_GRADIENT } from '@pixi/text';\n\nfunction generateFillStyle(canvas, context, style, resolution, lines, metrics) {\n const fillStyle = style.fill;\n if (!Array.isArray(fillStyle)) {\n return fillStyle;\n } else if (fillStyle.length === 1) {\n return fillStyle[0];\n }\n let gradient;\n const dropShadowCorrection = style.dropShadow ? style.dropShadowDistance : 0;\n const padding = style.padding || 0;\n const width = canvas.width / resolution - dropShadowCorrection - padding * 2;\n const height = canvas.height / resolution - dropShadowCorrection - padding * 2;\n const fill = fillStyle.slice();\n const fillGradientStops = style.fillGradientStops.slice();\n if (!fillGradientStops.length) {\n const lengthPlus1 = fill.length + 1;\n for (let i = 1; i < lengthPlus1; ++i) {\n fillGradientStops.push(i / lengthPlus1);\n }\n }\n fill.unshift(fillStyle[0]);\n fillGradientStops.unshift(0);\n fill.push(fillStyle[fillStyle.length - 1]);\n fillGradientStops.push(1);\n if (style.fillGradientType === TEXT_GRADIENT.LINEAR_VERTICAL) {\n gradient = context.createLinearGradient(width / 2, padding, width / 2, height + padding);\n let lastIterationStop = 0;\n const textHeight = metrics.fontProperties.fontSize + style.strokeThickness;\n const gradStopLineHeight = textHeight / height;\n for (let i = 0; i < lines.length; i++) {\n const thisLineTop = metrics.lineHeight * i;\n for (let j = 0; j < fill.length; j++) {\n let lineStop = 0;\n if (typeof fillGradientStops[j] === \"number\") {\n lineStop = fillGradientStops[j];\n } else {\n lineStop = j / fill.length;\n }\n const globalStop = thisLineTop / height + lineStop * gradStopLineHeight;\n let clampedStop = Math.max(lastIterationStop, globalStop);\n clampedStop = Math.min(clampedStop, 1);\n gradient.addColorStop(clampedStop, fill[j]);\n lastIterationStop = clampedStop;\n }\n }\n } else {\n gradient = context.createLinearGradient(padding, height / 2, width + padding, height / 2);\n const totalIterations = fill.length + 1;\n let currentIteration = 1;\n for (let i = 0; i < fill.length; i++) {\n let stop;\n if (typeof fillGradientStops[i] === \"number\") {\n stop = fillGradientStops[i];\n } else {\n stop = currentIteration / totalIterations;\n }\n gradient.addColorStop(stop, fill[i]);\n currentIteration++;\n }\n }\n return gradient;\n}\n\nexport { generateFillStyle };\n//# sourceMappingURL=generateFillStyle.mjs.map\n","import { generateFillStyle } from './generateFillStyle.mjs';\nimport { utils } from '@pixi/core';\n\nfunction drawGlyph(canvas, context, metrics, x, y, resolution, style) {\n const char = metrics.text;\n const fontProperties = metrics.fontProperties;\n context.translate(x, y);\n context.scale(resolution, resolution);\n const tx = style.strokeThickness / 2;\n const ty = -(style.strokeThickness / 2);\n context.font = style.toFontString();\n context.lineWidth = style.strokeThickness;\n context.textBaseline = style.textBaseline;\n context.lineJoin = style.lineJoin;\n context.miterLimit = style.miterLimit;\n context.fillStyle = generateFillStyle(canvas, context, style, resolution, [char], metrics);\n context.strokeStyle = style.stroke;\n if (style.dropShadow) {\n const dropShadowColor = style.dropShadowColor;\n const rgb = utils.hex2rgb(typeof dropShadowColor === \"number\" ? dropShadowColor : utils.string2hex(dropShadowColor));\n const dropShadowBlur = style.dropShadowBlur * resolution;\n const dropShadowDistance = style.dropShadowDistance * resolution;\n context.shadowColor = `rgba(${rgb[0] * 255},${rgb[1] * 255},${rgb[2] * 255},${style.dropShadowAlpha})`;\n context.shadowBlur = dropShadowBlur;\n context.shadowOffsetX = Math.cos(style.dropShadowAngle) * dropShadowDistance;\n context.shadowOffsetY = Math.sin(style.dropShadowAngle) * dropShadowDistance;\n } else {\n context.shadowColor = \"black\";\n context.shadowBlur = 0;\n context.shadowOffsetX = 0;\n context.shadowOffsetY = 0;\n }\n if (style.stroke && style.strokeThickness) {\n context.strokeText(char, tx, ty + metrics.lineHeight - fontProperties.descent);\n }\n if (style.fill) {\n context.fillText(char, tx, ty + metrics.lineHeight - fontProperties.descent);\n }\n context.setTransform(1, 0, 0, 1, 0, 0);\n context.fillStyle = \"rgba(0, 0, 0, 0)\";\n}\n\nexport { drawGlyph };\n//# sourceMappingURL=drawGlyph.mjs.map\n","function splitTextToCharacters(text) {\n return Array.from ? Array.from(text) : text.split(\"\");\n}\n\nexport { splitTextToCharacters };\n//# sourceMappingURL=splitTextToCharacters.mjs.map\n","import { splitTextToCharacters } from './splitTextToCharacters.mjs';\n\nfunction resolveCharacters(chars) {\n if (typeof chars === \"string\") {\n chars = [chars];\n }\n const result = [];\n for (let i = 0, j = chars.length; i < j; i++) {\n const item = chars[i];\n if (Array.isArray(item)) {\n if (item.length !== 2) {\n throw new Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${item.length}.`);\n }\n const startCode = item[0].charCodeAt(0);\n const endCode = item[1].charCodeAt(0);\n if (endCode < startCode) {\n throw new Error(\"[BitmapFont]: Invalid character range.\");\n }\n for (let i2 = startCode, j2 = endCode; i2 <= j2; i2++) {\n result.push(String.fromCharCode(i2));\n }\n } else {\n result.push(...splitTextToCharacters(item));\n }\n }\n if (result.length === 0) {\n throw new Error(\"[BitmapFont]: Empty set when resolving characters.\");\n }\n return result;\n}\n\nexport { resolveCharacters };\n//# sourceMappingURL=resolveCharacters.mjs.map\n","function extractCharCode(str) {\n return str.codePointAt ? str.codePointAt(0) : str.charCodeAt(0);\n}\n\nexport { extractCharCode };\n//# sourceMappingURL=extractCharCode.mjs.map\n","import { utils, ALPHA_MODES, MIPMAP_MODES, Rectangle, Texture, settings, BaseTexture } from '@pixi/core';\nimport { TextStyle, TextMetrics } from '@pixi/text';\nimport { autoDetectFormat } from './formats/index.mjs';\nimport { BitmapFontData } from './BitmapFontData.mjs';\nimport './utils/index.mjs';\nimport { resolveCharacters } from './utils/resolveCharacters.mjs';\nimport { drawGlyph } from './utils/drawGlyph.mjs';\nimport { extractCharCode } from './utils/extractCharCode.mjs';\n\nconst _BitmapFont = class {\n constructor(data, textures, ownsTextures) {\n const [info] = data.info;\n const [common] = data.common;\n const [page] = data.page;\n const [distanceField] = data.distanceField;\n const res = utils.getResolutionOfUrl(page.file);\n const pageTextures = {};\n this._ownsTextures = ownsTextures;\n this.font = info.face;\n this.size = info.size;\n this.lineHeight = common.lineHeight / res;\n this.chars = {};\n this.pageTextures = pageTextures;\n for (let i = 0; i < data.page.length; i++) {\n const { id, file } = data.page[i];\n pageTextures[id] = textures instanceof Array ? textures[i] : textures[file];\n if (distanceField?.fieldType && distanceField.fieldType !== \"none\") {\n pageTextures[id].baseTexture.alphaMode = ALPHA_MODES.NO_PREMULTIPLIED_ALPHA;\n pageTextures[id].baseTexture.mipmap = MIPMAP_MODES.OFF;\n }\n }\n for (let i = 0; i < data.char.length; i++) {\n const { id, page: page2 } = data.char[i];\n let { x, y, width, height, xoffset, yoffset, xadvance } = data.char[i];\n x /= res;\n y /= res;\n width /= res;\n height /= res;\n xoffset /= res;\n yoffset /= res;\n xadvance /= res;\n const rect = new Rectangle(x + pageTextures[page2].frame.x / res, y + pageTextures[page2].frame.y / res, width, height);\n this.chars[id] = {\n xOffset: xoffset,\n yOffset: yoffset,\n xAdvance: xadvance,\n kerning: {},\n texture: new Texture(pageTextures[page2].baseTexture, rect),\n page: page2\n };\n }\n for (let i = 0; i < data.kerning.length; i++) {\n let { first, second, amount } = data.kerning[i];\n first /= res;\n second /= res;\n amount /= res;\n if (this.chars[second]) {\n this.chars[second].kerning[first] = amount;\n }\n }\n this.distanceFieldRange = distanceField?.distanceRange;\n this.distanceFieldType = distanceField?.fieldType?.toLowerCase() ?? \"none\";\n }\n destroy() {\n for (const id in this.chars) {\n this.chars[id].texture.destroy();\n this.chars[id].texture = null;\n }\n for (const id in this.pageTextures) {\n if (this._ownsTextures) {\n this.pageTextures[id].destroy(true);\n }\n this.pageTextures[id] = null;\n }\n this.chars = null;\n this.pageTextures = null;\n }\n static install(data, textures, ownsTextures) {\n let fontData;\n if (data instanceof BitmapFontData) {\n fontData = data;\n } else {\n const format = autoDetectFormat(data);\n if (!format) {\n throw new Error(\"Unrecognized data format for font.\");\n }\n fontData = format.parse(data);\n }\n if (textures instanceof Texture) {\n textures = [textures];\n }\n const font = new _BitmapFont(fontData, textures, ownsTextures);\n _BitmapFont.available[font.font] = font;\n return font;\n }\n static uninstall(name) {\n const font = _BitmapFont.available[name];\n if (!font) {\n throw new Error(`No font found named '${name}'`);\n }\n font.destroy();\n delete _BitmapFont.available[name];\n }\n static from(name, textStyle, options) {\n if (!name) {\n throw new Error(\"[BitmapFont] Property `name` is required.\");\n }\n const {\n chars,\n padding,\n resolution,\n textureWidth,\n textureHeight,\n ...baseOptions\n } = Object.assign({}, _BitmapFont.defaultOptions, options);\n const charsList = resolveCharacters(chars);\n const style = textStyle instanceof TextStyle ? textStyle : new TextStyle(textStyle);\n const lineWidth = textureWidth;\n const fontData = new BitmapFontData();\n fontData.info[0] = {\n face: style.fontFamily,\n size: style.fontSize\n };\n fontData.common[0] = {\n lineHeight: style.fontSize\n };\n let positionX = 0;\n let positionY = 0;\n let canvas;\n let context;\n let baseTexture;\n let maxCharHeight = 0;\n const baseTextures = [];\n const textures = [];\n for (let i = 0; i < charsList.length; i++) {\n if (!canvas) {\n canvas = settings.ADAPTER.createCanvas();\n canvas.width = textureWidth;\n canvas.height = textureHeight;\n context = canvas.getContext(\"2d\");\n baseTexture = new BaseTexture(canvas, { resolution, ...baseOptions });\n baseTextures.push(baseTexture);\n textures.push(new Texture(baseTexture));\n fontData.page.push({\n id: textures.length - 1,\n file: \"\"\n });\n }\n const character = charsList[i];\n const metrics = TextMetrics.measureText(character, style, false, canvas);\n const width = metrics.width;\n const height = Math.ceil(metrics.height);\n const textureGlyphWidth = Math.ceil((style.fontStyle === \"italic\" ? 2 : 1) * width);\n if (positionY >= textureHeight - height * resolution) {\n if (positionY === 0) {\n throw new Error(`[BitmapFont] textureHeight ${textureHeight}px is too small (fontFamily: '${style.fontFamily}', fontSize: ${style.fontSize}px, char: '${character}')`);\n }\n --i;\n canvas = null;\n context = null;\n baseTexture = null;\n positionY = 0;\n positionX = 0;\n maxCharHeight = 0;\n continue;\n }\n maxCharHeight = Math.max(height + metrics.fontProperties.descent, maxCharHeight);\n if (textureGlyphWidth * resolution + positionX >= lineWidth) {\n if (positionX === 0) {\n throw new Error(`[BitmapFont] textureWidth ${textureWidth}px is too small (fontFamily: '${style.fontFamily}', fontSize: ${style.fontSize}px, char: '${character}')`);\n }\n --i;\n positionY += maxCharHeight * resolution;\n positionY = Math.ceil(positionY);\n positionX = 0;\n maxCharHeight = 0;\n continue;\n }\n drawGlyph(canvas, context, metrics, positionX, positionY, resolution, style);\n const id = extractCharCode(metrics.text);\n fontData.char.push({\n id,\n page: textures.length - 1,\n x: positionX / resolution,\n y: positionY / resolution,\n width: textureGlyphWidth,\n height,\n xoffset: 0,\n yoffset: 0,\n xadvance: Math.ceil(width - (style.dropShadow ? style.dropShadowDistance : 0) - (style.stroke ? style.strokeThickness : 0))\n });\n positionX += (textureGlyphWidth + 2 * padding) * resolution;\n positionX = Math.ceil(positionX);\n }\n for (let i = 0, len = charsList.length; i < len; i++) {\n const first = charsList[i];\n for (let j = 0; j < len; j++) {\n const second = charsList[j];\n const c1 = context.measureText(first).width;\n const c2 = context.measureText(second).width;\n const total = context.measureText(first + second).width;\n const amount = total - (c1 + c2);\n if (amount) {\n fontData.kerning.push({\n first: extractCharCode(first),\n second: extractCharCode(second),\n amount\n });\n }\n }\n }\n const font = new _BitmapFont(fontData, textures, true);\n if (_BitmapFont.available[name] !== void 0) {\n _BitmapFont.uninstall(name);\n }\n _BitmapFont.available[name] = font;\n return font;\n }\n};\nlet BitmapFont = _BitmapFont;\nBitmapFont.ALPHA = [[\"a\", \"z\"], [\"A\", \"Z\"], \" \"];\nBitmapFont.NUMERIC = [[\"0\", \"9\"]];\nBitmapFont.ALPHANUMERIC = [[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \" \"];\nBitmapFont.ASCII = [[\" \", \"~\"]];\nBitmapFont.defaultOptions = {\n resolution: 1,\n textureWidth: 512,\n textureHeight: 512,\n padding: 4,\n chars: _BitmapFont.ALPHANUMERIC\n};\nBitmapFont.available = {};\n\nexport { BitmapFont };\n//# sourceMappingURL=BitmapFont.mjs.map\n","var msdfFrag = \"// Pixi texture info\\r\\nvarying vec2 vTextureCoord;\\r\\nuniform sampler2D uSampler;\\r\\n\\r\\n// Tint\\r\\nuniform vec4 uColor;\\r\\n\\r\\n// on 2D applications fwidth is screenScale / glyphAtlasScale * distanceFieldRange\\r\\nuniform float uFWidth;\\r\\n\\r\\nvoid main(void) {\\r\\n\\r\\n // To stack MSDF and SDF we need a non-pre-multiplied-alpha texture.\\r\\n vec4 texColor = texture2D(uSampler, vTextureCoord);\\r\\n\\r\\n // MSDF\\r\\n float median = texColor.r + texColor.g + texColor.b -\\r\\n min(texColor.r, min(texColor.g, texColor.b)) -\\r\\n max(texColor.r, max(texColor.g, texColor.b));\\r\\n // SDF\\r\\n median = min(median, texColor.a);\\r\\n\\r\\n float screenPxDistance = uFWidth * (median - 0.5);\\r\\n float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\\r\\n if (median < 0.01) {\\r\\n alpha = 0.0;\\r\\n } else if (median > 0.99) {\\r\\n alpha = 1.0;\\r\\n }\\r\\n\\r\\n // NPM Textures, NPM outputs\\r\\n gl_FragColor = vec4(uColor.rgb, uColor.a * alpha);\\r\\n\\r\\n}\\r\\n\";\n\nexport { msdfFrag as default };\n//# sourceMappingURL=msdf.mjs.map\n","var msdfVert = \"// Mesh material default fragment\\r\\nattribute vec2 aVertexPosition;\\r\\nattribute vec2 aTextureCoord;\\r\\n\\r\\nuniform mat3 projectionMatrix;\\r\\nuniform mat3 translationMatrix;\\r\\nuniform mat3 uTextureMatrix;\\r\\n\\r\\nvarying vec2 vTextureCoord;\\r\\n\\r\\nvoid main(void)\\r\\n{\\r\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\r\\n\\r\\n vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\\r\\n}\\r\\n\";\n\nexport { msdfVert as default };\n//# sourceMappingURL=msdf2.mjs.map\n","import { MeshGeometry, MeshMaterial, Mesh } from '@pixi/mesh';\nimport { BitmapFont } from './BitmapFont.mjs';\nimport './utils/index.mjs';\nimport msdfFrag from './shader/msdf.mjs';\nimport msdfVert from './shader/msdf2.mjs';\nimport { ObservablePoint, settings, Point, Texture, utils, BLEND_MODES, Program } from '@pixi/core';\nimport { Container } from '@pixi/display';\nimport { splitTextToCharacters } from './utils/splitTextToCharacters.mjs';\nimport { extractCharCode } from './utils/extractCharCode.mjs';\n\nconst pageMeshDataDefaultPageMeshData = [];\nconst pageMeshDataMSDFPageMeshData = [];\nconst charRenderDataPool = [];\nconst _BitmapText = class extends Container {\n constructor(text, style = {}) {\n super();\n this._tint = 16777215;\n const { align, tint, maxWidth, letterSpacing, fontName, fontSize } = Object.assign({}, _BitmapText.styleDefaults, style);\n if (!BitmapFont.available[fontName]) {\n throw new Error(`Missing BitmapFont \"${fontName}\"`);\n }\n this._activePagesMeshData = [];\n this._textWidth = 0;\n this._textHeight = 0;\n this._align = align;\n this._tint = tint;\n this._font = void 0;\n this._fontName = fontName;\n this._fontSize = fontSize;\n this.text = text;\n this._maxWidth = maxWidth;\n this._maxLineHeight = 0;\n this._letterSpacing = letterSpacing;\n this._anchor = new ObservablePoint(() => {\n this.dirty = true;\n }, this, 0, 0);\n this._roundPixels = settings.ROUND_PIXELS;\n this.dirty = true;\n this._resolution = settings.RESOLUTION;\n this._autoResolution = true;\n this._textureCache = {};\n }\n updateText() {\n const data = BitmapFont.available[this._fontName];\n const fontSize = this.fontSize;\n const scale = fontSize / data.size;\n const pos = new Point();\n const chars = [];\n const lineWidths = [];\n const lineSpaces = [];\n const text = this._text.replace(/(?:\\r\\n|\\r)/g, \"\\n\") || \" \";\n const charsInput = splitTextToCharacters(text);\n const maxWidth = this._maxWidth * data.size / fontSize;\n const pageMeshDataPool = data.distanceFieldType === \"none\" ? pageMeshDataDefaultPageMeshData : pageMeshDataMSDFPageMeshData;\n let prevCharCode = null;\n let lastLineWidth = 0;\n let maxLineWidth = 0;\n let line = 0;\n let lastBreakPos = -1;\n let lastBreakWidth = 0;\n let spacesRemoved = 0;\n let maxLineHeight = 0;\n let spaceCount = 0;\n for (let i = 0; i < charsInput.length; i++) {\n const char = charsInput[i];\n const charCode = extractCharCode(char);\n if (/(?:\\s)/.test(char)) {\n lastBreakPos = i;\n lastBreakWidth = lastLineWidth;\n spaceCount++;\n }\n if (char === \"\\r\" || char === \"\\n\") {\n lineWidths.push(lastLineWidth);\n lineSpaces.push(-1);\n maxLineWidth = Math.max(maxLineWidth, lastLineWidth);\n ++line;\n ++spacesRemoved;\n pos.x = 0;\n pos.y += data.lineHeight;\n prevCharCode = null;\n spaceCount = 0;\n continue;\n }\n const charData = data.chars[charCode];\n if (!charData) {\n continue;\n }\n if (prevCharCode && charData.kerning[prevCharCode]) {\n pos.x += charData.kerning[prevCharCode];\n }\n const charRenderData = charRenderDataPool.pop() || {\n texture: Texture.EMPTY,\n line: 0,\n charCode: 0,\n prevSpaces: 0,\n position: new Point()\n };\n charRenderData.texture = charData.texture;\n charRenderData.line = line;\n charRenderData.charCode = charCode;\n charRenderData.position.x = pos.x + charData.xOffset + this._letterSpacing / 2;\n charRenderData.position.y = pos.y + charData.yOffset;\n charRenderData.prevSpaces = spaceCount;\n chars.push(charRenderData);\n lastLineWidth = charRenderData.position.x + Math.max(charData.xAdvance - charData.xOffset, charData.texture.orig.width);\n pos.x += charData.xAdvance + this._letterSpacing;\n maxLineHeight = Math.max(maxLineHeight, charData.yOffset + charData.texture.height);\n prevCharCode = charCode;\n if (lastBreakPos !== -1 && maxWidth > 0 && pos.x > maxWidth) {\n ++spacesRemoved;\n utils.removeItems(chars, 1 + lastBreakPos - spacesRemoved, 1 + i - lastBreakPos);\n i = lastBreakPos;\n lastBreakPos = -1;\n lineWidths.push(lastBreakWidth);\n lineSpaces.push(chars.length > 0 ? chars[chars.length - 1].prevSpaces : 0);\n maxLineWidth = Math.max(maxLineWidth, lastBreakWidth);\n line++;\n pos.x = 0;\n pos.y += data.lineHeight;\n prevCharCode = null;\n spaceCount = 0;\n }\n }\n const lastChar = charsInput[charsInput.length - 1];\n if (lastChar !== \"\\r\" && lastChar !== \"\\n\") {\n if (/(?:\\s)/.test(lastChar)) {\n lastLineWidth = lastBreakWidth;\n }\n lineWidths.push(lastLineWidth);\n maxLineWidth = Math.max(maxLineWidth, lastLineWidth);\n lineSpaces.push(-1);\n }\n const lineAlignOffsets = [];\n for (let i = 0; i <= line; i++) {\n let alignOffset = 0;\n if (this._align === \"right\") {\n alignOffset = maxLineWidth - lineWidths[i];\n } else if (this._align === \"center\") {\n alignOffset = (maxLineWidth - lineWidths[i]) / 2;\n } else if (this._align === \"justify\") {\n alignOffset = lineSpaces[i] < 0 ? 0 : (maxLineWidth - lineWidths[i]) / lineSpaces[i];\n }\n lineAlignOffsets.push(alignOffset);\n }\n const lenChars = chars.length;\n const pagesMeshData = {};\n const newPagesMeshData = [];\n const activePagesMeshData = this._activePagesMeshData;\n pageMeshDataPool.push(...activePagesMeshData);\n for (let i = 0; i < lenChars; i++) {\n const texture = chars[i].texture;\n const baseTextureUid = texture.baseTexture.uid;\n if (!pagesMeshData[baseTextureUid]) {\n let pageMeshData = pageMeshDataPool.pop();\n if (!pageMeshData) {\n const geometry = new MeshGeometry();\n let material;\n let meshBlendMode;\n if (data.distanceFieldType === \"none\") {\n material = new MeshMaterial(Texture.EMPTY);\n meshBlendMode = BLEND_MODES.NORMAL;\n } else {\n material = new MeshMaterial(Texture.EMPTY, { program: Program.from(msdfVert, msdfFrag), uniforms: { uFWidth: 0 } });\n meshBlendMode = BLEND_MODES.NORMAL_NPM;\n }\n const mesh = new Mesh(geometry, material);\n mesh.blendMode = meshBlendMode;\n pageMeshData = {\n index: 0,\n indexCount: 0,\n vertexCount: 0,\n uvsCount: 0,\n total: 0,\n mesh,\n vertices: null,\n uvs: null,\n indices: null\n };\n }\n pageMeshData.index = 0;\n pageMeshData.indexCount = 0;\n pageMeshData.vertexCount = 0;\n pageMeshData.uvsCount = 0;\n pageMeshData.total = 0;\n const { _textureCache } = this;\n _textureCache[baseTextureUid] = _textureCache[baseTextureUid] || new Texture(texture.baseTexture);\n pageMeshData.mesh.texture = _textureCache[baseTextureUid];\n pageMeshData.mesh.tint = this._tint;\n newPagesMeshData.push(pageMeshData);\n pagesMeshData[baseTextureUid] = pageMeshData;\n }\n pagesMeshData[baseTextureUid].total++;\n }\n for (let i = 0; i < activePagesMeshData.length; i++) {\n if (!newPagesMeshData.includes(activePagesMeshData[i])) {\n this.removeChild(activePagesMeshData[i].mesh);\n }\n }\n for (let i = 0; i < newPagesMeshData.length; i++) {\n if (newPagesMeshData[i].mesh.parent !== this) {\n this.addChild(newPagesMeshData[i].mesh);\n }\n }\n this._activePagesMeshData = newPagesMeshData;\n for (const i in pagesMeshData) {\n const pageMeshData = pagesMeshData[i];\n const total = pageMeshData.total;\n if (!(pageMeshData.indices?.length > 6 * total) || pageMeshData.vertices.length < Mesh.BATCHABLE_SIZE * 2) {\n pageMeshData.vertices = new Float32Array(4 * 2 * total);\n pageMeshData.uvs = new Float32Array(4 * 2 * total);\n pageMeshData.indices = new Uint16Array(6 * total);\n } else {\n const total2 = pageMeshData.total;\n const vertices = pageMeshData.vertices;\n for (let i2 = total2 * 4 * 2; i2 < vertices.length; i2++) {\n vertices[i2] = 0;\n }\n }\n pageMeshData.mesh.size = 6 * total;\n }\n for (let i = 0; i < lenChars; i++) {\n const char = chars[i];\n let offset = char.position.x + lineAlignOffsets[char.line] * (this._align === \"justify\" ? char.prevSpaces : 1);\n if (this._roundPixels) {\n offset = Math.round(offset);\n }\n const xPos = offset * scale;\n const yPos = char.position.y * scale;\n const texture = char.texture;\n const pageMesh = pagesMeshData[texture.baseTexture.uid];\n const textureFrame = texture.frame;\n const textureUvs = texture._uvs;\n const index = pageMesh.index++;\n pageMesh.indices[index * 6 + 0] = 0 + index * 4;\n pageMesh.indices[index * 6 + 1] = 1 + index * 4;\n pageMesh.indices[index * 6 + 2] = 2 + index * 4;\n pageMesh.indices[index * 6 + 3] = 0 + index * 4;\n pageMesh.indices[index * 6 + 4] = 2 + index * 4;\n pageMesh.indices[index * 6 + 5] = 3 + index * 4;\n pageMesh.vertices[index * 8 + 0] = xPos;\n pageMesh.vertices[index * 8 + 1] = yPos;\n pageMesh.vertices[index * 8 + 2] = xPos + textureFrame.width * scale;\n pageMesh.vertices[index * 8 + 3] = yPos;\n pageMesh.vertices[index * 8 + 4] = xPos + textureFrame.width * scale;\n pageMesh.vertices[index * 8 + 5] = yPos + textureFrame.height * scale;\n pageMesh.vertices[index * 8 + 6] = xPos;\n pageMesh.vertices[index * 8 + 7] = yPos + textureFrame.height * scale;\n pageMesh.uvs[index * 8 + 0] = textureUvs.x0;\n pageMesh.uvs[index * 8 + 1] = textureUvs.y0;\n pageMesh.uvs[index * 8 + 2] = textureUvs.x1;\n pageMesh.uvs[index * 8 + 3] = textureUvs.y1;\n pageMesh.uvs[index * 8 + 4] = textureUvs.x2;\n pageMesh.uvs[index * 8 + 5] = textureUvs.y2;\n pageMesh.uvs[index * 8 + 6] = textureUvs.x3;\n pageMesh.uvs[index * 8 + 7] = textureUvs.y3;\n }\n this._textWidth = maxLineWidth * scale;\n this._textHeight = (pos.y + data.lineHeight) * scale;\n for (const i in pagesMeshData) {\n const pageMeshData = pagesMeshData[i];\n if (this.anchor.x !== 0 || this.anchor.y !== 0) {\n let vertexCount = 0;\n const anchorOffsetX = this._textWidth * this.anchor.x;\n const anchorOffsetY = this._textHeight * this.anchor.y;\n for (let i2 = 0; i2 < pageMeshData.total; i2++) {\n pageMeshData.vertices[vertexCount++] -= anchorOffsetX;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetY;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetX;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetY;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetX;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetY;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetX;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetY;\n }\n }\n this._maxLineHeight = maxLineHeight * scale;\n const vertexBuffer = pageMeshData.mesh.geometry.getBuffer(\"aVertexPosition\");\n const textureBuffer = pageMeshData.mesh.geometry.getBuffer(\"aTextureCoord\");\n const indexBuffer = pageMeshData.mesh.geometry.getIndex();\n vertexBuffer.data = pageMeshData.vertices;\n textureBuffer.data = pageMeshData.uvs;\n indexBuffer.data = pageMeshData.indices;\n vertexBuffer.update();\n textureBuffer.update();\n indexBuffer.update();\n }\n for (let i = 0; i < chars.length; i++) {\n charRenderDataPool.push(chars[i]);\n }\n this._font = data;\n this.dirty = false;\n }\n updateTransform() {\n this.validate();\n this.containerUpdateTransform();\n }\n _render(renderer) {\n if (this._autoResolution && this._resolution !== renderer.resolution) {\n this._resolution = renderer.resolution;\n this.dirty = true;\n }\n const { distanceFieldRange, distanceFieldType, size } = BitmapFont.available[this._fontName];\n if (distanceFieldType !== \"none\") {\n const { a, b, c, d } = this.worldTransform;\n const dx = Math.sqrt(a * a + b * b);\n const dy = Math.sqrt(c * c + d * d);\n const worldScale = (Math.abs(dx) + Math.abs(dy)) / 2;\n const fontScale = this.fontSize / size;\n const resolution = renderer._view.resolution;\n for (const mesh of this._activePagesMeshData) {\n mesh.mesh.shader.uniforms.uFWidth = worldScale * distanceFieldRange * fontScale * resolution;\n }\n }\n super._render(renderer);\n }\n getLocalBounds() {\n this.validate();\n return super.getLocalBounds();\n }\n validate() {\n const font = BitmapFont.available[this._fontName];\n if (!font) {\n throw new Error(`Missing BitmapFont \"${this._fontName}\"`);\n }\n if (this._font !== font) {\n this.dirty = true;\n }\n if (this.dirty) {\n this.updateText();\n }\n }\n get tint() {\n return this._tint;\n }\n set tint(value) {\n if (this._tint === value)\n return;\n this._tint = value;\n for (let i = 0; i < this._activePagesMeshData.length; i++) {\n this._activePagesMeshData[i].mesh.tint = value;\n }\n }\n get align() {\n return this._align;\n }\n set align(value) {\n if (this._align !== value) {\n this._align = value;\n this.dirty = true;\n }\n }\n get fontName() {\n return this._fontName;\n }\n set fontName(value) {\n if (!BitmapFont.available[value]) {\n throw new Error(`Missing BitmapFont \"${value}\"`);\n }\n if (this._fontName !== value) {\n this._fontName = value;\n this.dirty = true;\n }\n }\n get fontSize() {\n return this._fontSize ?? BitmapFont.available[this._fontName].size;\n }\n set fontSize(value) {\n if (this._fontSize !== value) {\n this._fontSize = value;\n this.dirty = true;\n }\n }\n get anchor() {\n return this._anchor;\n }\n set anchor(value) {\n if (typeof value === \"number\") {\n this._anchor.set(value);\n } else {\n this._anchor.copyFrom(value);\n }\n }\n get text() {\n return this._text;\n }\n set text(text) {\n text = String(text === null || text === void 0 ? \"\" : text);\n if (this._text === text) {\n return;\n }\n this._text = text;\n this.dirty = true;\n }\n get maxWidth() {\n return this._maxWidth;\n }\n set maxWidth(value) {\n if (this._maxWidth === value) {\n return;\n }\n this._maxWidth = value;\n this.dirty = true;\n }\n get maxLineHeight() {\n this.validate();\n return this._maxLineHeight;\n }\n get textWidth() {\n this.validate();\n return this._textWidth;\n }\n get letterSpacing() {\n return this._letterSpacing;\n }\n set letterSpacing(value) {\n if (this._letterSpacing !== value) {\n this._letterSpacing = value;\n this.dirty = true;\n }\n }\n get roundPixels() {\n return this._roundPixels;\n }\n set roundPixels(value) {\n if (value !== this._roundPixels) {\n this._roundPixels = value;\n this.dirty = true;\n }\n }\n get textHeight() {\n this.validate();\n return this._textHeight;\n }\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._autoResolution = false;\n if (this._resolution === value) {\n return;\n }\n this._resolution = value;\n this.dirty = true;\n }\n destroy(options) {\n const { _textureCache } = this;\n const data = BitmapFont.available[this._fontName];\n const pageMeshDataPool = data.distanceFieldType === \"none\" ? pageMeshDataDefaultPageMeshData : pageMeshDataMSDFPageMeshData;\n pageMeshDataPool.push(...this._activePagesMeshData);\n for (const pageMeshData of this._activePagesMeshData) {\n this.removeChild(pageMeshData.mesh);\n }\n this._activePagesMeshData = [];\n pageMeshDataPool.filter((page) => _textureCache[page.mesh.texture.baseTexture.uid]).forEach((page) => {\n page.mesh.texture = Texture.EMPTY;\n });\n for (const id in _textureCache) {\n const texture = _textureCache[id];\n texture.destroy();\n delete _textureCache[id];\n }\n this._font = null;\n this._textureCache = null;\n super.destroy(options);\n }\n};\nlet BitmapText = _BitmapText;\nBitmapText.styleDefaults = {\n align: \"left\",\n tint: 16777215,\n maxWidth: 0,\n letterSpacing: 0\n};\n\nexport { BitmapText };\n//# sourceMappingURL=BitmapText.mjs.map\n","import { ExtensionType, utils, settings, extensions } from '@pixi/core';\nimport { LoaderParserPriority } from '@pixi/assets';\nimport { BitmapFont } from './BitmapFont.mjs';\nimport './formats/index.mjs';\nimport { TextFormat } from './formats/TextFormat.mjs';\nimport { XMLStringFormat } from './formats/XMLStringFormat.mjs';\n\nconst validExtensions = [\".xml\", \".fnt\"];\nconst loadBitmapFont = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal\n },\n test(url) {\n return validExtensions.includes(utils.path.extname(url));\n },\n async testParse(data) {\n return TextFormat.test(data) || XMLStringFormat.test(data);\n },\n async parse(asset, data, loader) {\n const fontData = TextFormat.test(asset) ? TextFormat.parse(asset) : XMLStringFormat.parse(asset);\n const { src } = data;\n const { page: pages } = fontData;\n const textureUrls = [];\n for (let i = 0; i < pages.length; ++i) {\n const pageFile = pages[i].file;\n const imagePath = utils.path.join(utils.path.dirname(src), pageFile);\n textureUrls.push(imagePath);\n }\n const loadedTextures = await loader.load(textureUrls);\n const textures = textureUrls.map((url) => loadedTextures[url]);\n return BitmapFont.install(fontData, textures, true);\n },\n async load(url, _options) {\n const response = await settings.ADAPTER.fetch(url);\n return response.text();\n },\n unload(bitmapFont) {\n bitmapFont.destroy();\n }\n};\nextensions.add(loadBitmapFont);\n\nexport { loadBitmapFont };\n//# sourceMappingURL=loadBitmapFont.mjs.map\n","import { AlphaFilter } from '@pixi/filter-alpha';\nimport { BlurFilter, BlurFilterPass } from '@pixi/filter-blur';\nimport { ColorMatrixFilter } from '@pixi/filter-color-matrix';\nimport { DisplacementFilter } from '@pixi/filter-displacement';\nimport { FXAAFilter } from '@pixi/filter-fxaa';\nimport { NoiseFilter } from '@pixi/filter-noise';\nimport '@pixi/mixin-cache-as-bitmap';\nimport '@pixi/mixin-get-child-by-name';\nimport '@pixi/mixin-get-global-position';\n\n/**\n * This namespace contains WebGL-only display filters that can be applied\n * to DisplayObjects using the {@link PIXI.DisplayObject#filters filters} property.\n *\n * Since PixiJS only had a handful of built-in filters, additional filters\n * can be downloaded {@link https://github.com/pixijs/pixi-filters here} from the\n * PixiJS Filters repository.\n *\n * All filters must extend {@link PIXI.Filter}.\n * @example\n * import { Application, Graphics, filters } from 'pixi.js';\n *\n * // Create a new application\n * const app = new Application();\n *\n * // Draw a green rectangle\n * const rect = new Graphics()\n * .beginFill(0x00ff00)\n * .drawRect(40, 40, 200, 200);\n *\n * // Add a blur filter\n * rect.filters = [new filters.BlurFilter()];\n *\n * // Display rectangle\n * app.stage.addChild(rect);\n * document.body.appendChild(app.view);\n * @namespace PIXI.filters\n */\nexport const filters = {\n AlphaFilter,\n BlurFilter,\n BlurFilterPass,\n ColorMatrixFilter,\n DisplacementFilter,\n FXAAFilter,\n NoiseFilter,\n};\n\n// Export ES for those importing specifically by name,\nexport * from '@pixi/accessibility';\nexport * from '@pixi/app';\nexport * from '@pixi/assets';\nexport * from '@pixi/compressed-textures';\nexport * from '@pixi/core';\nexport * from '@pixi/display';\nexport * from '@pixi/events';\nexport * from '@pixi/extract';\nexport * from '@pixi/graphics';\nexport * from '@pixi/mesh';\nexport * from '@pixi/mesh-extras';\nexport * from '@pixi/particle-container';\nexport * from '@pixi/prepare';\nexport * from '@pixi/sprite';\nexport * from '@pixi/spritesheet';\nexport * from '@pixi/sprite-animated';\nexport * from '@pixi/sprite-tiling';\nexport * from '@pixi/text';\nexport * from '@pixi/text-bitmap';\n"],"names":["isMobile","extensions","tempPoints","sign","global","define","this","require$$0","require$$1","map","interleaveTypedArrays","EventEmitter","UID","byteSizeMap","tempMatrix","fragTemplate","defaultFragment","defaultVertex","BLEND","OFFSET","CULLING","DEPTH_TEST","WINDING","DEPTH_MASK","vertex","fragment","tempMat","utils.EventEmitter","index","utils.removeItems","tempPoint","utils.sign","utils.uid","utils.isMobile","utils.path","validImages","utils.getResolutionOfUrl","utils.CanvasRenderTarget","utils.earcut","utils.premultiplyTint","utils.hex2rgb","utils.premultiplyTintToRgba","utils.createIndicesForQuads","utils.correctBlendMode","utils.premultiplyRgba","utils.hex2string","utils.string2hex","utils.trimCanvas"],"mappings":"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AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,IAAI,EAAE,yCAAyC;EACjD,EAAE,IAAI,EAAE,yCAAyC;EACjD,EAAE,IAAI,EAAE,yCAAyC;EACjD,EAAE,SAAS,EAAE,CAAC;AACd;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,WAAW,EAAE,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,cAAc,EAAE,CAAC;AACnB;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,CAAC,CAAC;EACF,MAAM,qBAAqB,GAAG;EAC9B,EAAE,KAAK,EAAE,CAAC,0BAA0B,CAAC;EACrC,EAAE,IAAI,EAAE,CAAC,0BAA0B,CAAC;EACpC,EAAE,IAAI,EAAE,CAAC,0BAA0B,CAAC;EACpC,EAAE,IAAI,EAAE,4B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AE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC5E,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC5E,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EAClF,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GA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,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACpB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACpB,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACpB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACpB,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACpB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACpB,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,GAAG;EACH,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACtC,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EAClE,GAAG;EACH,EAAE,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACzC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACvB,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;EACzB,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACjC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACjC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,GAAG;EACH,EAAE,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE;EACpD,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE;EACrD,MAAM,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;EAC9B,MAAM,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAClC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EACjC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EACjC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EACjC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EACjC,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,GAAG;EACH,EAAE,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;EAC3D,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;EACvF,GAAG;EACH,EAAE,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE;EACrF,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACvB,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;EACzB,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE;EACrD,MAAM,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC/B,MAAM,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACnC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;EACzC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;EACzC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;EACtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;EACtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;EACtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;EACtC,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,GAAG;EACH,EAAE,SAAS,CAAC,MAAM,EAAE;EACpB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC3B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC3B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC3B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;EACxD,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;EACxD,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;EACxD,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;EACxD,GAAG;EACH,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE;EAC9B,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACpE,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACpE,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACpE,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACpE,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;EAC1C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC7B,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC7B,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC7B,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC7B,MAAM,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;EAC9C,MAAM,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;EAC9C,MAAM,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;EAC9C,MAAM,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;EAC9C,KAAK;EACL,GAAG;EACH,EAAE,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE;EAClC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;EACpF,GAAG;EACH,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE;EAC9B,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;EAC9D,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;EAC9D,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;EACxF,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;EAC1F,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;EAC1C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC7B,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC7B,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC7B,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC7B,MAAM,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;EAC9C,MAAM,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;EAC9C,MAAM,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;EAC9C,MAAM,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;EAC9C,KAAK;EACL,GAAG;EACH,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE;EACzC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;EACzB,MAAM,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;EAC5B,MAAM,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;EAC5B,MAAM,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;EAC5B,MAAM,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;EAC5B,KAAK;EACL,GAAG;EACH,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;EAC1C,IAAI,EAAE,IAAI,IAAI,CAAC;EACf,IAAI,EAAE,IAAI,IAAI,CAAC;EACf,IAAI,EAAE,IAAI,IAAI,CAAC;EACf,IAAI,EAAE,IAAI,IAAI,CAAC;EACf,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EAChD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EAChD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EAChD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EAChD,GAAG;EACH;;ECtOA,MAAM,aAAa,SAASE,aAAkB,CAAC;EAC/C,EAAE,WAAW,GAAG;EAChB,IAAI,KAAK,EAAE,CAAC;EACZ,IAAI,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;EACxC,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;EACrC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;EAC1B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;EAC9B,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;EACrB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;EAChC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,EAAE,CAAC;EAChC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EAC7B,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EACvB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;EACjC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EAC5B,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;EAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,GAAG;EACH,EAAE,OAAO,KAAK,CAAC,MAAM,EAAE;EACvB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACrC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC1C,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACnC,MAAM,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;EAC1H,KAAK;EACL,GAAG;EACH,EAAE,IAAI,SAAS,GAAG;EAClB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC;EAC3B,GAAG;EACH,EAAE,6BAA6B,GAAG;EAClC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;EACrB,MAAM,IAAI,CAAC,MAAM,CAAC,6BAA6B,EAAE,CAAC;EAClD,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;EAC5D,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;EAC9E,KAAK;EACL,GAAG;EACH,EAAE,eAAe,GAAG;EACpB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;EACrB,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;EAC1D,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;EAC1D,GAAG;EACH,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE;EAC9B,IAAI,IAAI,CAAC,UAAU,EAAE;EACrB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;EACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC;EACpD,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;EAC/B,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EAC3B,OAAO,MAAM;EACb,QAAQ,IAAI,CAAC,6BAA6B,EAAE,CAAC;EAC7C,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;EAC/B,OAAO;EACP,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;EAClD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;EAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;EAC7C,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,EAAE;EACf,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;EAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;EAC3C,OAAO;EACP,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;EAC9B,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;EAC3C,GAAG;EACH,EAAE,cAAc,CAAC,IAAI,EAAE;EACvB,IAAI,IAAI,CAAC,IAAI,EAAE;EACf,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;EAClC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,SAAS,EAAE,CAAC;EAChD,OAAO;EACP,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC;EACnC,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;EAC5B,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,MAAM,EAAE,CAAC;EACvC,KAAK;EACL,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;EACxC,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;EAClC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC;EAC7D,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;EACrC,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;EACzC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;EACrC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EAC/C,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;EAC5B,IAAI,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;EAClC,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;EAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;EAC5D,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;EACH,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE;EAChD,IAAI,IAAI,CAAC,UAAU,EAAE;EACrB,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;EAC3C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;EACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC;EACpD,QAAQ,IAAI,CAAC,4BAA4B,EAAE,CAAC;EAC5C,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EAC3B,OAAO,MAAM;EACb,QAAQ,IAAI,CAAC,4BAA4B,EAAE,CAAC;EAC5C,OAAO;EACP,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;EACtD,GAAG;EACH,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;EAC7C,IAAI,IAAI,IAAI,EAAE;EACd,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;EAC5D,KAAK;EACL,IAAI,IAAI,CAAC,UAAU,EAAE;EACrB,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;EAC3C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;EACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC;EACpD,QAAQ,IAAI,CAAC,4BAA4B,EAAE,CAAC;EAC5C,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EAC3B,OAAO,MAAM;EACb,QAAQ,IAAI,CAAC,4BAA4B,EAAE,CAAC;EAC5C,OAAO;EACP,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;EAC7D,GAAG;EACH,EAAE,SAAS,CAAC,SAAS,EAAE;EACvB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;EAC3C,MAAM,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;EACjE,KAAK;EACL,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;EAC7B,IAAI,OAAO,SAAS,CAAC;EACrB,GAAG;EACH,EAAE,gBAAgB,GAAG;EACrB,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;EACnC,GAAG;EACH,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE;EACjH,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;EACxC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;EACxC,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;EAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;EAC1B,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,CAAC,QAAQ,EAAE;EACpB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAC5B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;EAC7B,IAAI,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;EACrC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC9B,GAAG;EACH,EAAE,IAAI,wBAAwB,GAAG;EACjC,IAAI,IAAI,IAAI,CAAC,uBAAuB,KAAK,IAAI,EAAE;EAC/C,MAAM,IAAI,CAAC,uBAAuB,GAAG,IAAI,sBAAsB,EAAE,CAAC;EAClE,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,uBAAuB,CAAC;EACxC,GAAG;EACH,EAAE,gBAAgB,GAAG;EACrB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;EACjC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC;EAChD,IAAI,OAAO,QAAQ,CAAC;EACpB,GAAG;EACH,EAAE,iBAAiB,CAAC,WAAW,EAAE;EACjC,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;EAC9B,GAAG;EACH,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE;EACf,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC;EACtC,GAAG;EACH,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE;EACf,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC;EACtC,GAAG;EACH,EAAE,IAAI,cAAc,GAAG;EACvB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;EACzC,GAAG;EACH,EAAE,IAAI,cAAc,GAAG;EACvB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;EACzC,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;EACnC,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;EACtB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EAC5C,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;EAChC,GAAG;EACH,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;EACnB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EACzC,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;EAChC,GAAG;EACH,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;EACnB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EACzC,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;EAC/B,GAAG;EACH,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;EAClB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EACxC,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;EACnC,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;EACtB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;EACpC,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC;EAChD,GAAG;EACH,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;EACnB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC;EACjD,GAAG;EACH,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE;EACpB,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACzB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;EACrB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;EACnC,KAAK;EACL,GAAG;EACH,EAAE,IAAI,YAAY,GAAG;EACrB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;EACpB,IAAI,GAAG;EACP,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;EACzB,QAAQ,OAAO,KAAK,CAAC;EACrB,OAAO;EACP,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;EACzB,KAAK,QAAQ,IAAI,EAAE;EACnB,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;EACtB,GAAG;EACH,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;EAClB,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;EAC9B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;EACpB,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;EACpF,MAAM,IAAI,UAAU,EAAE;EACtB,QAAQ,UAAU,CAAC,aAAa,EAAE,CAAC;EACnC,QAAQ,IAAI,UAAU,CAAC,aAAa,KAAK,CAAC,EAAE;EAC5C,UAAU,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;EACvC,UAAU,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;EACpC,SAAS;EACT,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;EACpB,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;EACpF,MAAM,IAAI,UAAU,EAAE;EACtB,QAAQ,IAAI,UAAU,CAAC,aAAa,KAAK,CAAC,EAAE;EAC5C,UAAU,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;EACxC,UAAU,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;EACnC,SAAS;EACT,QAAQ,UAAU,CAAC,aAAa,EAAE,CAAC;EACnC,OAAO;EACP,KAAK;EACL,GAAG;EACH,CAAC;EACD,MAAM,sBAAsB,SAAS,aAAa,CAAC;EACnD,EAAE,WAAW,GAAG;EAChB,IAAI,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,GAAG;EACH,CAAC;EACD,aAAa,CAAC,SAAS,CAAC,4BAA4B,GAAG,aAAa,CAAC,SAAS,CAAC,eAAe;;EChS9F,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;EAC5B,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;EAC7B,IAAI,OAAO,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;EACnD,GAAG;EACH,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;EAC7B,CAAC;EACD,MAAM,SAAS,SAAS,aAAa,CAAC;EACtC,EAAE,WAAW,GAAG;EAChB,IAAI,KAAK,EAAE,CAAC;EACZ,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;EACvB,IAAI,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;EACvD,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,GAAG;EACH,EAAE,gBAAgB,CAAC,OAAO,EAAE;EAC5B,GAAG;EACH,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAE;EACxB,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;EAC7B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAChD,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;EACnC,OAAO;EACP,KAAK,MAAM;EACX,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EAChC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;EACxB,QAAQ,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;EACxC,OAAO;EACP,MAAM,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;EAC1B,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC5B,MAAM,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;EACrC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAChC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;EACvB,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACtD,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACrE,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;EAChC,KAAK;EACL,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;EACvB,GAAG;EACH,EAAE,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE;EAC3B,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;EACnD,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,2BAA2B,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAClH,KAAK;EACL,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE;EACtB,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;EACtC,KAAK;EACL,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,IAAI,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;EACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;EAC1C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;EACrB,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;EACjC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;EAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;EAChD,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE;EAC9B,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;EAC1B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;EAC7C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EAC9C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;EACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;EAClC,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;EAC7D,GAAG;EACH,EAAE,aAAa,CAAC,KAAK,EAAE;EACvB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EAC/C,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;EACtB,MAAM,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;EAClF,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,aAAa,CAAC,KAAK,EAAEC,OAAK,EAAE;EAC9B,IAAI,IAAIA,OAAK,GAAG,CAAC,IAAIA,OAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;EACpD,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,UAAU,EAAEA,OAAK,CAAC,2BAA2B,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC9F,KAAK;EACL,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;EACnD,IAAIC,WAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;EACtD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAACD,OAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;EAC1C,IAAI,IAAI,CAAC,gBAAgB,CAACA,OAAK,CAAC,CAAC;EACjC,GAAG;EACH,EAAE,UAAU,CAAC,KAAK,EAAE;EACpB,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;EACpD,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;EACtE,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EAChC,GAAG;EACH,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAE;EAC3B,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;EAC7B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAChD,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;EACtC,OAAO;EACP,KAAK,MAAM;EACX,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EAChC,MAAM,MAAMA,OAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EACjD,MAAM,IAAIA,OAAK,KAAK,CAAC,CAAC;EACtB,QAAQ,OAAO,IAAI,CAAC;EACpB,MAAM,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;EAC1B,MAAM,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;EACrC,MAAMC,WAAiB,CAAC,IAAI,CAAC,QAAQ,EAAED,OAAK,EAAE,CAAC,CAAC,CAAC;EACjD,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;EACvB,MAAM,IAAI,CAAC,gBAAgB,CAACA,OAAK,CAAC,CAAC;EACnC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;EAClC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAEA,OAAK,CAAC,CAAC;EACpD,KAAK;EACL,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;EACvB,GAAG;EACH,EAAE,aAAa,CAACA,OAAK,EAAE;EACvB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAACA,OAAK,CAAC,CAAC;EACzC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;EACxB,IAAI,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;EACnC,IAAIC,WAAiB,CAAC,IAAI,CAAC,QAAQ,EAAED,OAAK,EAAE,CAAC,CAAC,CAAC;EAC/C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;EACrB,IAAI,IAAI,CAAC,gBAAgB,CAACA,OAAK,CAAC,CAAC;EACjC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;EAChC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAEA,OAAK,CAAC,CAAC;EAClD,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,cAAc,CAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;EAClE,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC;EAC7B,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC;EACzB,IAAI,MAAM,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;EAC9B,IAAI,IAAI,OAAO,CAAC;EAChB,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,EAAE;EACnC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;EACnD,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC/C,QAAQ,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;EACjC,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;EAClC,UAAU,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;EAC9C,SAAS;EACT,OAAO;EACP,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;EACvB,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;EACxC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC/C,QAAQ,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;EACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;EACvD,OAAO;EACP,MAAM,OAAO,OAAO,CAAC;EACrB,KAAK,MAAM,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;EAC1D,MAAM,OAAO,EAAE,CAAC;EAChB,KAAK;EACL,IAAI,MAAM,IAAI,UAAU,CAAC,kEAAkE,CAAC,CAAC;EAC7F,GAAG;EACH,EAAE,YAAY,GAAG;EACjB,IAAI,IAAI,YAAY,GAAG,KAAK,CAAC;EAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EAC1D,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EACrC,MAAM,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC;EACjC,MAAM,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EAC/C,QAAQ,YAAY,GAAG,IAAI,CAAC;EAC5B,OAAO;EACP,KAAK;EACL,IAAI,IAAI,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;EAClD,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EACvC,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,GAAG;EACH,EAAE,eAAe,GAAG;EACpB,IAAI,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,SAAS,EAAE;EACjD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;EAC1B,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;EACrB,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;EAC1D,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;EAC1D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EAC1D,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EACrC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;EACzB,QAAQ,KAAK,CAAC,eAAe,EAAE,CAAC;EAChC,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,eAAe,GAAG;EACpB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;EACzB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAC5B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACnD,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EACrC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;EAC/C,QAAQ,SAAS;EACjB,OAAO;EACP,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC;EAC9B,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;EACvB,QAAQ,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;EACzF,QAAQ,IAAI,UAAU,EAAE;EACxB,UAAU,UAAU,CAAC,eAAe,EAAE,CAAC;EACvC,UAAU,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;EACxE,SAAS,MAAM;EACf,UAAU,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;EAChD,SAAS;EACT,OAAO,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE;EACnC,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;EACpE,OAAO,MAAM;EACb,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;EAC9C,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;EAC3C,GAAG;EACH,EAAE,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,KAAK,EAAE;EACnD,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;EAC9C,IAAI,IAAI,CAAC,kBAAkB,EAAE;EAC7B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EAC5D,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EACvC,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE;EAC3B,UAAU,KAAK,CAAC,eAAe,EAAE,CAAC;EAClC,SAAS;EACT,OAAO;EACP,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;EACH,EAAE,gBAAgB,GAAG;EACrB,GAAG;EACH,EAAE,kBAAkB,CAAC,QAAQ,EAAE;EAC/B,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC;EAC3D,IAAI,IAAI,EAAE,WAAW,CAAC,KAAK,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;EAC5D,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,MAAM,CAAC;EACf,IAAI,IAAI,SAAS,CAAC;EAClB,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;EACvB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;EAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;EACtC,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE;EAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EACpC,KAAK;EACL,IAAI,IAAI,MAAM,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;EAC7D,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;EAC7B,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;EAC9B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EAC1D,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EACrC,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC;EAC3C,MAAM,KAAK,CAAC,QAAQ,GAAG,aAAa,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;EACvD,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAC7B,MAAM,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC;EACrC,KAAK;EACL,GAAG;EACH,EAAE,MAAM,CAAC,QAAQ,EAAE;EACnB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;EACnE,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;EAC5C,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;EACpC,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;EAC9B,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;EACxC,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;EAC7B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EAC5D,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAC1C,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,cAAc,CAAC,QAAQ,EAAE;EAC3B,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EACjC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;EAC5B,IAAI,IAAI,OAAO,EAAE;EACjB,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;EACjC,QAAQ,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;EAClC,OAAO;EACP,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;EACtC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/C,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;EAChC,UAAU,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;EAChD,SAAS;EACT,OAAO;EACP,KAAK;EACL,IAAI,MAAM,KAAK,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;EAC9J,IAAI,IAAI,KAAK,EAAE;EACf,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;EAC7B,KAAK;EACL,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE;EACjD,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;EACvD,KAAK;EACL,IAAI,IAAI,IAAI,EAAE;EACd,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;EAC3C,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;EACvB,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;EACxC,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;EAC7B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EAC5D,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAC1C,OAAO;EACP,KAAK;EACL,IAAI,IAAI,KAAK,EAAE;EACf,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;EAC7B,KAAK;EACL,IAAI,IAAI,IAAI,EAAE;EACd,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,KAAK;EACL,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE;EACjD,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;EAC5B,KAAK;EACL,GAAG;EACH,EAAE,OAAO,CAAC,SAAS,EAAE;EACrB,GAAG;EACH,EAAE,OAAO,CAAC,OAAO,EAAE;EACnB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;EACpB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,IAAI,MAAM,eAAe,GAAG,OAAO,OAAO,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,EAAE,QAAQ,CAAC;EACvF,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;EACrE,IAAI,IAAI,eAAe,EAAE;EACzB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EACnD,QAAQ,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EACxC,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC;EACtD,GAAG;EACH,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;EACnB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC;EAC9C,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;EACrB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;EACnC,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;EACvB,KAAK;EACL,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC;EACvD,GAAG;EACH,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE;EACpB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC;EAChD,IAAI,IAAI,MAAM,KAAK,CAAC,EAAE;EACtB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC;EACpC,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;EACvB,KAAK;EACL,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACzB,GAAG;EACH,CAAC;EACD,SAAS,CAAC,SAAS,CAAC,wBAAwB,GAAG,SAAS,CAAC,SAAS,CAAC,eAAe;;ECzUlF,MAAME,WAAS,GAAG,IAAI,KAAK,EAAE,CAAC;EAC9B,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EACpD,MAAM,MAAM,SAAS,SAAS,CAAC;EAC/B,EAAE,WAAW,CAAC,OAAO,EAAE;EACvB,IAAI,KAAK,EAAE,CAAC;EACZ,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACjJ,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EACpB,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;EACrB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;EACzB,IAAI,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;EACxC,IAAI,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;EAChC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;EACpB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;EAC5C,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;EAC1C,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;EAClC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;EAClC,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;EAChC,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;EAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;EAC9C,GAAG;EACH,EAAE,gBAAgB,GAAG;EACrB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;EAChC,IAAI,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;EAChC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;EACrB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAGC,IAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;EACvF,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;EACtB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAGA,IAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;EACzF,KAAK;EACL,GAAG;EACH,EAAE,eAAe,GAAG;EACpB,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;EAClC,GAAG;EACH,EAAE,iBAAiB,GAAG;EACtB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;EAClC,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,CAAC,SAAS,EAAE;EAChG,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,CAAC,SAAS,EAAE;EAC/C,MAAM,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;EAC/C,KAAK;EACL,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;EAChD,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;EACxC,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;EAC7C,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;EACrB,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;EACrB,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;EACvC,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;EAC9B,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;EAC9B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;EAChC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,IAAI,EAAE;EACd,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;EAC3C,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;EAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;EAC5C,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;EAC5B,KAAK,MAAM;EACX,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;EACnC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;EAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;EACpC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;EAC5B,KAAK;EACL,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;EAC3B,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;EAC7C,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAClD,QAAQ,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;EAClF,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,wBAAwB,GAAG;EAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;EACjC,MAAM,IAAI,CAAC,iBAAiB,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;EACnD,KAAK,MAAM,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;EAC3H,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;EACvD,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;EACrD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;EAClC,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;EAC9C,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;EAC9B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;EAChC,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;EAC7C,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;EACrB,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;EACrB,IAAI,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;EACvC,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;EAC/B,IAAI,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;EACxC,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;EAChC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,GAAG;EACH,EAAE,OAAO,CAAC,QAAQ,EAAE;EACpB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;EAC7B,IAAI,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;EACxE,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACnD,GAAG;EACH,EAAE,gBAAgB,GAAG;EACrB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;EACpC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;EACpC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;EAC3E,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;EAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EAC5C,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;EACtC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;EACnD,KAAK;EACL,GAAG;EACH,EAAE,cAAc,CAAC,IAAI,EAAE;EACvB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;EACpC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;EAC9B,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,MAAM,EAAE,CAAC;EACzC,OAAO;EACP,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;EAC3E,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;EAC5E,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EAChF,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACjF,MAAM,IAAI,CAAC,IAAI,EAAE;EACjB,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;EACpC,UAAU,IAAI,CAAC,gBAAgB,GAAG,IAAI,SAAS,EAAE,CAAC;EAClD,SAAS;EACT,QAAQ,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC;EACrC,OAAO;EACP,MAAM,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;EAClD,KAAK;EACL,IAAI,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACjD,GAAG;EACH,EAAE,aAAa,CAAC,KAAK,EAAE;EACvB,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAED,WAAS,CAAC,CAAC;EACvD,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;EAC3C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;EAC7C,IAAI,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EACtC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAIA,WAAS,CAAC,CAAC,IAAI,EAAE,IAAIA,WAAS,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE;EACvD,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EACnC,MAAM,IAAIA,WAAS,CAAC,CAAC,IAAI,EAAE,IAAIA,WAAS,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE;EAC1D,QAAQ,OAAO,IAAI,CAAC;EACpB,OAAO;EACP,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,OAAO,CAAC,OAAO,EAAE;EACnB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;EAC7D,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,MAAM,cAAc,GAAG,OAAO,OAAO,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;EACrF,IAAI,IAAI,cAAc,EAAE;EACxB,MAAM,MAAM,kBAAkB,GAAG,OAAO,OAAO,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,EAAE,WAAW,CAAC;EAC/F,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;EAClD,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,GAAG;EACH,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;EAC/B,IAAI,MAAM,OAAO,GAAG,MAAM,YAAY,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EACvF,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;EAC/B,GAAG;EACH,EAAE,IAAI,WAAW,CAAC,KAAK,EAAE;EACzB,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;EACrC,MAAM,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;EAC7B,KAAK;EACL,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC9B,GAAG;EACH,EAAE,IAAI,WAAW,GAAG;EACpB,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC;EAC7B,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;EAC7D,GAAG;EACH,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;EACnB,IAAI,MAAM,CAAC,GAAGC,IAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;EACxD,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;EAC9D,GAAG;EACH,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE;EACpB,IAAI,MAAM,CAAC,GAAGA,IAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;EACzD,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE;EACpB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EACjC,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;EACtB,GAAG;EACH,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;EAClB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;EAC5E,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE;EACrB,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;EACjC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;EACvB,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;EAC/D,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;EAC3C,IAAI,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;EAChC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;EAChC,IAAI,IAAI,KAAK,EAAE;EACf,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE;EACnC,QAAQ,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAChC,OAAO,MAAM;EACb,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;EAC1D,OAAO;EACP,KAAK;EACL,GAAG;EACH;;ECxPA,MAAM,WAAW,GAAG,IAAI,MAAM,EAAE,CAAC;EACjC,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,KAAK,CAAC;EAC/C,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;EAC1C,aAAa,CAAC,SAAS,CAAC,wBAAwB,GAAG,IAAI,CAAC;EACxD,aAAa,CAAC,SAAS,CAAC,yBAAyB,GAAG,IAAI,CAAC;EACzD,MAAM,SAAS,CAAC;EAChB,EAAE,WAAW,GAAG;EAChB,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;EACrC,IAAI,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;EACxC,IAAI,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;EACvC,IAAI,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;EACxC,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;EAChC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EAC7B,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;EACnC,IAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;EACtC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,GAAG;EACH,CAAC;EACD,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS,EAAE;EACjD,EAAE,uBAAuB,EAAE;EAC3B,IAAI,GAAG,GAAG;EACV,MAAM,OAAO,IAAI,CAAC,wBAAwB,CAAC;EAC3C,KAAK;EACL,IAAI,GAAG,CAAC,UAAU,EAAE;EACpB,MAAM,IAAI,UAAU,KAAK,IAAI,CAAC,wBAAwB,EAAE;EACxD,QAAQ,OAAO;EACf,OAAO;EACP,MAAM,IAAI,CAAC,wBAAwB,GAAG,UAAU,CAAC;EACjD,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;EAC9B,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;EACnC,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAClC,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,wBAAwB,EAAE;EAC5B,IAAI,GAAG,GAAG;EACV,MAAM,OAAO,IAAI,CAAC,yBAAyB,CAAC;EAC5C,KAAK;EACL,IAAI,GAAG,CAAC,WAAW,EAAE;EACrB,MAAM,IAAI,WAAW,KAAK,IAAI,CAAC,yBAAyB,EAAE;EAC1D,QAAQ,OAAO;EACf,OAAO;EACP,MAAM,IAAI,CAAC,yBAAyB,GAAG,WAAW,CAAC;EACnD,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;EAC9B,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;EACnC,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAClC,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,aAAa,EAAE;EACjB,IAAI,GAAG,GAAG;EACV,MAAM,OAAO,IAAI,CAAC,cAAc,CAAC;EACjC,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,MAAM,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;EACzC,QAAQ,OAAO;EACf,OAAO;EACP,MAAM,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;EAClC,MAAM,IAAI,IAAI,CAAC;EACf,MAAM,IAAI,KAAK,EAAE;EACjB,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;EAC9B,UAAU,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,EAAE,CAAC;EAC5C,SAAS;EACT,QAAQ,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;EAC/B,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;EAC1C,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC;EACtD,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC;EAC5D,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC;EAC5D,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC;EAC1D,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;EAC5C,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC;EACxD,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;EACvC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;EAClD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;EACzC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC;EACrD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC;EAClD,OAAO,MAAM;EACb,QAAQ,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;EAC/B,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;EACzB,UAAU,IAAI,CAAC,2BAA2B,EAAE,CAAC;EAC7C,SAAS;EACT,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;EAC1C,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC;EACtD,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC;EAC5D,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC;EAC1D,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;EAC5C,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC;EAC5D,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC;EACxD,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;EACvC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;EAClD,OAAO;EACP,KAAK;EACL,GAAG;EACH,CAAC,CAAC,CAAC;EACH,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,QAAQ,EAAE;EACzE,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;EACjE,IAAI,OAAO;EACX,GAAG;EACH,EAAE,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;EAC1C,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;EACtE,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;EACtD,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;EAC3C,CAAC,CAAC;EACF,aAAa,CAAC,SAAS,CAAC,wBAAwB,GAAG,SAAS,wBAAwB,CAAC,QAAQ,EAAE;EAC/F,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;EAC/B,IAAI,OAAO;EACX,GAAG;EACH,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;EAChC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACjB,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;EACzB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;EACzD,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;EAC5B,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;EAC5C,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;EACxB,GAAG;EACH,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;EACnC,EAAE,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;EAC7D,EAAE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;EACvE,EAAE,MAAM,sBAAsB,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;EACjF,EAAE,MAAM,yBAAyB,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;EAClE,EAAE,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC;EAC7C,IAAI,KAAK,EAAE,MAAM,CAAC,KAAK;EACvB,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM;EACzB,IAAI,UAAU,EAAE,IAAI,CAAC,uBAAuB,IAAI,QAAQ,CAAC,UAAU;EACnE,IAAI,WAAW,EAAE,IAAI,CAAC,wBAAwB,IAAI,QAAQ,CAAC,WAAW;EACtE,GAAG,CAAC,CAAC;EACL,EAAE,MAAM,cAAc,GAAG,CAAC,cAAc,EAAEC,GAAS,EAAE,CAAC,CAAC,CAAC;EACxD,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,cAAc,CAAC;EAClD,EAAE,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;EACpE,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;EACpD,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvG,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;EAC/C,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;EAClG,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;EAC9B,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,GAAG,yBAAyB,CAAC;EAC5D,EAAE,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;EAC9F,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;EACnC,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,4BAA4B,CAAC;EAC3D,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC;EACrD,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC;EACnD,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACpB,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EACzB,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;EAC1B,EAAE,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;EACjD,EAAE,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;EACxE,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;EACrD,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;EACtD,EAAE,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC;EAClC,EAAE,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EACtC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC;EACxC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;EAChC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;EACpB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAC5B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;EAC3B,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;EACjC,GAAG,MAAM;EACT,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EACrE,CAAC,CAAC;EACF,aAAa,CAAC,SAAS,CAAC,mBAAmB,GAAG,SAAS,mBAAmB,CAAC,QAAQ,EAAE;EACrF,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;EACjE,IAAI,OAAO;EACX,GAAG;EACH,EAAE,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;EAChD,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;EACtD,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EACjD,CAAC,CAAC;EACF,aAAa,CAAC,SAAS,CAAC,8BAA8B,GAAG,SAAS,8BAA8B,CAAC,QAAQ,EAAE;EAC3G,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;EAC/B,IAAI,OAAO;EACX,GAAG;EACH,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACjD,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;EAChC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACjB,EAAE,MAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC;EAClE,EAAE,MAAM,yBAAyB,GAAG,QAAQ,CAAC,cAAc,CAAC;EAC5D,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;EACnC,EAAE,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;EAC7F,EAAE,MAAM,cAAc,GAAG,CAAC,cAAc,EAAEA,GAAS,EAAE,CAAC,CAAC,CAAC;EACxD,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,cAAc,CAAC;EAClD,EAAE,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;EACpE,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;EACpD,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC;EACxB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC1C,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;EACb,EAAE,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC;EACnB,EAAE,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC;EACnB,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;EAC3D,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;EAClG,EAAE,QAAQ,CAAC,aAAa,CAAC,aAAa,GAAG,kBAAkB,CAAC;EAC5D,EAAE,QAAQ,CAAC,cAAc,GAAG,yBAAyB,CAAC;EACtD,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC;EAC/C,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,4BAA4B,CAAC;EAC3D,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC;EACrD,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC;EACnD,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACpB,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EACzB,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;EAC1B,EAAE,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;EACjD,EAAE,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;EACxE,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;EACrD,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;EACtD,EAAE,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC;EAClC,EAAE,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EACtC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC;EACxC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;EAChC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;EACpB,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,wBAAwB,CAAC;EACpD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;EAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,GAAG,MAAM;EACT,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EACrE,CAAC,CAAC;EACF,aAAa,CAAC,SAAS,CAAC,sBAAsB,GAAG,SAAS,sBAAsB,GAAG;EACnF,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;EACvB,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;EACtE,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;EAC5C,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;EACzC,CAAC,CAAC;EACF,aAAa,CAAC,SAAS,CAAC,qBAAqB,GAAG,SAAS,qBAAqB,GAAG;EACjF,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;EACrD,CAAC,CAAC;EACF,aAAa,CAAC,SAAS,CAAC,2BAA2B,GAAG,SAAS,2BAA2B,GAAG;EAC7F,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAChD,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;EAChC,EAAE,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;EAC9D,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;EAC1D,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC;EACxC,CAAC,CAAC;EACF,aAAa,CAAC,SAAS,CAAC,qBAAqB,GAAG,SAAS,qBAAqB,CAAC,OAAO,EAAE;EACxF,EAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;EAC7B,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EACxB,CAAC;;EC/OD,aAAa,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;EACpC,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;EACzE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACxD,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE;EACxC,MAAM,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC9B,KAAK;EACL,GAAG;EACH,EAAE,IAAI,IAAI,EAAE;EACZ,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC1D,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EACrC,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;EACjC,QAAQ,SAAS;EACjB,OAAO;EACP,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACtD,MAAM,IAAI,MAAM,EAAE;EAClB,QAAQ,OAAO,MAAM,CAAC;EACtB,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,OAAO,IAAI,CAAC;EACd,CAAC;;ECnBD,aAAa,CAAC,SAAS,CAAC,iBAAiB,GAAG,SAAS,iBAAiB,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,EAAE,UAAU,GAAG,KAAK,EAAE;EAChH,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;EACnB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;EAC3D,GAAG,MAAM;EACT,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC9B,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC9B,GAAG;EACH,EAAE,OAAO,KAAK,CAAC;EACf,CAAC;;ACXI,QAAC,gBAAgB,GAAG;EACzB,EAAE,UAAU,EAAE,KAAK;EACnB,EAAE,eAAe,EAAE,IAAI;EACvB,EAAE,cAAc,EAAE,IAAI;EACtB,EAAE,QAAQ,EAAE,CAAC;EACb,EAAE,iBAAiB,EAAE,KAAK;EAC1B,EAAE,cAAc,EAAE,IAAI;EACtB,EAAE,cAAc,EAAE,QAAQ;EAC1B,EAAE,uBAAuB,EAAE,MAAM;EACjC,EAAE,kBAAkB,EAAE,IAAI;EAC1B,EAAE,QAAQ,EAAE,CAAC,CAAC;EACd;;ECTA,MAAM,cAAc,CAAC;EACrB,EAAE,WAAW,CAAC,OAAO,EAAE;EACvB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EAC7B,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EAC5B,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;EAC1B,IAAI,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;EAClC,IAAI,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC;EACpD,IAAI,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;EACpC,IAAI,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC;EAC/C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;EAC7B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;EAC5B,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EACvB,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;EAC7B,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;EAClB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EACvB,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EACvB,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,YAAY,GAAG;EACjB,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE;EACzF,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;EAC/E,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC;EACrB,GAAG;EACH,EAAE,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE;EAC1C,IAAI,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;EAC3G,GAAG;EACH,EAAE,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE;EAC3E,IAAI,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;EAC7G,GAAG;EACH,EAAE,cAAc,GAAG;EACnB,IAAI,IAAI,IAAI,CAAC,WAAW,YAAY,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;EAC1E,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;EACxC,KAAK;EACL,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;EACjC,GAAG;EACH,EAAE,wBAAwB,GAAG;EAC7B,IAAI,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;EAC9C,GAAG;EACH,EAAE,eAAe,GAAG;EACpB,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;EACnC,GAAG;EACH;;ECxDA,MAAM,mBAAmB,SAAS,cAAc,CAAC;EACjD,EAAE,WAAW,GAAG;EAChB,IAAI,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;EAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;EAChC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;EAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;EAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;EAC9B,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,SAAS,GAAG;EAClB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,SAAS,GAAG;EAClB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EACzB,GAAG;EACH,EAAE,gBAAgB,CAAC,GAAG,EAAE;EACxB,IAAI,OAAO,kBAAkB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;EAC5F,GAAG;EACH,EAAE,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE;EACvN,IAAI,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;EAC/C,GAAG;EACH;;ECpDA,MAAM,qBAAqB,SAAS,mBAAmB,CAAC;EACxD,EAAE,WAAW,GAAG;EAChB,IAAI,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EACpB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,GAAG;EACH,EAAE,kBAAkB,GAAG;EACvB,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;EAC/F,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;EACpB,KAAK;EACL,IAAI,OAAO,EAAE,CAAC;EACd,GAAG;EACH,EAAE,kBAAkB,GAAG;EACvB,IAAI,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;EAC5D,GAAG;EACH;;EChBA,MAAM,mBAAmB,SAAS,mBAAmB,CAAC;EACtD,EAAE,WAAW,GAAG;EAChB,IAAI,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;EAC7B,GAAG;EACH;;ECJA,MAAM,iBAAiB,GAAG,IAAI,CAAC;EAC/B,MAAM,eAAe,GAAG,IAAI,KAAK,EAAE,CAAC;EACpC,MAAM,gBAAgB,GAAG,IAAI,KAAK,EAAE,CAAC;EACrC,MAAM,aAAa,CAAC;EACpB,EAAE,WAAW,CAAC,UAAU,EAAE;EAC1B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAIL,aAAkB,EAAE,CAAC;EAC7C,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,IAAI,IAAI,CAAC,YAAY,GAAG;EACxB,MAAM,YAAY,EAAE,EAAE;EACtB,KAAK,CAAC;EACN,IAAI,IAAI,CAAC,SAAS,mBAAmB,IAAI,GAAG,EAAE,CAAC;EAC/C,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;EACjC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACjD,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/C,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACzD,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACzD,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACvD,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACzD,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACrD,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACnE,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC7C,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EAC3B,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;EAC7D,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;EAC7D,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;EAC3D,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;EAC7D,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;EAC7D,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;EACzD,IAAI,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;EACvE,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;EACjD,GAAG;EACH,EAAE,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE;EAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;EAClC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;EACnC,KAAK;EACL,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;EACjC,MAAM,EAAE;EACR,MAAM,QAAQ,EAAE,CAAC;EACjB,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;EACpE,GAAG;EACH,EAAE,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE;EACzB,IAAI,CAAC,CAAC,kBAAkB,GAAG,KAAK,CAAC;EACjC,IAAI,CAAC,CAAC,6BAA6B,GAAG,KAAK,CAAC;EAC5C,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EAC1C,GAAG;EACH,EAAE,QAAQ,CAAC,CAAC,EAAE;EACd,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;EAC1B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAC9C,IAAI,IAAI,OAAO,EAAE;EACjB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACtD,QAAQ,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EACzB,OAAO;EACP,KAAK,MAAM;EACX,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,+CAA+C,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC/E,KAAK;EACL,GAAG;EACH,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE;EAChB,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;EACzJ,IAAI,OAAO,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;EAC3C,GAAG;EACH,EAAE,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE;EACrB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;EACnB,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;EAC1C,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,eAAe,CAAC;EACrC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC7D,MAAM,CAAC,CAAC,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;EACxC,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EACjC,MAAM,IAAI,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,6BAA6B;EACjE,QAAQ,OAAO;EACf,KAAK;EACL,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC;EAC/B,IAAI,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;EAC/B,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EAC/B,IAAI,IAAI,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,6BAA6B;EAC/D,MAAM,OAAO;EACb,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,cAAc,CAAC;EACpC,IAAI,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EACvD,MAAM,CAAC,CAAC,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;EACxC,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EACjC,MAAM,IAAI,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,6BAA6B;EACjE,QAAQ,OAAO;EACf,KAAK;EACL,GAAG;EACH,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;EACzC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,cAAc,CAAC;EACpC,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;EACrC,IAAI,IAAI,QAAQ,EAAE;EAClB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAChD,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;EACvC,OAAO;EACP,KAAK;EACL,IAAI,CAAC,CAAC,aAAa,GAAG,MAAM,CAAC;EAC7B,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EAC/B,GAAG;EACH,EAAE,eAAe,CAAC,MAAM,EAAE;EAC1B,IAAI,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,CAAC;EACrC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,IAAI,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;EAC9E,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;EAC1B,QAAQ,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;EAC/E,OAAO;EACP,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;EAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;EAC7B,KAAK;EACL,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;EAC9B,IAAI,OAAO,eAAe,CAAC;EAC3B,GAAG;EACH,EAAE,gBAAgB,CAAC,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;EAC1E,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;EAClD,MAAM,OAAO,IAAI,CAAC;EAClB,KAAK;EACL,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE;EAC1C,MAAM,OAAO,IAAI,CAAC;EAClB,KAAK;EACL,IAAI,IAAI,aAAa,CAAC,mBAAmB,IAAI,aAAa,CAAC,QAAQ,EAAE;EACrE,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;EAC9C,MAAM,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EACrD,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EAClC,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;EACpH,QAAQ,IAAI,SAAS,EAAE;EACvB,UAAU,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;EAC/E,YAAY,SAAS;EACrB,WAAW;EACX,UAAU,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,WAAW,EAAE;EACjE,YAAY,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EAC1C,WAAW;EACX,UAAU,OAAO,SAAS,CAAC;EAC3B,SAAS;EACT,OAAO;EACP,KAAK;EACL,IAAI,IAAI,WAAW,IAAI,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE;EACxD,MAAM,OAAO,aAAa,CAAC,WAAW,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;EAC9D,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,UAAU,CAAC,aAAa,EAAE,QAAQ,EAAE;EACtC,IAAI,IAAI,aAAa,CAAC,OAAO,EAAE;EAC/B,MAAM,aAAa,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;EAC5E,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE;EACnF,QAAQ,OAAO,IAAI,CAAC;EACpB,OAAO;EACP,KAAK;EACL,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE;EAC7B,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC;EAC/G,MAAM,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,QAAQ,CAAC,EAAE;EAC/D,QAAQ,OAAO,IAAI,CAAC;EACpB,OAAO;EACP,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,SAAS,CAAC,aAAa,EAAE,QAAQ,EAAE;EACrC,IAAI,IAAI,aAAa,CAAC,OAAO,EAAE;EAC/B,MAAM,OAAO,IAAI,CAAC;EAClB,KAAK;EACL,IAAI,IAAI,aAAa,CAAC,aAAa,EAAE;EACrC,MAAM,OAAO,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EACnD,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE;EACxB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;EAC1B,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;EAC7G,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;EACjC,IAAI,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,SAAS,EAAE;EACtC,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EACpC,KAAK;EACL,GAAG;EACH,EAAE,cAAc,CAAC,IAAI,EAAE;EACvB,IAAI,IAAI,EAAE,IAAI,YAAY,qBAAqB,CAAC,EAAE;EAClD,MAAM,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;EACtF,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;EACzC,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,EAAE;EACnC,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;EAC1C,KAAK,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,KAAK,EAAE;EACrE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;EAC3C,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC;EACvE,KAAK;EACL,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC3D,IAAI,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;EACtE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EACtB,GAAG;EACH,EAAE,cAAc,CAAC,IAAI,EAAE;EACvB,IAAI,IAAI,EAAE,IAAI,YAAY,qBAAqB,CAAC,EAAE;EAClD,MAAM,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;EACtF,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;EAC5C,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC;EACzE,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC3D,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;EACvE,IAAI,IAAI,YAAY,CAAC,WAAW,IAAI,SAAS,KAAK,CAAC,CAAC,MAAM,EAAE;EAC5D,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;EAC5E,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;EACzE,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;EACjD,MAAM,IAAI,OAAO;EACjB,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;EACjD,MAAM,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;EACjD,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;EACpF,QAAQ,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC;EACrD,QAAQ,OAAO,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;EACnF,UAAU,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC;EACvD,UAAU,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;EACxC,UAAU,IAAI,OAAO;EACrB,YAAY,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;EACxD,UAAU,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;EACvD,SAAS;EACT,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;EACnC,OAAO;EACP,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;EAC/B,KAAK;EACL,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,MAAM,EAAE;EAChC,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;EAC/E,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;EAC5D,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;EACnD,MAAM,IAAI,OAAO;EACjB,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;EACnD,MAAM,IAAI,kBAAkB,GAAG,SAAS,EAAE,MAAM,CAAC;EACjD,MAAM,OAAO,kBAAkB,IAAI,kBAAkB,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;EAClF,QAAQ,IAAI,kBAAkB,KAAK,CAAC,CAAC,MAAM;EAC3C,UAAU,MAAM;EAChB,QAAQ,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC;EACvD,OAAO;EACP,MAAM,MAAM,eAAe,GAAG,CAAC,kBAAkB,IAAI,kBAAkB,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;EACnG,MAAM,IAAI,eAAe,EAAE;EAC3B,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;EACrE,QAAQ,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC;EACrD,QAAQ,OAAO,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;EACrH,UAAU,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC;EACvD,UAAU,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;EACxC,UAAU,IAAI,OAAO;EACrB,YAAY,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;EACxD,UAAU,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;EACvD,SAAS;EACT,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;EACnC,OAAO;EACP,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;EAChC,KAAK;EACL,IAAI,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,eAAe,CAAC;EACvE,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;EAC9C,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO;EACjC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;EAC9C,IAAI,IAAI,OAAO,EAAE;EACjB,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;EAC9C,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC;EACrC,KAAK;EACL,IAAI,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;EAChD,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EACtB,GAAG;EACH,EAAE,cAAc,CAAC,IAAI,EAAE;EACvB,IAAI,IAAI,EAAE,IAAI,YAAY,qBAAqB,CAAC,EAAE;EAClD,MAAM,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;EACtF,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC3D,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;EAC5C,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC;EACzE,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;EACzC,IAAI,IAAI,OAAO;EACf,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;EACzC,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO;EACjC,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC;EACrC,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;EACjE,IAAI,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC;EACjD,IAAI,OAAO,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;EAC9E,MAAM,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC;EACnD,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;EACpC,MAAM,IAAI,OAAO;EACjB,QAAQ,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;EACpD,MAAM,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;EACnD,KAAK;EACL,IAAI,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;EAChD,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EACtB,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;EAC/B,GAAG;EACH,EAAE,aAAa,CAAC,IAAI,EAAE;EACtB,IAAI,IAAI,EAAE,IAAI,YAAY,qBAAqB,CAAC,EAAE;EAClD,MAAM,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;EACtF,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC3D,IAAI,IAAI,YAAY,CAAC,WAAW,EAAE;EAClC,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC;EACjF,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;EACzE,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;EAC9E,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EACnC,MAAM,IAAI,OAAO;EACjB,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;EACjD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;EAClF,MAAM,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC;EACnD,MAAM,OAAO,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;EAChF,QAAQ,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC;EACrD,QAAQ,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;EACtC,QAAQ,IAAI,OAAO;EACnB,UAAU,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;EACtD,QAAQ,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;EACrD,OAAO;EACP,MAAM,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;EACtC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;EAC/B,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;EACjC,KAAK;EACL,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,GAAG;EACH,EAAE,YAAY,CAAC,IAAI,EAAE;EACrB,IAAI,IAAI,EAAE,IAAI,YAAY,qBAAqB,CAAC,EAAE;EAClD,MAAM,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;EACtF,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;EAClC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;EACvC,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,EAAE;EACnC,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;EACxC,KAAK,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,KAAK,EAAE;EACrE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;EAC3C,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC;EACnE,KAAK;EACL,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC3D,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EAC/F,IAAI,IAAI,WAAW,GAAG,WAAW,CAAC;EAClC,IAAI,IAAI,WAAW,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;EAChE,MAAM,IAAI,aAAa,GAAG,WAAW,CAAC;EACtC,MAAM,OAAO,aAAa,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;EACzE,QAAQ,CAAC,CAAC,aAAa,GAAG,aAAa,CAAC;EACxC,QAAQ,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;EACjD,QAAQ,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,EAAE;EACvC,UAAU,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;EAClD,SAAS,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,KAAK,EAAE;EACzE,UAAU,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;EAC/C,UAAU,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,aAAa,GAAG,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;EACpF,SAAS;EACT,QAAQ,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC;EAC7C,OAAO;EACP,MAAM,OAAO,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAC5D,MAAM,WAAW,GAAG,aAAa,CAAC;EAClC,KAAK;EACL,IAAI,IAAI,WAAW,EAAE;EACrB,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;EAC5D,MAAM,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC;EACtC,MAAM,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;EAC7B,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;EACrD,QAAQ,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;EACnD,UAAU,UAAU,EAAE,CAAC;EACvB,UAAU,MAAM,EAAE,UAAU,CAAC,MAAM;EACnC,UAAU,SAAS,EAAE,GAAG;EACxB,SAAS,CAAC;EACV,OAAO;EACP,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACpE,MAAM,IAAI,YAAY,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,IAAI,GAAG,GAAG,YAAY,CAAC,SAAS,GAAG,GAAG,EAAE;EAC3F,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC;EAClC,OAAO,MAAM;EACb,QAAQ,YAAY,CAAC,UAAU,GAAG,CAAC,CAAC;EACpC,OAAO;EACP,MAAM,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;EAC9C,MAAM,YAAY,CAAC,SAAS,GAAG,GAAG,CAAC;EACnC,MAAM,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC;EAClD,MAAM,IAAI,UAAU,CAAC,WAAW,KAAK,OAAO,EAAE;EAC9C,QAAQ,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;EAChD,OAAO,MAAM,IAAI,UAAU,CAAC,WAAW,KAAK,OAAO,EAAE;EACrD,QAAQ,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;EAC9C,OAAO;EACP,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;EACnD,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;EACjC,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EACtB,GAAG;EACH,EAAE,mBAAmB,CAAC,IAAI,EAAE;EAC5B,IAAI,IAAI,EAAE,IAAI,YAAY,qBAAqB,CAAC,EAAE;EAClD,MAAM,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;EACtF,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC3D,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EAC/F,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;EAC5C,IAAI,IAAI,WAAW,EAAE;EACrB,MAAM,IAAI,aAAa,GAAG,WAAW,CAAC;EACtC,MAAM,OAAO,aAAa,EAAE;EAC5B,QAAQ,CAAC,CAAC,aAAa,GAAG,aAAa,CAAC;EACxC,QAAQ,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;EACjD,QAAQ,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,EAAE;EACvC,UAAU,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;EAClD,SAAS,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,KAAK,EAAE;EACzE,UAAU,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;EACrF,SAAS;EACT,QAAQ,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC;EAC7C,OAAO;EACP,MAAM,OAAO,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAC5D,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EACtB,GAAG;EACH,EAAE,QAAQ,CAAC,IAAI,EAAE;EACjB,IAAI,IAAI,EAAE,IAAI,YAAY,mBAAmB,CAAC,EAAE;EAChD,MAAM,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;EAClF,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;EACnD,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;EACnC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;EAC/B,GAAG;EACH,EAAE,iBAAiB,CAAC,eAAe,EAAE;EACrC,IAAI,IAAI,CAAC,eAAe,EAAE;EAC1B,MAAM,OAAO,IAAI,CAAC;EAClB,KAAK;EACL,IAAI,IAAI,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;EAC3C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACrD,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,EAAE;EACvD,QAAQ,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;EAC3C,OAAO,MAAM;EACb,QAAQ,MAAM;EACd,OAAO;EACP,KAAK;EACL,IAAI,OAAO,aAAa,CAAC;EACzB,GAAG;EACH,EAAE,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;EACzC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;EAC5D,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EAC/B,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;EACzC,IAAI,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;EAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC1E,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;EAClC,MAAM,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;EACxB,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,gBAAgB,CAAC,IAAI,EAAE;EACzB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;EAC1D,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EACpC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EAC/B,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;EACzC,IAAI,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;EAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAChE,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE;EAChC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;EAC5D,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;EACzC,IAAI,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;EAC7C,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC/B,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;EAC7C,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;EACpC,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE;EAC1B,IAAI,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EAClC,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC5B,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC5B,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC5B,GAAG;EACH,EAAE,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE;EAC5B,IAAI,IAAI,EAAE,IAAI,YAAY,qBAAqB,IAAI,EAAE,YAAY,qBAAqB,CAAC;EACvF,MAAM,OAAO;EACb,IAAI,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EAClC,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAC1B,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC5B,IAAI,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EAClC,IAAI,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;EACtC,IAAI,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EAChC,IAAI,EAAE,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;EACpD,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAC1B,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAC1B,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAC1B,GAAG;EACH,EAAE,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE;EAC1B,IAAI,IAAI,EAAE,IAAI,YAAY,mBAAmB,IAAI,EAAE,YAAY,mBAAmB,CAAC;EACnF,MAAM,OAAO;EACb,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC5B,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC5B,IAAI,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EAC9B,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACpC,IAAI,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EAC9B,IAAI,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EAC9B,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EACxC,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACpC,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACpC,GAAG;EACH,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE;EACrB,IAAI,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EAClC,IAAI,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;EACpC,IAAI,EAAE,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;EACrC,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACxB,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC5B,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACxB,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAC1B,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAClC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAChC,GAAG;EACH,EAAE,YAAY,CAAC,EAAE,EAAE;EACnB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;EAC7C,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG;EAC3C,QAAQ,oBAAoB,EAAE,EAAE;EAChC,QAAQ,cAAc,EAAE,EAAE;EAC1B,QAAQ,UAAU,EAAE,IAAI;EACxB,OAAO,CAAC;EACR,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;EAC9C,GAAG;EACH,EAAE,aAAa,CAAC,WAAW,EAAE;EAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;EAC1C,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACjF,IAAI,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;EAClC,IAAI,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;EAC/B,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;EACtB,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;EACxB,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,SAAS,CAAC,KAAK,EAAE;EACnB,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI;EAC9B,MAAM,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;EAC3F,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;EAC1C,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;EAC1C,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAChD,GAAG;EACH,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE;EAC3B,IAAI,MAAM,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACpD,IAAI,IAAI,CAAC,SAAS;EAClB,MAAM,OAAO;EACb,IAAI,IAAI,IAAI,IAAI,SAAS,EAAE;EAC3B,MAAM,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;EAC9C,KAAK,MAAM;EACX,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,EAAE,CAAC,EAAE,EAAE;EAC5F,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;EACtD,OAAO;EACP,KAAK;EACL,GAAG;EACH;;EC7hBA,MAAM,gBAAgB,GAAG,CAAC,CAAC;EAC3B,MAAM,gBAAgB,GAAG;EACzB,EAAE,UAAU,EAAE,aAAa;EAC3B,EAAE,QAAQ,EAAE,WAAW;EACvB,EAAE,eAAe,EAAE,kBAAkB;EACrC,EAAE,SAAS,EAAE,aAAa;EAC1B,EAAE,WAAW,EAAE,eAAe;EAC9B,CAAC,CAAC;EACF,MAAM,WAAW,CAAC;EAClB,EAAE,WAAW,CAAC,QAAQ,EAAE;EACxB,IAAI,IAAI,CAAC,mBAAmB,GAAG,cAAc,IAAI,UAAU,CAAC;EAC5D,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;EAC3D,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC7B,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;EAChD,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;EACnC,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;EAC7B,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;EAC5D,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;EACxD,IAAI,IAAI,CAAC,YAAY,GAAG;EACxB,MAAM,OAAO,EAAE,SAAS;EACxB,MAAM,OAAO,EAAE,SAAS;EACxB,KAAK,CAAC;EACN,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACvD,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACvD,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACnD,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC7D,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC3C,GAAG;EACH,EAAE,IAAI,GAAG;EACT,IAAI,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;EAC/C,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;EAChC,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;EACjC,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;EAChC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,GAAG;EACH,EAAE,SAAS,CAAC,IAAI,EAAE;EAClB,IAAI,IAAI,GAAG,IAAI,IAAI,SAAS,CAAC;EAC7B,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,UAAU,CAAC,eAAe,IAAI,IAAI,CAAC,UAAU,YAAY,eAAe,EAAE;EAClF,MAAM,WAAW,GAAG,KAAK,CAAC;EAC1B,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;EACrC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC9B,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;EAC1C,IAAI,IAAI,KAAK,EAAE;EACf,MAAM,QAAQ,OAAO,KAAK;EAC1B,QAAQ,KAAK,QAAQ;EACrB,UAAU,IAAI,WAAW,EAAE;EAC3B,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;EACjD,WAAW;EACX,UAAU,MAAM;EAChB,QAAQ,KAAK,UAAU;EACvB,UAAU,KAAK,CAAC,IAAI,CAAC,CAAC;EACtB,UAAU,MAAM;EAChB,QAAQ,KAAK,QAAQ;EACrB,UAAU,IAAI,WAAW,EAAE;EAC3B,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;EACxD,WAAW;EACX,UAAU,MAAM;EAChB,OAAO;EACP,KAAK,MAAM,IAAI,WAAW,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE;EAC1H,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;EAC1C,KAAK;EACL,GAAG;EACH,EAAE,aAAa,CAAC,WAAW,EAAE;EAC7B,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;EACpE,IAAI,IAAI,IAAI,CAAC,mBAAmB,IAAI,WAAW,CAAC,WAAW,KAAK,OAAO;EACvE,MAAM,OAAO;EACb,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;EAC5D,IAAI,IAAI,IAAI,CAAC,kBAAkB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE;EAC3D,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,IAAI,EAAE,YAAY,IAAI,WAAW,CAAC,CAAC;EAClF,MAAM,IAAI,UAAU,EAAE;EACtB,QAAQ,WAAW,CAAC,cAAc,EAAE,CAAC;EACrC,OAAO;EACP,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACnD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EACrC,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;EACtF,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;EACjD,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;EAC7C,GAAG;EACH,EAAE,aAAa,CAAC,WAAW,EAAE;EAC7B,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;EACpE,IAAI,IAAI,IAAI,CAAC,mBAAmB,IAAI,WAAW,CAAC,WAAW,KAAK,OAAO;EACvE,MAAM,OAAO;EACb,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;EACtE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC7D,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;EACpF,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EACxC,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;EAC7C,GAAG;EACH,EAAE,WAAW,CAAC,WAAW,EAAE;EAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;EACpE,IAAI,IAAI,IAAI,CAAC,mBAAmB,IAAI,WAAW,CAAC,WAAW,KAAK,OAAO;EACvE,MAAM,OAAO;EACb,IAAI,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;EACpC,IAAI,IAAI,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;EAC3E,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;EAC7C,KAAK;EACL,IAAI,MAAM,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,EAAE,CAAC;EAChE,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;EACtE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC7D,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;EACpF,MAAM,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC;EAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EACxC,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;EAC7C,GAAG;EACH,EAAE,gBAAgB,CAAC,WAAW,EAAE;EAChC,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;EACpE,IAAI,IAAI,IAAI,CAAC,mBAAmB,IAAI,WAAW,CAAC,WAAW,KAAK,OAAO;EACvE,MAAM,OAAO;EACb,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;EACtE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC7D,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;EACpF,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EACxC,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;EAC7C,GAAG;EACH,EAAE,OAAO,CAAC,WAAW,EAAE;EACvB,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;EAC7D,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;EACpE,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;EAC3C,GAAG;EACH,EAAE,gBAAgB,CAAC,OAAO,EAAE;EAC5B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;EACxB,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;EAC9B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;EACrB,GAAG;EACH,EAAE,SAAS,GAAG;EACd,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;EAC9C,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;EACxC,IAAI,IAAI,KAAK,EAAE;EACf,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,gBAAgB,EAAE;EACjD,QAAQ,KAAK,CAAC,gBAAgB,GAAG,MAAM,CAAC;EACxC,QAAQ,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;EACrC,OAAO,MAAM,IAAI,IAAI,CAAC,qBAAqB,EAAE;EAC7C,QAAQ,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC;EACnC,OAAO;EACP,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,qBAAqB,EAAE;EACpC,MAAM,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;EACpF,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;EAChF,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;EACpF,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;EACnF,MAAM,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;EACvE,KAAK,MAAM;EACX,MAAM,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;EAClF,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;EAC9E,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;EAChF,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;EACjF,MAAM,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;EACrE,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,mBAAmB,EAAE;EAClC,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;EAC/E,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;EAC3E,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;EAC9E,KAAK;EACL,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;EAC5D,MAAM,OAAO,EAAE,IAAI;EACnB,MAAM,OAAO,EAAE,IAAI;EACnB,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,GAAG;EACH,EAAE,YAAY,GAAG;EACjB,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;EAC/C,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;EACxC,IAAI,IAAI,UAAU,CAAC,SAAS,CAAC,gBAAgB,EAAE;EAC/C,MAAM,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC;EAClC,MAAM,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC;EAC/B,KAAK,MAAM,IAAI,IAAI,CAAC,qBAAqB,EAAE;EAC3C,MAAM,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;EAC7B,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,qBAAqB,EAAE;EACpC,MAAM,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;EACvF,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;EACnF,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;EACvF,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;EACtF,MAAM,UAAU,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;EAC1E,KAAK,MAAM;EACX,MAAM,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;EACrF,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;EACjF,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;EACnF,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;EACpF,MAAM,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;EACxE,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,mBAAmB,EAAE;EAClC,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;EAClF,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;EAC9E,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;EACjF,KAAK;EACL,IAAI,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;EACrE,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;EAC7B,GAAG;EACH,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;EAClC,IAAI,IAAI,IAAI,CAAC;EACb,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;EACxC,MAAM,IAAI,GAAG;EACb,QAAQ,CAAC,EAAE,CAAC;EACZ,QAAQ,CAAC,EAAE,CAAC;EACZ,QAAQ,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;EACpC,QAAQ,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;EACtC,QAAQ,IAAI,EAAE,CAAC;EACf,QAAQ,GAAG,EAAE,CAAC;EACd,OAAO,CAAC;EACR,KAAK,MAAM;EACX,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;EACrD,KAAK;EACL,IAAI,MAAM,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;EACrD,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,oBAAoB,CAAC;EAC5F,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,oBAAoB,CAAC;EAC7F,GAAG;EACH,EAAE,sBAAsB,CAAC,KAAK,EAAE;EAChC,IAAI,MAAM,gBAAgB,GAAG,EAAE,CAAC;EAChC,IAAI,IAAI,IAAI,CAAC,mBAAmB,IAAI,KAAK,YAAY,UAAU,EAAE;EACjE,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EACrE,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;EAC9C,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,WAAW;EAC/C,UAAU,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;EAC3B,QAAQ,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,WAAW;EAChD,UAAU,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;EAC5B,QAAQ,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,WAAW,EAAE;EACpD,UAAU,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC;EACtF,SAAS;EACT,QAAQ,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,WAAW;EAC9C,UAAU,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;EAC3C,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,WAAW;EAC/C,UAAU,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;EAC5C,QAAQ,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,WAAW;EAC9C,UAAU,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;EAC1B,QAAQ,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,WAAW;EAC9C,UAAU,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;EAC1B,QAAQ,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,WAAW;EACpD,UAAU,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;EACtC,QAAQ,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,WAAW;EAClD,UAAU,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;EAClD,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,WAAW;EACjD,UAAU,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;EAC9C,QAAQ,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,WAAW;EAC9C,UAAU,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;EAC1B,QAAQ,IAAI,OAAO,KAAK,CAAC,kBAAkB,KAAK,WAAW;EAC3D,UAAU,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC;EACvC,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,WAAW;EAC/C,UAAU,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;EACvD,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,WAAW;EAC/C,UAAU,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;EACvD,QAAQ,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;EAClC,QAAQ,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;EAChC,QAAQ,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACrC,OAAO;EACP,KAAK,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,KAAK,YAAY,UAAU,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAE,KAAK,YAAY,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE;EACtJ,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC;EAC9B,MAAM,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,WAAW;EACpD,QAAQ,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;EACnC,MAAM,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,WAAW;EAChD,QAAQ,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;EAC5B,MAAM,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,WAAW;EACjD,QAAQ,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;EAC7B,MAAM,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,WAAW;EAChD,QAAQ,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;EAC5B,MAAM,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,WAAW;EAChD,QAAQ,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;EAC5B,MAAM,IAAI,OAAO,SAAS,CAAC,WAAW,KAAK,WAAW;EACtD,QAAQ,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC;EACxC,MAAM,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,WAAW;EACpD,QAAQ,SAAS,CAAC,SAAS,GAAG,gBAAgB,CAAC;EAC/C,MAAM,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,WAAW;EACnD,QAAQ,SAAS,CAAC,QAAQ,GAAG,GAAG,CAAC;EACjC,MAAM,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,WAAW;EAChD,QAAQ,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;EAC5B,MAAM,IAAI,OAAO,SAAS,CAAC,kBAAkB,KAAK,WAAW;EAC7D,QAAQ,SAAS,CAAC,kBAAkB,GAAG,CAAC,CAAC;EACzC,MAAM,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;EACpC,MAAM,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACvC,KAAK,MAAM;EACX,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACnC,KAAK;EACL,IAAI,OAAO,gBAAgB,CAAC;EAC5B,GAAG;EACH,EAAE,mBAAmB,CAAC,WAAW,EAAE;EACnC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;EACtC,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;EAC/C,IAAI,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;EAC5C,IAAI,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;EACtC,IAAI,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;EACtC,IAAI,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;EACtC,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;EACpF,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EACxC,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EACxC,IAAI,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;EACpC,IAAI,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;EAClC,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE;EACrC,IAAI,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;EAC/B,IAAI,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;EACpC,IAAI,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;EAC5C,IAAI,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;EACpC,IAAI,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;EACtC,IAAI,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;EAC5C,IAAI,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;EAChD,IAAI,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;EAC1C,IAAI,KAAK,CAAC,kBAAkB,GAAG,WAAW,CAAC,kBAAkB,CAAC;EAC9D,IAAI,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;EACpC,IAAI,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;EACpC,IAAI,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;EACpC,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;EAC/C,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;EACpF,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EACxC,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EACxC,IAAI,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;EAC5C,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;EACvC,MAAM,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC;EAChC,KAAK;EACL,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;EACxC,MAAM,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;EAC1D,KAAK;EACL,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;EACxC,MAAM,KAAK,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;EAC9D,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE;EACxC,IAAI,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;EAC5C,IAAI,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;EAC9C,IAAI,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;EACxC,IAAI,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;EAClC,IAAI,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;EACtC,IAAI,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;EACtC,IAAI,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;EACxC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC;EACzC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC;EACzC,IAAI,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;EACxC,IAAI,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;EACxC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC;EAC7C,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC;EAC7C,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;EACrC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;EACrC,IAAI,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;EAC/B,IAAI,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;EAC1C,GAAG;EACH,CAAC;EACD,WAAW,CAAC,SAAS,GAAG;EACxB,EAAE,IAAI,EAAE,QAAQ;EAChB,EAAE,IAAI,EAAE;EACR,IAAI,aAAa,CAAC,cAAc;EAChC,IAAI,aAAa,CAAC,oBAAoB;EACtC,GAAG;EACH,CAAC,CAAC;AACF1B,cAAU,CAAC,GAAG,CAAC,WAAW,CAAC;;AC5WtB,QAAC,sBAAsB,GAAG;EAC/B,EAAE,WAAW,EAAE,KAAK;EACpB,EAAE,mBAAmB,EAAE,IAAI;EAC3B,EAAE,OAAO,EAAE,IAAI;EACf,EAAE,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;EAC5C,IAAI,MAAM,OAAO,GAAG,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;EAC9G,IAAI,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC;EACvE,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;EAC7C,IAAI,QAAQ,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC;EAChF,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;EACrC,GAAG;EACH,EAAE,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;EAC/C,IAAI,MAAM,OAAO,GAAG,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;EAC9G,IAAI,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC;EACvE,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;EAC7C,IAAI,QAAQ,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC;EAChF,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;EACtC,GAAG;EACH,EAAE,aAAa,CAAC,CAAC,EAAE;EACnB,IAAI,IAAI,EAAE,CAAC,YAAY,cAAc,CAAC,EAAE;EACxC,MAAM,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;EACnG,KAAK;EACL,IAAI,CAAC,CAAC,gBAAgB,GAAG,KAAK,CAAC;EAC/B,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;EAClB,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;EACpB,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;EAC/B,IAAI,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;EAC/B,GAAG;EACH,EAAE;EACF,aAAa,CAAC,KAAK,CAAC,sBAAsB,CAAC;;EC3B3C,aAAa,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;EACtC,MAAM,YAAY,GAAG,CAAC,CAAC;EACvB,MAAM,cAAc,GAAG,GAAG,CAAC;EAC3B,MAAM,eAAe,GAAG,CAAC,CAAC;EAC1B,MAAM,eAAe,GAAG,CAAC,CAAC;EAC1B,MAAM,gBAAgB,GAAG,CAAC,CAAC;EAC3B,MAAM,aAAa,GAAG,CAAC,CAAC;EACxB,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC;EAC5B,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC;EAC5B,MAAM,eAAe,GAAG,CAAC,CAAC;EAC1B,MAAM,oBAAoB,CAAC;EAC3B,EAAE,WAAW,CAAC,QAAQ,EAAE;EACxB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,IAAI,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;EACxC,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EACnB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;EACtB,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;EACvB,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;EAChC,IAAI,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC;EACtC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAIgC,QAAc,CAAC,MAAM,IAAIA,QAAc,CAAC,KAAK,EAAE;EACvD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;EAC7B,KAAK;EACL,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;EAC9C,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;EAC5C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;EAC7C,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;EACpC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;EAC3C,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;EAC5C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC;EACnD,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;EACnB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC7B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACjD,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACrD,IAAI,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;EACnE,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;EAC1B,GAAG;EACH,EAAE,IAAI,qBAAqB,GAAG;EAC9B,IAAI,OAAO,IAAI,CAAC,sBAAsB,CAAC;EACvC,GAAG;EACH,EAAE,eAAe,GAAG;EACpB,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EACrD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;EAC/C,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;EAChD,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;EACxC,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;EAC9C,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;EAC/C,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC;EACtD,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;EAC9C,IAAI,OAAO,CAAC,KAAK,GAAG,iDAAiD,CAAC;EACtE,IAAI,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;EAC5C,MAAM,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;EACzC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;EACtB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAC9B,KAAK,CAAC,CAAC;EACP,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;EACvC,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;EAC5B,GAAG;EACH,EAAE,gBAAgB,GAAG;EACrB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;EACxB,MAAM,OAAO;EACb,KAAK;EACL,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC7C,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,GAAG;EACH,EAAE,QAAQ,GAAG;EACb,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;EACxB,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,IAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;EAC/E,IAAI,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;EACtE,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EACtD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACzD,GAAG;EACH,EAAE,UAAU,GAAG;EACf,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,sBAAsB,EAAE;EACxD,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,IAAI,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;EAClF,IAAI,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;EACnE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACjD,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC/C,GAAG;EACH,EAAE,uBAAuB,CAAC,aAAa,EAAE;EACzC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE;EACrE,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,aAAa,CAAC,UAAU,IAAI,aAAa,CAAC,WAAW,EAAE;EAC/D,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE;EAC5C,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;EACrC,OAAO;EACP,MAAM,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EAC7C,KAAK;EACL,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;EAC5C,IAAI,IAAI,QAAQ,EAAE;EAClB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAChD,QAAQ,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;EAClD,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,MAAM,GAAG;EACX,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;EAClC,IAAI,IAAIA,QAAc,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE;EACxE,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,kBAAkB,GAAG,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC;EAChE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;EAC1C,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;EAC1C,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;EACrE,KAAK;EACL,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;EAC/E,IAAI,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;EAC/E,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;EAC9C,IAAI,MAAM,EAAE,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;EAChD,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;EACvB,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;EAC9B,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;EAC7B,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;EACvC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;EACzC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACnD,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EACrC,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE;EAC5C,QAAQ,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC;EACxC,QAAQJ,WAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC/C,QAAQ,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;EACnD,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;EAC7C,QAAQ,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;EACpC,QAAQ,CAAC,EAAE,CAAC;EACZ,OAAO,MAAM;EACb,QAAQ,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC;EACnC,QAAQ,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;EACpC,QAAQ,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC;EACxC,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE;EAC3B,UAAU,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAClE,UAAU,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EACjE,UAAU,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EAC7D,UAAU,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EAC/D,SAAS,MAAM;EACf,UAAU,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;EACtC,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;EACnC,UAAU,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EACjD,UAAU,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EAChD,UAAU,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EACtD,UAAU,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EACxD,UAAU,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI,EAAE;EACrF,YAAY,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC;EAC9C,WAAW;EACX,UAAU,IAAI,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,EAAE;EACxG,YAAY,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;EACjE,WAAW;EACX,SAAS;EACT,QAAQ,IAAI,KAAK,CAAC,eAAe,KAAK,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,EAAE;EACpF,UAAU,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC;EAC5C,UAAU,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;EACxC,UAAU,IAAI,IAAI,CAAC,KAAK;EACxB,YAAY,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;EACtC,SAAS;EACT,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpB,GAAG;EACH,EAAE,eAAe,CAAC,GAAG,EAAE;EACvB,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;EACjG,GAAG;EACH,EAAE,UAAU,CAAC,OAAO,EAAE;EACtB,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE;EACvB,MAAM,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC;EACjC,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EACpB,KAAK;EACL,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE;EACvB,MAAM,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;EAClC,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EACpB,KAAK;EACL,IAAI,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;EACnE,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,EAAE;EAC/C,MAAM,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC;EAC5C,KAAK;EACL,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,UAAU,EAAE;EACjD,MAAM,OAAO,CAAC,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC;EAC9C,KAAK;EACL,GAAG;EACH,EAAE,QAAQ,CAAC,aAAa,EAAE;EAC1B,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;EAC9B,IAAI,IAAI,CAAC,GAAG,EAAE;EACd,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EAC7C,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;EAC9C,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;EAC/C,MAAM,GAAG,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,GAAG,uBAAuB,GAAG,aAAa,CAAC;EACvF,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;EACtC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC;EACrD,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC;EACrC,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;EAChE,QAAQ,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;EAC7C,OAAO,MAAM;EACb,QAAQ,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;EAChD,OAAO;EACP,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;EACrD,QAAQ,GAAG,CAAC,YAAY,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;EACvD,OAAO,MAAM;EACb,QAAQ,GAAG,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;EAClD,OAAO;EACP,MAAM,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EAC9D,MAAM,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EAC9D,MAAM,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EACpE,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC,uBAAuB,CAAC;EACpE,IAAI,GAAG,CAAC,IAAI,GAAG,aAAa,CAAC,cAAc,CAAC;EAC5C,IAAI,IAAI,aAAa,CAAC,eAAe,IAAI,aAAa,CAAC,eAAe,KAAK,IAAI,EAAE;EACjF,MAAM,GAAG,CAAC,KAAK,GAAG,aAAa,CAAC,eAAe,CAAC;EAChD,KAAK,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,IAAI,aAAa,CAAC,cAAc,KAAK,IAAI,EAAE;EACvF,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC5D,KAAK;EACL,IAAI,IAAI,aAAa,CAAC,cAAc,IAAI,aAAa,CAAC,cAAc,KAAK,IAAI,EAAE;EAC/E,MAAM,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;EACnE,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,KAAK;EAClB,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;EAChC,IAAI,aAAa,CAAC,iBAAiB,GAAG,IAAI,CAAC;EAC3C,IAAI,aAAa,CAAC,cAAc,GAAG,GAAG,CAAC;EACvC,IAAI,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC;EACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;EACvD,IAAI,aAAa,CAAC,cAAc,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;EACnE,GAAG;EACH,EAAE,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE;EAC1B,IAAI,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;EAC/C,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC;EACtD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;EACzE,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;EAC1D,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;EACjE,GAAG;EACH,EAAE,QAAQ,CAAC,CAAC,EAAE;EACd,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;EAC3D,GAAG;EACH,EAAE,QAAQ,CAAC,CAAC,EAAE;EACd,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;EAC7C,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;EACtD,KAAK;EACL,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;EAC1C,GAAG;EACH,EAAE,WAAW,CAAC,CAAC,EAAE;EACjB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;EAC7C,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;EACnD,KAAK;EACL,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;EACzC,GAAG;EACH,EAAE,UAAU,CAAC,CAAC,EAAE;EAChB,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,YAAY,EAAE;EACpC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpB,GAAG;EACH,EAAE,YAAY,CAAC,CAAC,EAAE;EAClB,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,EAAE;EAChD,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;EACtB,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAC5B,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;EACpB,IAAI,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;EAClF,IAAI,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;EAC/D,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,GAAG;EACH,CAAC;EACD,oBAAoB,CAAC,SAAS,GAAG;EACjC,EAAE,IAAI,EAAE,eAAe;EACvB,EAAE,IAAI,EAAE;EACR,IAAI,aAAa,CAAC,cAAc;EAChC,IAAI,aAAa,CAAC,oBAAoB;EACtC,GAAG;EACH,CAAC,CAAC;AACF5B,cAAU,CAAC,GAAG,CAAC,oBAAoB,CAAC;;EC5RpC,MAAM,YAAY,GAAG,MAAM;EAC3B,EAAE,WAAW,CAAC,OAAO,EAAE;EACvB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;EACjC,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;EAC5B,MAAM,WAAW,EAAE,KAAK;EACxB,KAAK,EAAE,OAAO,CAAC,CAAC;EAChB,IAAI,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;EAChD,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;EAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EACtC,KAAK,CAAC,CAAC;EACP,GAAG;EACH,EAAE,MAAM,GAAG;EACX,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACrC,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;EAC9B,GAAG;EACH,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;EAChC,GAAG;EACH,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,EAAE;EACpC,IAAI,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACnD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;EACtB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;EAChC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAChC,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;EACrC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,GAAG;EACH,CAAC,CAAC;AACC,MAAC,WAAW,GAAG,aAAa;EAC/B,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC1BA,cAAU,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC;;ECnCxE,MAAM,YAAY,CAAC;EACnB,EAAE,OAAO,IAAI,CAAC,OAAO,EAAE;EACvB,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;EAC5C,MAAM,GAAG,CAAC,GAAG,EAAE;EACf,QAAQ,UAAU,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;EACnE,QAAQ,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;EAC7B,QAAQ,IAAI,GAAG,EAAE;EACjB,UAAU,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;EAClE,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;EACxB,SAAS;EACT,OAAO;EACP,MAAM,GAAG,GAAG;EACZ,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;EAC9B,OAAO;EACP,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM;EAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;EAC3B,QAAQ,OAAO;EACf,OAAO;EACP,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;EAC1B,MAAM,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;EAClE,KAAK,CAAC;EACN,IAAI,IAAI,CAAC,YAAY,GAAG,MAAM;EAC9B,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;EAC1B,QAAQ,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC7C,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC9B,OAAO;EACP,KAAK,CAAC;EACN,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;EACxB,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;EAC3B,QAAQ,OAAO;EACf,OAAO;EACP,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;EAC1B,MAAM,IAAI,KAAK,CAAC;EAChB,MAAM,IAAI,MAAM,CAAC;EACjB,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,MAAM,EAAE;EAChD,QAAQ,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC;EACtC,QAAQ,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC;EACxC,OAAO,MAAM;EACb,QAAQ,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;EAC7D,QAAQ,KAAK,GAAG,WAAW,CAAC;EAC5B,QAAQ,MAAM,GAAG,YAAY,CAAC;EAC9B,OAAO;EACP,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;EAC1C,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;EACpB,KAAK,CAAC;EACN,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;EAC7C,GAAG;EACH,EAAE,OAAO,OAAO,GAAG;EACnB,IAAI,UAAU,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;EAC/D,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;EACxB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EAC7B,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,GAAG;EACH,CAAC;EACD,YAAY,CAAC,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC;AACnDA,cAAU,CAAC,GAAG,CAAC,YAAY,CAAC;;EC9D5B,MAAM,gBAAgB,CAAC;EACvB,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE;EACvC,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;EAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACzB,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EAC5B,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,GAAG;EACH,EAAE,GAAG,CAAC,SAAS,EAAE;EACjB,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;EAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC9B,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,IAAI,CAAC,OAAO;EACpB,MAAM,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;EAClE,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;EAC5C,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;EACnB,KAAK;EACL,GAAG;EACH,EAAE,MAAM,KAAK,GAAG;EAChB,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;EAClD,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC7B,MAAM,MAAM,MAAM,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;EACjF,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;EAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;EAC3C,OAAO;EACP,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACtC,MAAM,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EAC9B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;EACnB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;EAC1B,GAAG;EACH,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE;EACpB,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK;EAChC,MAAM,OAAO;EACb,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;EACnC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;EACnB,KAAK;EACL,GAAG;EACH;;AC1CK,QAAC,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK;EAC5C,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EAC7B,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;EACpB,GAAG;EACH,EAAE,IAAI,CAAC,SAAS,EAAE;EAClB,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;EAC7B,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;EAClC,MAAM,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;EAC7B,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG,CAAC,CAAC;EACL;;ECbA,SAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;EAClD,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;EACxB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACtC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EACxB,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;EAChC,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;EACjF,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;EACpD,KAAK;EACL,GAAG;EACH,CAAC;EACD,SAAS,sBAAsB,CAAC,MAAM,EAAE;EACxC,EAAE,MAAM,KAAK,GAAG,YAAY,CAAC;EAC7B,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACrC,EAAE,MAAM,IAAI,GAAG,EAAE,CAAC;EAClB,EAAE,IAAI,MAAM,EAAE;EACd,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;EACnB,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;EAC7B,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAClE,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACtB,KAAK,CAAC,CAAC;EACP,IAAI,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;EAC3C,GAAG,MAAM;EACT,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACtB,GAAG;EACH,EAAE,OAAO,IAAI,CAAC;EACd;;AC1BK,QAAC,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;;ECIlD,MAAM,UAAU,CAAC;EACjB,EAAE,WAAW,GAAG;EAChB,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;EACvB,IAAI,IAAI,CAAC,MAAM,mBAAmB,IAAI,GAAG,EAAE,CAAC;EAC5C,IAAI,IAAI,CAAC,SAAS,mBAAmB,IAAI,GAAG,EAAE,CAAC;EAC/C,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;EAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;EACxB,GAAG;EACH,EAAE,GAAG,CAAC,GAAG,EAAE;EACX,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAChC,GAAG;EACH,EAAE,GAAG,CAAC,GAAG,EAAE;EACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACxC,IAAI,IAAI,CAAC,MAAM,EAAE;EACjB,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;EACH,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE;EAClB,IAAI,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;EACpC,IAAI,IAAI,eAAe,CAAC;EACxB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAClD,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACrC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EAC9B,QAAQ,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EACjE,QAAQ,MAAM;EACd,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,eAAe,EAAE;EAC1B,MAAM,eAAe,GAAG,EAAE,CAAC;EAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;EAC7B,QAAQ,eAAe,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;EACtC,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;EACnD,IAAI,MAAM,YAAY,GAAG;EACzB,MAAM,SAAS;EACf,MAAM,IAAI;EACV,KAAK,CAAC;EACN,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;EAC3B,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;EAC7C,KAAK,CAAC,CAAC;EACP,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;EAChC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;EACpE,OAAO;EACP,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;EACnD,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,KAAK,YAAY,OAAO,EAAE;EAClC,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC;EAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;EAC7B,QAAQ,IAAI,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE;EAC/D,UAAU,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;EAC5D,SAAS;EACT,QAAQ,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;EAC1C,OAAO,CAAC,CAAC;EACT,KAAK;EACL,GAAG;EACH,EAAE,MAAM,CAAC,GAAG,EAAE;EACd,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;EAClC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC7C,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;EACzC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;EAChC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC/B,KAAK,CAAC,CAAC;EACP,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;EACpC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAClC,KAAK,CAAC,CAAC;EACP,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;EACzB,GAAG;EACH,CAAC;AACI,QAAC,KAAK,GAAG,IAAI,UAAU;;EC3E5B,MAAM,MAAM,CAAC;EACb,EAAE,WAAW,GAAG;EAChB,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;EACvB,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EAC3B,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EAC3B,GAAG;EACH,EAAE,wBAAwB,CAAC,GAAG,EAAE,IAAI,EAAE;EACtC,IAAI,MAAM,MAAM,GAAG;EACnB,MAAM,OAAO,EAAE,IAAI;EACnB,MAAM,MAAM,EAAE,IAAI;EAClB,KAAK,CAAC;EACN,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,YAAY;EAClC,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC;EACvB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACpD,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACvC,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;EAC3D,UAAU,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACrD,UAAU,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;EACjC,UAAU,MAAM;EAChB,SAAS;EACT,OAAO;EACP,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;EAC1B,QAAQ,OAAO,IAAI,CAAC;EACpB,OAAO;EACP,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACpD,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACvC,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE;EAC1B,UAAU,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,MAAM,CAAC,SAAS,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;EAC3E,YAAY,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC;EACnE,YAAY,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;EACnC,WAAW;EACX,SAAS;EACT,OAAO;EACP,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK,GAAG,CAAC;EACT,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;EACH,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE;EACzC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;EACtB,IAAI,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;EACrD,IAAI,MAAM,YAAY,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC,IAAI,MAAM;EAClE,MAAM,GAAG,EAAE,IAAI;EACf,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;EACtC,IAAI,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,KAAK,KAAK;EACvD,MAAM,MAAM,GAAG,GAAGiC,IAAU,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;EAC9B,QAAQ,IAAI;EACZ,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;EACvC,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;EAC/E,WAAW;EACX,UAAU,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;EACnE,UAAU,IAAI,UAAU;EACxB,YAAY,UAAU,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;EACxC,SAAS,CAAC,OAAO,CAAC,EAAE;EACpB,UAAU,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;EACxC,UAAU,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,6BAA6B,EAAE,GAAG,CAAC;AAC9D,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EACP,SAAS;EACT,OAAO;EACP,KAAK,CAAC,CAAC;EACP,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EAChC,IAAI,OAAO,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EAC9D,GAAG;EACH,EAAE,MAAM,MAAM,CAAC,gBAAgB,EAAE;EACjC,IAAI,MAAM,cAAc,GAAG,aAAa,CAAC,gBAAgB,EAAE,CAAC,IAAI,MAAM;EACtE,MAAM,GAAG,EAAE,IAAI;EACf,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,KAAK,KAAK;EACzD,MAAM,MAAM,GAAG,GAAGA,IAAU,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnD,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;EACjD,MAAM,IAAI,WAAW,EAAE;EACvB,QAAQ,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC;EACtD,QAAQ,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;EAC/D,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;EACtC,OAAO;EACP,KAAK,CAAC,CAAC;EACP,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EAChC,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;EACzB,GAAG;EACH;;ECtFA,MAAM,QAAQ,CAAC;EACf,EAAE,WAAW,GAAG;EAChB,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;EACxB,IAAI,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;EAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;EACvB,IAAI,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;EAC5B,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;EACvB,GAAG;EACH,EAAE,MAAM,CAAC,GAAG,YAAY,EAAE;EAC1B,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;EACrC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACxC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;EAC5B,QAAQ,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;EACrD,OAAO;EACP,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE;EACzB,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;EAC9B,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;EAC1B,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE;EACzB,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;EAC9B,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;EAC1B,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;EACzB,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;EAC9B,IAAI,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;EAC5B,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;EACxB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,GAAG;EACH,EAAE,WAAW,CAAC,QAAQ,EAAE;EACxB,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;EACxB,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;EAC9B,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;EACzC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;EACjD,KAAK,CAAC,CAAC;EACP,GAAG;EACH,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE;EAC9B,IAAI,MAAM,UAAU,GAAG,EAAE,CAAC;EAC1B,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;EAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;EAChC,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;EAC5C,UAAU,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACtC,SAAS,MAAM;EACf,UAAU,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;EACzC,SAAS;EACT,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;EACzC,OAAO,CAAC,CAAC;EACT,KAAK,MAAM;EACX,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;EAC3C,QAAQ,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC7B,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;EACnC,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;EACzC,GAAG;EACH,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;EAC9B,IAAI,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;EACvC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;EAC1B,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;EAC/B,OAAO;EACP,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;EAClC,MAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;EACxC,QAAQ,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;EACpD,OAAO,MAAM;EACb,QAAQ,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;EAC9B,OAAO;EACP,KAAK;EACL,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;EAC7C,MAAM,IAAI,cAAc,GAAG,KAAK,CAAC;EACjC,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;EACrC,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC;EAC3B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACvD,UAAU,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC1C,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EAClC,YAAY,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACjD,YAAY,MAAM,GAAG,IAAI,CAAC;EAC1B,YAAY,MAAM;EAClB,WAAW;EACX,SAAS;EACT,QAAQ,IAAI,CAAC,MAAM,EAAE;EACrB,UAAU,cAAc,GAAG;EAC3B,YAAY,GAAG,EAAE,KAAK;EACtB,WAAW,CAAC;EACZ,SAAS;EACT,OAAO;EACP,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;EAClC,QAAQ,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EACpE,OAAO;EACP,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;EACjC,QAAQ,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC;EACpC,OAAO;EACP,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;EAC5C,QAAQ,cAAc,CAAC,GAAG,GAAGA,IAAU,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EACvG,OAAO;EACP,MAAM,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,IAAI,IAAI,CAAC;EACxD,MAAM,OAAO,cAAc,CAAC;EAC5B,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;EAC1B,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;EACrC,KAAK,CAAC,CAAC;EACP,GAAG;EACH,EAAE,aAAa,CAAC,SAAS,EAAE;EAC3B,IAAI,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;EAChD,IAAI,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;EACzC,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;EACnB,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;EACpC,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;EACjD,MAAM,IAAI,UAAU,EAAE;EACtB,QAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;EACjD,OAAO;EACP,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EACjD,GAAG;EACH,EAAE,UAAU,CAAC,GAAG,EAAE;EAClB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;EACrC,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;EACjC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC;EACrB,MAAM,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;EAC9B,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;EAC/B,OAAO;EACP,MAAM,OAAO,GAAG,CAAC;EACjB,KAAK;EACL,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC;EACtB,GAAG;EACH,EAAE,OAAO,CAAC,IAAI,EAAE;EAChB,IAAI,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;EAC3C,IAAI,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;EACtB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;EAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;EACpC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;EACjC,UAAU,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;EAC3C,UAAU,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;EACjE,UAAU,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EACtC,UAAU,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK;EAC5D,YAAY,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;EAClE,cAAc,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;EAC9D,gBAAgB,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE;EACxC,kBAAkB,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC;EACtD,iBAAiB;EACjB,gBAAgB,OAAO,KAAK,CAAC;EAC7B,eAAe,CAAC,CAAC;EACjB,cAAc,IAAI,cAAc,CAAC,MAAM,EAAE;EACzC,gBAAgB,MAAM,GAAG,cAAc,CAAC;EACxC,eAAe;EACf,aAAa,CAAC,CAAC;EACf,WAAW,CAAC,CAAC;EACb,UAAU,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;EAC3D,SAAS,MAAM;EACf,UAAU,IAAI,GAAG,GAAG,GAAG,CAAC;EACxB,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;EAChD,YAAY,GAAG,GAAGA,IAAU,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC7E,WAAW;EACX,UAAU,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG;EACpC,YAAY,GAAG;EACf,WAAW,CAAC;EACZ,SAAS;EACT,OAAO;EACP,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;EAC5C,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;EAClD,GAAG;EACH,EAAE,kBAAkB,CAAC,MAAM,EAAE;EAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC5C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EAC9B,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACnH,MAAM,IAAI,SAAS,EAAE;EACrB,QAAQ,OAAO,SAAS,CAAC;EACzB,OAAO;EACP,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;EACnC,GAAG;EACH;;ECtLA,MAAM,WAAW,CAAC;EAClB,EAAE,WAAW,GAAG;EAChB,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;EAC1B,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;EACnC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;EAC/B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAC/D,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC;EACzC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;EACjB,GAAG;EACH,EAAE,MAAM,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE;EAC3B,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;EAC3B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EAC7B,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;EAC1B,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;EAChD,KAAK;EACL,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;EAC1B,MAAM,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;EACtC,MAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;EACxC,QAAQ,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC7C,OAAO;EACP,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,EAAE,UAAU,IAAI,CAAC,CAAC;EACtE,IAAI,MAAM,UAAU,GAAG,OAAO,cAAc,KAAK,QAAQ,GAAG,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC;EAC9F,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;EACrB,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,MAAM,EAAE;EAC3C,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC;EAC3D,MAAM,OAAO,GAAG,OAAO,UAAU,KAAK,QAAQ,GAAG,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;EAC3E,MAAM,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE;EAChD,QAAQ,IAAI,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE;EACrC,UAAU,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;EACpD,SAAS;EACT,OAAO;EACP,KAAK,MAAM;EACX,MAAM,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE;EAChD,QAAQ,IAAI,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE;EACpC,UAAU,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;EACjD,SAAS;EACT,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;EACzB,MAAM,MAAM,EAAE;EACd,QAAQ,MAAM,EAAE,OAAO;EACvB,QAAQ,UAAU;EAClB,OAAO;EACP,KAAK,CAAC,CAAC;EACP,GAAG;EACH,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;EAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;EAC9C,GAAG;EACH,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE;EAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;EAC5B,MAAM,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;EACxB,KAAK;EACL,IAAI,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;EAC3C,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;EACtD,MAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;EACnC,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EACxC,QAAQ,OAAO,GAAG,CAAC,GAAG,CAAC;EACvB,OAAO;EACP,MAAM,OAAO,GAAG,CAAC;EACjB,KAAK,CAAC,CAAC;EACP,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;EAC3D,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;EACzE,IAAI,OAAO,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAChD,GAAG;EACH,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE;EAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;EAC9C,GAAG;EACH,EAAE,MAAM,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE;EAC1C,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;EAC5B,MAAM,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;EACxB,KAAK;EACL,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC;EAC5B,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;EACvC,MAAM,WAAW,GAAG,IAAI,CAAC;EACzB,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC;EAC9B,KAAK;EACL,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;EAClE,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;EACnB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;EAC7C,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,MAAM,WAAW,GAAG,MAAM;EAC9B,MAAM,UAAU,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;EACpC,KAAK,CAAC;EACN,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK;EAC5C,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;EACrD,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;EACjD,MAAM,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,KAAK;EACzF,QAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC;EACvC,OAAO,CAAC,CAAC;EACT,KAAK,CAAC,CAAC;EACP,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EAChC,IAAI,OAAO,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EACjD,GAAG;EACH,EAAE,MAAM,cAAc,CAAC,IAAI,EAAE;EAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;EAC5B,MAAM,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;EACxB,KAAK;EACL,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;EAClC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;EACpB,KAAK;EACL,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACvD,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;EAC9D,GAAG;EACH,EAAE,MAAM,oBAAoB,CAAC,SAAS,EAAE;EACxC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;EAC5B,MAAM,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;EACxB,KAAK;EACL,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;EACvC,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC;EAC9B,KAAK;EACL,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;EAClE,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,KAAK;EAC7D,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;EAC/D,KAAK,CAAC,CAAC;EACP,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;EAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;EACxB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;EACvB,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC9B,GAAG;EACH,EAAE,GAAG,CAAC,IAAI,EAAE;EACZ,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;EAClC,MAAM,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC7B,KAAK;EACL,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;EACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACrC,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;EACH,EAAE,MAAM,iBAAiB,CAAC,cAAc,EAAE,UAAU,EAAE;EACtD,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;EACvD,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;EACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,KAAK,CAAC;EAC1C,IAAI,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;EAC1E,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC;EACzC,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;EACnB,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC,KAAK;EAC/C,MAAM,MAAM,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;EACpD,MAAM,MAAM,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;EACvC,MAAM,IAAI,aAAa,CAAC,KAAK,EAAE;EAC/B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;EAC1C,OAAO;EACP,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAClC,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EAC7B,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,GAAG,CAAC;EACf,GAAG;EACH,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE;EACrB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;EAC5B,MAAM,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;EACxB,KAAK;EACL,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EAC/F,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;EAC3D,IAAI,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;EACnD,GAAG;EACH,EAAE,MAAM,YAAY,CAAC,SAAS,EAAE;EAChC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;EAC5B,MAAM,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;EACxB,KAAK;EACL,IAAI,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;EACzC,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;EAClE,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EACvH,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EAChC,GAAG;EACH,EAAE,MAAM,mBAAmB,CAAC,aAAa,EAAE;EAC3C,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;EACtD,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,cAAc,KAAK;EAC7C,MAAM,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;EACvC,KAAK,CAAC,CAAC;EACP,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;EAC3C,GAAG;EACH,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;EAC5B,GAAG;EACH,CAAC;AACI,QAAC,MAAM,GAAG,IAAI,WAAW,GAAG;AACjCjC,cAAU,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC;;EC/LxQ,MAAM,WAAW,GAAG;EACpB,EAAE,MAAM,EAAE,aAAa,CAAC,UAAU;EAClC,EAAE,QAAQ,EAAE,aAAa,CAAC,aAAa;EACvC,EAAE,KAAK,EAAE,aAAa,CAAC,WAAW;EAClC,EAAE,SAAS,EAAE,aAAa,CAAC,eAAe;EAC1C,CAAC,CAAC;AACFA,cAAU,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,SAAS,KAAK;EACtD,EAAE,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;EAC5B,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAKA,YAAU,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;EACzK,CAAC,EAAE,CAAC,SAAS,KAAK;EAClB,EAAE,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;EAC5B,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAKA,YAAU,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrG,CAAC,CAAC;;ACZG,QAAC,iBAAiB,GAAG;EAC1B,EAAE,SAAS,EAAE,aAAa,CAAC,WAAW;EACtC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,OAAO,CAAC;EACnF,EAAE,kBAAkB,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;EACvC,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;EACnB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;EAC1B,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;EACjC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EACjD,OAAO,CAAC,CAAC;EACT,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,GAAG,CAAC;EACf,GAAG;EACH,EAAE;AACFA,cAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC;;ACf9B,MAAC,oBAAoB,mBAAmB,CAAC,CAAC,qBAAqB,KAAK;EACvE,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;EAClE,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;EACxE,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;EACpE,EAAE,OAAO,qBAAqB,CAAC;EAC/B,CAAC,EAAE,oBAAoB,IAAI,EAAE;;ACFxB,QAAC,QAAQ,GAAG;EACjB,EAAE,SAAS,EAAE;EACb,IAAI,IAAI,EAAE,aAAa,CAAC,UAAU;EAClC,IAAI,QAAQ,EAAE,oBAAoB,CAAC,GAAG;EACtC,GAAG;EACH,EAAE,IAAI,CAAC,GAAG,EAAE;EACZ,IAAI,OAAOiC,IAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;EACrD,GAAG;EACH,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE;EAClB,IAAI,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACvD,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;EACvC,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE;AACFjC,cAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;;ACdnB,QAAC,OAAO,GAAG;EAChB,EAAE,SAAS,EAAE;EACb,IAAI,IAAI,EAAE,aAAa,CAAC,UAAU;EAClC,IAAI,QAAQ,EAAE,oBAAoB,CAAC,GAAG;EACtC,GAAG;EACH,EAAE,IAAI,CAAC,GAAG,EAAE;EACZ,IAAI,OAAOiC,IAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;EACpD,GAAG;EACH,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE;EAClB,IAAI,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACvD,IAAI,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;EACtC,IAAI,OAAO,GAAG,CAAC;EACf,GAAG;EACH,EAAE;AACFjC,cAAU,CAAC,GAAG,CAAC,OAAO,CAAC;;ECdvB,MAAM,YAAY,GAAG;EACrB,EAAE,QAAQ;EACV,EAAE,MAAM;EACR,EAAE,KAAK;EACP,EAAE,KAAK;EACP,EAAE,KAAK;EACP,EAAE,KAAK;EACP,EAAE,KAAK;EACP,EAAE,KAAK;EACP,EAAE,KAAK;EACP,EAAE,KAAK;EACP,EAAE,KAAK;EACP,CAAC,CAAC;EACF,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;EACnD,SAAS,iBAAiB,CAAC,GAAG,EAAE;EAChC,EAAE,MAAM,GAAG,GAAGiC,IAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;EACtC,EAAE,MAAM,IAAI,GAAGA,IAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7C,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;EACrD,EAAE,MAAM,aAAa,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACtI,EAAE,OAAO,aAAa,CAAC;EACvB,CAAC;AACI,QAAC,WAAW,GAAG;EACpB,EAAE,SAAS,EAAE;EACb,IAAI,IAAI,EAAE,aAAa,CAAC,UAAU;EAClC,IAAI,QAAQ,EAAE,oBAAoB,CAAC,GAAG;EACtC,GAAG;EACH,EAAE,IAAI,CAAC,GAAG,EAAE;EACZ,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACtC,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EAC/C,IAAI,OAAO,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;EAC1C,GAAG;EACH,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;EAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE;EACtC,MAAM,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;EAC/E,KAAK;EACL,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;EACpD,IAAI,IAAI,KAAK,EAAE;EACf,MAAM,MAAM,SAAS,GAAG,EAAE,CAAC;EAC3B,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;EAClE,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC7G,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;EACtC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/C,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;EAClC,QAAQ,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;EACvD,UAAU,GAAG,IAAI;EACjB,UAAU,MAAM;EAChB,SAAS,CAAC,CAAC;EACX,QAAQ,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;EAC1B,QAAQ,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EACxB,QAAQ,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC7B,OAAO;EACP,MAAM,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;EAC/D,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,MAAM,CAAC,IAAI,EAAE;EACf,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACtG,GAAG;EACH,EAAE;AACFjC,cAAU,CAAC,GAAG,CAAC,WAAW,CAAC;;EC9D3B,IAAI,IAAI,GAAG,CAAC,CAAC;EACb,IAAI,WAAW,CAAC;EAChB,MAAM,SAAS,GAAG,oHAAoH,CAAC;EACvI,MAAM,oBAAoB,GAAG;EAC7B,EAAE,EAAE,EAAE,kBAAkB;EACxB,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,EAAE,SAAS,CAAC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;EACL,CAAC,CAAC;EACF,MAAM,UAAU,GAAG;EACnB,EAAE,EAAE,EAAE,iBAAiB;EACvB,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,CAAC;EACP,CAAC,CAAC;EACF,IAAI,SAAS,CAAC;EACd,MAAM,kBAAkB,CAAC;EACzB,EAAE,WAAW,GAAG;EAChB,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC9B,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;EAC7B,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACzB,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;EACpB,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;EAC1B,GAAG;EACH,EAAE,sBAAsB,GAAG;EAC3B,IAAI,IAAI,IAAI,CAAC,uBAAuB,KAAK,KAAK,CAAC;EAC/C,MAAM,OAAO,IAAI,CAAC,uBAAuB,CAAC;EAC1C,IAAI,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;EAC5D,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC;EACxH,MAAM,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;EAC5C,MAAM,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,KAAK;EACpD,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;EAC3B,QAAQ,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;EACxC,QAAQ,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EAC5B,OAAO,CAAC,CAAC;EACT,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,IAAI,CAAC,uBAAuB,CAAC;EACxC,GAAG;EACH,EAAE,eAAe,CAAC,GAAG,EAAE;EACvB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EAC/C,GAAG;EACH,EAAE,MAAM,YAAY,GAAG;EACvB,IAAI,IAAI,IAAI,CAAC,YAAY;EACzB,MAAM,OAAO;EACb,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EAC7B,GAAG;EACH,EAAE,SAAS,GAAG;EACd,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE;EAChC,MAAM,WAAW,GAAG,SAAS,CAAC,mBAAmB,IAAI,CAAC,CAAC;EACvD,KAAK;EACL,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;EACvC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,GAAG,WAAW,EAAE;EACvD,MAAM,IAAI,CAAC,SAAS,EAAE;EACtB,QAAQ,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC;EACzG,OAAO;EACP,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;EAC7B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;EACrC,MAAM,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,KAAK;EACpD,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EAClC,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EACxC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;EACpB,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;EACH,EAAE,YAAY,CAAC,MAAM,EAAE;EACvB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACjC,GAAG;EACH,EAAE,QAAQ,CAAC,IAAI,EAAE;EACjB,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;EAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACrD,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACrD,KAAK;EACL,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;EACvC,GAAG;EACH,EAAE,MAAM,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE;EACvB,IAAI,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;EAC9B,IAAI,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;EACrD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;EAChE,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;EAChB,IAAI,OAAO,OAAO,CAAC;EACnB,GAAG;EACH,EAAE,IAAI,GAAG;EACT,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;EAC1B,MAAM,OAAO;EACb,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;EACpC,IAAI,IAAI,CAAC,MAAM,EAAE;EACjB,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;EAClC,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;EACvB,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;EAC5E,IAAI,MAAM,CAAC,WAAW,CAAC;EACvB,MAAM,IAAI,EAAE,IAAI,CAAC,SAAS;EAC1B,MAAM,IAAI,EAAE,IAAI,EAAE;EAClB,MAAM,EAAE;EACR,KAAK,CAAC,CAAC;EACP,GAAG;EACH,CAAC;EACD,MAAM,aAAa,GAAG,IAAI,kBAAkB,EAAE;;ECtJ9C,SAAS,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE;EACxC,EAAE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACpC,EAAE,MAAM,GAAG,GAAGiC,IAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;EACxD,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;EAChC,IAAI,OAAO,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;EACjD,GAAG;EACH,EAAE,OAAO,GAAG,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC;EACzC;;ECPA,SAAS,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;EAC1C,EAAE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;EACpC,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM;EAC1C,IAAI,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;EACpC,GAAG,CAAC,CAAC;EACL,EAAE,OAAO,OAAO,CAAC;EACjB;;ECFA,MAAMC,aAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;EAChE,eAAe,eAAe,CAAC,GAAG,EAAE;EACpC,EAAE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACrD,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;EACpB,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,kCAAkC,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EAC3G,GAAG;EACH,EAAE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;EAC1C,EAAE,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;EACzD,EAAE,OAAO,WAAW,CAAC;EACrB,CAAC;AACI,QAAC,YAAY,GAAG;EACrB,EAAE,SAAS,EAAE;EACb,IAAI,IAAI,EAAE,aAAa,CAAC,UAAU;EAClC,IAAI,QAAQ,EAAE,oBAAoB,CAAC,IAAI;EACvC,GAAG;EACH,EAAE,MAAM,EAAE;EACV,IAAI,aAAa,EAAE,IAAI;EACvB,GAAG;EACH,EAAE,IAAI,CAAC,GAAG,EAAE;EACZ,IAAI,IAAI,mBAAmB,GAAG,KAAK,CAAC;EACpC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAGA,aAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACjD,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,WAAW,EAAEA,aAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;EACnE,QAAQ,mBAAmB,GAAG,IAAI,CAAC;EACnC,QAAQ,MAAM;EACd,OAAO;EACP,KAAK;EACL,IAAI,OAAO,mBAAmB,IAAI,cAAc,CAAC,GAAG,EAAEA,aAAW,CAAC,CAAC;EACnE,GAAG;EACH,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;EACjC,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC;EACnB,IAAI,IAAI,UAAU,CAAC,iBAAiB,EAAE;EACtC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,aAAa,CAAC,sBAAsB,EAAE,EAAE;EACrF,QAAQ,GAAG,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;EACvD,OAAO,MAAM;EACb,QAAQ,GAAG,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;EACzC,OAAO;EACP,KAAK,MAAM;EACX,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;EAC3C,QAAQ,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;EAC1B,QAAQ,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;EACtC,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;EACtB,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE;EAC1B,UAAU,OAAO,CAAC,GAAG,CAAC,CAAC;EACvB,SAAS,MAAM;EACf,UAAU,GAAG,CAAC,MAAM,GAAG,MAAM;EAC7B,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC;EACzB,WAAW,CAAC;EACZ,SAAS;EACT,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE;EACtC,MAAM,UAAU,EAAEC,kBAAwB,CAAC,GAAG,CAAC;EAC/C,MAAM,GAAG,KAAK,CAAC,IAAI;EACnB,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;EAC5B,IAAI,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;EAC5C,GAAG;EACH,EAAE,MAAM,CAAC,OAAO,EAAE;EAClB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC1B,GAAG;EACH,EAAE;AACFnC,cAAU,CAAC,GAAG,CAAC,YAAY,CAAC;;AC9DvB,QAAC,OAAO,GAAG;EAChB,EAAE,SAAS,EAAE;EACb,IAAI,IAAI,EAAE,aAAa,CAAC,UAAU;EAClC,IAAI,QAAQ,EAAE,oBAAoB,CAAC,IAAI;EACvC,GAAG;EACH,EAAE,IAAI,CAAC,GAAG,EAAE;EACZ,IAAI,OAAOiC,IAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;EACpD,GAAG;EACH,EAAE,MAAM,SAAS,CAAC,IAAI,EAAE;EACxB,IAAI,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAClC,GAAG;EACH,EAAE,MAAM,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;EACnC,IAAI,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;EACpE,IAAI,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE;EACtC,MAAM,UAAU,EAAEE,kBAAwB,CAAC,KAAK,CAAC;EACjD,MAAM,GAAG,IAAI,EAAE,IAAI;EACnB,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC;EAC9B,IAAI,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;EACvD,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE;EAChD,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;EACvB,KAAK;EACL,IAAI,OAAO,OAAO,CAAC;EACnB,GAAG;EACH,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE;EAC5B,IAAI,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACvD,IAAI,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;EAC3B,GAAG;EACH,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM;EAC7B;;AC9BK,QAAC,iBAAiB,GAAG;EAC1B,EAAE,SAAS,EAAE,aAAa,CAAC,aAAa;EACxC,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI;EACzB,EAAE,KAAK,EAAE,CAAC,KAAK,MAAM;EACrB,IAAI,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;EAC1E,IAAI,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;EAClC,IAAI,GAAG,EAAE,KAAK;EACd,GAAG,CAAC;EACJ,EAAE;AACFnC,cAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC;;ACX5B,QAAC,UAAU,GAAG;EACnB,EAAE,SAAS,EAAE;EACb,IAAI,IAAI,EAAE,aAAa,CAAC,eAAe;EACvC,IAAI,QAAQ,EAAE,CAAC;EACf,GAAG;EACH,EAAE,IAAI,EAAE,YAAY;EACpB,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB;EACrC,MAAM,OAAO,KAAK,CAAC;EACnB,IAAI,MAAM,QAAQ,GAAG,ybAAyb,CAAC;EAC/c,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;EAC9E,IAAI,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,KAAK,CAAC,CAAC;EACjE,GAAG;EACH,EAAE,GAAG,EAAE,OAAO,OAAO,KAAK,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC;EAC9C,EAAE,MAAM,EAAE,OAAO,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;EAChE,EAAE;AACFA,cAAU,CAAC,GAAG,CAAC,UAAU,CAAC;;ACfrB,QAAC,UAAU,GAAG;EACnB,EAAE,SAAS,EAAE;EACb,IAAI,IAAI,EAAE,aAAa,CAAC,eAAe;EACvC,IAAI,QAAQ,EAAE,CAAC;EACf,GAAG;EACH,EAAE,IAAI,EAAE,YAAY;EACpB,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB;EACrC,MAAM,OAAO,KAAK,CAAC;EACnB,IAAI,MAAM,QAAQ,GAAG,6EAA6E,CAAC;EACnG,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;EAC9E,IAAI,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,KAAK,CAAC,CAAC;EACjE,GAAG;EACH,EAAE,GAAG,EAAE,OAAO,OAAO,KAAK,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC;EAC9C,EAAE,MAAM,EAAE,OAAO,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;EAChE,EAAE;AACFA,cAAU,CAAC,GAAG,CAAC,UAAU,CAAC;;ECf1B,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,QAAC,cAAc,GAAG;EACvB,EAAE,SAAS,EAAE;EACb,IAAI,IAAI,EAAE,aAAa,CAAC,eAAe;EACvC,IAAI,QAAQ,EAAE,CAAC,CAAC;EAChB,GAAG;EACH,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;EACnC,EAAE,GAAG,EAAE,OAAO,OAAO,KAAK,CAAC,GAAG,OAAO,EAAE,GAAG,YAAY,CAAC;EACvD,EAAE,MAAM,EAAE,OAAO,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC7E,EAAE;AACFA,cAAU,CAAC,GAAG,CAAC,cAAc,CAAC;;ACZ3B,MAAC,gBAAgB,mBAAmB,CAAC,CAAC,iBAAiB,KAAK;EAC/D,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,GAAG,KAAK,CAAC,GAAG,8BAA8B,CAAC;EAChH,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,GAAG,KAAK,CAAC,GAAG,+BAA+B,CAAC;EAClH,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,GAAG,KAAK,CAAC,GAAG,+BAA+B,CAAC;EAClH,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,GAAG,KAAK,CAAC,GAAG,+BAA+B,CAAC;EAClH,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,qCAAqC,CAAC,GAAG,KAAK,CAAC,GAAG,qCAAqC,CAAC;EAC9H,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,qCAAqC,CAAC,GAAG,KAAK,CAAC,GAAG,qCAAqC,CAAC;EAC9H,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,qCAAqC,CAAC,GAAG,KAAK,CAAC,GAAG,qCAAqC,CAAC;EAC9H,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,GAAG,KAAK,CAAC,GAAG,+BAA+B,CAAC;EAClH,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAC,GAAG,oBAAoB,CAAC;EAC5F,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,GAAG,KAAK,CAAC,GAAG,2BAA2B,CAAC;EAC1G,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,GAAG,KAAK,CAAC,GAAG,qBAAqB,CAAC;EAC9F,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,GAAG,KAAK,CAAC,GAAG,4BAA4B,CAAC;EAC5G,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC,GAAG,sBAAsB,CAAC;EAChG,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,GAAG,KAAK,CAAC,GAAG,2BAA2B,CAAC;EAC1G,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,GAAG,KAAK,CAAC,GAAG,uBAAuB,CAAC;EAClG,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,GAAG,KAAK,CAAC,GAAG,kCAAkC,CAAC;EACxH,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,0CAA0C,CAAC,GAAG,KAAK,CAAC,GAAG,0CAA0C,CAAC;EACxI,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,2CAA2C,CAAC,GAAG,KAAK,CAAC,GAAG,2CAA2C,CAAC;EAC1I,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,iCAAiC,CAAC,GAAG,KAAK,CAAC,GAAG,iCAAiC,CAAC;EACtH,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,GAAG,KAAK,CAAC,GAAG,kCAAkC,CAAC;EACxH,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,iCAAiC,CAAC,GAAG,KAAK,CAAC,GAAG,iCAAiC,CAAC;EACtH,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,GAAG,KAAK,CAAC,GAAG,kCAAkC,CAAC;EACxH,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,GAAG,KAAK,CAAC,GAAG,2BAA2B,CAAC;EAC1G,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,GAAG,KAAK,CAAC,GAAG,0BAA0B,CAAC;EACxG,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,0CAA0C,CAAC,GAAG,KAAK,CAAC,GAAG,0CAA0C,CAAC;EACxI,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,8CAA8C,CAAC,GAAG,KAAK,CAAC,GAAG,8CAA8C,CAAC;EAChJ,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,GAAG,KAAK,CAAC,GAAG,8BAA8B,CAAC;EAChH,EAAE,OAAO,iBAAiB,CAAC;EAC3B,CAAC,EAAE,gBAAgB,IAAI,EAAE,EAAE;AACtB,QAAC,kCAAkC,GAAG;EAC3C,EAAE,CAAC,KAAK,sCAAsC,GAAG;EACjD,EAAE,CAAC,KAAK,uCAAuC,GAAG;EAClD,EAAE,CAAC,KAAK,uCAAuC,CAAC;EAChD,EAAE,CAAC,KAAK,uCAAuC,CAAC;EAChD,EAAE,CAAC,KAAK,uCAAuC,GAAG;EAClD,EAAE,CAAC,KAAK,6CAA6C,GAAG;EACxD,EAAE,CAAC,KAAK,6CAA6C,CAAC;EACtD,EAAE,CAAC,KAAK,6CAA6C,CAAC;EACtD,EAAE,CAAC,KAAK,4BAA4B,GAAG;EACvC,EAAE,CAAC,KAAK,mCAAmC,GAAG;EAC9C,EAAE,CAAC,KAAK,6BAA6B,CAAC;EACtC,EAAE,CAAC,KAAK,oCAAoC,CAAC;EAC7C,EAAE,CAAC,KAAK,8BAA8B,GAAG;EACzC,EAAE,CAAC,KAAK,mCAAmC,CAAC;EAC5C,EAAE,CAAC,KAAK,+BAA+B,GAAG;EAC1C,EAAE,CAAC,KAAK,0CAA0C,CAAC;EACnD,EAAE,CAAC,KAAK,kDAAkD,GAAG;EAC7D,EAAE,CAAC,KAAK,mDAAmD,GAAG;EAC9D,EAAE,CAAC,KAAK,yCAAyC,GAAG;EACpD,EAAE,CAAC,KAAK,0CAA0C,GAAG;EACrD,EAAE,CAAC,KAAK,yCAAyC,IAAI;EACrD,EAAE,CAAC,KAAK,0CAA0C,IAAI;EACtD,EAAE,CAAC,KAAK,mCAAmC,GAAG;EAC9C,EAAE,CAAC,KAAK,kCAAkC,GAAG;EAC7C,EAAE,CAAC,KAAK,kDAAkD,CAAC;EAC3D,EAAE,CAAC,KAAK,sDAAsD,CAAC;EAC/D,EAAE,CAAC,KAAK,sCAAsC,CAAC;EAC/C;;ECxDA,MAAM,YAAY,SAAS,cAAc,CAAC;EAC1C,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;EACzE,IAAI,IAAI,MAAM,CAAC;EACf,IAAI,IAAI,IAAI,CAAC;EACb,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;EACpC,MAAM,MAAM,GAAG,MAAM,CAAC;EACtB,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;EAC9B,KAAK,MAAM;EACX,MAAM,MAAM,GAAG,IAAI,CAAC;EACpB,MAAM,IAAI,GAAG,MAAM,CAAC;EACpB,KAAK;EACL,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACzB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;EACzD,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE;EACnD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;EAClB,KAAK;EACL,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE;EACtB,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACzB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;EACnD,KAAK;EACL,GAAG;EACH,EAAE,YAAY,CAAC,KAAK,EAAE;EACtB,GAAG;EACH,EAAE,MAAM,IAAI,GAAG;EACf,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAC9C,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;EACvC,IAAI,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;EACjD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;EAC7C,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;EAClD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;EACnC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;EAClB,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH;;EClCA,MAAM,yBAAyB,SAAS,YAAY,CAAC;EACrD,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE;EAC/B,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;EACjC,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;EAChC,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;EAClC,IAAI,IAAI,CAAC,UAAU,GAAG,yBAAyB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAChF,IAAI,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;EAC7C,MAAM,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,IAAI,yBAAyB,CAAC,mBAAmB,CAAC,MAAM,YAAY,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACzN,KAAK;EACL,GAAG;EACH,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE;EACzC,IAAI,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;EAC3B,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EACnE,IAAI,IAAI,CAAC,SAAS,EAAE;EACpB,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,kDAAkD,CAAC,CAAC,CAAC;EAC9F,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;EAC7B,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACjD,MAAM,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;EACtF,MAAM,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;EAC5G,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,YAAY,GAAG;EACjB,IAAI,IAAI,CAAC,aAAa,GAAG,yBAAyB,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACvJ,GAAG;EACH,EAAE,OAAO,kBAAkB,CAAC,MAAM,EAAE;EACpC,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE;EAC5C,MAAM,OAAO,MAAM,CAAC;EACpB,KAAK,MAAM,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE;EACnD,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK,MAAM,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE;EACnD,MAAM,OAAO,OAAO,CAAC;EACrB,KAAK,MAAM,IAAI,MAAM,IAAI,KAAK,EAAE;EAChC,MAAM,OAAO,MAAM,CAAC;EACpB,KAAK,MAAM,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE;EACnD,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK;EACL,IAAI,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;EAClE,GAAG;EACH,EAAE,OAAO,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;EACvG,IAAI,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;EACtC,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;EACnC,IAAI,IAAI,UAAU,GAAG,UAAU,CAAC;EAChC,IAAI,IAAI,WAAW,GAAG,WAAW,CAAC;EAClC,IAAI,IAAI,iBAAiB,GAAG,UAAU,GAAG,UAAU,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;EAC5E,IAAI,IAAI,kBAAkB,GAAG,WAAW,GAAG,WAAW,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;EAChF,IAAI,IAAI,SAAS,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,kCAAkC,CAAC,MAAM,CAAC,CAAC;EACxG,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EACrC,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG;EACnB,QAAQ,OAAO,EAAE,CAAC;EAClB,QAAQ,UAAU,EAAE,MAAM,GAAG,CAAC,GAAG,UAAU,GAAG,iBAAiB;EAC/D,QAAQ,WAAW,EAAE,MAAM,GAAG,CAAC,GAAG,WAAW,GAAG,kBAAkB;EAClE,QAAQ,WAAW,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;EACrE,OAAO,CAAC;EACR,MAAM,MAAM,IAAI,SAAS,CAAC;EAC1B,MAAM,UAAU,GAAG,UAAU,IAAI,CAAC,IAAI,CAAC,CAAC;EACxC,MAAM,WAAW,GAAG,WAAW,IAAI,CAAC,IAAI,CAAC,CAAC;EAC1C,MAAM,iBAAiB,GAAG,UAAU,GAAG,UAAU,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;EAC1E,MAAM,kBAAkB,GAAG,WAAW,GAAG,WAAW,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;EAC9E,MAAM,SAAS,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,kCAAkC,CAAC,MAAM,CAAC,CAAC;EACtG,KAAK;EACL,IAAI,OAAO,OAAO,CAAC;EACnB,GAAG;EACH;;ECrEA,IAAI,QAAQ,CAAC;EACb,IAAI,UAAU,CAAC;EACf,SAAS,8BAA8B,GAAG;EAC1C,EAAE,UAAU,GAAG;EACf,IAAI,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,+BAA+B,CAAC;EAChE,IAAI,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,oCAAoC,CAAC;EAC1E,IAAI,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,8BAA8B,CAAC;EAC9D,IAAI,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,+BAA+B,CAAC;EAChE,IAAI,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,gCAAgC,CAAC,IAAI,QAAQ,CAAC,YAAY,CAAC,uCAAuC,CAAC;EACpI,IAAI,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,8BAA8B,CAAC;EAC9D,IAAI,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,+BAA+B,CAAC;EAChE,GAAG,CAAC;EACJ,CAAC;AACI,QAAC,wBAAwB,GAAG;EACjC,EAAE,SAAS,EAAE;EACb,IAAI,IAAI,EAAE,aAAa,CAAC,eAAe;EACvC,IAAI,QAAQ,EAAE,CAAC;EACf,GAAG;EACH,EAAE,IAAI,EAAE,YAAY;EACpB,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;EACnD,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,EAAE;EACb,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK;EACL,IAAI,QAAQ,GAAG,EAAE,CAAC;EAClB,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,GAAG,EAAE,OAAO,OAAO,KAAK;EAC1B,IAAI,IAAI,CAAC,UAAU;EACnB,MAAM,8BAA8B,EAAE,CAAC;EACvC,IAAI,MAAM,cAAc,GAAG,EAAE,CAAC;EAC9B,IAAI,KAAK,MAAM,aAAa,IAAI,UAAU,EAAE;EAC5C,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;EAClD,MAAM,IAAI,CAAC,SAAS,EAAE;EACtB,QAAQ,SAAS;EACjB,OAAO;EACP,MAAM,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACzC,KAAK;EACL,IAAI,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC,CAAC;EAC3C,GAAG;EACH,EAAE,MAAM,EAAE,OAAO,OAAO,KAAK;EAC7B,IAAI,IAAI,CAAC,UAAU;EACnB,MAAM,8BAA8B,EAAE,CAAC;EACvC,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;EACrD,GAAG;EACH,EAAE;EACF,YAAY,CAAC,GAAG,CAAC,wBAAwB,CAAC;;EC5C1C,MAAM,cAAc,GAAG,CAAC,CAAC;EACzB,MAAM,eAAe,GAAG,GAAG,CAAC;EAC5B,MAAM,kBAAkB,GAAG,EAAE,CAAC;EAC9B,MAAM,oBAAoB,GAAG,EAAE,CAAC;EAChC,MAAM,SAAS,GAAG,SAAS,CAAC;EAC5B,MAAM,UAAU,GAAG;EACnB,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,KAAK,EAAE,CAAC;EACV,EAAE,MAAM,EAAE,CAAC;EACX,EAAE,KAAK,EAAE,CAAC;EACV,EAAE,YAAY,EAAE,CAAC;EACjB,EAAE,YAAY,EAAE,EAAE;EAClB,CAAC,CAAC;EACF,MAAM,aAAa,GAAG;EACtB,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,KAAK,EAAE,CAAC;EACV,EAAE,MAAM,EAAE,CAAC;EACX,EAAE,YAAY,EAAE,CAAC;EACjB,EAAE,UAAU,EAAE,CAAC;EACf,EAAE,UAAU,EAAE,CAAC;EACf,EAAE,UAAU,EAAE,CAAC;EACf,EAAE,UAAU,EAAE,CAAC;EACf,CAAC,CAAC;EACF,MAAM,eAAe,GAAG;EACxB,EAAE,WAAW,EAAE,CAAC;EAChB,EAAE,kBAAkB,EAAE,CAAC;EACvB,EAAE,SAAS,EAAE,CAAC;EACd,EAAE,UAAU,EAAE,CAAC;EACf,EAAE,WAAW,EAAE,CAAC;EAChB,CAAC,CAAC;EACF,IAAI,WAAW,mBAAmB,CAAC,CAAC,YAAY,KAAK;EACrD,EAAE,YAAY,CAAC,YAAY,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,qBAAqB,CAAC;EAChF,EAAE,YAAY,CAAC,YAAY,CAAC,mCAAmC,CAAC,GAAG,CAAC,CAAC,GAAG,mCAAmC,CAAC;EAC5G,EAAE,YAAY,CAAC,YAAY,CAAC,gCAAgC,CAAC,GAAG,CAAC,CAAC,GAAG,gCAAgC,CAAC;EACtG,EAAE,YAAY,CAAC,YAAY,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC,GAAG,+BAA+B,CAAC;EACpG,EAAE,YAAY,CAAC,YAAY,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC,GAAG,+BAA+B,CAAC;EACpG,EAAE,YAAY,CAAC,YAAY,CAAC,gCAAgC,CAAC,GAAG,CAAC,CAAC,GAAG,gCAAgC,CAAC;EACtG,EAAE,YAAY,CAAC,YAAY,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,GAAG,6BAA6B,CAAC;EAChG,EAAE,YAAY,CAAC,YAAY,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,4BAA4B,CAAC;EAC9F,EAAE,YAAY,CAAC,YAAY,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,4BAA4B,CAAC;EAC9F,EAAE,YAAY,CAAC,YAAY,CAAC,mCAAmC,CAAC,GAAG,CAAC,CAAC,GAAG,mCAAmC,CAAC;EAC5G,EAAE,YAAY,CAAC,YAAY,CAAC,gCAAgC,CAAC,GAAG,EAAE,CAAC,GAAG,gCAAgC,CAAC;EACvG,EAAE,YAAY,CAAC,YAAY,CAAC,gCAAgC,CAAC,GAAG,EAAE,CAAC,GAAG,gCAAgC,CAAC;EACvG,EAAE,YAAY,CAAC,YAAY,CAAC,+BAA+B,CAAC,GAAG,EAAE,CAAC,GAAG,+BAA+B,CAAC;EACrG,EAAE,YAAY,CAAC,YAAY,CAAC,gCAAgC,CAAC,GAAG,EAAE,CAAC,GAAG,gCAAgC,CAAC;EACvG,EAAE,YAAY,CAAC,YAAY,CAAC,+BAA+B,CAAC,GAAG,EAAE,CAAC,GAAG,+BAA+B,CAAC;EACrG,EAAE,YAAY,CAAC,YAAY,CAAC,6BAA6B,CAAC,GAAG,EAAE,CAAC,GAAG,6BAA6B,CAAC;EACjG,EAAE,YAAY,CAAC,YAAY,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,0BAA0B,CAAC;EAC3F,EAAE,YAAY,CAAC,YAAY,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC,GAAG,yBAAyB,CAAC;EACzF,EAAE,YAAY,CAAC,YAAY,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC,GAAG,yBAAyB,CAAC;EACzF,EAAE,YAAY,CAAC,YAAY,CAAC,+BAA+B,CAAC,GAAG,EAAE,CAAC,GAAG,+BAA+B,CAAC;EACrG,EAAE,YAAY,CAAC,YAAY,CAAC,kCAAkC,CAAC,GAAG,EAAE,CAAC,GAAG,kCAAkC,CAAC;EAC3G,EAAE,YAAY,CAAC,YAAY,CAAC,sCAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,sCAAsC,CAAC;EACnH,EAAE,YAAY,CAAC,YAAY,CAAC,qCAAqC,CAAC,GAAG,EAAE,CAAC,GAAG,qCAAqC,CAAC;EACjH,EAAE,YAAY,CAAC,YAAY,CAAC,kCAAkC,CAAC,GAAG,EAAE,CAAC,GAAG,kCAAkC,CAAC;EAC3G,EAAE,YAAY,CAAC,YAAY,CAAC,+BAA+B,CAAC,GAAG,EAAE,CAAC,GAAG,+BAA+B,CAAC;EACrG,EAAE,YAAY,CAAC,YAAY,CAAC,8BAA8B,CAAC,GAAG,EAAE,CAAC,GAAG,8BAA8B,CAAC;EACnG,EAAE,YAAY,CAAC,YAAY,CAAC,6BAA6B,CAAC,GAAG,EAAE,CAAC,GAAG,6BAA6B,CAAC;EACjG,EAAE,YAAY,CAAC,YAAY,CAAC,+BAA+B,CAAC,GAAG,EAAE,CAAC,GAAG,+BAA+B,CAAC;EACrG,EAAE,YAAY,CAAC,YAAY,CAAC,4BAA4B,CAAC,GAAG,EAAE,CAAC,GAAG,4BAA4B,CAAC;EAC/F,EAAE,YAAY,CAAC,YAAY,CAAC,iCAAiC,CAAC,GAAG,EAAE,CAAC,GAAG,iCAAiC,CAAC;EACzG,EAAE,YAAY,CAAC,YAAY,CAAC,2BAA2B,CAAC,GAAG,EAAE,CAAC,GAAG,2BAA2B,CAAC;EAC7F,EAAE,YAAY,CAAC,YAAY,CAAC,4BAA4B,CAAC,GAAG,EAAE,CAAC,GAAG,4BAA4B,CAAC;EAC/F,EAAE,YAAY,CAAC,YAAY,CAAC,2BAA2B,CAAC,GAAG,EAAE,CAAC,GAAG,2BAA2B,CAAC;EAC7F,EAAE,YAAY,CAAC,YAAY,CAAC,6BAA6B,CAAC,GAAG,EAAE,CAAC,GAAG,6BAA6B,CAAC;EACjG,EAAE,YAAY,CAAC,YAAY,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,0BAA0B,CAAC;EAC3F,EAAE,YAAY,CAAC,YAAY,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,0BAA0B,CAAC;EAC3F,EAAE,YAAY,CAAC,YAAY,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC,GAAG,yBAAyB,CAAC;EACzF,EAAE,YAAY,CAAC,YAAY,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,0BAA0B,CAAC;EAC3F,EAAE,YAAY,CAAC,YAAY,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC,GAAG,yBAAyB,CAAC;EACzF,EAAE,YAAY,CAAC,YAAY,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,0BAA0B,CAAC;EAC3F,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,GAAG,sBAAsB,CAAC;EACnF,EAAE,YAAY,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,GAAG,sBAAsB,CAAC;EACnF,EAAE,YAAY,CAAC,YAAY,CAAC,4BAA4B,CAAC,GAAG,EAAE,CAAC,GAAG,4BAA4B,CAAC;EAC/F,EAAE,YAAY,CAAC,YAAY,CAAC,+BAA+B,CAAC,GAAG,EAAE,CAAC,GAAG,+BAA+B,CAAC;EACrG,EAAE,YAAY,CAAC,YAAY,CAAC,mCAAmC,CAAC,GAAG,EAAE,CAAC,GAAG,mCAAmC,CAAC;EAC7G,EAAE,YAAY,CAAC,YAAY,CAAC,kCAAkC,CAAC,GAAG,EAAE,CAAC,GAAG,kCAAkC,CAAC;EAC3G,EAAE,YAAY,CAAC,YAAY,CAAC,2BAA2B,CAAC,GAAG,EAAE,CAAC,GAAG,2BAA2B,CAAC;EAC7F,EAAE,YAAY,CAAC,YAAY,CAAC,wBAAwB,CAAC,GAAG,EAAE,CAAC,GAAG,wBAAwB,CAAC;EACvF,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,wBAAwB,CAAC,GAAG,EAAE,CAAC,GAAG,wBAAwB,CAAC;EACvF,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,0BAA0B,CAAC;EAC3F,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,GAAG,sBAAsB,CAAC;EACnF,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,GAAG,sBAAsB,CAAC;EACnF,EAAE,YAAY,CAAC,YAAY,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC,GAAG,yBAAyB,CAAC;EACzF,EAAE,YAAY,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,GAAG,sBAAsB,CAAC;EACnF,EAAE,YAAY,CAAC,YAAY,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,GAAG,qBAAqB,CAAC;EACjF,EAAE,YAAY,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,GAAG,sBAAsB,CAAC;EACnF,EAAE,YAAY,CAAC,YAAY,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,GAAG,qBAAqB,CAAC;EACjF,EAAE,YAAY,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,GAAG,sBAAsB,CAAC;EACnF,EAAE,YAAY,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,GAAG,sBAAsB,CAAC;EACnF,EAAE,YAAY,CAAC,YAAY,CAAC,gCAAgC,CAAC,GAAG,EAAE,CAAC,GAAG,gCAAgC,CAAC;EACvG,EAAE,YAAY,CAAC,YAAY,CAAC,6BAA6B,CAAC,GAAG,EAAE,CAAC,GAAG,6BAA6B,CAAC;EACjG,EAAE,YAAY,CAAC,YAAY,CAAC,6BAA6B,CAAC,GAAG,EAAE,CAAC,GAAG,6BAA6B,CAAC;EACjG,EAAE,YAAY,CAAC,YAAY,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,0BAA0B,CAAC;EAC3F,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,4BAA4B,CAAC,GAAG,EAAE,CAAC,GAAG,4BAA4B,CAAC;EAC/F,EAAE,YAAY,CAAC,YAAY,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,0BAA0B,CAAC;EAC3F,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,4BAA4B,CAAC,GAAG,EAAE,CAAC,GAAG,4BAA4B,CAAC;EAC/F,EAAE,YAAY,CAAC,YAAY,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,0BAA0B,CAAC;EAC3F,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,4BAA4B,CAAC,GAAG,EAAE,CAAC,GAAG,4BAA4B,CAAC;EAC/F,EAAE,YAAY,CAAC,YAAY,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,0BAA0B,CAAC;EAC3F,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,0BAA0B,CAAC;EAC3F,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,0BAA0B,CAAC;EAC3F,EAAE,YAAY,CAAC,YAAY,CAAC,4BAA4B,CAAC,GAAG,EAAE,CAAC,GAAG,4BAA4B,CAAC;EAC/F,EAAE,YAAY,CAAC,YAAY,CAAC,4BAA4B,CAAC,GAAG,EAAE,CAAC,GAAG,4BAA4B,CAAC;EAC/F,EAAE,YAAY,CAAC,YAAY,CAAC,4BAA4B,CAAC,GAAG,EAAE,CAAC,GAAG,4BAA4B,CAAC;EAC/F,EAAE,YAAY,CAAC,YAAY,CAAC,wCAAwC,CAAC,GAAG,EAAE,CAAC,GAAG,wCAAwC,CAAC;EACvH,EAAE,YAAY,CAAC,YAAY,CAAC,+BAA+B,CAAC,GAAG,EAAE,CAAC,GAAG,+BAA+B,CAAC;EACrG,EAAE,YAAY,CAAC,YAAY,CAAC,iCAAiC,CAAC,GAAG,EAAE,CAAC,GAAG,iCAAiC,CAAC;EACzG,EAAE,YAAY,CAAC,YAAY,CAAC,+BAA+B,CAAC,GAAG,EAAE,CAAC,GAAG,+BAA+B,CAAC;EACrG,EAAE,YAAY,CAAC,YAAY,CAAC,iCAAiC,CAAC,GAAG,EAAE,CAAC,GAAG,iCAAiC,CAAC;EACzG,EAAE,YAAY,CAAC,YAAY,CAAC,2BAA2B,CAAC,GAAG,EAAE,CAAC,GAAG,2BAA2B,CAAC;EAC7F,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,0BAA0B,CAAC;EAC3F,EAAE,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,uBAAuB,CAAC;EACrF,EAAE,YAAY,CAAC,YAAY,CAAC,4BAA4B,CAAC,GAAG,EAAE,CAAC,GAAG,4BAA4B,CAAC;EAC/F,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,wBAAwB,CAAC,GAAG,GAAG,CAAC,GAAG,wBAAwB,CAAC;EACxF,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,GAAG,gBAAgB,CAAC;EACxE,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,4BAA4B,CAAC,GAAG,GAAG,CAAC,GAAG,4BAA4B,CAAC;EAChG,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5E,EAAE,YAAY,CAAC,YAAY,CAAC,6CAA6C,CAAC,GAAG,GAAG,CAAC,GAAG,6CAA6C,CAAC;EAClI,EAAE,YAAY,CAAC,YAAY,CAAC,qDAAqD,CAAC,GAAG,GAAG,CAAC,GAAG,qDAAqD,CAAC;EAClJ,EAAE,YAAY,CAAC,YAAY,CAAC,wBAAwB,CAAC,GAAG,GAAG,CAAC,GAAG,wBAAwB,CAAC;EACxF,EAAE,OAAO,YAAY,CAAC;EACtB,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;EACtB,IAAI,wBAAwB,mBAAmB,CAAC,CAAC,yBAAyB,KAAK;EAC/E,EAAE,yBAAyB,CAAC,yBAAyB,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,GAAG,yBAAyB,CAAC;EAClH,EAAE,yBAAyB,CAAC,yBAAyB,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,GAAG,yBAAyB,CAAC;EAClH,EAAE,yBAAyB,CAAC,yBAAyB,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,GAAG,yBAAyB,CAAC;EAClH,EAAE,OAAO,yBAAyB,CAAC;EACnC,CAAC,EAAE,wBAAwB,IAAI,EAAE,CAAC,CAAC;EACnC,MAAM,QAAQ,GAAG,CAAC,CAAC;EACnB,MAAM,UAAU,GAAG,CAAC,CAAC;EACrB,MAAM,WAAW,GAAG,CAAC,CAAC;EACtB,MAAM,QAAQ,GAAG,EAAE,CAAC;EACpB,MAAM,QAAQ,GAAG,GAAG,CAAC;EACrB,MAAM,cAAc,GAAG,MAAM,CAAC;EAC9B,MAAM,WAAW,GAAG,SAAS,CAAC;EAC9B,MAAM,WAAW,GAAG,SAAS,CAAC;EAC9B,MAAM,WAAW,GAAG,SAAS,CAAC;EAC9B,MAAM,WAAW,GAAG,SAAS,CAAC;EAC9B,MAAM,6BAA6B,GAAG,CAAC,CAAC;EACxC,MAAM,gBAAgB,GAAG;EACzB,EAAE,CAAC,WAAW,GAAG,gBAAgB,CAAC,6BAA6B;EAC/D,EAAE,CAAC,WAAW,GAAG,gBAAgB,CAAC,6BAA6B;EAC/D,EAAE,CAAC,WAAW,GAAG,gBAAgB,CAAC,6BAA6B;EAC/D,CAAC,CAAC;EACF,MAAM,cAAc,GAAG;EACvB,EAAE,CAAC,EAAE,kCAAkC,gBAAgB,CAAC,6BAA6B;EACrF,EAAE,CAAC,EAAE,+BAA+B,gBAAgB,CAAC,6BAA6B;EAClF,EAAE,CAAC,EAAE,kCAAkC,gBAAgB,CAAC,6BAA6B;EACrF,EAAE,CAAC,EAAE,+BAA+B,gBAAgB,CAAC,6BAA6B;EAClF,EAAE,CAAC,EAAE,kCAAkC,gBAAgB,CAAC,6BAA6B;EACrF,EAAE,CAAC,EAAE,+BAA+B,gBAAgB,CAAC,6BAA6B;EAClF,EAAE,CAAC,EAAE,oCAAoC,gBAAgB,CAAC,mCAAmC;EAC7F,EAAE,CAAC,EAAE,oCAAoC,gBAAgB,CAAC,mCAAmC;EAC7F,EAAE,CAAC,EAAE,oCAAoC,gBAAgB,CAAC,mCAAmC;EAC7F,CAAC,CAAC;EACF,SAAS,QAAQ,CAAC,WAAW,EAAE;EAC/B,EAAE,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;EAC5C,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EAC5B,EAAE,IAAI,SAAS,KAAK,SAAS,EAAE;EAC/B,IAAI,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;EACnD,GAAG;EACH,EAAE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,eAAe,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;EAClG,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;EAC3C,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;EACzC,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;EACtD,EAAE,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,YAAY,GAAG,WAAW,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;EAChK,EAAE,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;EAC5C,EAAE,IAAI,WAAW,GAAG,WAAW,EAAE;EACjC,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EACrD,IAAI,IAAI,MAAM,KAAK,WAAW,EAAE;EAChC,MAAM,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;EACvD,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,eAAe,CAAC;EAC3D,MAAM,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;EAC/D,MAAM,MAAM,QAAQ,GAAG,IAAI,yBAAyB,CAAC,OAAO,EAAE;EAC9D,QAAQ,MAAM,EAAE,eAAe;EAC/B,QAAQ,KAAK;EACb,QAAQ,MAAM;EACd,QAAQ,MAAM,EAAE,WAAW;EAC3B,OAAO,CAAC,CAAC;EACT,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;EACxB,KAAK;EACL,IAAI,MAAM,UAAU,GAAG,cAAc,GAAG,eAAe,CAAC;EACxD,IAAI,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,oBAAoB,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;EACtH,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;EAC/D,IAAI,MAAM,iBAAiB,GAAG,UAAU,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;EAC7E,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;EAC3D,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;EAC7D,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;EACtD,IAAI,IAAI,cAAc,KAAK,KAAK,CAAC,EAAE;EACnC,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,qDAAqD,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;EAC5F,KAAK;EACL,IAAI,IAAI,QAAQ,KAAK,6BAA6B,EAAE;EACpD,MAAM,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;EACrE,KAAK;EACL,IAAI,IAAI,iBAAiB,KAAK,CAAC,gCAAgC;EAC/D,MAAM,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;EACtE,KAAK;EACL,IAAI,MAAM,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;EACrC,IAAI,MAAM,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,oBAAoB,CAAC;EAC/E,IAAI,IAAI,SAAS,KAAK,CAAC,EAAE;EACzB,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;EACjE,KAAK,MAAM;EACX,MAAM,MAAM,SAAS,GAAG,kCAAkC,CAAC,cAAc,CAAC,CAAC;EAC3E,MAAM,IAAI,SAAS,GAAG,CAAC,CAAC;EACxB,MAAM,IAAI,UAAU,GAAG,KAAK,CAAC;EAC7B,MAAM,IAAI,WAAW,GAAG,MAAM,CAAC;EAC/B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;EAC5C,QAAQ,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACnE,QAAQ,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrE,QAAQ,MAAM,SAAS,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,SAAS,CAAC;EAC7E,QAAQ,SAAS,IAAI,SAAS,CAAC;EAC/B,QAAQ,UAAU,GAAG,UAAU,KAAK,CAAC,CAAC;EACtC,QAAQ,WAAW,GAAG,WAAW,KAAK,CAAC,CAAC;EACxC,OAAO;EACP,MAAM,IAAI,WAAW,GAAG,UAAU,CAAC;EACnC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;EAC1C,QAAQ,YAAY,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;EAC/E,QAAQ,WAAW,IAAI,SAAS,CAAC;EACjC,OAAO;EACP,KAAK;EACL,IAAI,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,yBAAyB,CAAC,MAAM,EAAE;EAC9E,MAAM,MAAM,EAAE,cAAc;EAC5B,MAAM,KAAK;EACX,MAAM,MAAM;EACZ,MAAM,MAAM,EAAE,WAAW;EACzB,KAAK,CAAC,CAAC,CAAC;EACR,GAAG;EACH,EAAE,IAAI,WAAW,GAAG,QAAQ,EAAE;EAC9B,IAAI,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;EAC7E,GAAG;EACH,EAAE,IAAI,WAAW,GAAG,QAAQ,EAAE;EAC9B,IAAI,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;EACnF,GAAG;EACH,EAAE,IAAI,WAAW,GAAG,cAAc,EAAE;EACpC,IAAI,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;EAC5F,GAAG;EACH,EAAE,IAAI,WAAW,GAAG,UAAU,EAAE;EAChC,IAAI,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;EACvF,GAAG;EACH,EAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;EACvF;;EChRA,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EAC3E,MAAM,UAAU,GAAG,QAAQ,CAAC;EAC5B,MAAM,UAAU,GAAG;EACnB,EAAE,eAAe,EAAE,CAAC;EACpB,EAAE,UAAU,EAAE,EAAE;EAChB,EAAE,OAAO,EAAE,EAAE;EACb,EAAE,YAAY,EAAE,EAAE;EAClB,EAAE,SAAS,EAAE,EAAE;EACf,EAAE,kBAAkB,EAAE,EAAE;EACxB,EAAE,uBAAuB,EAAE,EAAE;EAC7B,EAAE,WAAW,EAAE,EAAE;EACjB,EAAE,YAAY,EAAE,EAAE;EAClB,EAAE,WAAW,EAAE,EAAE;EACjB,EAAE,wBAAwB,EAAE,EAAE;EAC9B,EAAE,eAAe,EAAE,EAAE;EACrB,EAAE,uBAAuB,EAAE,EAAE;EAC7B,EAAE,uBAAuB,EAAE,EAAE;EAC7B,CAAC,CAAC;EACF,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACvB,QAAC,4BAA4B,GAAG;EACrC,EAAE,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC;EAC1B,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC;EAC3B,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;EAChB,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC;EACzB,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;EAClB,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC;EACvB,EAAE;AACG,QAAC,qBAAqB,GAAG;EAC9B,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;EACnB,EAAE,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;EAClB,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;EACjB,EAAE,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;EAClB,EAAE,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;EACxB,EAAE,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC;EAC9B,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;EACpB,EAAE;AACG,QAAC,wBAAwB,GAAG;EACjC,EAAE,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC;EACnC,EAAE,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC;EACnC,EAAE,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC;EACjC,EAAE;EACF,SAAS,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,gBAAgB,GAAG,KAAK,EAAE;EAC9D,EAAE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;EAC7C,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE;EAChC,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,UAAU,CAAC;EACtF,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;EACtE,EAAE,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;EAC1E,EAAE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;EAC3F,EAAE,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;EAC9E,EAAE,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;EACrF,EAAE,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;EACnF,EAAE,MAAM,qBAAqB,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,wBAAwB,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;EAC3G,EAAE,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;EACrF,EAAE,MAAM,oBAAoB,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC;EACpG,EAAE,MAAM,mBAAmB,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC;EACnG,EAAE,IAAI,WAAW,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,EAAE;EAC7C,IAAI,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;EACtD,GAAG;EACH,EAAE,IAAI,aAAa,KAAK,CAAC,EAAE;EAC3B,IAAI,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;EACxE,GAAG;EACH,EAAE,IAAI,qBAAqB,KAAK,CAAC,EAAE;EACnC,IAAI,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;EAC7D,GAAG;EACH,EAAE,MAAM,UAAU,GAAG,CAAC,CAAC;EACvB,EAAE,MAAM,WAAW,GAAG,CAAC,CAAC;EACxB,EAAE,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC3C,EAAE,MAAM,aAAa,GAAG,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC7C,EAAE,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;EACxD,EAAE,IAAI,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;EAC7C,EAAE,IAAI,MAAM,KAAK,CAAC,EAAE;EACpB,IAAI,WAAW,GAAG,YAAY,GAAG,aAAa,CAAC;EAC/C,GAAG;EACH,EAAE,IAAI,kBAAkB,CAAC;EACzB,EAAE,IAAI,MAAM,KAAK,CAAC,EAAE;EACpB,IAAI,IAAI,4BAA4B,CAAC,MAAM,CAAC,EAAE;EAC9C,MAAM,kBAAkB,GAAG,4BAA4B,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;EAClG,KAAK,MAAM;EACX,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;EAC5D,KAAK;EACL,GAAG,MAAM;EACT,IAAI,kBAAkB,GAAG,kCAAkC,CAAC,gBAAgB,CAAC,CAAC;EAC9E,GAAG;EACH,EAAE,IAAI,kBAAkB,KAAK,KAAK,CAAC,EAAE;EACrC,IAAI,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;EACpF,GAAG;EACH,EAAE,MAAM,MAAM,GAAG,gBAAgB,GAAG,WAAW,CAAC,QAAQ,EAAE,mBAAmB,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC;EACpG,EAAE,MAAM,aAAa,GAAG,WAAW,GAAG,kBAAkB,CAAC;EACzD,EAAE,IAAI,WAAW,GAAG,aAAa,CAAC;EAClC,EAAE,IAAI,QAAQ,GAAG,UAAU,CAAC;EAC5B,EAAE,IAAI,SAAS,GAAG,WAAW,CAAC;EAC9B,EAAE,IAAI,eAAe,GAAG,YAAY,CAAC;EACrC,EAAE,IAAI,gBAAgB,GAAG,aAAa,CAAC;EACvC,EAAE,IAAI,WAAW,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;EAC3D,EAAE,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,oBAAoB,EAAE,WAAW,EAAE,EAAE;EAC/E,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;EACpE,IAAI,IAAI,aAAa,GAAG,WAAW,GAAG,CAAC,CAAC;EACxC,IAAI,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,qBAAqB,EAAE,YAAY,EAAE,EAAE;EACrF,MAAM,IAAI,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;EAC5C,MAAM,IAAI,CAAC,IAAI,EAAE;EACjB,QAAQ,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,GAAG,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;EAC5E,OAAO;EACP,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG;EAC1B,QAAQ,OAAO,EAAE,WAAW;EAC5B,QAAQ,UAAU,EAAE,oBAAoB,GAAG,CAAC,IAAI,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,eAAe;EACzF,QAAQ,WAAW,EAAE,oBAAoB,GAAG,CAAC,IAAI,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,gBAAgB;EAC5F,QAAQ,WAAW,EAAE,IAAI,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC;EAC5E,OAAO,CAAC;EACR,MAAM,aAAa,IAAI,WAAW,CAAC;EACnC,KAAK;EACL,IAAI,WAAW,IAAI,SAAS,GAAG,CAAC,CAAC;EACjC,IAAI,WAAW,GAAG,WAAW,GAAG,CAAC,KAAK,CAAC,GAAG,WAAW,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,GAAG,WAAW,CAAC;EAC1F,IAAI,QAAQ,GAAG,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC;EAClC,IAAI,SAAS,GAAG,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC;EACpC,IAAI,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;EACpE,IAAI,gBAAgB,GAAG,SAAS,GAAG,WAAW,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;EACxE,IAAI,WAAW,GAAG,eAAe,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;EAC1E,GAAG;EACH,EAAE,IAAI,MAAM,KAAK,CAAC,EAAE;EACpB,IAAI,OAAO;EACX,MAAM,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,YAAY,KAAK;EACvD,QAAQ,IAAI,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;EACjD,QAAQ,IAAI,YAAY,GAAG,KAAK,CAAC;EACjC,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,KAAK,EAAE;EACpC,UAAU,MAAM,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EAC5J,SAAS,MAAM,IAAI,MAAM,KAAK,KAAK,CAAC,YAAY,EAAE;EAClD,UAAU,YAAY,GAAG,IAAI,CAAC;EAC9B,UAAU,MAAM,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EAC3J,SAAS,MAAM,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,EAAE;EACzC,UAAU,YAAY,GAAG,IAAI,CAAC;EAC9B,UAAU,MAAM,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EAC1J,SAAS;EACT,QAAQ,OAAO;EACf,UAAU,QAAQ,EAAE,IAAI,cAAc,CAAC,MAAM,EAAE;EAC/C,YAAY,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU;EAC7C,YAAY,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW;EAC/C,WAAW,CAAC;EACZ,UAAU,IAAI,EAAE,MAAM;EACtB,UAAU,MAAM,EAAE,YAAY,GAAG,sBAAsB,CAAC,QAAQ,CAAC,GAAG,QAAQ;EAC5E,SAAS,CAAC;EACV,OAAO,CAAC;EACR,MAAM,MAAM;EACZ,KAAK,CAAC;EACN,GAAG;EACH,EAAE,OAAO;EACT,IAAI,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,YAAY,KAAK,IAAI,yBAAyB,CAAC,IAAI,EAAE;EACvF,MAAM,MAAM,EAAE,gBAAgB;EAC9B,MAAM,KAAK,EAAE,UAAU;EACvB,MAAM,MAAM,EAAE,WAAW;EACzB,MAAM,MAAM,EAAE,oBAAoB;EAClC,MAAM,YAAY;EAClB,KAAK,CAAC,CAAC;EACP,IAAI,MAAM;EACV,GAAG,CAAC;EACJ,CAAC;EACD,SAAS,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE;EACjC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACnD,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,EAAE;EACrD,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK;EACL,GAAG;EACH,EAAE,OAAO,IAAI,CAAC;EACd,CAAC;EACD,SAAS,sBAAsB,CAAC,MAAM,EAAE;EACxC,EAAE,QAAQ,MAAM;EAChB,IAAI,KAAK,OAAO,CAAC,IAAI;EACrB,MAAM,OAAO,OAAO,CAAC,YAAY,CAAC;EAClC,IAAI,KAAK,OAAO,CAAC,GAAG;EACpB,MAAM,OAAO,OAAO,CAAC,WAAW,CAAC;EACjC,IAAI,KAAK,OAAO,CAAC,EAAE;EACnB,MAAM,OAAO,OAAO,CAAC,UAAU,CAAC;EAChC,IAAI,KAAK,OAAO,CAAC,GAAG;EACpB,MAAM,OAAO,OAAO,CAAC,WAAW,CAAC;EACjC,IAAI;EACJ,MAAM,OAAO,MAAM,CAAC;EACpB,GAAG;EACH,CAAC;EACD,SAAS,WAAW,CAAC,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAAE;EAClE,EAAE,MAAM,MAAM,mBAAmB,IAAI,GAAG,EAAE,CAAC;EAC3C,EAAE,IAAI,qBAAqB,GAAG,CAAC,CAAC;EAChC,EAAE,OAAO,qBAAqB,GAAG,mBAAmB,EAAE;EACtD,IAAI,MAAM,mBAAmB,GAAG,QAAQ,CAAC,SAAS,CAAC,gBAAgB,GAAG,qBAAqB,EAAE,YAAY,CAAC,CAAC;EAC3G,IAAI,MAAM,qBAAqB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,CAAC,CAAC;EAC/E,IAAI,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,CAAC;EAC3D,IAAI,IAAI,mBAAmB,KAAK,CAAC,IAAI,mBAAmB,GAAG,mBAAmB,GAAG,qBAAqB,EAAE;EACxG,MAAM,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;EACpE,MAAM,MAAM;EACZ,KAAK;EACL,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;EACvB,IAAI,OAAO,UAAU,GAAG,mBAAmB,EAAE,UAAU,EAAE,EAAE;EAC3D,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE;EACvE,QAAQ,MAAM;EACd,OAAO;EACP,KAAK;EACL,IAAI,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;EAC3B,MAAM,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;EAClF,MAAM,MAAM;EACZ,KAAK;EACL,IAAI,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC,CAAC;EAC7G,IAAI,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,GAAG,UAAU,GAAG,CAAC,EAAE,mBAAmB,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC;EAC9H,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;EAC3B,IAAI,qBAAqB,IAAI,CAAC,GAAG,mBAAmB,GAAG,YAAY,CAAC;EACpE,GAAG;EACH,EAAE,OAAO,MAAM,CAAC;EAChB;;AC9MK,QAAC,OAAO,GAAG;EAChB,EAAE,SAAS,EAAE;EACb,IAAI,IAAI,EAAE,aAAa,CAAC,UAAU;EAClC,IAAI,QAAQ,EAAE,oBAAoB,CAAC,IAAI;EACvC,GAAG;EACH,EAAE,IAAI,CAAC,GAAG,EAAE;EACZ,IAAI,OAAO,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;EACvC,GAAG;EACH,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;EACjC,IAAI,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACvD,IAAI,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;EACrD,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;EAC5C,IAAI,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK;EACjD,MAAM,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE;EAC7C,QAAQ,MAAM,EAAE,YAAY,CAAC,GAAG;EAChC,QAAQ,SAAS,EAAE,WAAW,CAAC,sBAAsB;EACrD,QAAQ,UAAU,EAAEmC,kBAAwB,CAAC,GAAG,CAAC;EACjD,QAAQ,GAAG,KAAK,CAAC,IAAI;EACrB,OAAO,CAAC,CAAC;EACT,MAAM,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;EAC9C,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;EAC1D,GAAG;EACH,EAAE,MAAM,CAAC,OAAO,EAAE;EAClB,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;EAChC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;EAC9C,KAAK,MAAM;EACX,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC5B,KAAK;EACL,GAAG;EACH,EAAE;AACFnC,cAAU,CAAC,GAAG,CAAC,OAAO,CAAC;;AC/BlB,QAAC,OAAO,GAAG;EAChB,EAAE,SAAS,EAAE;EACb,IAAI,IAAI,EAAE,aAAa,CAAC,UAAU;EAClC,IAAI,QAAQ,EAAE,oBAAoB,CAAC,IAAI;EACvC,GAAG;EACH,EAAE,IAAI,CAAC,GAAG,EAAE;EACZ,IAAI,OAAO,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;EACvC,GAAG;EACH,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;EACjC,IAAI,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACvD,IAAI,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;EACrD,IAAI,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;EAC5E,IAAI,MAAM,SAAS,GAAG,UAAU,IAAI,YAAY,CAAC;EACjD,IAAI,MAAM,OAAO,GAAG;EACpB,MAAM,MAAM,EAAE,YAAY,CAAC,GAAG;EAC9B,MAAM,SAAS,EAAE,WAAW,CAAC,sBAAsB;EACnD,MAAM,UAAU,EAAEmC,kBAAwB,CAAC,GAAG,CAAC;EAC/C,MAAM,GAAG,KAAK,CAAC,IAAI;EACnB,KAAK,CAAC;EACN,IAAI,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK;EACjD,MAAM,IAAI,SAAS,KAAK,YAAY,EAAE;EACtC,QAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;EAC/B,UAAU,IAAI,EAAE,QAAQ,CAAC,IAAI;EAC7B,UAAU,MAAM,EAAE,QAAQ,CAAC,MAAM;EACjC,SAAS,CAAC,CAAC;EACX,OAAO;EACP,MAAM,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;EACtD,MAAM,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;EACpC,MAAM,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;EAC9C,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;EAC1D,GAAG;EACH,EAAE,MAAM,CAAC,OAAO,EAAE;EAClB,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;EAChC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;EAC9C,KAAK,MAAM;EACX,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC5B,KAAK;EACL,GAAG;EACH,EAAE;AACFnC,cAAU,CAAC,GAAG,CAAC,OAAO,CAAC;;AC3ClB,QAAC,2BAA2B,GAAG;EACpC,EAAE,SAAS,EAAE,aAAa,CAAC,aAAa;EACxC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK;EACnB,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACrC,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EAC5C,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;EACvD,GAAG;EACH,EAAE,KAAK,EAAE,CAAC,KAAK,KAAK;EACpB,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACrC,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EAC5C,IAAI,IAAI,SAAS,KAAK,KAAK,EAAE;EAC7B,MAAM,MAAM,WAAW,GAAG;EAC1B,QAAQ,WAAW;EACnB,QAAQ,gBAAgB;EACxB,QAAQ,UAAU;EAClB,QAAQ,WAAW;EACnB,QAAQ,WAAW;EACnB,QAAQ,UAAU;EAClB,QAAQ,WAAW;EACnB,OAAO,CAAC;EACR,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;EAC1D,QAAQ,OAAO;EACf,UAAU,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;EAChF,UAAU,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;EAChE,UAAU,GAAG,EAAE,KAAK;EACpB,SAAS,CAAC;EACV,OAAO;EACP,KAAK;EACL,IAAI,OAAO;EACX,MAAM,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;EAC5E,MAAM,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;EACpC,MAAM,GAAG,EAAE,KAAK;EAChB,KAAK,CAAC;EACN,GAAG;EACH,EAAE;AACFA,cAAU,CAAC,GAAG,CAAC,2BAA2B,CAAC;;ECnC3C,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;EAClC,MAAM,eAAe,GAAG,CAAC,CAAC;EAC1B,MAAM,QAAQ,GAAG,MAAM;EACvB,EAAE,WAAW,CAAC,QAAQ,EAAE;EACxB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC7B,GAAG;EACH,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;EACvC,IAAI,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;EAC9B,IAAI,KAAK,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;EAC3D,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;EACxC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;EACvC,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE;EACrC,MAAM,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EAC/C,KAAK;EACL,IAAI,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,CAAC,EAAE;EACzC,MAAM,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;EACzE,MAAM,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;EAC5C,QAAQ,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;EACxC,QAAQ,MAAM,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;EACrD,QAAQ,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;EACnC,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;EAC9G,GAAG;EACH,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;EACxB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EACnC,IAAI,IAAI,UAAU,CAAC;EACnB,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC;EACtB,IAAI,IAAI,aAAa,CAAC;EACtB,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC;EAC1B,IAAI,IAAI,MAAM,EAAE;EAChB,MAAM,IAAI,MAAM,YAAY,aAAa,EAAE;EAC3C,QAAQ,aAAa,GAAG,MAAM,CAAC;EAC/B,OAAO,MAAM;EACb,QAAQ,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;EAC9D,QAAQ,SAAS,GAAG,IAAI,CAAC;EACzB,OAAO;EACP,KAAK;EACL,IAAI,IAAI,aAAa,EAAE;EACvB,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC;EACxD,MAAM,KAAK,GAAG,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC;EAC3C,MAAM,KAAK,GAAG,KAAK,CAAC;EACpB,MAAM,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACjD,KAAK,MAAM;EACX,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;EACvC,MAAM,IAAI,CAAC,KAAK,EAAE;EAClB,QAAQ,KAAK,GAAG,SAAS,CAAC;EAC1B,QAAQ,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;EACrC,QAAQ,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;EACvC,OAAO;EACP,MAAM,KAAK,GAAG,IAAI,CAAC;EACnB,MAAM,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACxC,KAAK;EACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC;EACvD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;EACzD,IAAI,IAAI,YAAY,GAAG,IAAIoC,kBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;EACtE,IAAI,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,eAAe,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;EACzE,IAAI,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;EAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;EAC7I,IAAI,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;EAC9E,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;EAC3D,IAAI,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACxD,IAAI,IAAI,KAAK,EAAE;EACf,MAAM,MAAM,OAAO,GAAG,IAAIA,kBAAwB,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;EAC/F,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EACnC,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;EACjE,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;EAC7B,MAAM,YAAY,GAAG,OAAO,CAAC;EAC7B,KAAK;EACL,IAAI,IAAI,SAAS,EAAE;EACnB,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAClC,KAAK;EACL,IAAI,OAAO,YAAY,CAAC,MAAM,CAAC;EAC/B,GAAG;EACH,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;EACxB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EACnC,IAAI,IAAI,UAAU,CAAC;EACnB,IAAI,IAAI,aAAa,CAAC;EACtB,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC;EAC1B,IAAI,IAAI,MAAM,EAAE;EAChB,MAAM,IAAI,MAAM,YAAY,aAAa,EAAE;EAC3C,QAAQ,aAAa,GAAG,MAAM,CAAC;EAC/B,OAAO,MAAM;EACb,QAAQ,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;EAC9D,QAAQ,SAAS,GAAG,IAAI,CAAC;EACzB,OAAO;EACP,KAAK;EACL,IAAI,IAAI,aAAa,EAAE;EACvB,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC;EACxD,MAAM,KAAK,GAAG,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC;EAC3C,MAAM,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACjD,KAAK,MAAM;EACX,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;EACvC,MAAM,IAAI,CAAC,KAAK,EAAE;EAClB,QAAQ,KAAK,GAAG,SAAS,CAAC;EAC1B,QAAQ,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;EACrC,QAAQ,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;EACvC,OAAO;EACP,MAAM,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACxC,KAAK;EACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC;EACvD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;EACzD,IAAI,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,eAAe,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;EACzE,IAAI,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;EAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;EAC7I,IAAI,IAAI,SAAS,EAAE;EACnB,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAClC,KAAK;EACL,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;EACvD,IAAI,OAAO,WAAW,CAAC;EACvB,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,GAAG;EACH,EAAE,OAAO,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE;EACtC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;EAC/C,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAC/C,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE;EACvB,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;EACpE,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;EAC5E,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;EAC5E,OAAO,MAAM;EACb,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EAC3B,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACnC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACnC,OAAO;EACP,KAAK;EACL,GAAG;EACH,CAAC,CAAC;AACC,MAAC,OAAO,GAAG,SAAS;EACvB,OAAO,CAAC,SAAS,GAAG;EACpB,EAAE,IAAI,EAAE,SAAS;EACjB,EAAE,IAAI,EAAE,aAAa,CAAC,cAAc;EACpC,CAAC,CAAC;AACFpC,cAAU,CAAC,GAAG,CAAC,OAAO,CAAC;;AC1IpB,MAAC,SAAS,mBAAmB,CAAC,CAAC,UAAU,KAAK;EACjD,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;EAChC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;EAChC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;EAChC,EAAE,OAAO,UAAU,CAAC;EACpB,CAAC,EAAE,SAAS,IAAI,EAAE,EAAE;AACjB,MAAC,QAAQ,mBAAmB,CAAC,CAAC,SAAS,KAAK;EAC/C,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;EAC7B,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;EAC/B,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;EACjC,EAAE,OAAO,SAAS,CAAC;EACnB,CAAC,EAAE,QAAQ,IAAI,EAAE,EAAE;AACd,QAAC,eAAe,GAAG;EACxB,EAAE,QAAQ,EAAE,IAAI;EAChB,EAAE,SAAS,EAAE,EAAE;EACf,EAAE,WAAW,EAAE,CAAC;EAChB,EAAE,WAAW,EAAE,IAAI;EACnB,EAAE,OAAO,EAAE,IAAI;EACf,EAAE,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,EAAE,EAAE;EAC/C,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;EACpD,MAAM,OAAO,eAAe,CAAC;EAC7B,KAAK;EACL,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;EACpD,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;EACnC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;EAChC,KAAK,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;EAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;EAChC,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;EACH;;EC5BA,MAAM,SAAS,CAAC;EAChB,EAAE,WAAW,GAAG;EAChB,IAAI,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;EAC1B,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;EACjC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACzB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;EACjB,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;EAChC,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAC3B,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAC3B,IAAI,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EAC/B,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC7B,IAAI,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EAC/B,IAAI,OAAO,GAAG,CAAC;EACf,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;EAC1B,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;EACjC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACzB,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,GAAG;EACH;;EC7BA,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,EAAE;EAC9C,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;EAC1B,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;EACb,IAAI,OAAO;EACX,GAAG;EACH,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;EACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;EACzE,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EACzB,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAC7B,IAAI,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;EAClC,IAAI,EAAE,GAAG,EAAE,CAAC;EACZ,IAAI,EAAE,GAAG,EAAE,CAAC;EACZ,GAAG;EACH,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE;EAC9C,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;EAC3C,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC3B,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC3B,MAAM,MAAM,EAAE,GAAG,CAAC,CAAC;EACnB,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACvB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1D,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1D,KAAK;EACL,GAAG;EACH,CAAC;EACD,MAAM,SAAS,GAAG;EAClB,EAAE,KAAK,CAAC,YAAY,EAAE;EACtB,IAAI,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;EAC5D,GAAG;EACH,EAAE,WAAW,CAAC,YAAY,EAAE,gBAAgB,EAAE;EAC9C,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;EACrC,IAAI,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;EACrC,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC;EAC1C,IAAI,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;EAC7C,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;EAC5B,MAAM,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;EACpC,MAAM,MAAM,SAAS,GAAG,EAAE,CAAC;EAC3B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC7C,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9B,QAAQ,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EAC1C,QAAQ,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC1C,QAAQ,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAC5C,OAAO;EACP,MAAM,MAAM,SAAS,GAAGqC,QAAY,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;EAC3D,MAAM,IAAI,CAAC,SAAS,EAAE;EACtB,QAAQ,OAAO;EACf,OAAO;EACP,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;EACvC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;EACpD,QAAQ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;EAC7C,QAAQ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;EACjD,QAAQ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;EACjD,OAAO;EACP,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC9C,QAAQ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EAC9B,OAAO;EACP,KAAK;EACL,GAAG;EACH,CAAC;;EC1DD,MAAM,WAAW,GAAG;EACpB,EAAE,KAAK,CAAC,YAAY,EAAE;EACtB,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;EACvC,IAAI,IAAI,CAAC,CAAC;EACV,IAAI,IAAI,CAAC,CAAC;EACV,IAAI,IAAI,EAAE,CAAC;EACX,IAAI,IAAI,EAAE,CAAC;EACX,IAAI,IAAI,EAAE,CAAC;EACX,IAAI,IAAI,EAAE,CAAC;EACX,IAAI,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE;EAC3C,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;EACxC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACnB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACnB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;EAC9B,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EAClB,KAAK,MAAM,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE;EAClD,MAAM,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC;EACzC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;EACpB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;EACpB,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;EACzB,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;EAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EAClB,KAAK,MAAM;EACX,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC;EAC7C,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;EAC9C,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;EAChD,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC;EACpC,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,UAAU,CAAC;EACrC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;EAC3F,MAAM,EAAE,GAAG,SAAS,GAAG,EAAE,CAAC;EAC1B,MAAM,EAAE,GAAG,UAAU,GAAG,EAAE,CAAC;EAC3B,KAAK;EACL,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;EACrD,MAAM,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EACxB,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;EAClD,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAClD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EACtB,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,MAAM,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EACxB,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EACrC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EACrC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EACrC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EACrC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACtC,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;EAChB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI;EACJ,MAAM,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EACzB,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC;EACpB,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,IAAI,EAAE,EAAE;EACd,QAAQ,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EAC1B,QAAQ,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EAC1B,QAAQ,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EAC1B,QAAQ,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EAC1B,QAAQ,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EAC1B,OAAO;EACP,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACtC,MAAM,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACvC,MAAM,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACvC,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,KAAK;EACL,IAAI;EACJ,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC;EACpB,MAAM,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EACzB,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EACxB,MAAM,IAAI,EAAE,EAAE;EACd,QAAQ,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EAC1B,QAAQ,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EAC1B,QAAQ,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EAC1B,QAAQ,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;EAC1B,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,WAAW,CAAC,YAAY,EAAE,gBAAgB,EAAE;EAC9C,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;EACvC,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC;EAC1C,IAAI,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;EAC7C,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;EAC7B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;EACnC,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC;EAC3B,IAAI,IAAI,CAAC,CAAC;EACV,IAAI,IAAI,CAAC,CAAC;EACV,IAAI,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE;EAC3C,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;EACxC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACnB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACnB,KAAK,MAAM;EACX,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC;EAC7C,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;EAChD,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;EACjD,KAAK;EACL,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;EACvC,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;EACrJ,IAAI,OAAO,EAAE,CAAC;EACd,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACrC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;EAC/C,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC3C,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;EAC/C,KAAK;EACL,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;EAC9C,GAAG;EACH,CAAC;;EC5ID,MAAM,cAAc,GAAG;EACvB,EAAE,KAAK,CAAC,YAAY,EAAE;EACtB,IAAI,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC;EACxC,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;EACzB,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;EACzB,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;EACjC,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;EACnC,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;EACvC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EACtB,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE;EACtC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;EAC1E,GAAG;EACH,EAAE,WAAW,CAAC,YAAY,EAAE,gBAAgB,EAAE;EAC9C,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;EACvC,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC;EAC1C,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;EAC7B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;EACrC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACvG,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;EAC5G,GAAG;EACH,CAAC;;ECtBD,MAAM,qBAAqB,GAAG;EAC9B,EAAE,KAAK,CAAC,YAAY,EAAE;EACtB,IAAI,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;EACpC,GAAG;EACH,EAAE,WAAW,CAAC,YAAY,EAAE,gBAAgB,EAAE;EAC9C,IAAI,WAAW,CAAC,WAAW,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;EAC5D,GAAG;EACH,CAAC;;ECND,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE;EAC1E,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;EAClC,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;EAClC,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;EAClC,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;EAClC,EAAE,IAAI,GAAG,CAAC;EACV,EAAE,IAAI,GAAG,CAAC;EACV,EAAE,IAAI,SAAS,EAAE;EACjB,IAAI,GAAG,GAAG,EAAE,CAAC;EACb,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;EACd,GAAG,MAAM;EACT,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;EACd,IAAI,GAAG,GAAG,EAAE,CAAC;EACb,GAAG;EACH,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;EACvB,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;EACvB,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;EACvB,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;EACvB,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EACvB,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EACvB,EAAE,OAAO,CAAC,CAAC;EACX,CAAC;EACD,SAAS,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;EACzD,EAAE,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;EACzB,EAAE,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;EACzB,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;EAC1C,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;EAC5C,EAAE,IAAI,SAAS,IAAI,MAAM,GAAG,MAAM,EAAE;EACpC,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EAC1B,GAAG,MAAM,IAAI,CAAC,SAAS,IAAI,MAAM,GAAG,MAAM,EAAE;EAC5C,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EAC1B,GAAG;EACH,EAAE,IAAI,UAAU,GAAG,MAAM,CAAC;EAC1B,EAAE,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;EACpC,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;EAC3C,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;EAC9D,EAAE,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EAC9E,EAAE,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;EACxC,EAAE,UAAU,IAAI,QAAQ,CAAC;EACzB,EAAE,IAAI,SAAS,EAAE;EACjB,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EACvB,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,QAAQ,EAAE;EAC9E,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EACzB,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;EAC/E,KAAK;EACL,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EACvB,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EACvB,GAAG,MAAM;EACT,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EACvB,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,QAAQ,EAAE;EAC9E,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;EAC/E,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EACzB,KAAK;EACL,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EACvB,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EACvB,GAAG;EACH,EAAE,OAAO,QAAQ,GAAG,CAAC,CAAC;EACtB,CAAC;EACD,SAAS,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE;EAC5D,EAAE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;EACnC,EAAE,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;EAC3D,EAAE,MAAM,GAAG,GAAG,gBAAgB,CAAC,aAAa,CAAC;EAC7C,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;EAC3B,IAAI,OAAO;EACX,GAAG;EACH,EAAE,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC;EACvC,EAAE,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACrD,EAAE,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EACpF,EAAE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC;EACtE,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAC9G,EAAE,IAAI,WAAW,EAAE;EACnB,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;EAC5B,IAAI,IAAI,UAAU,EAAE;EACpB,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;EACnB,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;EACnB,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EAC1E,KAAK;EACL,IAAI,MAAM,SAAS,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC;EACzD,IAAI,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,GAAG,CAAC;EACzD,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;EACzC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;EACtC,GAAG;EACH,EAAE,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC;EACxC,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EACnC,EAAE,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;EACjC,EAAE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;EACtC,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;EAChC,EAAE,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,CAAC;EACrC,EAAE,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;EAChE,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;EACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;EACb,EAAE,IAAI,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;EACzB,EAAE,IAAI,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;EACtB,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC;EACjB,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC;EACjB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;EACtD,EAAE,KAAK,IAAI,IAAI,CAAC;EAChB,EAAE,KAAK,IAAI,IAAI,CAAC;EAChB,EAAE,KAAK,IAAI,KAAK,CAAC;EACjB,EAAE,KAAK,IAAI,KAAK,CAAC;EACjB,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;EAChC,EAAE,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;EACtC,EAAE,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC;EAChC,EAAE,IAAI,CAAC,WAAW,EAAE;EACpB,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,KAAK,EAAE;EACtC,MAAM,UAAU,IAAI,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,WAAW,GAAG,WAAW,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,KAAK,IAAI,WAAW,GAAG,WAAW,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACnP,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,MAAM,EAAE;EAC9C,MAAM,UAAU,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;EACxF,KAAK;EACL,GAAG;EACH,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC;EACjE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC;EACjE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EACvC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;EAC7B,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACjC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACvB,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC3B,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;EAC7B,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACjC,IAAI,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;EACvB,IAAI,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;EACpB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;EACpD,IAAI,KAAK,IAAI,IAAI,CAAC;EAClB,IAAI,KAAK,IAAI,IAAI,CAAC;EAClB,IAAI,KAAK,IAAI,KAAK,CAAC;EACnB,IAAI,KAAK,IAAI,KAAK,CAAC;EACnB,IAAI,MAAM,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;EACxB,IAAI,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;EACrB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;EACxD,IAAI,MAAM,IAAI,IAAI,CAAC;EACnB,IAAI,MAAM,IAAI,IAAI,CAAC;EACnB,IAAI,MAAM,IAAI,KAAK,CAAC;EACpB,IAAI,MAAM,IAAI,KAAK,CAAC;EACpB,IAAI,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;EACxB,IAAI,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;EACxB,IAAI,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;EACxB,IAAI,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;EACxB,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACtC,IAAI,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxC,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;EAChC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;EAChD,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC;EACrE,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC;EACrE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;EACpB,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,EAAE;EAC5C,UAAU,UAAU,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;EAClK,SAAS,MAAM;EACf,UAAU,UAAU,IAAI,CAAC,CAAC;EAC1B,SAAS;EACT,QAAQ,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC;EACzE,QAAQ,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC;EACzE,OAAO;EACP,MAAM,SAAS;EACf,KAAK;EACL,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;EAC7E,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;EACjF,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,KAAK,CAAC;EAC7C,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,KAAK,CAAC;EAC7C,IAAI,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;EAChE,IAAI,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,WAAW,CAAC;EAC7C,IAAI,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,WAAW,CAAC;EAC7C,IAAI,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,WAAW,CAAC;EAC7C,IAAI,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,WAAW,CAAC;EAC7C,IAAI,MAAM,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;EAC1F,IAAI,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;EAC/D,IAAI,MAAM,uBAAuB,GAAG,sBAAsB,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC;EACxG,IAAI,MAAM,aAAa,GAAG,KAAK,IAAI,uBAAuB,CAAC;EAC3D,IAAI,IAAI,aAAa,EAAE;EACvB,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,GAAG,YAAY,GAAG,iBAAiB,EAAE;EACtF,QAAQ,IAAI,SAAS,EAAE;EACvB,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC/B,UAAU,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC;EACzE,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC/B,UAAU,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC;EAC3E,SAAS,MAAM;EACf,UAAU,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC;EACzE,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC/B,UAAU,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC;EAC3E,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC/B,SAAS;EACT,QAAQ,UAAU,IAAI,CAAC,CAAC;EACxB,OAAO,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,EAAE;EACjD,QAAQ,IAAI,SAAS,EAAE;EACvB,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC/B,UAAU,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC;EACzE,UAAU,UAAU,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACjK,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC/B,UAAU,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC;EAC3E,SAAS,MAAM;EACf,UAAU,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC;EACzE,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC/B,UAAU,UAAU,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;EAClK,UAAU,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC;EAC3E,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC/B,SAAS;EACT,OAAO,MAAM;EACb,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,OAAO;EACP,KAAK,MAAM;EACX,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC;EACrE,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC;EACrE,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,EAAE;EAC1C,QAAQ,IAAI,SAAS,EAAE;EACvB,UAAU,UAAU,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACjK,SAAS,MAAM;EACf,UAAU,UAAU,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;EAClK,SAAS;EACT,OAAO,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,GAAG,YAAY,IAAI,iBAAiB,EAAE;EAC9F,QAAQ,IAAI,SAAS,EAAE;EACvB,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC/B,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC/B,SAAS,MAAM;EACf,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC/B,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC/B,SAAS;EACT,QAAQ,UAAU,IAAI,CAAC,CAAC;EACxB,OAAO;EACP,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC;EACvE,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,EAAE,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC;EACvE,MAAM,UAAU,IAAI,CAAC,CAAC;EACtB,KAAK;EACL,GAAG;EACH,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;EAChC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACpC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;EAChC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACpC,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;EACrB,EAAE,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;EAClB,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;EAClD,EAAE,KAAK,IAAI,IAAI,CAAC;EAChB,EAAE,KAAK,IAAI,IAAI,CAAC;EAChB,EAAE,KAAK,IAAI,KAAK,CAAC;EACjB,EAAE,KAAK,IAAI,KAAK,CAAC;EACjB,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC;EACjE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC;EACjE,EAAE,IAAI,CAAC,WAAW,EAAE;EACpB,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,KAAK,EAAE;EACtC,MAAM,UAAU,IAAI,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,WAAW,GAAG,WAAW,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,KAAK,IAAI,WAAW,GAAG,WAAW,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;EACpP,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,MAAM,EAAE;EAC9C,MAAM,UAAU,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;EACzF,KAAK;EACL,GAAG;EACH,EAAE,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;EAC3C,EAAE,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;EACjE,EAAE,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,UAAU,GAAG,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EACjE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACtB,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC1B,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;EAC5B,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAChC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;EAC5B,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAChC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;EAC3E,MAAM,SAAS;EACf,KAAK;EACL,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EAClC,GAAG;EACH,CAAC;EACD,SAAS,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE;EACzD,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACZ,EAAE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;EACnC,EAAE,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;EACrD,EAAE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC;EACtE,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;EACzB,IAAI,OAAO;EACX,EAAE,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC;EACxC,EAAE,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;EAC3C,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EACnC,EAAE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;EACtC,EAAE,IAAI,YAAY,GAAG,UAAU,CAAC;EAChC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACnC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACjD,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;EACjD,IAAI,YAAY,EAAE,CAAC;EACnB,GAAG;EACH,EAAE,IAAI,WAAW,EAAE;EACnB,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;EAC3C,GAAG;EACH,CAAC;EACD,SAAS,SAAS,CAAC,YAAY,EAAE,gBAAgB,EAAE;EACnD,EAAE,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE;EACrC,IAAI,eAAe,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;EACpD,GAAG,MAAM;EACT,IAAI,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;EACvD,GAAG;EACH;;ECpSA,MAAM,QAAQ,CAAC;EACf,EAAE,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;EACjD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC5C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC5C,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;EAC1B,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;EAC1B,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EACvB,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EACvB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EAC3C,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,MAAM,KAAK,CAAC,EAAE;EACnC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;EAChF,QAAQ,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC5B,OAAO;EACP,MAAM,OAAO,IAAI,CAAC;EAClB,KAAK;EACL,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EACjC,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EACjC,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EACjC,IAAI,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;EAC3C,IAAI,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;EAC3C,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC5B,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC5B,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EACjC,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EACjC,IAAI,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;EAC9B,IAAI,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;EAC9B,IAAI,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;EAC9B,IAAI,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;EAC9B,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;EACpD,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;EAClD,IAAI,OAAO;EACX,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE;EACjB,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE;EACjB,MAAM,MAAM;EACZ,MAAM,UAAU;EAChB,MAAM,QAAQ;EACd,MAAM,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;EACtC,KAAK,CAAC;EACN,GAAG;EACH,EAAE,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE;EAC7F,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;EACxC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;EAC/G,IAAI,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAClC,IAAI,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;EAC7B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EACnC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EACnC,IAAI,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;EAC3B,IAAI,MAAM,SAAS,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC;EAC9C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,CAAC,EAAE;EACxC,MAAM,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;EACrC,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;EACvD,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAChC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EACjC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;EACrG,KAAK;EACL,GAAG;EACH;;ECzDA,MAAM,WAAW,CAAC;EAClB,EAAE,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;EACnE,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;EACjB,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACd,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACd,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACd,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC;EACtB,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC;EACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;EACjC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAChB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACjB,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EAClB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACjB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;EACpB,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;EACrB,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC;EAC1E,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC;EAC1E,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;EACrB,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;EACrB,MAAM,KAAK,GAAG,CAAC,CAAC;EAChB,MAAM,KAAK,GAAG,CAAC,CAAC;EAChB,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7C,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;EACH,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE;EACzD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC5C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC5C,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;EACvB,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;EACpH,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;EAC9B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;EACxC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAChB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACjB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;EACpB,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;EACrB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACjB,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EAClB,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;EACpJ,KAAK;EACL,GAAG;EACH;;ECtDA,MAAM,cAAc,CAAC;EACrB,EAAE,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;EACvD,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;EACrC,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;EACrC,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;EACnC,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;EACnC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACtC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACtC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAChC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvC,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC5B,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EAC3B,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChC,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACtB,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;EACrH,GAAG;EACH,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE;EAC7C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC5C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC5C,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;EAC3G,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;EACjC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACtB,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC;EACrC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC;EACrC,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;EAChG,KAAK;EACL,GAAG;EACH;;EC/BA,MAAM,SAAS,CAAC;EAChB,EAAE,WAAW,GAAG;EAChB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;EACjB,GAAG;EACH,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE;EACxC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;EACjB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;EAC5B,IAAI,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;EACnC,GAAG;EACH,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE;EAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;EACnD,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;EACtC,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;EAClB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;EACxB,GAAG;EACH;;ECNA,MAAM,aAAa,GAAG;EACtB,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS;EAC1B,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,WAAW;EAC5B,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,WAAW;EAC5B,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc;EAC/B,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,qBAAqB;EACtC,CAAC,CAAC;EACF,MAAM,UAAU,GAAG,EAAE,CAAC;EACtB,MAAM,cAAc,GAAG,EAAE;;ECvBzB,MAAM,YAAY,CAAC;EACnB,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE;EACxE,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACrB,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;EACpB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;EAC/B,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;EAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACzB,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;EAC3B,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACrF,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;EAC1B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,GAAG;EACH;;ECdA,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;EAC7B,MAAM,iBAAiB,GAAG,cAAc,aAAa,CAAC;EACtD,EAAE,WAAW,GAAG;EAChB,IAAI,KAAK,EAAE,CAAC;EACZ,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC9B,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC9B,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACrB,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACrB,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;EAClB,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;EACtB,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACzB,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EAC3B,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;EACxB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;EACtB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,EAAE,CAAC;EAChC,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;EAC1B,GAAG;EACH,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;EACzB,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,KAAK,EAAE;EACzC,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;EACpC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;EAC7B,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;EACxB,GAAG;EACH,EAAE,UAAU,GAAG;EACf,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;EAC1B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;EACjB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;EACtB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;EAC/B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACpD,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;EACzC,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7C,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;EAC9B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAClD,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACxC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;EACxB,MAAM,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACjC,KAAK;EACL,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;EAC5B,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;EACtC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;EACxB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;EACxB,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;EACnC,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE;EACtE,IAAI,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;EACvE,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACjC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;EACjB,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE;EACjC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;EACnC,MAAM,OAAO,IAAI,CAAC;EAClB,KAAK;EACL,IAAI,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;EAC7D,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACtE,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;EACzC,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;EACjB,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EACvD,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;EACrC,KAAK;EACL,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;EACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;EAC/B,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;EACjC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;EAC9B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,GAAG;EACH,EAAE,aAAa,CAAC,KAAK,EAAE;EACvB,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;EAC3C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAClD,MAAM,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;EACnC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;EACnC,QAAQ,SAAS;EACjB,OAAO;EACP,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;EACtB,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;EACzB,UAAU,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;EACpD,SAAS,MAAM;EACf,UAAU,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EACnC,SAAS;EACT,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;EACzD,UAAU,IAAI,OAAO,GAAG,KAAK,CAAC;EAC9B,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE;EAC1B,YAAY,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;EAC3D,cAAc,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;EAC1C,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;EAC/D,gBAAgB,OAAO,GAAG,IAAI,CAAC;EAC/B,gBAAgB,MAAM;EACtB,eAAe;EACf,aAAa;EACb,WAAW;EACX,UAAU,IAAI,CAAC,OAAO,EAAE;EACxB,YAAY,OAAO,IAAI,CAAC;EACxB,WAAW;EACX,SAAS;EACT,OAAO;EACP,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,aAAa,GAAG;EAClB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;EACnC,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC5B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;EAClC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;EACjC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;EACzB,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;EAC3C,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;EACjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACxD,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;EACrC,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAChE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;EACxB,MAAM,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;EACnC,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EACvC,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EACvC,MAAM,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/C,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EAC1B,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;EACvB,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACvD,OAAO;EACP,MAAM,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE;EAClD,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACtC,OAAO;EACP,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAClC,QAAQ,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC;EACtD,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO;EAC1B,UAAU,SAAS;EACnB,QAAQ,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;EACtD,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;EAC3C,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EACnD,QAAQ,WAAW,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;EACjD,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE;EACrB,UAAU,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EACjC,SAAS,MAAM;EACf,UAAU,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EACjC,SAAS;EACT,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC;EAC1D,QAAQ,IAAI,IAAI,KAAK,CAAC;EACtB,UAAU,SAAS;EACnB,QAAQ,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;EACpE,UAAU,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;EAC7C,UAAU,SAAS,GAAG,IAAI,CAAC;EAC3B,SAAS;EACT,QAAQ,IAAI,CAAC,SAAS,EAAE;EACxB,UAAU,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC;EAC1D,UAAU,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;EACtD,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACvC,UAAU,YAAY,GAAG,KAAK,CAAC;EAC/B,SAAS;EACT,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;EACtF,OAAO;EACP,KAAK;EACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;EACtC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EAC1C,IAAI,IAAI,SAAS,EAAE;EACnB,MAAM,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;EACnC,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;EACnC,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC5B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;EAClC,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,iBAAiB,GAAG,CAAC,EAAE;EACxI,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC3C,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,aAAa,GAAG,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAClG,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;EACxC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;EACxB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;EACzB,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;EAC5B,KAAK;EACL,GAAG;EACH,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;EACjC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE;EAC5B,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,KAAK,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;EACnE,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE;EACrE,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;EAC7C,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,gBAAgB,GAAG;EACrB,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;EACrE,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC9D,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;EACxC,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;EAClC,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;EAClC,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;EACjD,QAAQ,OAAO,KAAK,CAAC;EACrB,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;EACjD,QAAQ,OAAO,KAAK,CAAC;EACrB,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,WAAW,GAAG;EAChB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;EACtB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACjD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EACjC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACpD,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;EAC/B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;EAC3C,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;EACtC,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;EAClF,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,WAAW,GAAG;EAChB,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,EAAE;EACxC,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK;EACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EACjC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC7C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;EACnC,QAAQ,OAAO,KAAK,CAAC;EACrB,OAAO;EACP,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,iBAAiB,CAAC,cAAc,GAAG,CAAC,CAAC;EACrE,GAAG;EACH,EAAE,cAAc,GAAG;EACnB,IAAI,IAAI,IAAI,GAAG,EAAE,WAAW,CAAC,YAAY,CAAC;EAC1C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACpD,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;EACzC,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7C,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;EAC9B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC/B,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;EACvC,IAAI,IAAI,YAAY,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC;EAC5C,IAAI,IAAI,CAAC,YAAY,EAAE;EACvB,MAAM,YAAY,GAAG,IAAI,aAAa,EAAE,CAAC;EACzC,MAAM,YAAY,CAAC,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;EACtD,KAAK;EACL,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;EACpC,IAAI,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC;EAC3B,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;EAC1B,IAAI,YAAY,CAAC,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC;EAC7C,IAAI,IAAI,YAAY,GAAG,CAAC,CAAC;EACzB,IAAI,IAAI,cAAc,GAAG,IAAI,CAAC;EAC9B,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC;EACtB,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC;EACxC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EACtC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAClD,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACnC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC;EAC7B,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAC/B,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;EACpD,MAAM,IAAI,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;EACrC,QAAQ,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;EAChC,QAAQ,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC;EACpE,QAAQ,cAAc,GAAG,IAAI,CAAC;EAC9B,QAAQ,YAAY,GAAG,YAAY,CAAC;EACpC,QAAQ,IAAI,EAAE,CAAC;EACf,OAAO;EACP,MAAM,IAAI,cAAc,KAAK,WAAW,EAAE;EAC1C,QAAQ,cAAc,GAAG,WAAW,CAAC;EACrC,QAAQ,IAAI,WAAW,CAAC,aAAa,KAAK,IAAI,EAAE;EAChD,UAAU,IAAI,YAAY,KAAK,YAAY,EAAE;EAC7C,YAAY,IAAI,EAAE,CAAC;EACnB,YAAY,YAAY,GAAG,CAAC,CAAC;EAC7B,YAAY,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE;EACvC,cAAc,YAAY,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC;EAClD,cAAc,IAAI,CAAC,YAAY,EAAE;EACjC,gBAAgB,YAAY,GAAG,IAAI,aAAa,EAAE,CAAC;EACnD,gBAAgB,YAAY,CAAC,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;EAChE,eAAe;EACf,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EAChD,aAAa;EACb,YAAY,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;EACvC,YAAY,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;EAClC,YAAY,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;EAC5C,YAAY,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC;EACzC,WAAW;EACX,UAAU,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC;EAClC,UAAU,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC;EAC3C,UAAU,WAAW,CAAC,cAAc,GAAG,YAAY,CAAC;EACpD,UAAU,WAAW,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;EACnD,UAAU,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC;EACtF,UAAU,YAAY,EAAE,CAAC;EACzB,SAAS;EACT,OAAO;EACP,MAAM,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;EACrC,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;EACzB,MAAM,SAAS,GAAG,WAAW,CAAC,cAAc,CAAC;EAC7C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;EAC1F,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;EACnF,KAAK;EACL,IAAI,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC;EACpC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;EAC1B,GAAG;EACH,EAAE,cAAc,GAAG;EACnB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;EAC9B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;EACzB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC/B,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;EACvC,IAAI,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC3D,IAAI,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;EAC3C,IAAI,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;EAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACd,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/C,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAC9B,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAClC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAC5B,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAChC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EAC3B,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;EAC/B,KAAK;EACL,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAClC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACjD,GAAG;EACH,EAAE,WAAW,CAAC,IAAI,EAAE;EACpB,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;EAC3B,MAAM,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACxC,KAAK,MAAM;EACX,MAAM,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/C,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACtC,KAAK;EACL,GAAG;EACH,EAAE,WAAW,CAAC,IAAI,EAAE;EACpB,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EAC1B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAChD,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EACrC,KAAK;EACL,GAAG;EACH,EAAE,YAAY,CAAC,KAAK,EAAE;EACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3C,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC5B,MAAM,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/C,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EAC1B,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;EACvB,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACvD,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,eAAe,GAAG;EACpB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;EAChC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;EACnB,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;EAC7D,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;EACvD,GAAG;EACH,EAAE,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE;EAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChD,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAC9B,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAClC,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;EAC9D,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;EAClE,KAAK;EACL,GAAG;EACH,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE;EACpD,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;EACxE,IAAI,MAAM,IAAI,GAAGC,eAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;EACnD,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;EAC3D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;EACnC,MAAM,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;EAChC,KAAK;EACL,GAAG;EACH,EAAE,aAAa,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE;EAClD,IAAI,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;EACnE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;EACnC,MAAM,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EAClC,KAAK;EACL,GAAG;EACH,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE;EAC1D,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;EAChC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;EAChC,IAAI,OAAO,KAAK,GAAG,IAAI,EAAE;EACzB,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;EACzC,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAC7C,MAAM,IAAI,MAAM,EAAE;EAClB,QAAQ,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;EAC3D,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;EACpD,QAAQ,CAAC,GAAG,EAAE,CAAC;EACf,OAAO;EACP,MAAM,KAAK,EAAE,CAAC;EACd,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;EAClD,KAAK;EACL,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;EAC5C,IAAI,IAAI,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE;EAC9E,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;EACnD,KAAK;EACL,GAAG;EACH,EAAE,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;EACvC,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;EAC5C,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC;EACrB,IAAI,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;EACpC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;EAChC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;EACnD,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;EACrD,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;EACxC,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;EACzC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;EAC5C,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;EAChD,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;EAChD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;EACtD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;EAC1D,KAAK;EACL,IAAI,OAAO,IAAI,IAAI,CAAC;EACpB,IAAI,OAAO,IAAI,IAAI,CAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;EAC5C,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,CAAC;EAC3C,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,CAAC;EACnD,KAAK;EACL,GAAG;EACH,CAAC,CAAC;AACC,MAAC,gBAAgB,GAAG,kBAAkB;EACzC,gBAAgB,CAAC,cAAc,GAAG,GAAG;;EChdrC,MAAM,SAAS,SAAS,SAAS,CAAC;EAClC,EAAE,WAAW,GAAG;EAChB,IAAI,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;EACzB,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;EAC7B,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;EAChC,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACzB,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;EAChC,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAC3B,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAC3B,IAAI,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EAC/B,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC7B,IAAI,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EAC/B,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAC3B,IAAI,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EACnC,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC7B,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;EACvB,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;EACrC,IAAI,OAAO,GAAG,CAAC;EACf,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;EAClB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;EACzB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,GAAG;EACH;;ECxBA,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;EACjC,MAAM,eAAe,GAAG,EAAE,CAAC;EAC3B,MAAM,SAAS,GAAG,cAAc,SAAS,CAAC;EAC1C,EAAE,WAAW,CAAC,QAAQ,GAAG,IAAI,EAAE;EAC/B,IAAI,KAAK,EAAE,CAAC;EACZ,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;EAC9B,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;EACtB,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,EAAE,CAAC;EACtC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,EAAE,CAAC;EACtC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;EAC/B,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,IAAI,IAAI,gBAAgB,EAAE,CAAC;EACxD,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;EAC9B,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;EACzB,IAAI,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;EACxC,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;EAC1B,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;EACtB,IAAI,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACzC,GAAG;EACH,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE;EACvB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;EACjC,GAAG;EACH,EAAE,IAAI,SAAS,GAAG;EAClB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;EAChC,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;EACtB,GAAG;EACH,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;EAClB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC;EAC3B,GAAG;EACH,EAAE,SAAS,CAAC,OAAO,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,GAAG,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE;EACnF,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;EACrC,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;EACpE,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;EAC1C,GAAG;EACH,EAAE,gBAAgB,CAAC,OAAO,EAAE;EAC5B,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;EAC5B,MAAM,KAAK,EAAE,CAAC;EACd,MAAM,OAAO,EAAE,OAAO,CAAC,KAAK;EAC5B,MAAM,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,CAAC;EAC5C,MAAM,KAAK,EAAE,CAAC;EACd,MAAM,MAAM,EAAE,IAAI;EAClB,MAAM,SAAS,EAAE,GAAG;EACpB,MAAM,MAAM,EAAE,KAAK;EACnB,MAAM,GAAG,EAAE,QAAQ,CAAC,IAAI;EACxB,MAAM,IAAI,EAAE,SAAS,CAAC,KAAK;EAC3B,MAAM,UAAU,EAAE,EAAE;EACpB,KAAK,EAAE,OAAO,CAAC,CAAC;EAChB,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;EAC1B,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;EACvB,KAAK;EACL,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;EAC3D,IAAI,IAAI,CAAC,OAAO,EAAE;EAClB,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;EAC9B,KAAK,MAAM;EACX,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;EAC1B,QAAQ,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;EAChD,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;EAChC,OAAO;EACP,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;EAC3D,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,SAAS,GAAG;EACd,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;EAC1B,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;EAC7C,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;EACjD,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE;EACnB,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EACzC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;EACzC,QAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC;EAC7C,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACvE,OAAO;EACP,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;EACvC,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC;EAC3C,KAAK;EACL,GAAG;EACH,EAAE,UAAU,GAAG;EACf,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;EAC1B,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;EAC9C,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EACzC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAChC,OAAO,MAAM;EACb,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EAC3C,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;EACf,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;EACrB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACnC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACnC,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;EACf,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;EAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB,KAAK;EACL,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;EAC3C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC5C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC5C,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;EACpC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;EAC3B,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;EAC1B,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;EAChD,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACzC,OAAO;EACP,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB,KAAK;EACL,GAAG;EACH,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;EACvC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;EACtB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;EAC3C,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;EAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB,KAAK;EACL,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvD,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;EAChD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;EACtB,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;EACjF,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;EAChC,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC5B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;EAC3C,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;EACpE,IAAI,IAAI,MAAM,EAAE;EAChB,MAAM,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;EACtF,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;EACrE,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK,EAAE;EACnE,IAAI,IAAI,UAAU,KAAK,QAAQ,EAAE;EACjC,MAAM,OAAO,IAAI,CAAC;EAClB,KAAK;EACL,IAAI,IAAI,CAAC,aAAa,IAAI,QAAQ,IAAI,UAAU,EAAE;EAClD,MAAM,QAAQ,IAAI,IAAI,CAAC;EACvB,KAAK,MAAM,IAAI,aAAa,IAAI,UAAU,IAAI,QAAQ,EAAE;EACxD,MAAM,UAAU,IAAI,IAAI,CAAC;EACzB,KAAK;EACL,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;EACxC,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;EACrB,MAAM,OAAO,IAAI,CAAC;EAClB,KAAK;EACL,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;EACtD,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;EACtD,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;EAC7C,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC;EACnE,IAAI,IAAI,MAAM,EAAE;EAChB,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;EACjE,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;EACjE,MAAM,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE;EACtC,OAAO,MAAM;EACb,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;EACpC,OAAO;EACP,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;EAClC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;EACvC,KAAK;EACL,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;EAC9F,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE;EAClC,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;EAC3E,GAAG;EACH,EAAE,gBAAgB,CAAC,OAAO,EAAE;EAC5B,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;EAC5B,MAAM,OAAO,EAAE,OAAO,CAAC,KAAK;EAC5B,MAAM,KAAK,EAAE,QAAQ;EACrB,MAAM,KAAK,EAAE,CAAC;EACd,MAAM,MAAM,EAAE,IAAI;EAClB,KAAK,EAAE,OAAO,CAAC,CAAC;EAChB,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;EAC1B,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;EACvB,KAAK;EACL,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,OAAO,EAAE;EAClB,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;EAC9B,KAAK,MAAM;EACX,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;EAC1B,QAAQ,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;EAChD,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;EAChC,OAAO;EACP,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;EAC3D,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;EACtB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;EAC5B,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;EAChC,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;EAC9D,GAAG;EACH,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;EAC/C,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;EAC7E,GAAG;EACH,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE;EAC3B,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;EACpD,GAAG;EACH,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;EACnC,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;EAC5D,GAAG;EACH,EAAE,WAAW,CAAC,GAAG,IAAI,EAAE;EACvB,IAAI,IAAI,MAAM,CAAC;EACf,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC;EAC3B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACzB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;EACrB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;EACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC3B,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;EACvC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACvB,KAAK,MAAM;EACX,MAAM,MAAM,GAAG,IAAI,CAAC;EACpB,KAAK;EACL,IAAI,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;EACtC,IAAI,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;EACpC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;EAC1B,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,SAAS,CAAC,KAAK,EAAE;EACnB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;EACzB,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;EACtG,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;EACnD,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;EAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;EAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;EAC5B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;EACrB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,UAAU,GAAG;EACf,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;EAC7C,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;EAC1K,GAAG;EACH,EAAE,OAAO,CAAC,QAAQ,EAAE;EACpB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;EACtB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;EACpC,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;EAC7B,IAAI,IAAI,QAAQ,CAAC,SAAS,EAAE;EAC5B,MAAM,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,EAAE;EACnD,QAAQ,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAChC,OAAO;EACP,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;EACpC,KAAK,MAAM;EACX,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;EAC7B,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EACnC,KAAK;EACL,GAAG;EACH,EAAE,gBAAgB,GAAG;EACrB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;EACpC,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EACrC,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;EACxC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;EAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC;EAC9B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;EACxD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAClC,MAAM,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACrC,MAAM,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;EACnC,MAAM,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EAC7G,MAAM,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EAC1G,MAAM,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;EAC5F,MAAM,MAAM,KAAK,GAAG;EACpB,QAAQ,UAAU;EAClB,QAAQ,SAAS;EACjB,QAAQ,OAAO;EACf,QAAQ,GAAG;EACX,QAAQ,SAAS,EAAEC,OAAa,CAAC,KAAK,CAAC;EACvC,QAAQ,QAAQ,EAAE,KAAK;EACvB,QAAQ,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO;EAClC,QAAQ,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK;EAC7B,QAAQ,UAAU,EAAE,CAAC;EACrB,OAAO,CAAC;EACR,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAC9B,KAAK;EACL,GAAG;EACH,EAAE,cAAc,CAAC,QAAQ,EAAE;EAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;EAC9B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;EACxE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;EAC7B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;EAC1B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACzD,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACpC,MAAM,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;EACvD,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EACtD,KAAK;EACL,GAAG;EACH,EAAE,aAAa,CAAC,QAAQ,EAAE;EAC1B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;EACvD,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;EACpC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC3B,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;EACvC,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;EACrC,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;EACzC,IAAI,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;EAC/D,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,UAAU,CAAC;EAC7D,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,UAAU,CAAC;EAC5D,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,UAAU,CAAC;EACvD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;EAClC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;EAC7C,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACnC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACtD,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EAClE,KAAK;EACL,GAAG;EACH,EAAE,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE;EAC5C,IAAI,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;EACrD,IAAI,MAAM,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC;EAC7C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,EAAE;EAChD,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACrD,KAAK;EACL,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;EAC9C,GAAG;EACH,EAAE,oBAAoB,CAAC,QAAQ,EAAE;EACjC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC7B,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;EACvC,IAAI,IAAI,CAAC,MAAM,EAAE;EACjB,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;EACxC,QAAQ,MAAM,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;EAC9D,QAAQ,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;EAC1D,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;EAC/C,UAAU,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAC9B,SAAS;EACT,QAAQ,MAAM,QAAQ,GAAG;EACzB,UAAU,IAAI,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC9C,UAAU,iBAAiB,EAAE,IAAI,MAAM,EAAE;EACzC,UAAU,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC;EACvE,SAAS,CAAC;EACV,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;EACrE,QAAQ,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;EACpE,OAAO;EACP,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;EAC3C,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;EACH,EAAE,gBAAgB,GAAG;EACrB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;EACtB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;EACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE;EACvC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;EACvD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAClE,GAAG;EACH,EAAE,aAAa,CAAC,KAAK,EAAE;EACvB,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;EACnE,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;EAC/D,GAAG;EACH,EAAE,cAAc,GAAG;EACnB,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE;EACtC,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;EACjC,MAAM,MAAM,OAAO,GAAGA,OAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACrD,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACpD,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACtC,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;EAC1C,QAAQ,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAClD,QAAQ,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAClD,QAAQ,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAClD,QAAQ,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACrD,QAAQ,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;EACjF,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,iBAAiB,GAAG;EACtB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;EACzC,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;EACpC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EAC7B,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;EAC7C,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;EACrB,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;EACrB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;EACvC,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;EACvC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;EAC7C,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACxB,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAC5B,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EAC/C,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EAC/C,KAAK;EACL,GAAG;EACH,EAAE,SAAS,GAAG;EACd,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;EACzC,IAAI,IAAI,WAAW,EAAE;EACrB,MAAM,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;EACrC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;EACxB,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,SAAS,CAAC,MAAM,EAAE;EACpB,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;EAC1B,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,SAAS,GAAG;EACd,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;EACtB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;EACtB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,CAAC,OAAO,EAAE;EACnB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;EAC9B,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE;EACvC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;EAC/B,KAAK;EACL,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;EAC9B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;EAC9B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAC3B,GAAG;EACH,CAAC,CAAC;AACC,MAAC,QAAQ,GAAG,UAAU;EACzB,QAAQ,CAAC,WAAW,GAAG,IAAI,KAAK,EAAE;;AC9c7B,QAAC,aAAa,GAAG;EACtB,EAAE,SAAS;EACX,EAAE,WAAW;EACb,EAAE,cAAc;EAChB,EAAE,qBAAqB;EACvB,EAAE,SAAS;EACX,EAAE,QAAQ;EACV,EAAE,WAAW;EACb,EAAE,cAAc;EAChB,EAAE,SAAS;EACX,EAAE,aAAa;EACf,EAAE,UAAU;EACZ,EAAE,cAAc;EAChB;;EC9BA,MAAM,YAAY,CAAC;EACnB,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE;EAClC,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC7B,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC7B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;EAC9B,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;EAC/B,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EACvB,GAAG;EACH,EAAE,MAAM,CAAC,WAAW,EAAE;EACtB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;EAC/H,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;EACnD,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;EACpD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;EACpC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;EACxD,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAChD,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;EACrB,GAAG;EACH;;EClBA,MAAMV,WAAS,GAAG,IAAI,KAAK,EAAE,CAAC;EAC9B,MAAM,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;EAClC,MAAM,KAAK,GAAG,cAAc,SAAS,CAAC;EACtC,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,UAAU,CAAC,SAAS,EAAE;EACxE,IAAI,KAAK,EAAE,CAAC;EACZ,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACzB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;EACxC,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC7B,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;EAClB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;EACpB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;EAC1C,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;EAC1B,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;EAC9C,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;EAC1B,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;EACtB,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;EAClC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;EACxB,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;EAChC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE;EACzC,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;EACjC,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;EACxB,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;EAChC,KAAK;EACL,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;EAC1B,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACpC,GAAG;EACH,EAAE,IAAI,cAAc,GAAG;EACvB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACpC,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;EACtB,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;EACvB,GAAG;EACH,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE;EACvB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;EACjC,GAAG;EACH,EAAE,IAAI,SAAS,GAAG;EAClB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;EAChC,GAAG;EACH,EAAE,IAAI,WAAW,CAAC,KAAK,EAAE;EACzB,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;EACrC,MAAM,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;EAC7B,KAAK;EACL,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC9B,GAAG;EACH,EAAE,IAAI,WAAW,GAAG;EACpB,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC;EAC7B,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;EAC3D,GAAG;EACH,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;EAClB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;EAC7B,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;EACjE,GAAG;EACH,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE;EACrB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;EAChC,GAAG;EACH,EAAE,OAAO,CAAC,QAAQ,EAAE;EACpB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;EACnD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC/B,IAAI,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE;EAClH,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;EACpC,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;EACpC,KAAK;EACL,GAAG;EACH,EAAE,cAAc,CAAC,QAAQ,EAAE;EAC3B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC/B,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;EACnC,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;EACvB,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;EACtB,KAAK;EACL,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;EAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACpF,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACjC,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACnC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;EAClD,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;EAC9F,GAAG;EACH,EAAE,cAAc,CAAC,QAAQ,EAAE;EAC3B,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EACnC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC/B,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE;EACzB,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;EAC/B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;EAC1B,KAAK;EACL,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;EAC7B,IAAI,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;EAC7C,IAAI,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;EACpC,IAAI,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;EACnC,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;EAChD,IAAI,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;EACnE,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC9C,GAAG;EACH,EAAE,iBAAiB,GAAG;EACtB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EACnC,IAAI,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAC/C,IAAI,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC;EACzC,IAAI,MAAM,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC;EACnD,IAAI,IAAI,aAAa,KAAK,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;EAC7F,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;EAChD,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;EACpD,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;EAC1D,KAAK;EACL,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;EAC7C,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;EACrB,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;EACrB,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;EACvC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACpD,MAAM,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAChC,MAAM,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACpC,MAAM,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EAC7C,MAAM,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EACjD,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;EAC3B,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;EAC7C,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAClD,QAAQ,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;EAClF,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;EACrC,GAAG;EACH,EAAE,YAAY,GAAG;EACjB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAC7C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;EACnC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;EAC1B,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;EACnE,OAAO;EACP,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;EAC7B,MAAM,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;EACpC,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;EAC9B,KAAK;EACL,GAAG;EACH,EAAE,gBAAgB,GAAG;EACrB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;EAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;EAC3E,GAAG;EACH,EAAE,aAAa,CAAC,KAAK,EAAE;EACvB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;EACtD,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAEA,WAAS,CAAC,CAAC;EACvD,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC;EACrE,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;EACtC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;EAClD,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;EAC/B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC7C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;EAC5C,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAClC,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACtC,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACtC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;EACjC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;EACrC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;EACjC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;EACrC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;EACjC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;EACrC,MAAM,IAAI,WAAW,CAAC,QAAQ,CAACA,WAAS,CAAC,CAAC,EAAEA,WAAS,CAAC,CAAC,CAAC,EAAE;EAC1D,QAAQ,OAAO,IAAI,CAAC;EACpB,OAAO;EACP,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,OAAO,CAAC,OAAO,EAAE;EACnB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAC3B,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;EAC7B,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;EACpC,MAAM,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;EACjC,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;EACpB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,GAAG;EACH,CAAC,CAAC;AACC,MAAC,IAAI,GAAG,MAAM;EACjB,IAAI,CAAC,cAAc,GAAG,GAAG;;EClNzB,IAAIL,UAAQ,GAAG,8KAA8K;;ECA7L,IAAID,QAAM,GAAG,6YAA6Y;;ECI1Z,MAAM,YAAY,SAAS,MAAM,CAAC;EAClC,EAAE,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE;EACjC,IAAI,MAAM,QAAQ,GAAG;EACrB,MAAM,QAAQ;EACd,MAAM,KAAK,EAAE,CAAC;EACd,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ;EACrC,MAAM,MAAM,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC5C,KAAK,CAAC;EACN,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;EAC5B,MAAM,IAAI,EAAE,QAAQ;EACpB,MAAM,KAAK,EAAE,CAAC;EACd,MAAM,UAAU,EAAE,OAAO;EACzB,KAAK,EAAE,OAAO,CAAC,CAAC;EAChB,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;EAC1B,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;EAChD,KAAK;EACL,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAACA,QAAM,EAAEC,UAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;EACvE,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;EAC7B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;EAChD,IAAI,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;EAChD,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;EACzC,IAAI,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;EAC7B,IAAI,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;EAC/B,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;EAClC,GAAG;EACH,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE;EACrB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,EAAE;EAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE;EAC1F,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAChC,OAAO;EACP,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;EACrC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;EACpC,KAAK;EACL,GAAG;EACH,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;EACnB,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM;EAC7B,MAAM,OAAO;EACb,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;EACvB,GAAG;EACH,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;EAClB,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;EAC5B,MAAM,OAAO;EACb,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;EAC5E,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;EACtB,GAAG;EACH,EAAE,MAAM,GAAG;EACX,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;EAC1B,MAAM,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;EAC/B,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;EACnD,MAAMgB,qBAA2B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;EACxG,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;EAChC,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;EAC5D,KAAK;EACL,GAAG;EACH;;ECnEA,MAAM,YAAY,SAAS,QAAQ,CAAC;EACpC,EAAE,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE;EACpC,IAAI,KAAK,EAAE,CAAC;EACZ,IAAI,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;EAChD,IAAI,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAC5C,IAAI,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACtD,IAAI,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;EACtK,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,aAAa,GAAG;EACtB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;EACrC,GAAG;EACH;;ECZA,MAAM,aAAa,SAAS,YAAY,CAAC;EACzC,EAAE,WAAW,CAAC,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,QAAQ,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE;EACxE,IAAI,KAAK,EAAE,CAAC;EACZ,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC7B,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;EAC/B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACzB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;EACjB,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;EACjD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;EACrB,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;EACnB,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;EACvB,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;EACxC,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EACzC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;EACzC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;EAC1C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;EACpC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;EAClC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;EACtC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;EACvC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;EAC7C,KAAK;EACL,IAAI,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;EAC3C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;EACvC,MAAM,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC;EACjC,MAAM,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;EACrC,MAAM,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EAChD,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC;EACrD,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACvD,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC;EAC3D,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;EAClE,KAAK;EACL,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;EACnD,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;EACjD,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;EACrD,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC7B,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;EAC9B,GAAG;EACH;;ECzCA,MAAM,YAAY,SAAS,YAAY,CAAC;EACxC,EAAE,WAAW,CAAC,KAAK,GAAG,GAAG,EAAE,MAAM,EAAE,YAAY,GAAG,CAAC,EAAE;EACrD,IAAI,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC9H,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACzB,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;EACrC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;EACjB,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;EACvB,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC/B,IAAI,IAAI,CAAC,MAAM;EACf,MAAM,OAAO;EACb,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;EAC3D,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;EACrD,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;EACxC,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;EAC3B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE;EACxD,MAAM,YAAY,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC9D,MAAM,QAAQ,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC1D,MAAM,WAAW,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;EAClE,KAAK;EACL,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;EAC9B,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC;EACrC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACf,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACf,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACf,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EACzB,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;EACzD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;EAChC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;EACpC,MAAM,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;EAC1B,MAAM,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;EACjC,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACxC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACtD,QAAQ,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EACzB,QAAQ,MAAM,IAAI,QAAQ,GAAG,YAAY,CAAC;EAC1C,OAAO,MAAM;EACb,QAAQ,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;EACjC,OAAO;EACP,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;EAC1B,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACzB,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;EAC9B,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACzB,KAAK;EACL,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;EACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACxC,MAAM,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;EAC1B,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC;EACpC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;EACxC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;EACxC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;EACxC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;EACxC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;EACxC,KAAK;EACL,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;EACtB,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;EACzB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;EAC1B,GAAG;EACH,EAAE,cAAc,GAAG;EACnB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC/B,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;EAC3B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EAC9B,IAAI,IAAI,SAAS,CAAC;EAClB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;EAC1C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;EAChC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;EACpC,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EAC9B,MAAM,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;EAC1B,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;EACjC,QAAQ,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAClC,OAAO,MAAM;EACb,QAAQ,SAAS,GAAG,KAAK,CAAC;EAC1B,OAAO;EACP,MAAM,KAAK,GAAG,EAAE,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;EACxC,MAAM,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;EAC7C,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;EACrB,QAAQ,KAAK,GAAG,CAAC,CAAC;EAClB,OAAO;EACP,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;EAClE,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EAChG,MAAM,KAAK,IAAI,UAAU,CAAC;EAC1B,MAAM,KAAK,IAAI,UAAU,CAAC;EAC1B,MAAM,KAAK,IAAI,GAAG,CAAC;EACnB,MAAM,KAAK,IAAI,GAAG,CAAC;EACnB,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;EACxC,MAAM,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;EAC5C,MAAM,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;EAC5C,MAAM,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;EAC5C,MAAM,SAAS,GAAG,KAAK,CAAC;EACxB,KAAK;EACL,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC7B,GAAG;EACH,EAAE,MAAM,GAAG;EACX,IAAI,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;EAC/B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;EACnB,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;EAC5B,KAAK;EACL,GAAG;EACH;;EC9GA,MAAM,UAAU,SAAS,IAAI,CAAC;EAC9B,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,GAAG,CAAC,EAAE;EACjD,IAAI,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;EAChF,IAAI,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;EACnD,IAAI,IAAI,YAAY,GAAG,CAAC,EAAE;EAC1B,MAAM,OAAO,CAAC,WAAW,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;EACvD,KAAK;EACL,IAAI,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,GAAG;EACH,EAAE,OAAO,CAAC,QAAQ,EAAE;EACpB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EACnC,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;EAC3E,MAAM,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;EACnD,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;EACxB,KAAK;EACL,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;EAC5B,GAAG;EACH;;EClBA,MAAM,WAAW,SAAS,IAAI,CAAC;EAC/B,EAAE,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE;EAC7C,IAAI,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;EACjG,IAAI,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EACzD,IAAI,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;EACvC,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,GAAG;EACH,EAAE,cAAc,GAAG;EACnB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;EACpD,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EACnC,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;EAClD,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,KAAK,KAAK,KAAK,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE;EACrF,MAAM,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;EACjD,MAAM,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;EACnD,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;EACvB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE;EACrB,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE;EACvC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;EAChC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EACzB,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE;EACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;EAC5B,KAAK,MAAM;EACX,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;EACtD,KAAK;EACL,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;EAC/B,GAAG;EACH,EAAE,OAAO,CAAC,QAAQ,EAAE;EACpB,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;EAC3D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;EAC5B,KAAK;EACL,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;EAC5B,GAAG;EACH,EAAE,OAAO,CAAC,OAAO,EAAE;EACnB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;EACjE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAC3B,GAAG;EACH;;EC5CA,MAAM,UAAU,SAAS,IAAI,CAAC;EAC9B,EAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE;EACzE,IAAI,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;EAC9D,IAAI,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;EACzD,IAAI,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;EACnD,IAAI,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;EAClD,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC;EAC3D,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;EACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;EAC5D,GAAG;EACH,EAAE,OAAO,CAAC,QAAQ,EAAE;EACpB,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;EACzB,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC;EAC1D,KAAK;EACL,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;EAC5B,GAAG;EACH;;ECpBA,MAAM,mBAAmB,GAAG,EAAE,CAAC;EAC/B,MAAM,cAAc,SAAS,WAAW,CAAC;EACzC,EAAE,WAAW,CAAC,OAAO,EAAE,SAAS,GAAG,mBAAmB,EAAE,SAAS,GAAG,mBAAmB,EAAE,UAAU,GAAG,mBAAmB,EAAE,YAAY,GAAG,mBAAmB,EAAE;EAC/J,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC/B,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;EACzC,IAAI,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;EAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;EAClC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;EACpC,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;EAChC,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;EAClC,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;EAChC,IAAI,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;EACtC,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,GAAG;EACH,EAAE,cAAc,GAAG;EACnB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;EACpD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpB,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC;EAC3D,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;EACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;EAC5D,GAAG;EACH,EAAE,wBAAwB,GAAG;EAC7B,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EACnC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;EACtC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EACvF,IAAI,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;EAC1G,IAAI,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;EAC7E,GAAG;EACH,EAAE,sBAAsB,GAAG;EAC3B,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EACnC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;EACtC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EACvF,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;EACtG,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;EAC3E,GAAG;EACH,EAAE,YAAY,GAAG;EACjB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;EACjD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EACzD,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;EACnD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;EAC3D,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;EAC3C,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;EACvB,GAAG;EACH,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;EACnB,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpB,GAAG;EACH,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE;EACpB,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACzB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpB,GAAG;EACH,EAAE,IAAI,SAAS,GAAG;EAClB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE;EACvB,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpB,GAAG;EACH,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,UAAU,CAAC,KAAK,EAAE;EACxB,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;EAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpB,GAAG;EACH,EAAE,IAAI,SAAS,GAAG;EAClB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE;EACvB,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpB,GAAG;EACH,EAAE,IAAI,YAAY,GAAG;EACrB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC;EAC9B,GAAG;EACH,EAAE,IAAI,YAAY,CAAC,KAAK,EAAE;EAC1B,IAAI,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;EAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpB,GAAG;EACH,EAAE,QAAQ,GAAG;EACb,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EACjC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;EAC9C,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;EACzC,IAAI,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;EAC3C,IAAI,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;EACrC,IAAI,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;EACtC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EAC5C,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAC1C,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EAC7C,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EAC9C,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;EAClE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;EACvE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;EAClE,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;EAC1E,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;EACpC,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;EAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EACtC,GAAG;EACH;;EC5GA,MAAM,iBAAiB,SAAS,SAAS,CAAC;EAC1C,EAAE,WAAW,CAAC,OAAO,GAAG,IAAI,EAAE,UAAU,EAAE,SAAS,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE;EACjF,IAAI,KAAK,EAAE,CAAC;EACZ,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC;EAC/B,IAAI,IAAI,SAAS,GAAG,YAAY,EAAE;EAClC,MAAM,SAAS,GAAG,YAAY,CAAC;EAC/B,KAAK;EACL,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;EAC1D,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;EAC5B,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;EAChC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;EAC/B,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EACvB,IAAI,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;EACrC,IAAI,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;EACxC,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;EACjC,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;EACnC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;EACvC,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;EACzB,GAAG;EACH,EAAE,aAAa,CAAC,UAAU,EAAE;EAC5B,IAAI,IAAI,UAAU,EAAE;EACpB,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,UAAU,IAAI,OAAO,IAAI,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;EAClJ,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;EACnG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;EACnG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;EACzF,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,UAAU,IAAI,OAAO,IAAI,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;EAC1I,KAAK;EACL,GAAG;EACH,EAAE,eAAe,GAAG;EACpB,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;EACxC,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;EACtB,GAAG;EACH,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;EAClB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAID,OAAa,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;EACvC,GAAG;EACH,EAAE,MAAM,CAAC,QAAQ,EAAE;EACnB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;EAC5F,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;EAC3B,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;EAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;EACnC,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;EACxE,OAAO;EACP,KAAK;EACL,IAAI,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;EAChE,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC3C,GAAG;EACH,EAAE,gBAAgB,CAAC,kBAAkB,EAAE;EACvC,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;EACzE,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,WAAW,EAAE;EACvD,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACpC,KAAK;EACL,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;EAC1D,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;EACvB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EACrD,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;EACnC,OAAO;EACP,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EAC3B,KAAK;EACL,GAAG;EACH,EAAE,OAAO,CAAC,OAAO,EAAE;EACnB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;EACnB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;EACjC,GAAG;EACH;;EC9EA,MAAM,cAAc,CAAC;EACrB,EAAE,WAAW,CAAC,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE;EACtD,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;EACnC,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;EAChC,IAAI,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;EAC/B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAChD,MAAM,IAAI,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;EACnC,MAAM,QAAQ,GAAG;EACjB,QAAQ,aAAa,EAAE,QAAQ,CAAC,aAAa;EAC7C,QAAQ,IAAI,EAAE,QAAQ,CAAC,IAAI;EAC3B,QAAQ,cAAc,EAAE,QAAQ,CAAC,cAAc;EAC/C,QAAQ,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK;EAC1C,QAAQ,MAAM,EAAE,QAAQ,CAAC,MAAM;EAC/B,OAAO,CAAC;EACR,MAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE;EACnC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC9C,OAAO,MAAM;EACb,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC7C,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;EAC1B,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EAC7B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;EACjC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC9B,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;EAClC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EACvB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;EACvB,GAAG;EACH,EAAE,WAAW,GAAG;EAChB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EACnC,IAAI,IAAI,aAAa,GAAG,CAAC,CAAC;EAC1B,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,MAAM,CAACE,qBAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACtF,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EACxC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;EAC3B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC5D,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;EACjD,MAAM,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC;EACtC,MAAM,aAAa,IAAI,QAAQ,CAAC,IAAI,CAAC;EACrC,MAAM,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,IAAI,CAAC;EAC1C,KAAK;EACL,IAAI,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC9E,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;EACnD,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;EACxD,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;EACpE,IAAI,IAAI,YAAY,GAAG,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;EAC1B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC3D,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;EAChD,MAAM,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC;EACrC,MAAM,YAAY,IAAI,QAAQ,CAAC,IAAI,CAAC;EACpC,MAAM,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,IAAI,CAAC;EACzC,KAAK;EACL,IAAI,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC9E,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;EACnD,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;EACxD,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;EACjE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC5D,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;EACjD,MAAM,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC9K,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC3D,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;EAChD,MAAM,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC5K,KAAK;EACL,GAAG;EACH,EAAE,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE;EAC9C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC5D,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;EACjD,MAAM,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;EACpL,KAAK;EACL,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;EACnC,GAAG;EACH,EAAE,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE;EAC7C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3D,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;EAChD,MAAM,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;EACjL,KAAK;EACL,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;EAClC,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;EAClC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC9B,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;EAClC,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;EACjC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EAC7B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;EACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;EAC5B,GAAG;EACH;;EClGA,IAAI,QAAQ,GAAG,mMAAmM;;ECAlN,IAAI,MAAM,GAAG,+pBAA+pB;;ECK5qB,MAAM,gBAAgB,SAAS,cAAc,CAAC;EAC9C,EAAE,WAAW,CAAC,QAAQ,EAAE;EACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;EACpB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,MAAM,EAAE,CAAC;EACnC,IAAI,IAAI,CAAC,UAAU,GAAG;EACtB,MAAM;EACN,QAAQ,aAAa,EAAE,iBAAiB;EACxC,QAAQ,IAAI,EAAE,CAAC;EACf,QAAQ,cAAc,EAAE,IAAI,CAAC,cAAc;EAC3C,QAAQ,MAAM,EAAE,CAAC;EACjB,OAAO;EACP,MAAM;EACN,QAAQ,aAAa,EAAE,gBAAgB;EACvC,QAAQ,IAAI,EAAE,CAAC;EACf,QAAQ,cAAc,EAAE,IAAI,CAAC,cAAc;EAC3C,QAAQ,MAAM,EAAE,CAAC;EACjB,OAAO;EACP,MAAM;EACN,QAAQ,aAAa,EAAE,WAAW;EAClC,QAAQ,IAAI,EAAE,CAAC;EACf,QAAQ,cAAc,EAAE,IAAI,CAAC,cAAc;EAC3C,QAAQ,MAAM,EAAE,CAAC;EACjB,OAAO;EACP,MAAM;EACN,QAAQ,aAAa,EAAE,eAAe;EACtC,QAAQ,IAAI,EAAE,CAAC;EACf,QAAQ,cAAc,EAAE,IAAI,CAAC,SAAS;EACtC,QAAQ,MAAM,EAAE,CAAC;EACjB,OAAO;EACP,MAAM;EACN,QAAQ,aAAa,EAAE,QAAQ;EAC/B,QAAQ,IAAI,EAAE,CAAC;EACf,QAAQ,IAAI,EAAE,KAAK,CAAC,aAAa;EACjC,QAAQ,cAAc,EAAE,IAAI,CAAC,UAAU;EACvC,QAAQ,MAAM,EAAE,CAAC;EACjB,OAAO;EACP,KAAK,CAAC;EACN,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;EACpD,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;EAC/B,GAAG;EACH,EAAE,MAAM,CAAC,SAAS,EAAE;EACpB,IAAI,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;EACxC,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC;EACvC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC;EAC3C,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EACnC,IAAI,IAAI,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;EACxC,IAAI,IAAI,aAAa,KAAK,CAAC,EAAE;EAC7B,MAAM,OAAO;EACb,KAAK,MAAM,IAAI,aAAa,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;EACjE,MAAM,aAAa,GAAG,OAAO,CAAC;EAC9B,KAAK;EACL,IAAI,IAAI,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC;EACrC,IAAI,IAAI,CAAC,OAAO,EAAE;EAClB,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;EACrE,KAAK;EACL,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;EACzD,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;EACpD,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAGC,gBAAsB,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;EACtF,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACnC,IAAI,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;EAC3B,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EAC/D,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;EACjE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC7D,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAGC,eAAqB,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;EAC7I,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC;EAChD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAC3C,IAAI,IAAI,YAAY,GAAG,KAAK,CAAC;EAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE;EACtE,MAAM,IAAI,MAAM,GAAG,aAAa,GAAG,CAAC,CAAC;EACrC,MAAM,IAAI,MAAM,GAAG,SAAS,EAAE;EAC9B,QAAQ,MAAM,GAAG,SAAS,CAAC;EAC3B,OAAO;EACP,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE;EAC/B,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;EAC7D,OAAO;EACP,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;EAChC,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;EAChD,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EACrD,MAAM,YAAY,GAAG,YAAY,IAAI,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;EAC5D,MAAM,IAAI,YAAY,EAAE;EACxB,QAAQ,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;EAC/C,QAAQ,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;EACjD,OAAO;EACP,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAC9C,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;EACtE,KAAK;EACL,GAAG;EACH,EAAE,eAAe,CAAC,SAAS,EAAE;EAC7B,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;EACvB,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC;EACpC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC;EAC3C,IAAI,MAAM,oBAAoB,GAAG,SAAS,CAAC,WAAW,CAAC;EACvD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,SAAS,EAAE;EAC9C,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC,CAAC;EACzF,KAAK;EACL,IAAI,OAAO,OAAO,CAAC;EACnB,GAAG;EACH,EAAE,sBAAsB,CAAC,SAAS,EAAE;EACpC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC;EAC3C,IAAI,MAAM,oBAAoB,GAAG,SAAS,CAAC,WAAW,CAAC;EACvD,IAAI,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;EAChF,GAAG;EACH,EAAE,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;EACtE,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;EACrC,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EAC9C,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;EACtC,MAAM,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EAChC,MAAM,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EAChC,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;EAChC,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;EAChC,MAAM,IAAI,IAAI,EAAE;EAChB,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;EACnD,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;EAC7B,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;EACpD,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;EAC9B,OAAO,MAAM;EACb,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAChD,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;EAC3C,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACjD,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;EAC5C,OAAO;EACP,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC9B,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAClC,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACvC,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC3C,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC3C,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC/C,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC3C,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC/C,MAAM,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;EAC3B,KAAK;EACL,GAAG;EACH,EAAE,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;EACtE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EACrC,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;EAC/D,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;EACvC,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;EAC3C,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;EAChD,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;EACpD,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;EACpD,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;EACxD,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;EACpD,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;EACxD,MAAM,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;EAC3B,KAAK;EACL,GAAG;EACH,EAAE,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;EACtE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EACrC,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;EAC/D,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC;EACrC,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,cAAc,CAAC;EAC9C,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC;EAClD,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC;EAClD,MAAM,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;EAC3B,KAAK;EACL,GAAG;EACH,EAAE,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;EACjE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;EACrC,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;EAChE,MAAM,IAAI,UAAU,EAAE;EACtB,QAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EACtC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EAC1C,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EAC/C,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EACnD,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EACnD,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EACvD,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EACnD,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EACvD,QAAQ,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;EAC7B,OAAO,MAAM;EACb,QAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC1B,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EAC9B,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;EACnC,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACvC,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACvC,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EAC3C,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACvC,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EAC3C,QAAQ,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;EAC7B,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;EAClE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;EACrC,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EAC9C,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;EACtE,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;EACjC,MAAM,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,IAAI,aAAa,GAAGL,eAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC;EACtI,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;EAC3B,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;EACpC,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;EACxC,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;EACxC,MAAM,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;EAC3B,KAAK;EACL,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;EACpB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;EACrB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;EAC5B,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACzB,KAAK;EACL,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,GAAG;EACH,CAAC;EACD,gBAAgB,CAAC,SAAS,GAAG;EAC7B,EAAE,IAAI,EAAE,UAAU;EAClB,EAAE,IAAI,EAAE,aAAa,CAAC,cAAc;EACpC,CAAC,CAAC;AACFtC,cAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC;;ECxNhC,QAAQ,CAAC,iBAAiB,GAAG,CAAC;;ACH3B,MAAC,aAAa,mBAAmB,CAAC,CAAC,cAAc,KAAK;EACzD,EAAE,cAAc,CAAC,cAAc,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC;EAC5E,EAAE,cAAc,CAAC,cAAc,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAmB,CAAC;EAChF,EAAE,OAAO,cAAc,CAAC;EACxB,CAAC,EAAE,aAAa,IAAI,EAAE;;ECDtB,MAAM,YAAY,GAAG;EACrB,EAAE,KAAK,EAAE,MAAM;EACf,EAAE,UAAU,EAAE,KAAK;EACnB,EAAE,UAAU,EAAE,KAAK;EACnB,EAAE,eAAe,EAAE,CAAC;EACpB,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC;EAC9B,EAAE,cAAc,EAAE,CAAC;EACnB,EAAE,eAAe,EAAE,OAAO;EAC1B,EAAE,kBAAkB,EAAE,CAAC;EACvB,EAAE,IAAI,EAAE,OAAO;EACf,EAAE,gBAAgB,EAAE,aAAa,CAAC,eAAe;EACjD,EAAE,iBAAiB,EAAE,EAAE;EACvB,EAAE,UAAU,EAAE,OAAO;EACrB,EAAE,QAAQ,EAAE,EAAE;EACd,EAAE,SAAS,EAAE,QAAQ;EACrB,EAAE,WAAW,EAAE,QAAQ;EACvB,EAAE,UAAU,EAAE,QAAQ;EACtB,EAAE,aAAa,EAAE,CAAC;EAClB,EAAE,UAAU,EAAE,CAAC;EACf,EAAE,QAAQ,EAAE,OAAO;EACnB,EAAE,UAAU,EAAE,EAAE;EAChB,EAAE,OAAO,EAAE,CAAC;EACZ,EAAE,MAAM,EAAE,OAAO;EACjB,EAAE,eAAe,EAAE,CAAC;EACpB,EAAE,YAAY,EAAE,YAAY;EAC5B,EAAE,IAAI,EAAE,KAAK;EACb,EAAE,UAAU,EAAE,KAAK;EACnB,EAAE,QAAQ,EAAE,KAAK;EACjB,EAAE,aAAa,EAAE,GAAG;EACpB,EAAE,OAAO,EAAE,CAAC;EACZ,CAAC,CAAC;EACF,MAAM,mBAAmB,GAAG;EAC5B,EAAE,OAAO;EACT,EAAE,YAAY;EACd,EAAE,WAAW;EACb,EAAE,SAAS;EACX,EAAE,SAAS;EACX,EAAE,WAAW;EACb,CAAC,CAAC;EACF,MAAM,SAAS,CAAC;EAChB,EAAE,WAAW,CAAC,KAAK,EAAE;EACrB,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;EACrB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;EACjB,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;EAC3C,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,MAAM,gBAAgB,GAAG,EAAE,CAAC;EAChC,IAAI,kBAAkB,CAAC,gBAAgB,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;EAC7D,IAAI,OAAO,IAAI,SAAS,CAAC,gBAAgB,CAAC,CAAC;EAC3C,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;EACzD,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;EACvB,GAAG;EACH,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;EACnB,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;EAC/B,MAAM,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EAC1B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,UAAU,CAAC,UAAU,EAAE;EAC7B,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;EACzC,MAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;EACpC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,UAAU,CAAC,UAAU,EAAE;EAC7B,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;EACzC,MAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;EACpC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,eAAe,GAAG;EACxB,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC;EACjC,GAAG;EACH,EAAE,IAAI,eAAe,CAAC,eAAe,EAAE;EACvC,IAAI,IAAI,IAAI,CAAC,gBAAgB,KAAK,eAAe,EAAE;EACnD,MAAM,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;EAC9C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,eAAe,GAAG;EACxB,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC;EACjC,GAAG;EACH,EAAE,IAAI,eAAe,CAAC,eAAe,EAAE;EACvC,IAAI,IAAI,IAAI,CAAC,gBAAgB,KAAK,eAAe,EAAE;EACnD,MAAM,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;EAC9C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,cAAc,GAAG;EACvB,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC;EAChC,GAAG;EACH,EAAE,IAAI,cAAc,CAAC,cAAc,EAAE;EACrC,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,cAAc,EAAE;EACjD,MAAM,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;EAC5C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,eAAe,GAAG;EACxB,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC;EACjC,GAAG;EACH,EAAE,IAAI,eAAe,CAAC,eAAe,EAAE;EACvC,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;EAClD,IAAI,IAAI,IAAI,CAAC,gBAAgB,KAAK,WAAW,EAAE;EAC/C,MAAM,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC;EAC1C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,kBAAkB,GAAG;EAC3B,IAAI,OAAO,IAAI,CAAC,mBAAmB,CAAC;EACpC,GAAG;EACH,EAAE,IAAI,kBAAkB,CAAC,kBAAkB,EAAE;EAC7C,IAAI,IAAI,IAAI,CAAC,mBAAmB,KAAK,kBAAkB,EAAE;EACzD,MAAM,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;EACpD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;EACtB,GAAG;EACH,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;EACjB,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;EACvC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE;EACpC,MAAM,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;EAC/B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,gBAAgB,GAAG;EACzB,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC;EAClC,GAAG;EACH,EAAE,IAAI,gBAAgB,CAAC,gBAAgB,EAAE;EACzC,IAAI,IAAI,IAAI,CAAC,iBAAiB,KAAK,gBAAgB,EAAE;EACrD,MAAM,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;EAChD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,iBAAiB,GAAG;EAC1B,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC;EACnC,GAAG;EACH,EAAE,IAAI,iBAAiB,CAAC,iBAAiB,EAAE;EAC3C,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,EAAE;EACrE,MAAM,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;EAClD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,UAAU,CAAC,UAAU,EAAE;EAC7B,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;EACxC,MAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;EACpC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;EAC1B,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE;EACzB,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;EACrC,MAAM,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;EAChC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,SAAS,GAAG;EAClB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE;EAC3B,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;EACvC,MAAM,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;EAClC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,WAAW,GAAG;EACpB,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC;EAC7B,GAAG;EACH,EAAE,IAAI,WAAW,CAAC,WAAW,EAAE;EAC/B,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,WAAW,EAAE;EAC3C,MAAM,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;EACtC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,UAAU,CAAC,UAAU,EAAE;EAC7B,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;EACzC,MAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;EACpC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,aAAa,GAAG;EACtB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC;EAC/B,GAAG;EACH,EAAE,IAAI,aAAa,CAAC,aAAa,EAAE;EACnC,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa,EAAE;EAC/C,MAAM,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;EAC1C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,UAAU,CAAC,UAAU,EAAE;EAC7B,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;EACzC,MAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;EACpC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;EACvB,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;EACnC,MAAM,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;EAC9B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;EAC1B,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE;EACzB,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;EACrC,MAAM,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;EAChC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,UAAU,CAAC,UAAU,EAAE;EAC7B,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;EACzC,MAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;EACpC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;EACvB,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;EACnC,MAAM,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;EAC9B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE;EACrB,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;EACzC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,EAAE;EACtC,MAAM,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;EACjC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,eAAe,GAAG;EACxB,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC;EACjC,GAAG;EACH,EAAE,IAAI,eAAe,CAAC,eAAe,EAAE;EACvC,IAAI,IAAI,IAAI,CAAC,gBAAgB,KAAK,eAAe,EAAE;EACnD,MAAM,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;EAC9C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,YAAY,GAAG;EACrB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC;EAC9B,GAAG;EACH,EAAE,IAAI,YAAY,CAAC,YAAY,EAAE;EACjC,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,YAAY,EAAE;EAC7C,MAAM,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;EACxC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;EACtB,GAAG;EACH,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;EACjB,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;EAC7B,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACxB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,UAAU,CAAC,UAAU,EAAE;EAC7B,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;EACzC,MAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;EACpC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;EAC1B,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE;EACzB,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;EACrC,MAAM,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;EAChC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,aAAa,GAAG;EACtB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC;EAC/B,GAAG;EACH,EAAE,IAAI,aAAa,CAAC,aAAa,EAAE;EACnC,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa,EAAE;EAC/C,MAAM,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;EAC1C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;EACrB,KAAK;EACL,GAAG;EACH,EAAE,YAAY,GAAG;EACjB,IAAI,MAAM,cAAc,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;EACpG,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;EACvC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;EACzC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAChD,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EACvD,MAAM,IAAI,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;EAC9C,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;EAC/F,QAAQ,UAAU,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;EACvC,OAAO;EACP,MAAM,YAAY,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;EACnC,KAAK;EACL,IAAI,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAClH,GAAG;EACH,CAAC;EACD,SAAS,cAAc,CAAC,KAAK,EAAE;EAC/B,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;EACjC,IAAI,OAAO4C,UAAgB,CAAC,KAAK,CAAC,CAAC;EACnC,GAAG,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;EACxC,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;EAChC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACvC,KAAK;EACL,GAAG;EACH,EAAE,OAAO,KAAK,CAAC;EACf,CAAC;EACD,SAAS,QAAQ,CAAC,KAAK,EAAE;EACzB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EAC7B,IAAI,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;EACjC,GAAG,MAAM;EACT,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC3C,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,CAAC;EACD,SAAS,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;EACxC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;EACxD,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;EACvC,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC1C,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE;EACjC,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK;EACL,GAAG;EACH,EAAE,OAAO,IAAI,CAAC;EACd,CAAC;EACD,SAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE;EACzD,EAAE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;EAClC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;EACrC,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;EAC1C,KAAK,MAAM;EACX,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;EAClC,KAAK;EACL,GAAG;EACH;;ECxXA,MAAM,eAAe,GAAG;EACxB,EAAE,kBAAkB,EAAE,IAAI;EAC1B,CAAC,CAAC;EACF,MAAM,WAAW,CAAC;EAClB,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE;EACvG,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACzB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;EACjC,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;EACjC,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;EACrC,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;EACzC,GAAG;EACH,EAAE,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE;EAC1E,IAAI,QAAQ,GAAG,QAAQ,KAAK,KAAK,CAAC,IAAI,QAAQ,KAAK,IAAI,GAAG,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;EACpF,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;EACtC,IAAI,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EACzD,IAAI,IAAI,cAAc,CAAC,QAAQ,KAAK,CAAC,EAAE;EACvC,MAAM,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;EAC/C,MAAM,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;EAC7C,KAAK;EACL,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;EAC7D,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;EACxB,IAAI,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;EACnF,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;EACrD,IAAI,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EAC/C,IAAI,IAAI,YAAY,GAAG,CAAC,CAAC;EACzB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3C,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC;EAC1G,MAAM,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;EAChC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;EACvD,KAAK;EACL,IAAI,IAAI,KAAK,GAAG,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC;EACrD,IAAI,IAAI,KAAK,CAAC,UAAU,EAAE;EAC1B,MAAM,KAAK,IAAI,KAAK,CAAC,kBAAkB,CAAC;EACxC,KAAK;EACL,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;EAC3F,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;EAC3I,IAAI,IAAI,KAAK,CAAC,UAAU,EAAE;EAC1B,MAAM,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC;EACzC,KAAK;EACL,IAAI,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;EACpI,GAAG;EACH,EAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE;EAC7D,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;EAC7D,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;EAClB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;EACnB,IAAI,MAAM,KAAK,mBAAmB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACtD,IAAI,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;EAChD,IAAI,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;EAClE,IAAI,MAAM,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;EACtE,IAAI,IAAI,gBAAgB,GAAG,CAAC,cAAc,CAAC;EAC3C,IAAI,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;EAC9D,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;EAC9C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC5C,MAAM,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EAC5B,MAAM,IAAI,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;EACxC,QAAQ,IAAI,CAAC,gBAAgB,EAAE;EAC/B,UAAU,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC7C,UAAU,gBAAgB,GAAG,CAAC,cAAc,CAAC;EAC7C,UAAU,IAAI,GAAG,EAAE,CAAC;EACpB,UAAU,KAAK,GAAG,CAAC,CAAC;EACpB,UAAU,SAAS;EACnB,SAAS;EACT,QAAQ,KAAK,GAAG,GAAG,CAAC;EACpB,OAAO;EACP,MAAM,IAAI,cAAc,EAAE;EAC1B,QAAQ,MAAM,mBAAmB,GAAG,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;EACvE,QAAQ,MAAM,mBAAmB,GAAG,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EACvF,QAAQ,IAAI,mBAAmB,IAAI,mBAAmB,EAAE;EACxD,UAAU,SAAS;EACnB,SAAS;EACT,OAAO;EACP,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;EACxF,MAAM,IAAI,UAAU,GAAG,aAAa,EAAE;EACtC,QAAQ,IAAI,IAAI,KAAK,EAAE,EAAE;EACzB,UAAU,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC7C,UAAU,IAAI,GAAG,EAAE,CAAC;EACpB,UAAU,KAAK,GAAG,CAAC,CAAC;EACpB,SAAS;EACT,QAAQ,IAAI,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;EAChE,UAAU,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;EAC9D,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACtD,YAAY,IAAI,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;EACrC,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC;EACtB,YAAY,OAAO,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;EACtC,cAAc,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACjD,cAAc,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACrD,cAAc,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;EAC9F,gBAAgB,IAAI,IAAI,QAAQ,CAAC;EACjC,eAAe,MAAM;EACrB,gBAAgB,MAAM;EACtB,eAAe;EACf,cAAc,CAAC,EAAE,CAAC;EAClB,aAAa;EACb,YAAY,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EACjC,YAAY,MAAM,cAAc,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;EACjG,YAAY,IAAI,cAAc,GAAG,KAAK,GAAG,aAAa,EAAE;EACxD,cAAc,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACjD,cAAc,gBAAgB,GAAG,KAAK,CAAC;EACvC,cAAc,IAAI,GAAG,EAAE,CAAC;EACxB,cAAc,KAAK,GAAG,CAAC,CAAC;EACxB,aAAa;EACb,YAAY,IAAI,IAAI,IAAI,CAAC;EACzB,YAAY,KAAK,IAAI,cAAc,CAAC;EACpC,WAAW;EACX,SAAS,MAAM;EACf,UAAU,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;EAC/B,YAAY,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC/C,YAAY,IAAI,GAAG,EAAE,CAAC;EACtB,YAAY,KAAK,GAAG,CAAC,CAAC;EACtB,WAAW;EACX,UAAU,MAAM,WAAW,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EACtD,UAAU,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC;EAC5D,UAAU,gBAAgB,GAAG,KAAK,CAAC;EACnC,UAAU,IAAI,GAAG,EAAE,CAAC;EACpB,UAAU,KAAK,GAAG,CAAC,CAAC;EACpB,SAAS;EACT,OAAO,MAAM;EACb,QAAQ,IAAI,UAAU,GAAG,KAAK,GAAG,aAAa,EAAE;EAChD,UAAU,gBAAgB,GAAG,KAAK,CAAC;EACnC,UAAU,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC7C,UAAU,IAAI,GAAG,EAAE,CAAC;EACpB,UAAU,KAAK,GAAG,CAAC,CAAC;EACpB,SAAS;EACT,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,gBAAgB,EAAE;EACxF,UAAU,IAAI,IAAI,KAAK,CAAC;EACxB,UAAU,KAAK,IAAI,UAAU,CAAC;EAC9B,SAAS;EACT,OAAO;EACP,KAAK;EACL,IAAI,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EAC9C,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE;EACvC,IAAI,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EACvC,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC;AAC7B,CAAC,GAAG,IAAI,CAAC;EACT,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE;EAC1D,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;EAC3B,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;EACnC,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,GAAG,aAAa,CAAC;EACjD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC;EACvD,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACzB,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,OAAO,cAAc,CAAC,UAAU,EAAE;EACpC,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,UAAU,CAAC;EAChE,GAAG;EACH,EAAE,OAAO,gBAAgB,CAAC,UAAU,EAAE;EACtC,IAAI,OAAO,UAAU,KAAK,QAAQ,CAAC;EACnC,GAAG;EACH,EAAE,OAAO,SAAS,CAAC,IAAI,EAAE;EACzB,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;EAClC,MAAM,OAAO,EAAE,CAAC;EAChB,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;EAC9C,QAAQ,MAAM;EACd,OAAO;EACP,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EAC/B,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,SAAS,CAAC,IAAI,EAAE;EACzB,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;EAClC,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK;EACL,IAAI,OAAO,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;EAC9D,GAAG;EACH,EAAE,OAAO,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE;EAC1C,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;EAClC,MAAM,OAAO,KAAK,CAAC;EACnB,KAAK;EACL,IAAI,OAAO,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;EACpE,GAAG;EACH,EAAE,OAAO,QAAQ,CAAC,IAAI,EAAE;EACxB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;EACtB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;EACnB,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;EAClC,MAAM,OAAO,MAAM,CAAC;EACpB,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EAC3B,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACnC,MAAM,IAAI,WAAW,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;EACtF,QAAQ,IAAI,KAAK,KAAK,EAAE,EAAE;EAC1B,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC7B,UAAU,KAAK,GAAG,EAAE,CAAC;EACrB,SAAS;EACT,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC1B,QAAQ,SAAS;EACjB,OAAO;EACP,MAAM,KAAK,IAAI,IAAI,CAAC;EACpB,KAAK;EACL,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;EACtB,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACzB,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;EACH,EAAE,OAAO,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE;EAC3C,IAAI,OAAO,UAAU,CAAC;EACtB,GAAG;EACH,EAAE,OAAO,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE;EACtE,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,aAAa,CAAC,KAAK,EAAE;EAC9B,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;EAC3B,GAAG;EACH,EAAE,OAAO,WAAW,CAAC,IAAI,EAAE;EAC3B,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;EAClC,MAAM,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACtC,KAAK;EACL,IAAI,MAAM,UAAU,GAAG;EACvB,MAAM,MAAM,EAAE,CAAC;EACf,MAAM,OAAO,EAAE,CAAC;EAChB,MAAM,QAAQ,EAAE,CAAC;EACjB,KAAK,CAAC;EACN,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC;EACvC,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC;EACzC,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;EACxB,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,cAAc,GAAG,WAAW,CAAC,eAAe,CAAC;EACnF,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC;EACtE,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC;EACrF,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,QAAQ,CAAC,CAAC;EACvE,IAAI,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC,mBAAmB,GAAG,CAAC,CAAC;EAC9D,IAAI,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;EACzB,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;EAC3B,IAAI,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;EAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;EAC1C,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;EACxB,IAAI,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;EACxC,IAAI,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;EAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;EACjD,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC;EACrE,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;EACpC,IAAI,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACd,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC;EACrB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAE;EACnC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;EACxC,QAAQ,IAAI,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;EACxC,UAAU,IAAI,GAAG,IAAI,CAAC;EACtB,UAAU,MAAM;EAChB,SAAS;EACT,OAAO;EACP,MAAM,IAAI,CAAC,IAAI,EAAE;EACjB,QAAQ,GAAG,IAAI,IAAI,CAAC;EACpB,OAAO,MAAM;EACb,QAAQ,MAAM;EACd,OAAO;EACP,KAAK;EACL,IAAI,UAAU,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;EACrC,IAAI,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,GAAG,KAAK,CAAC;EACjB,IAAI,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAE;EACxC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;EACxC,QAAQ,IAAI,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;EACxC,UAAU,IAAI,GAAG,IAAI,CAAC;EACtB,UAAU,MAAM;EAChB,SAAS;EACT,OAAO;EACP,MAAM,IAAI,CAAC,IAAI,EAAE;EACjB,QAAQ,GAAG,IAAI,IAAI,CAAC;EACpB,OAAO,MAAM;EACb,QAAQ,MAAM;EACd,OAAO;EACP,KAAK;EACL,IAAI,UAAU,CAAC,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC;EACtC,IAAI,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;EACjE,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;EAC1C,IAAI,OAAO,UAAU,CAAC;EACtB,GAAG;EACH,EAAE,OAAO,YAAY,CAAC,IAAI,GAAG,EAAE,EAAE;EACjC,IAAI,IAAI,IAAI,EAAE;EACd,MAAM,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACtC,KAAK,MAAM;EACX,MAAM,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;EAC9B,KAAK;EACL,GAAG;EACH,EAAE,WAAW,OAAO,GAAG;EACvB,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;EAC/B,MAAM,IAAI,MAAM,CAAC;EACjB,MAAM,IAAI;EACV,QAAQ,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC5C,QAAQ,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;EAC5D,QAAQ,IAAI,OAAO,EAAE,WAAW,EAAE;EAClC,UAAU,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC;EACnC,UAAU,OAAO,CAAC,CAAC;EACnB,SAAS;EACT,QAAQ,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;EACjD,OAAO,CAAC,OAAO,EAAE,EAAE;EACnB,QAAQ,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;EACjD,OAAO;EACP,MAAM,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;EACxC,MAAM,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC;EACpC,KAAK;EACL,IAAI,OAAO,WAAW,CAAC,QAAQ,CAAC;EAChC,GAAG;EACH,EAAE,WAAW,QAAQ,GAAG;EACxB,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;EAChC,MAAM,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;EACpF,KAAK;EACL,IAAI,OAAO,WAAW,CAAC,SAAS,CAAC;EACjC,GAAG;EACH,CAAC;EACD,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;EACxB,WAAW,CAAC,cAAc,GAAG,YAAY,CAAC;EAC1C,WAAW,CAAC,eAAe,GAAG,GAAG,CAAC;EAClC,WAAW,CAAC,mBAAmB,GAAG,GAAG,CAAC;EACtC,WAAW,CAAC,iBAAiB,GAAG,CAAC,CAAC;EAClC,WAAW,CAAC,SAAS,GAAG;EACxB,EAAE,EAAE;EACJ,EAAE,EAAE;EACJ,CAAC,CAAC;EACF,WAAW,CAAC,eAAe,GAAG;EAC9B,EAAE,CAAC;EACH,EAAE,EAAE;EACJ,EAAE,IAAI;EACN,EAAE,IAAI;EACN,EAAE,IAAI;EACN,EAAE,IAAI;EACN,EAAE,IAAI;EACN,EAAE,IAAI;EACN,EAAE,IAAI;EACN,EAAE,IAAI;EACN,EAAE,IAAI;EACN,EAAE,IAAI;EACN,EAAE,IAAI;EACN,EAAE,KAAK;EACP,CAAC;;EC9UD,MAAM,qBAAqB,GAAG;EAC9B,EAAE,OAAO,EAAE,IAAI;EACf,EAAE,QAAQ,EAAE,KAAK;EACjB,EAAE,WAAW,EAAE,IAAI;EACnB,CAAC,CAAC;EACF,MAAM,KAAK,GAAG,cAAc,MAAM,CAAC;EACnC,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;EACnC,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC;EAC1B,IAAI,IAAI,CAAC,MAAM,EAAE;EACjB,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;EAC/C,MAAM,SAAS,GAAG,IAAI,CAAC;EACvB,KAAK;EACL,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;EACrB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EACtB,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACzC,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;EACnC,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;EACnC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;EAChC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACzB,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;EAC3C,MAAM,kBAAkB,EAAE,IAAI;EAC9B,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC;EAC3C,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;EAChC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;EACpB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;EAC3B,GAAG;EACH,EAAE,UAAU,CAAC,YAAY,EAAE;EAC3B,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;EAC9B,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,OAAO,EAAE;EAC7C,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACxB,MAAM,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;EACxC,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,YAAY,EAAE;EACrC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;EAC5C,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EACjC,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAChH,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;EACjC,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;EACnC,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;EACjC,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;EAC3C,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;EAC3C,IAAI,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;EAC/C,IAAI,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;EACnD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;EACxG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;EAC1G,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;EACtD,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;EACnE,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;EAC9B,IAAI,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC;EAC9C,IAAI,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;EAC9C,IAAI,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;EACtC,IAAI,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;EAC1C,IAAI,IAAI,aAAa,CAAC;EACtB,IAAI,IAAI,aAAa,CAAC;EACtB,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;EACjD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;EAC1C,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC;EACvD,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACjG,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;EAC7D,MAAM,IAAI,YAAY,EAAE;EACxB,QAAQ,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC;EACpC,QAAQ,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC;EACtC,QAAQ,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;EACtD,QAAQ,MAAM,GAAG,GAAGL,OAAa,CAAC,OAAO,eAAe,KAAK,QAAQ,GAAG,eAAe,GAAGM,UAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;EAC7H,QAAQ,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;EACvE,QAAQ,MAAM,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC;EAC/E,QAAQ,OAAO,CAAC,WAAW,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;EAC/G,QAAQ,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC;EAC5C,QAAQ,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,kBAAkB,CAAC;EACrF,QAAQ,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,kBAAkB,GAAG,cAAc,CAAC;EACtG,OAAO,MAAM;EACb,QAAQ,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;EAC5E,QAAQ,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;EAC3C,QAAQ,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC;EACtC,QAAQ,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;EAC/B,QAAQ,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;EAClC,QAAQ,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;EAClC,OAAO;EACP,MAAM,IAAI,kBAAkB,GAAG,CAAC,UAAU,GAAG,cAAc,CAAC,QAAQ,IAAI,CAAC,CAAC;EAC1E,MAAM,IAAI,UAAU,GAAG,cAAc,CAAC,QAAQ,GAAG,CAAC,EAAE;EACpD,QAAQ,kBAAkB,GAAG,CAAC,CAAC;EAC/B,OAAO;EACP,MAAM,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;EAChD,QAAQ,aAAa,GAAG,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;EAClD,QAAQ,aAAa,GAAG,KAAK,CAAC,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,cAAc,CAAC,MAAM,GAAG,kBAAkB,CAAC;EACjH,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE;EACrC,UAAU,aAAa,IAAI,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;EACzD,SAAS,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE;EAC7C,UAAU,aAAa,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EAC/D,SAAS;EACT,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,eAAe,EAAE;EACnD,UAAU,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,KAAK,CAAC,OAAO,GAAG,YAAY,EAAE,IAAI,CAAC,CAAC;EAC/H,SAAS;EACT,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;EACxB,UAAU,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC;EACzH,SAAS;EACT,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;EACzB,GAAG;EACH,EAAE,iBAAiB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,EAAE;EAClD,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;EAC9B,IAAI,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;EAC9C,IAAI,MAAM,oBAAoB,GAAG,KAAK,CAAC,yBAAyB,KAAK,eAAe,IAAI,wBAAwB,CAAC,SAAS,IAAI,mBAAmB,IAAI,wBAAwB,CAAC,SAAS,CAAC,CAAC;EACzL,IAAI,IAAI,aAAa,KAAK,CAAC,IAAI,oBAAoB,EAAE;EACrD,MAAM,IAAI,oBAAoB,EAAE;EAChC,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;EACnD,QAAQ,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,aAAa,CAAC;EACvD,OAAO;EACP,MAAM,IAAI,QAAQ,EAAE;EACpB,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC5C,OAAO,MAAM;EACb,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1C,OAAO;EACP,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,eAAe,GAAG,CAAC,CAAC;EAC5B,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;EACvE,IAAI,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;EAC7D,IAAI,IAAI,YAAY,GAAG,CAAC,CAAC;EACzB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EACjD,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;EACzC,MAAM,IAAI,QAAQ,EAAE;EACpB,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;EACjE,OAAO,MAAM;EACb,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;EAC/D,OAAO;EACP,MAAM,IAAI,OAAO,GAAG,EAAE,CAAC;EACvB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EACvD,QAAQ,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;EAClC,OAAO;EACP,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;EAC7D,MAAM,eAAe,IAAI,aAAa,GAAG,YAAY,GAAG,aAAa,CAAC;EACtE,MAAM,aAAa,GAAG,YAAY,CAAC;EACnC,KAAK;EACL,GAAG;EACH,EAAE,aAAa,GAAG;EAClB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC/B,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;EAC1B,MAAM,MAAM,OAAO,GAAGC,UAAgB,CAAC,MAAM,CAAC,CAAC;EAC/C,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE;EACxB,QAAQ,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;EACrC,QAAQ,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;EACvC,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACtD,OAAO;EACP,KAAK;EACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;EAClC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;EAC9B,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;EACnD,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;EAC5C,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;EAChF,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;EACnF,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;EAC9B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;EAC9B,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC;EAC5D,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;EAC9D,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAC5B,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;EAC3E,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;EACxB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,GAAG;EACH,EAAE,OAAO,CAAC,QAAQ,EAAE;EACpB,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,UAAU,EAAE;EAC1E,MAAM,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC;EAC7C,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACxB,KAAK;EACL,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;EAC5B,GAAG;EACH,EAAE,eAAe,GAAG;EACpB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EAC1B,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;EAC5B,GAAG;EACH,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE;EAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,EAAE;EAChC,MAAM,UAAU,GAAG,KAAK,CAAC;EACzB,KAAK;EACL,IAAI,OAAO,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;EAC7C,GAAG;EACH,EAAE,cAAc,CAAC,IAAI,EAAE;EACvB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EAC1B,IAAI,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACjD,GAAG;EACH,EAAE,gBAAgB,GAAG;EACrB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;EAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EAC1C,GAAG;EACH,EAAE,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;EAC5C,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;EACjC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;EACnC,MAAM,OAAO,SAAS,CAAC;EACvB,KAAK,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;EACvC,MAAM,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;EAC1B,KAAK;EACL,IAAI,IAAI,QAAQ,CAAC;EACjB,IAAI,MAAM,oBAAoB,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC;EACjF,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;EACvC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,oBAAoB,GAAG,OAAO,GAAG,CAAC,CAAC;EAC5F,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG,oBAAoB,GAAG,OAAO,GAAG,CAAC,CAAC;EAC9F,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;EACnC,IAAI,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;EAC9D,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;EACnC,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EAC1C,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;EAC5C,QAAQ,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;EAChD,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EAC/B,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACjC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/C,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC9B,IAAI,IAAI,KAAK,CAAC,gBAAgB,KAAK,aAAa,CAAC,eAAe,EAAE;EAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;EACpG,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;EACjF,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC7C,QAAQ,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;EACzE,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;EACnD,QAAQ,IAAI,qBAAqB,GAAG,WAAW,CAAC;EAChD,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,cAAc,GAAG,WAAW,EAAE;EACnD,UAAU,qBAAqB,GAAG,CAAC,WAAW,GAAG,cAAc,IAAI,CAAC,CAAC;EACrE,SAAS;EACT,QAAQ,MAAM,cAAc,GAAG,WAAW,GAAG,UAAU,CAAC;EACxD,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACzD,QAAQ,IAAI,mBAAmB,GAAG,cAAc,CAAC;EACjD,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,WAAW,GAAG,cAAc,EAAE;EAClE,UAAU,mBAAmB,GAAG,CAAC,cAAc,GAAG,WAAW,IAAI,CAAC,CAAC;EACnE,SAAS;EACT,QAAQ,MAAM,kBAAkB,GAAG,CAAC,mBAAmB,GAAG,qBAAqB,IAAI,MAAM,CAAC;EAC1F,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC9C,UAAU,IAAI,QAAQ,GAAG,CAAC,CAAC;EAC3B,UAAU,IAAI,OAAO,iBAAiB,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;EACxD,YAAY,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;EAC5C,WAAW,MAAM;EACjB,YAAY,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;EACvC,WAAW;EACX,UAAU,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,qBAAqB,GAAG,MAAM,GAAG,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC;EACpH,UAAU,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;EACrD,UAAU,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACrD,SAAS;EACT,OAAO;EACP,KAAK,MAAM;EACX,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;EACrG,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EAC9C,MAAM,IAAI,gBAAgB,GAAG,CAAC,CAAC;EAC/B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC5C,QAAQ,IAAI,IAAI,CAAC;EACjB,QAAQ,IAAI,OAAO,iBAAiB,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;EACtD,UAAU,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;EACtC,SAAS,MAAM;EACf,UAAU,IAAI,GAAG,gBAAgB,GAAG,eAAe,CAAC;EACpD,SAAS;EACT,QAAQ,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7C,QAAQ,gBAAgB,EAAE,CAAC;EAC3B,OAAO;EACP,KAAK;EACL,IAAI,OAAO,QAAQ,CAAC;EACpB,GAAG;EACH,EAAE,OAAO,CAAC,OAAO,EAAE;EACnB,IAAI,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE;EACtC,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;EACtC,KAAK;EACL,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC;EAChE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAC3B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;EACzB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;EACjD,KAAK;EACL,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EAC1B,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;EAC7D,GAAG;EACH,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;EACnB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EAC1B,IAAI,MAAM,CAAC,GAAGhB,IAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;EACxD,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EAC1B,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;EAC9D,GAAG;EACH,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE;EACpB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EAC1B,IAAI,MAAM,CAAC,GAAGA,IAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;EACzD,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;EACvB,GAAG;EACH,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;EACnB,IAAI,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;EACxB,IAAI,IAAI,KAAK,YAAY,SAAS,EAAE;EACpC,MAAM,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EAC1B,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;EACzC,KAAK;EACL,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;EACtB,GAAG;EACH,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;EACjB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;EAChE,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;EAC7B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,GAAG;EACH,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,UAAU,CAAC,KAAK,EAAE;EACxB,IAAI,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;EACjC,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;EACpC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;EAC7B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,GAAG;EACH,CAAC,CAAC;AACC,MAAC,IAAI,GAAG,MAAM;EACjB,IAAI,CAAC,yBAAyB,GAAG,KAAK;;ECvVtC,MAAM,YAAY,CAAC;EACnB,EAAE,WAAW,CAAC,gBAAgB,EAAE;EAChC,IAAI,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;EAC7C,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EACvB,GAAG;EACH,EAAE,UAAU,GAAG;EACf,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;EAC3C,GAAG;EACH,EAAE,eAAe,GAAG;EACpB,IAAI,OAAO,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;EAChC,GAAG;EACH;;ECNA,SAAS,wBAAwB,CAAC,IAAI,EAAE,KAAK,EAAE;EAC/C,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC;EACrB,EAAE,IAAI,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE;EAC/B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACpD,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,OAAO,EAAE;EAChD,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;EAC1D,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;EAC1C,UAAU,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EAClC,UAAU,MAAM,GAAG,IAAI,CAAC;EACxB,SAAS;EACT,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,OAAO,MAAM,CAAC;EAChB,CAAC;EACD,SAAS,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE;EACtC,EAAE,IAAI,IAAI,CAAC,WAAW,YAAY,WAAW,EAAE;EAC/C,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;EACrC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;EAClC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC1B,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,KAAK,CAAC;EACf,CAAC;EACD,SAAS,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;EAClC,EAAE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,YAAY,OAAO,EAAE;EACzD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;EAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;EAClC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC1B,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,KAAK,CAAC;EACf,CAAC;EACD,SAAS,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE;EACjC,EAAE,IAAI,IAAI,YAAY,IAAI,EAAE;EAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EAC1B,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,KAAK,CAAC;EACf,CAAC;EACD,SAAS,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE;EAC3C,EAAE,IAAI,IAAI,YAAY,SAAS,EAAE;EACjC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;EACrC,IAAI,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EAClC,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,KAAK,CAAC;EACf,CAAC;EACD,SAAS,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;EAC/B,EAAE,IAAI,IAAI,YAAY,IAAI,EAAE;EAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EACrC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC7B,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;EAC/B,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACvB,KAAK;EACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;EAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;EAClC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC1B,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,KAAK,CAAC;EACf,CAAC;EACD,SAAS,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE;EACpC,EAAE,IAAI,IAAI,YAAY,SAAS,EAAE;EACjC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;EAC/B,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACvB,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,KAAK,CAAC;EACf,CAAC;EACD,MAAM,WAAW,CAAC;EAClB,EAAE,WAAW,CAAC,QAAQ,EAAE;EACxB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;EAChE,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC7B,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;EACjC,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;EACpB,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;EACvB,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;EAC1B,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;EACxB,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACzB,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM;EAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;EACvB,QAAQ,OAAO;EACf,OAAO;EACP,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;EAC1B,KAAK,CAAC;EACN,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;EACpC,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;EACzC,IAAI,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;EACpD,IAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;EAC3C,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;EACvC,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;EAChD,GAAG;EACH,EAAE,MAAM,CAAC,IAAI,EAAE;EACf,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;EACpC,MAAM,IAAI,IAAI,EAAE;EAChB,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EACvB,OAAO;EACP,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;EAC7B,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EACrC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;EAC3B,UAAU,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EAC9B,UAAU,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;EAC1E,SAAS;EACT,OAAO,MAAM;EACb,QAAQ,OAAO,EAAE,CAAC;EAClB,OAAO;EACP,KAAK,CAAC,CAAC;EACP,GAAG;EACH,EAAE,IAAI,GAAG;EACT,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;EACpC,GAAG;EACH,EAAE,YAAY,GAAG;EACjB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;EAC9B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE;EAChE,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACjC,MAAM,IAAI,QAAQ,GAAG,KAAK,CAAC;EAC3B,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;EACpC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EACrE,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE;EAChE,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;EAC/B,YAAY,QAAQ,GAAG,IAAI,CAAC;EAC5B,YAAY,MAAM;EAClB,WAAW;EACX,SAAS;EACT,OAAO;EACP,MAAM,IAAI,CAAC,QAAQ,EAAE;EACrB,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;EAC3B,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;EAC5B,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EAC3B,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAChD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;EAChC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAC5D,QAAQ,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;EACvB,OAAO;EACP,KAAK,MAAM;EACX,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;EACtE,KAAK;EACL,GAAG;EACH,EAAE,gBAAgB,CAAC,OAAO,EAAE;EAC5B,IAAI,IAAI,OAAO,EAAE;EACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAClC,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,kBAAkB,CAAC,UAAU,EAAE;EACjC,IAAI,IAAI,UAAU,EAAE;EACpB,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EACxC,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,GAAG,CAAC,IAAI,EAAE;EACZ,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAC9D,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;EAC9C,QAAQ,MAAM;EACd,OAAO;EACP,KAAK;EACL,IAAI,IAAI,IAAI,YAAY,SAAS,EAAE;EACnC,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC1D,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;EACnC,OAAO;EACP,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;EACtB,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EAC5C,KAAK;EACL,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACzB,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;EACjC,GAAG;EACH;;EC1LA,SAAS,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE;EAC5C,EAAE,IAAI,IAAI,YAAY,WAAW,EAAE;EACnC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;EACjD,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAClC,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,KAAK,CAAC;EACf,CAAC;EACD,SAAS,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE;EACxC,EAAE,IAAI,EAAE,IAAI,YAAY,QAAQ,CAAC,EAAE;EACnC,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;EAC5B,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;EACpB,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC;EAC3B,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;EAC/B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3C,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;EACzC,IAAI,IAAI,OAAO,EAAE;EACjB,MAAM,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;EACxD,KAAK;EACL,GAAG;EACH,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;EAC3B,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC1E,GAAG;EACH,EAAE,OAAO,IAAI,CAAC;EACd,CAAC;EACD,SAAS,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE;EACnC,EAAE,IAAI,IAAI,YAAY,QAAQ,EAAE;EAChC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACrB,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,KAAK,CAAC;EACf,CAAC;EACD,MAAM,OAAO,SAAS,WAAW,CAAC;EAClC,EAAE,WAAW,CAAC,QAAQ,EAAE;EACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;EACpB,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;EAC1C,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;EACxC,IAAI,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;EAChD,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;EAC5C,GAAG;EACH,CAAC;EACD,OAAO,CAAC,SAAS,GAAG;EACpB,EAAE,IAAI,EAAE,SAAS;EACjB,EAAE,IAAI,EAAE,aAAa,CAAC,cAAc;EACpC,CAAC,CAAC;AACF9B,cAAU,CAAC,GAAG,CAAC,OAAO,CAAC;;ECpDvB,MAAM,WAAW,CAAC;EAClB,EAAE,WAAW,CAAC,eAAe,EAAE;EAC/B,IAAI,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;EAC3C,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;EACxB,GAAG;EACH,EAAE,UAAU,GAAG;EACf,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EACjC,GAAG;EACH,EAAE,eAAe,GAAG;EACpB,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC;EAC/D,GAAG;EACH;;ECTA,MAAM,YAAY,GAAG,MAAM;EAC3B,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI,EAAE;EACxD,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EAC3B,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,YAAY,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;EAChE,IAAI,IAAI,CAAC,WAAW,GAAG,OAAO,YAAY,WAAW,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;EAC5F,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;EACvB,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACzB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;EAC/C,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,KAAK,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;EACrG,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;EACpC,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAChD,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,GAAG;EACH,EAAE,iBAAiB,CAAC,kBAAkB,GAAG,IAAI,EAAE;EAC/C,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;EACrC,IAAI,IAAI,UAAU,GAAGmC,kBAAwB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;EACxE,IAAI,IAAI,UAAU,KAAK,IAAI,EAAE;EAC7B,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;EAC5C,KAAK;EACL,IAAI,IAAI,UAAU,KAAK,CAAC,EAAE;EAC1B,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;EACjD,KAAK;EACL,IAAI,OAAO,UAAU,CAAC;EACtB,GAAG;EACH,EAAE,KAAK,GAAG;EACV,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;EACpC,MAAM,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;EAC/B,MAAM,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;EAC3B,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE;EAC7D,QAAQ,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;EAC/B,QAAQ,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAClC,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;EAC9B,OAAO,MAAM;EACb,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;EAC1B,OAAO;EACP,KAAK,CAAC,CAAC;EACP,GAAG;EACH,EAAE,cAAc,CAAC,iBAAiB,EAAE;EACpC,IAAI,IAAI,UAAU,GAAG,iBAAiB,CAAC;EACvC,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC;EAC9C,IAAI,OAAO,UAAU,GAAG,iBAAiB,GAAG,SAAS,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;EAC9F,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;EAC5C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACnC,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;EAC9B,MAAM,IAAI,IAAI,EAAE;EAChB,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;EACzB,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;EACxB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;EACpG,QAAQ,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;EACjI,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;EAC1B,UAAU,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;EACxL,SAAS,MAAM;EACf,UAAU,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;EACxL,SAAS;EACT,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,gBAAgB,EAAE;EAC7D,UAAU,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;EACzN,SAAS;EACT,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAC/G,QAAQ,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAChD,OAAO;EACP,MAAM,UAAU,EAAE,CAAC;EACnB,KAAK;EACL,GAAG;EACH,EAAE,kBAAkB,GAAG;EACvB,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;EAClD,IAAI,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;EACvC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;EACrC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC5D,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;EAClD,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;EACjE,OAAO;EACP,KAAK;EACL,GAAG;EACH,EAAE,cAAc,GAAG;EACnB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;EACpC,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;EACzB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;EACvC,GAAG;EACH,EAAE,UAAU,GAAG;EACf,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;EACpE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;EACvB,IAAI,UAAU,CAAC,MAAM;EACrB,MAAM,IAAI,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;EAC/E,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;EAC1B,OAAO,MAAM;EACb,QAAQ,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAClC,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;EAC9B,OAAO;EACP,KAAK,EAAE,CAAC,CAAC,CAAC;EACV,GAAG;EACH,EAAE,OAAO,CAAC,WAAW,GAAG,KAAK,EAAE;EAC/B,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;EACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;EACjC,KAAK;EACL,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACxB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,WAAW,EAAE;EACrB,MAAM,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;EAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;EACjC,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EAC3B,GAAG;EACH,CAAC,CAAC;AACC,MAAC,WAAW,GAAG,aAAa;EAC/B,WAAW,CAAC,UAAU,GAAG,GAAG;;EC7G5B,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;EAC3D,SAAS,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE;EAC1D,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;EACjB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;EACxB,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACrB,GAAG,CAAC,CAAC;EACL,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;EAC/C,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;EACnC,GAAG,CAAC,CAAC;EACL,EAAE,IAAI,CAAC,eAAe,EAAE;EACxB,IAAI,MAAM,QAAQ,GAAGF,IAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACjD,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;EAC5C,MAAM,MAAM,IAAI,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC7G,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAC/B,KAAK,CAAC,CAAC;EACP,GAAG;EACH,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;AACI,QAAC,gBAAgB,GAAG;EACzB,EAAE,SAAS,EAAE,aAAa,CAAC,KAAK;EAChC,EAAE,KAAK,EAAE;EACT,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,YAAY,WAAW;EACjD,IAAI,kBAAkB,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;EAC/E,GAAG;EACH,EAAE,QAAQ,EAAE;EACZ,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK;EACrB,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1C,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACvC,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;EACpC,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;EACjC,MAAM,OAAO,SAAS,KAAK,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;EAClE,KAAK;EACL,IAAI,KAAK,EAAE,CAAC,KAAK,KAAK;EACtB,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACrC,MAAM,OAAO;EACb,QAAQ,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;EAC9E,QAAQ,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;EACvC,QAAQ,GAAG,EAAE,KAAK;EAClB,OAAO,CAAC;EACR,KAAK;EACL,GAAG;EACH,EAAE,MAAM,EAAE;EACV,IAAI,SAAS,EAAE;EACf,MAAM,IAAI,EAAE,aAAa,CAAC,UAAU;EACpC,MAAM,QAAQ,EAAE,oBAAoB,CAAC,MAAM;EAC3C,KAAK;EACL,IAAI,MAAM,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE;EACpC,MAAM,OAAOA,IAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;EACjF,KAAK;EACL,IAAI,MAAM,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;EACxC,MAAM,IAAI,QAAQ,GAAGA,IAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;EACrD,MAAM,IAAI,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;EACzE,QAAQ,QAAQ,IAAI,GAAG,CAAC;EACxB,OAAO;EACP,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;EACpD,MAAM,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;EACpD,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;EACxC,MAAM,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;EACnF,MAAM,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;EAChC,MAAM,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,mBAAmB,CAAC;EAC1D,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;EACrC,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;EAC5B,QAAQ,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;EACvC,UAAU,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;EACxC,YAAY,SAAS;EACrB,WAAW;EACX,UAAU,MAAM,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;EAC1C,UAAU,IAAI,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE;EAC7C,YAAY,SAAS;EACrB,WAAW;EACX,UAAU,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;EACpC,YAAY,GAAG,EAAE,OAAO;EACxB,YAAY,IAAI,EAAE;EAClB,cAAc,eAAe,EAAE,IAAI;EACnC,aAAa;EACb,WAAW,CAAC,CAAC,CAAC;EACd,SAAS;EACT,QAAQ,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EAChD,QAAQ,WAAW,CAAC,YAAY,GAAG,GAAG,CAAC;EACvC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;EAC9B,UAAU,IAAI,CAAC,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;EACzG,SAAS,CAAC,CAAC;EACX,OAAO;EACP,MAAM,OAAO,WAAW,CAAC;EACzB,KAAK;EACL,IAAI,MAAM,CAAC,WAAW,EAAE;EACxB,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAChC,KAAK;EACL,GAAG;EACH,EAAE;AACFjC,cAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC;;EC3FhC,MAAM,cAAc,SAAS,MAAM,CAAC;EACpC,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI,EAAE;EAC3C,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;EAC9E,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;EAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;EAClC,IAAI,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;EACtC,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC9B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;EAC1B,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;EAC1B,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC7B,GAAG;EACH,EAAE,IAAI,GAAG;EACT,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;EACxB,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;EAC1B,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,oBAAoB,EAAE;EACvD,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EAC9C,MAAM,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;EACxC,KAAK;EACL,GAAG;EACH,EAAE,IAAI,GAAG;EACT,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;EACvB,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;EACxD,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;EACjE,MAAM,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;EACvC,KAAK;EACL,GAAG;EACH,EAAE,WAAW,CAAC,WAAW,EAAE;EAC3B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;EAChB,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;EACpC,GAAG;EACH,EAAE,WAAW,CAAC,WAAW,EAAE;EAC3B,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;EACpC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;EAChB,GAAG;EACH,EAAE,MAAM,CAAC,SAAS,EAAE;EACpB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;EACxB,MAAM,OAAO;EACb,KAAK;EACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;EACpD,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;EAC5C,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;EAClC,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EAC3E,MAAM,GAAG,IAAI,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC;EAChC,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE;EACtB,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;EAC5B,QAAQ,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EAClD,OAAO;EACP,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;EAC9D,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EACxD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;EACxD,QAAQ,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;EACzD,QAAQ,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;EAClC,OAAO;EACP,MAAM,IAAI,CAAC,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EACpE,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC;EACnC,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;EAC7C,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;EAC1B,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;EAC3B,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;EAC1B,OAAO;EACP,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;EACzE,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAClD,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;EAC3B,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;EAC1B,OAAO;EACP,KAAK,MAAM,IAAI,aAAa,KAAK,IAAI,CAAC,YAAY,EAAE;EACpD,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;EACpC,QAAQ,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,aAAa,EAAE;EAC1E,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;EACxB,SAAS,MAAM,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,aAAa,EAAE;EACjF,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;EACxB,SAAS;EACT,OAAO;EACP,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;EAC3B,KAAK;EACL,GAAG;EACH,EAAE,aAAa,GAAG;EAClB,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;EAC3C,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,YAAY,EAAE;EAC9C,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;EACvC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;EACjD,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;EAChC,IAAI,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;EAChC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;EAC7C,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;EAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;EACzD,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;EAC5B,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EAC5C,KAAK;EACL,GAAG;EACH,EAAE,OAAO,CAAC,OAAO,EAAE;EACnB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;EAChB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC3B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACvB,GAAG;EACH,EAAE,OAAO,UAAU,CAAC,MAAM,EAAE;EAC5B,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;EACxB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC5C,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7C,KAAK;EACL,IAAI,OAAO,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;EACxC,GAAG;EACH,EAAE,OAAO,UAAU,CAAC,MAAM,EAAE;EAC5B,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;EACxB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC5C,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7C,KAAK;EACL,IAAI,OAAO,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;EACxC,GAAG;EACH,EAAE,IAAI,WAAW,GAAG;EACpB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;EACjC,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;EAC1B,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;EACtB,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,YAAY,OAAO,EAAE;EACrC,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC7B,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EAC7B,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;EAC1B,MAAM,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EAC3B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC7C,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;EAC9C,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAC5C,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,YAAY,GAAG;EACrB,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;EAC7E,IAAI,IAAI,YAAY,GAAG,CAAC,EAAE;EAC1B,MAAM,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;EAC5C,KAAK;EACL,IAAI,OAAO,YAAY,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,YAAY,CAAC,KAAK,EAAE;EAC1B,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;EACnD,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,4CAA4C,EAAE,KAAK,CAAC,2CAA2C,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7I,KAAK;EACL,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;EAC5C,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC9B,IAAI,IAAI,aAAa,KAAK,IAAI,CAAC,YAAY,EAAE;EAC7C,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;EAC3B,KAAK;EACL,GAAG;EACH,EAAE,IAAI,OAAO,GAAG;EAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;EACzB,GAAG;EACH,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,UAAU,CAAC,KAAK,EAAE;EACxB,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;EACpC,MAAM,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;EAC/B,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,oBAAoB,EAAE;EAC1D,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EAChD,QAAQ,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;EAC1C,OAAO,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,QAAQ,EAAE;EAClF,QAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EAC7C,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;EACzC,OAAO;EACP,KAAK;EACL,GAAG;EACH;;EC1LA,MAAM,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;EAC9B,MAAM,YAAY,SAAS,MAAM,CAAC;EAClC,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE;EAClD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,SAAS,EAAE,CAAC;EACzC,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;EAC1B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;EACxE,IAAI,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC;EACrC,IAAI,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;EACjC,GAAG;EACH,EAAE,IAAI,WAAW,GAAG;EACpB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;EACrC,GAAG;EACH,EAAE,IAAI,WAAW,CAAC,KAAK,EAAE;EACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;EACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC/B,GAAG;EACH,EAAE,IAAI,SAAS,GAAG;EAClB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;EACpC,GAAG;EACH,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE;EACvB,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EAC7C,GAAG;EACH,EAAE,IAAI,YAAY,GAAG;EACrB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;EACvC,GAAG;EACH,EAAE,IAAI,YAAY,CAAC,KAAK,EAAE;EAC1B,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EAChD,GAAG;EACH,EAAE,gBAAgB,GAAG;EACrB,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;EACvB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;EAC5C,KAAK;EACL,IAAI,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;EAChC,GAAG;EACH,EAAE,OAAO,CAAC,QAAQ,EAAE;EACpB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;EAClC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;EACpC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;EAC9C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;EAC3B,IAAI,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;EACxE,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACnD,GAAG;EACH,EAAE,gBAAgB,GAAG;EACrB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;EAChD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;EACjD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACrD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACtD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAClE,GAAG;EACH,EAAE,cAAc,CAAC,IAAI,EAAE;EACvB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;EACpC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;EACzD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;EAC1D,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EAC9D,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EAC/D,MAAM,IAAI,CAAC,IAAI,EAAE;EACjB,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;EACpC,UAAU,IAAI,CAAC,gBAAgB,GAAG,IAAI,SAAS,EAAE,CAAC;EAClD,SAAS;EACT,QAAQ,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC;EACrC,OAAO;EACP,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;EAC7C,KAAK;EACL,IAAI,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACjD,GAAG;EACH,EAAE,aAAa,CAAC,KAAK,EAAE;EACvB,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;EACvD,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;EAC9B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;EAChC,IAAI,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;EACvC,IAAI,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE;EACvD,MAAM,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;EAC1C,MAAM,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE;EAC1D,QAAQ,OAAO,IAAI,CAAC;EACpB,OAAO;EACP,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,OAAO,CAAC,OAAO,EAAE;EACnB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACzB,GAAG;EACH,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;EAC/B,IAAI,MAAM,OAAO,GAAG,MAAM,YAAY,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EACvF,IAAI,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;EACpE,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;EACvB,GAAG;EACH,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;EACnB,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE;EACpB,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACzB,GAAG;EACH;;EC1GA,IAAI,iBAAiB,GAAG,sSAAsS;;ECA9T,IAAI,YAAY,GAAG,qdAAqd;;ECAxe,IAAI,cAAc,GAAG,m2BAAm2B;;ECAx3B,IAAI,YAAY,GAAG,scAAsc;;ECAzd,IAAI,cAAc,GAAG,6pBAA6pB;;ECOlrB,MAAM,OAAO,GAAG,IAAI,MAAM,EAAE,CAAC;EAC7B,MAAM,oBAAoB,SAAS,cAAc,CAAC;EAClD,EAAE,WAAW,CAAC,QAAQ,EAAE;EACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;EACpB,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC7C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;EAC7B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;EAC/B,GAAG;EACH,EAAE,aAAa,GAAG;EAClB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EACnC,IAAI,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC;EAC1D,IAAI,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;EAC/E,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;EAChK,GAAG;EACH,EAAE,MAAM,CAAC,EAAE,EAAE;EACb,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EACnC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC3B,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EACjC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;EACzD,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;EAC1D,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC9D,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC/D,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC,eAAe,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;EACzD,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC,eAAe,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;EACzD,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;EACxB,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;EACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;EACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;EAC5C,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;EAC5C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;EACtB,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC;EAC5B,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC;EACpC,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;EAChD,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC;EAC/C,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;EAC3B,IAAI,IAAI,QAAQ,GAAG,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;EACpH,IAAI,IAAI,QAAQ,EAAE;EAClB,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;EACtD,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,KAAK,EAAE;EACnD,UAAU,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;EAC/C,SAAS;EACT,OAAO,MAAM;EACb,QAAQ,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,KAAK,CAAC;EACzD,OAAO;EACP,KAAK;EACL,IAAI,MAAM,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;EAC9D,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;EACxB,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;EACzB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;EACxB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;EACzB,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;EAC9F,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;EACrB,IAAI,IAAI,QAAQ,EAAE;EAClB,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;EACnC,KAAK,MAAM;EACX,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC5D,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC;EACnD,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;EACrD,KAAK;EACL,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACvD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAGwC,qBAA2B,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;EACxH,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,GAAG,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAClF,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC;EACnC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACjC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAGE,gBAAsB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;EAC/E,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACnC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC7D,GAAG;EACH,CAAC;EACD,oBAAoB,CAAC,SAAS,GAAG;EACjC,EAAE,IAAI,EAAE,cAAc;EACtB,EAAE,IAAI,EAAE,aAAa,CAAC,cAAc;EACpC,CAAC,CAAC;AACF1C,cAAU,CAAC,GAAG,CAAC,oBAAoB,CAAC;;ECjFpC,MAAM,cAAc,CAAC;EACrB,EAAE,WAAW,GAAG;EAChB,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EACnB,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EACnB,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EACnB,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;EACtB,IAAI,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;EAC5B,GAAG;EACH;;ECPA,MAAM,UAAU,CAAC;EACjB,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE;EACpB,IAAI,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;EACrE,GAAG;EACH,EAAE,OAAO,KAAK,CAAC,GAAG,EAAE;EACpB,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;EAC/C,IAAI,MAAM,OAAO,GAAG;EACpB,MAAM,IAAI,EAAE,EAAE;EACd,MAAM,MAAM,EAAE,EAAE;EAChB,MAAM,IAAI,EAAE,EAAE;EACd,MAAM,IAAI,EAAE,EAAE;EACd,MAAM,KAAK,EAAE,EAAE;EACf,MAAM,OAAO,EAAE,EAAE;EACjB,MAAM,QAAQ,EAAE,EAAE;EAClB,MAAM,aAAa,EAAE,EAAE;EACvB,KAAK,CAAC;EACN,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;EAC3B,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;EAClD,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;EAC/E,MAAM,MAAM,QAAQ,GAAG,EAAE,CAAC;EAC1B,MAAM,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE;EACtC,QAAQ,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnD,QAAQ,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC7B,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;EACrD,QAAQ,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;EAChD,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,UAAU,CAAC;EAChE,QAAQ,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EAC9B,OAAO;EACP,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EACnC,KAAK;EACL,IAAI,MAAM,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;EACtC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;EAClD,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;EACrB,MAAM,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;EACnC,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;EACxD,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;EACjD,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;EAClD,MAAM,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;EAC/B,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;EACrB,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;EAClD,MAAM,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;EAC/B,MAAM,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;EACnC,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EAC7B,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EAC7B,MAAM,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;EACrC,MAAM,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;EACvC,MAAM,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;EACzC,MAAM,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;EACzC,MAAM,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;EAC3C,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;EAC3D,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EACxC,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;EAC1C,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;EAC1C,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;EAClE,MAAM,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC;EACnD,MAAM,SAAS,EAAE,EAAE,CAAC,SAAS;EAC7B,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH;;EChEA,MAAM,SAAS,CAAC;EAChB,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE;EACpB,IAAI,OAAO,IAAI,YAAY,WAAW,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;EACzJ,GAAG;EACH,EAAE,OAAO,KAAK,CAAC,GAAG,EAAE;EACpB,IAAI,MAAM,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;EACtC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;EAClD,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;EACtD,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;EAClD,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;EAClD,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;EACxD,IAAI,MAAM,aAAa,GAAG,GAAG,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;EACpE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;EACrB,QAAQ,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;EAC1C,QAAQ,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;EACxD,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;EACvB,QAAQ,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;EACtE,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;EACrB,QAAQ,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;EACzD,QAAQ,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;EAC1C,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;EACrB,QAAQ,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;EACnD,QAAQ,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;EAC5D,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;EACjD,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;EACjD,QAAQ,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;EACzD,QAAQ,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;EAC3D,QAAQ,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;EAC7D,QAAQ,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;EAC7D,QAAQ,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;EAC/D,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC7C,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;EACxB,QAAQ,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;EAC7D,QAAQ,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;EAC/D,QAAQ,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;EAC/D,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACnD,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;EAC9B,QAAQ,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC;EAC7D,QAAQ,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;EACnF,OAAO,CAAC,CAAC;EACT,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH;;EC1DA,MAAM,eAAe,CAAC;EACtB,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE;EACpB,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;EAC7D,MAAM,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;EAC/E,MAAM,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACjC,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,OAAO,KAAK,CAAC,MAAM,EAAE;EACvB,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;EAC/E,IAAI,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAChC,GAAG;EACH;;ECPA,MAAM,OAAO,GAAG;EAChB,EAAE,UAAU;EACZ,EAAE,SAAS;EACX,EAAE,eAAe;EACjB,CAAC,CAAC;EACF,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAChC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3C,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;EAC/B,MAAM,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;EACxB,KAAK;EACL,GAAG;EACH,EAAE,OAAO,IAAI,CAAC;EACd;;ECjBA,SAAS,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE;EAC/E,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;EAC/B,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;EACjC,IAAI,OAAO,SAAS,CAAC;EACrB,GAAG,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;EACrC,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC;EACf,EAAE,MAAM,oBAAoB,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC;EAC/E,EAAE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;EACrC,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,UAAU,GAAG,oBAAoB,GAAG,OAAO,GAAG,CAAC,CAAC;EAC/E,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,oBAAoB,GAAG,OAAO,GAAG,CAAC,CAAC;EACjF,EAAE,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;EACjC,EAAE,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;EAC5D,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;EACjC,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;EAC1C,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;EAC9C,KAAK;EACL,GAAG;EACH,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7B,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAC/B,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EAC7C,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC5B,EAAE,IAAI,KAAK,CAAC,gBAAgB,KAAK,aAAa,CAAC,eAAe,EAAE;EAChE,IAAI,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;EAC7F,IAAI,IAAI,iBAAiB,GAAG,CAAC,CAAC;EAC9B,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;EAC/E,IAAI,MAAM,kBAAkB,GAAG,UAAU,GAAG,MAAM,CAAC;EACnD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3C,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;EACjD,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC5C,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC;EACzB,QAAQ,IAAI,OAAO,iBAAiB,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;EACtD,UAAU,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;EAC1C,SAAS,MAAM;EACf,UAAU,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;EACrC,SAAS;EACT,QAAQ,MAAM,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,kBAAkB,CAAC;EAChF,QAAQ,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;EAClE,QAAQ,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;EAC/C,QAAQ,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACpD,QAAQ,iBAAiB,GAAG,WAAW,CAAC;EACxC,OAAO;EACP,KAAK;EACL,GAAG,MAAM;EACT,IAAI,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;EAC9F,IAAI,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EAC5C,IAAI,IAAI,gBAAgB,GAAG,CAAC,CAAC;EAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,MAAM,IAAI,IAAI,CAAC;EACf,MAAM,IAAI,OAAO,iBAAiB,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;EACpD,QAAQ,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;EACpC,OAAO,MAAM;EACb,QAAQ,IAAI,GAAG,gBAAgB,GAAG,eAAe,CAAC;EAClD,OAAO;EACP,MAAM,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3C,MAAM,gBAAgB,EAAE,CAAC;EACzB,KAAK;EACL,GAAG;EACH,EAAE,OAAO,QAAQ,CAAC;EAClB;;EC5DA,SAAS,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE;EACtE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;EAC5B,EAAE,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;EAChD,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1B,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;EACxC,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;EACvC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;EAC1C,EAAE,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;EACtC,EAAE,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC;EAC5C,EAAE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;EAC5C,EAAE,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;EACpC,EAAE,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;EACxC,EAAE,OAAO,CAAC,SAAS,GAAG,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;EAC7F,EAAE,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;EACrC,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;EACxB,IAAI,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;EAClD,IAAI,MAAM,GAAG,GAAGuC,OAAa,CAAC,OAAO,eAAe,KAAK,QAAQ,GAAG,eAAe,GAAGM,UAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;EACzH,IAAI,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC;EAC7D,IAAI,MAAM,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,GAAG,UAAU,CAAC;EACrE,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;EAC3G,IAAI,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC;EACxC,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,kBAAkB,CAAC;EACjF,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,kBAAkB,CAAC;EACjF,GAAG,MAAM;EACT,IAAI,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC;EAClC,IAAI,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;EAC3B,IAAI,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;EAC9B,IAAI,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;EAC9B,GAAG;EACH,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,eAAe,EAAE;EAC7C,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;EACnF,GAAG;EACH,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE;EAClB,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;EACjF,GAAG;EACH,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACzC,EAAE,OAAO,CAAC,SAAS,GAAG,kBAAkB,CAAC;EACzC;;ECxCA,SAAS,qBAAqB,CAAC,IAAI,EAAE;EACrC,EAAE,OAAO,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;EACxD;;ECAA,SAAS,iBAAiB,CAAC,KAAK,EAAE;EAClC,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;EACjC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;EACpB,GAAG;EACH,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;EACpB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChD,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC1B,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;EAC7B,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;EAC7B,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,8DAA8D,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACzG,OAAO;EACP,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EAC9C,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EAC5C,MAAM,IAAI,OAAO,GAAG,SAAS,EAAE;EAC/B,QAAQ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;EAClE,OAAO;EACP,MAAM,KAAK,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;EAC7D,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;EAC7C,OAAO;EACP,KAAK,MAAM;EACX,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;EAClD,KAAK;EACL,GAAG;EACH,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;EAC3B,IAAI,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;EAC1E,GAAG;EACH,EAAE,OAAO,MAAM,CAAC;EAChB;;EC7BA,SAAS,eAAe,CAAC,GAAG,EAAE;EAC9B,EAAE,OAAO,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EAClE;;ECOA,MAAM,WAAW,GAAG,MAAM;EAC1B,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE;EAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;EAC7B,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;EACjC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;EAC7B,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;EAC/C,IAAI,MAAM,GAAG,GAAGV,kBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACpD,IAAI,MAAM,YAAY,GAAG,EAAE,CAAC;EAC5B,IAAI,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;EACtC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC1B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;EAC9C,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;EACpB,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;EACrC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/C,MAAM,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACxC,MAAM,YAAY,CAAC,EAAE,CAAC,GAAG,QAAQ,YAAY,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;EAClF,MAAM,IAAI,aAAa,EAAE,SAAS,IAAI,aAAa,CAAC,SAAS,KAAK,MAAM,EAAE;EAC1E,QAAQ,YAAY,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,sBAAsB,CAAC;EACpF,QAAQ,YAAY,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC;EAC/D,OAAO;EACP,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/C,MAAM,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC/C,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC7E,MAAM,CAAC,IAAI,GAAG,CAAC;EACf,MAAM,CAAC,IAAI,GAAG,CAAC;EACf,MAAM,KAAK,IAAI,GAAG,CAAC;EACnB,MAAM,MAAM,IAAI,GAAG,CAAC;EACpB,MAAM,OAAO,IAAI,GAAG,CAAC;EACrB,MAAM,OAAO,IAAI,GAAG,CAAC;EACrB,MAAM,QAAQ,IAAI,GAAG,CAAC;EACtB,MAAM,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;EAC9H,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;EACvB,QAAQ,OAAO,EAAE,OAAO;EACxB,QAAQ,OAAO,EAAE,OAAO;EACxB,QAAQ,QAAQ,EAAE,QAAQ;EAC1B,QAAQ,OAAO,EAAE,EAAE;EACnB,QAAQ,OAAO,EAAE,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC;EACnE,QAAQ,IAAI,EAAE,KAAK;EACnB,OAAO,CAAC;EACR,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAClD,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACtD,MAAM,KAAK,IAAI,GAAG,CAAC;EACnB,MAAM,MAAM,IAAI,GAAG,CAAC;EACpB,MAAM,MAAM,IAAI,GAAG,CAAC;EACpB,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;EAC9B,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;EACnD,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,kBAAkB,GAAG,aAAa,EAAE,aAAa,CAAC;EAC3D,IAAI,IAAI,CAAC,iBAAiB,GAAG,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC;EAC/E,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,IAAI,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;EACjC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;EACvC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;EACpC,KAAK;EACL,IAAI,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;EACxC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;EAC9B,QAAQ,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC5C,OAAO;EACP,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;EACnC,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EAC7B,GAAG;EACH,EAAE,OAAO,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE;EAC/C,IAAI,IAAI,QAAQ,CAAC;EACjB,IAAI,IAAI,IAAI,YAAY,cAAc,EAAE;EACxC,MAAM,QAAQ,GAAG,IAAI,CAAC;EACtB,KAAK,MAAM;EACX,MAAM,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;EAC5C,MAAM,IAAI,CAAC,MAAM,EAAE;EACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;EAC9D,OAAO;EACP,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACpC,KAAK;EACL,IAAI,IAAI,QAAQ,YAAY,OAAO,EAAE;EACrC,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;EAC5B,KAAK;EACL,IAAI,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;EACnE,IAAI,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;EAC5C,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,EAAE,OAAO,SAAS,CAAC,IAAI,EAAE;EACzB,IAAI,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC7C,IAAI,IAAI,CAAC,IAAI,EAAE;EACf,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACvD,KAAK;EACL,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;EACnB,IAAI,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EACvC,GAAG;EACH,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE;EACxC,IAAI,IAAI,CAAC,IAAI,EAAE;EACf,MAAM,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;EACnE,KAAK;EACL,IAAI,MAAM;EACV,MAAM,KAAK;EACX,MAAM,OAAO;EACb,MAAM,UAAU;EAChB,MAAM,YAAY;EAClB,MAAM,aAAa;EACnB,MAAM,GAAG,WAAW;EACpB,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;EAC/D,IAAI,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;EAC/C,IAAI,MAAM,KAAK,GAAG,SAAS,YAAY,SAAS,GAAG,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;EACxF,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC;EACnC,IAAI,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;EAC1C,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;EACvB,MAAM,IAAI,EAAE,KAAK,CAAC,UAAU;EAC5B,MAAM,IAAI,EAAE,KAAK,CAAC,QAAQ;EAC1B,KAAK,CAAC;EACN,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;EACzB,MAAM,UAAU,EAAE,KAAK,CAAC,QAAQ;EAChC,KAAK,CAAC;EACN,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC;EACtB,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC;EACtB,IAAI,IAAI,MAAM,CAAC;EACf,IAAI,IAAI,OAAO,CAAC;EAChB,IAAI,IAAI,WAAW,CAAC;EACpB,IAAI,IAAI,aAAa,GAAG,CAAC,CAAC;EAC1B,IAAI,MAAM,YAAY,GAAG,EAAE,CAAC;EAC5B,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;EACxB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/C,MAAM,IAAI,CAAC,MAAM,EAAE;EACnB,QAAQ,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;EACjD,QAAQ,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC;EACpC,QAAQ,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC;EACtC,QAAQ,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EAC1C,QAAQ,WAAW,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;EAC9E,QAAQ,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EACvC,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;EAChD,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;EAC3B,UAAU,EAAE,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;EACjC,UAAU,IAAI,EAAE,EAAE;EAClB,SAAS,CAAC,CAAC;EACX,OAAO;EACP,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EACrC,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;EAC/E,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;EAClC,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;EAC/C,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC;EAC1F,MAAM,IAAI,SAAS,IAAI,aAAa,GAAG,MAAM,GAAG,UAAU,EAAE;EAC5D,QAAQ,IAAI,SAAS,KAAK,CAAC,EAAE;EAC7B,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,2BAA2B,EAAE,aAAa,CAAC,8BAA8B,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;EACjL,SAAS;EACT,QAAQ,EAAE,CAAC,CAAC;EACZ,QAAQ,MAAM,GAAG,IAAI,CAAC;EACtB,QAAQ,OAAO,GAAG,IAAI,CAAC;EACvB,QAAQ,WAAW,GAAG,IAAI,CAAC;EAC3B,QAAQ,SAAS,GAAG,CAAC,CAAC;EACtB,QAAQ,SAAS,GAAG,CAAC,CAAC;EACtB,QAAQ,aAAa,GAAG,CAAC,CAAC;EAC1B,QAAQ,SAAS;EACjB,OAAO;EACP,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;EACvF,MAAM,IAAI,iBAAiB,GAAG,UAAU,GAAG,SAAS,IAAI,SAAS,EAAE;EACnE,QAAQ,IAAI,SAAS,KAAK,CAAC,EAAE;EAC7B,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,YAAY,CAAC,8BAA8B,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;EAC/K,SAAS;EACT,QAAQ,EAAE,CAAC,CAAC;EACZ,QAAQ,SAAS,IAAI,aAAa,GAAG,UAAU,CAAC;EAChD,QAAQ,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACzC,QAAQ,SAAS,GAAG,CAAC,CAAC;EACtB,QAAQ,aAAa,GAAG,CAAC,CAAC;EAC1B,QAAQ,SAAS;EACjB,OAAO;EACP,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;EACnF,MAAM,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC/C,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;EACzB,QAAQ,EAAE;EACV,QAAQ,IAAI,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;EACjC,QAAQ,CAAC,EAAE,SAAS,GAAG,UAAU;EACjC,QAAQ,CAAC,EAAE,SAAS,GAAG,UAAU;EACjC,QAAQ,KAAK,EAAE,iBAAiB;EAChC,QAAQ,MAAM;EACd,QAAQ,OAAO,EAAE,CAAC;EAClB,QAAQ,OAAO,EAAE,CAAC;EAClB,QAAQ,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;EACnI,OAAO,CAAC,CAAC;EACT,MAAM,SAAS,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,OAAO,IAAI,UAAU,CAAC;EAClE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACvC,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAC1D,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EACjC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EACpC,QAAQ,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EACpC,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;EACpD,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;EACrD,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC;EAChE,QAAQ,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;EACzC,QAAQ,IAAI,MAAM,EAAE;EACpB,UAAU,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;EAChC,YAAY,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC;EACzC,YAAY,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;EAC3C,YAAY,MAAM;EAClB,WAAW,CAAC,CAAC;EACb,SAAS;EACT,OAAO;EACP,KAAK;EACL,IAAI,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;EAC3D,IAAI,IAAI,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;EAChD,MAAM,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAClC,KAAK;EACL,IAAI,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;EACvC,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,CAAC,CAAC;AACC,MAAC,UAAU,GAAG,YAAY;EAC7B,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;EACjD,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;EAClC,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;EACpE,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;EAChC,UAAU,CAAC,cAAc,GAAG;EAC5B,EAAE,UAAU,EAAE,CAAC;EACf,EAAE,YAAY,EAAE,GAAG;EACnB,EAAE,aAAa,EAAE,GAAG;EACpB,EAAE,OAAO,EAAE,CAAC;EACZ,EAAE,KAAK,EAAE,WAAW,CAAC,YAAY;EACjC,CAAC,CAAC;EACF,UAAU,CAAC,SAAS,GAAG,EAAE;;ECvOzB,IAAI,QAAQ,GAAG,k+BAAk+B;;ECAj/B,IAAI,QAAQ,GAAG,gdAAgd;;ECU/d,MAAM,+BAA+B,GAAG,EAAE,CAAC;EAC3C,MAAM,4BAA4B,GAAG,EAAE,CAAC;EACxC,MAAM,kBAAkB,GAAG,EAAE,CAAC;EAC9B,MAAM,WAAW,GAAG,cAAc,SAAS,CAAC;EAC5C,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE;EAChC,IAAI,KAAK,EAAE,CAAC;EACZ,IAAI,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;EAC1B,IAAI,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;EAC7H,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;EACzC,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1D,KAAK;EACL,IAAI,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;EACnC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;EAC9B,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;EAC9B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;EAC9B,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;EACxC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,MAAM;EAC7C,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACxB,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;EAC9C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC;EAC3C,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;EAChC,IAAI,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;EAC5B,GAAG;EACH,EAAE,UAAU,GAAG;EACf,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACtD,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EACnC,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;EACvC,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;EAC5B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;EACrB,IAAI,MAAM,UAAU,GAAG,EAAE,CAAC;EAC1B,IAAI,MAAM,UAAU,GAAG,EAAE,CAAC;EAC1B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;EACjE,IAAI,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;EACnD,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;EAC3D,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,KAAK,MAAM,GAAG,+BAA+B,GAAG,4BAA4B,CAAC;EAChI,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC;EAC5B,IAAI,IAAI,aAAa,GAAG,CAAC,CAAC;EAC1B,IAAI,IAAI,YAAY,GAAG,CAAC,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;EACjB,IAAI,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;EAC1B,IAAI,IAAI,cAAc,GAAG,CAAC,CAAC;EAC3B,IAAI,IAAI,aAAa,GAAG,CAAC,CAAC;EAC1B,IAAI,IAAI,aAAa,GAAG,CAAC,CAAC;EAC1B,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;EACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAChD,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;EACjC,MAAM,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;EAC7C,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;EAC/B,QAAQ,YAAY,GAAG,CAAC,CAAC;EACzB,QAAQ,cAAc,GAAG,aAAa,CAAC;EACvC,QAAQ,UAAU,EAAE,CAAC;EACrB,OAAO;EACP,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;EAC1C,QAAQ,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACvC,QAAQ,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAC5B,QAAQ,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;EAC7D,QAAQ,EAAE,IAAI,CAAC;EACf,QAAQ,EAAE,aAAa,CAAC;EACxB,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EAClB,QAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC;EACjC,QAAQ,YAAY,GAAG,IAAI,CAAC;EAC5B,QAAQ,UAAU,GAAG,CAAC,CAAC;EACvB,QAAQ,SAAS;EACjB,OAAO;EACP,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC5C,MAAM,IAAI,CAAC,QAAQ,EAAE;EACrB,QAAQ,SAAS;EACjB,OAAO;EACP,MAAM,IAAI,YAAY,IAAI,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;EAC1D,QAAQ,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;EAChD,OAAO;EACP,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI;EACzD,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK;EAC9B,QAAQ,IAAI,EAAE,CAAC;EACf,QAAQ,QAAQ,EAAE,CAAC;EACnB,QAAQ,UAAU,EAAE,CAAC;EACrB,QAAQ,QAAQ,EAAE,IAAI,KAAK,EAAE;EAC7B,OAAO,CAAC;EACR,MAAM,cAAc,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;EAChD,MAAM,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC;EACjC,MAAM,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;EACzC,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;EACrF,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;EAC3D,MAAM,cAAc,CAAC,UAAU,GAAG,UAAU,CAAC;EAC7C,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;EACjC,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC9H,MAAM,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;EACvD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;EAC1F,MAAM,YAAY,GAAG,QAAQ,CAAC;EAC9B,MAAM,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE;EACnE,QAAQ,EAAE,aAAa,CAAC;EACxB,QAAQP,WAAiB,CAAC,KAAK,EAAE,CAAC,GAAG,YAAY,GAAG,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;EACzF,QAAQ,CAAC,GAAG,YAAY,CAAC;EACzB,QAAQ,YAAY,GAAG,CAAC,CAAC,CAAC;EAC1B,QAAQ,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;EACxC,QAAQ,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EACnF,QAAQ,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;EAC9D,QAAQ,IAAI,EAAE,CAAC;EACf,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EAClB,QAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC;EACjC,QAAQ,YAAY,GAAG,IAAI,CAAC;EAC5B,QAAQ,UAAU,GAAG,CAAC,CAAC;EACvB,OAAO;EACP,KAAK;EACL,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACvD,IAAI,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE;EAChD,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;EACnC,QAAQ,aAAa,GAAG,cAAc,CAAC;EACvC,OAAO;EACP,MAAM,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACrC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;EAC3D,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1B,KAAK;EACL,IAAI,MAAM,gBAAgB,GAAG,EAAE,CAAC;EAChC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;EACpC,MAAM,IAAI,WAAW,GAAG,CAAC,CAAC;EAC1B,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;EACnC,QAAQ,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;EACnD,OAAO,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;EAC3C,QAAQ,WAAW,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EACzD,OAAO,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;EAC5C,QAAQ,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;EAC7F,OAAO;EACP,MAAM,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EACzC,KAAK;EACL,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;EAClC,IAAI,MAAM,aAAa,GAAG,EAAE,CAAC;EAC7B,IAAI,MAAM,gBAAgB,GAAG,EAAE,CAAC;EAChC,IAAI,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC;EAC1D,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,CAAC;EAClD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;EACvC,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;EACvC,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC;EACrD,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE;EAC1C,QAAQ,IAAI,YAAY,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC;EAClD,QAAQ,IAAI,CAAC,YAAY,EAAE;EAC3B,UAAU,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;EAC9C,UAAU,IAAI,QAAQ,CAAC;EACvB,UAAU,IAAI,aAAa,CAAC;EAC5B,UAAU,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM,EAAE;EACjD,YAAY,QAAQ,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EACvD,YAAY,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC;EAC/C,WAAW,MAAM;EACjB,YAAY,QAAQ,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;EAChI,YAAY,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC;EACnD,WAAW;EACX,UAAU,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;EACpD,UAAU,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;EACzC,UAAU,YAAY,GAAG;EACzB,YAAY,KAAK,EAAE,CAAC;EACpB,YAAY,UAAU,EAAE,CAAC;EACzB,YAAY,WAAW,EAAE,CAAC;EAC1B,YAAY,QAAQ,EAAE,CAAC;EACvB,YAAY,KAAK,EAAE,CAAC;EACpB,YAAY,IAAI;EAChB,YAAY,QAAQ,EAAE,IAAI;EAC1B,YAAY,GAAG,EAAE,IAAI;EACrB,YAAY,OAAO,EAAE,IAAI;EACzB,WAAW,CAAC;EACZ,SAAS;EACT,QAAQ,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC;EAC/B,QAAQ,YAAY,CAAC,UAAU,GAAG,CAAC,CAAC;EACpC,QAAQ,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC;EACrC,QAAQ,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC;EAClC,QAAQ,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC;EAC/B,QAAQ,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;EACvC,QAAQ,aAAa,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC,cAAc,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;EAC1G,QAAQ,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;EAClE,QAAQ,YAAY,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;EAC5C,QAAQ,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EAC5C,QAAQ,aAAa,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC;EACrD,OAAO;EACP,MAAM,aAAa,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;EAC5C,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzD,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE;EAC9D,QAAQ,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EACtD,OAAO;EACP,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACtD,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;EACpD,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChD,OAAO;EACP,KAAK;EACL,IAAI,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC;EACjD,IAAI,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE;EACnC,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;EAC5C,MAAM,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;EACvC,MAAM,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;EACjH,QAAQ,YAAY,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;EAChE,QAAQ,YAAY,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;EAC3D,QAAQ,YAAY,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC1D,OAAO,MAAM;EACb,QAAQ,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;EAC1C,QAAQ,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;EAC/C,QAAQ,KAAK,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;EAClE,UAAU,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EAC3B,SAAS;EACT,OAAO;EACP,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;EACzC,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;EACvC,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC5B,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;EACrH,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;EAC7B,QAAQ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EACpC,OAAO;EACP,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;EAClC,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC;EAC3C,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EACnC,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;EAC9D,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;EACzC,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;EACtC,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;EACrC,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;EACtD,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;EACtD,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;EACtD,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;EACtD,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;EACtD,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;EACtD,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;EAC9C,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;EAC9C,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;EAC3E,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;EAC9C,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;EAC3E,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;EAC5E,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;EAC9C,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;EAC5E,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EAClD,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EAClD,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EAClD,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EAClD,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EAClD,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EAClD,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EAClD,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;EAClD,KAAK;EACL,IAAI,IAAI,CAAC,UAAU,GAAG,YAAY,GAAG,KAAK,CAAC;EAC3C,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC;EACzD,IAAI,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE;EACnC,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;EAC5C,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;EACtD,QAAQ,IAAI,WAAW,GAAG,CAAC,CAAC;EAC5B,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EAC9D,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EAC/D,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;EACxD,UAAU,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,aAAa,CAAC;EAChE,UAAU,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,aAAa,CAAC;EAChE,UAAU,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,aAAa,CAAC;EAChE,UAAU,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,aAAa,CAAC;EAChE,UAAU,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,aAAa,CAAC;EAChE,UAAU,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,aAAa,CAAC;EAChE,UAAU,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,aAAa,CAAC;EAChE,UAAU,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,aAAa,CAAC;EAChE,SAAS;EACT,OAAO;EACP,MAAM,IAAI,CAAC,cAAc,GAAG,aAAa,GAAG,KAAK,CAAC;EAClD,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;EACnF,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;EAClF,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;EAChE,MAAM,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC;EAChD,MAAM,aAAa,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC;EAC5C,MAAM,WAAW,CAAC,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC;EAC9C,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC;EAC5B,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC;EAC7B,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;EAC3B,KAAK;EACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3C,MAAM,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACxC,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,GAAG;EACH,EAAE,eAAe,GAAG;EACpB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpB,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;EACpC,GAAG;EACH,EAAE,OAAO,CAAC,QAAQ,EAAE;EACpB,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,UAAU,EAAE;EAC1E,MAAM,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC;EAC7C,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACxB,KAAK;EACL,IAAI,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACjG,IAAI,IAAI,iBAAiB,KAAK,MAAM,EAAE;EACtC,MAAM,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;EACjD,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC1C,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC1C,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EAC3D,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EAC7C,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;EACnD,MAAM,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,oBAAoB,EAAE;EACpD,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,UAAU,GAAG,kBAAkB,GAAG,SAAS,GAAG,UAAU,CAAC;EACrG,OAAO;EACP,KAAK;EACL,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;EAC5B,GAAG;EACH,EAAE,cAAc,GAAG;EACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpB,IAAI,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC;EAClC,GAAG;EACH,EAAE,QAAQ,GAAG;EACb,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACtD,IAAI,IAAI,CAAC,IAAI,EAAE;EACf,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EAChE,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;EAC7B,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACxB,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;EACpB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;EACxB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;EACtB,GAAG;EACH,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;EAClB,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;EAC5B,MAAM,OAAO;EACb,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/D,MAAM,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;EACrD,KAAK;EACL,GAAG;EACH,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;EACvB,GAAG;EACH,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;EACnB,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;EAC/B,MAAM,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EAC1B,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACxB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;EAC1B,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;EACtB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;EACtC,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACvD,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;EAClC,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC7B,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACxB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;EACvE,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;EACtB,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;EAClC,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC7B,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACxB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;EACxB,GAAG;EACH,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE;EACpB,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;EACnC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAC9B,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EACnC,KAAK;EACL,GAAG;EACH,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;EACtB,GAAG;EACH,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;EACjB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;EAChE,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;EAC7B,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,GAAG;EACH,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;EAC1B,GAAG;EACH,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;EACtB,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;EAClC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,GAAG;EACH,EAAE,IAAI,aAAa,GAAG;EACtB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC;EAC/B,GAAG;EACH,EAAE,IAAI,SAAS,GAAG;EAClB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,aAAa,GAAG;EACtB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC;EAC/B,GAAG;EACH,EAAE,IAAI,aAAa,CAAC,KAAK,EAAE;EAC3B,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;EACvC,MAAM,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;EAClC,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACxB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,WAAW,GAAG;EACpB,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC;EAC7B,GAAG;EACH,EAAE,IAAI,WAAW,CAAC,KAAK,EAAE;EACzB,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE;EACrC,MAAM,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAChC,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACxB,KAAK;EACL,GAAG;EACH,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,UAAU,CAAC,KAAK,EAAE;EACxB,IAAI,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;EACjC,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;EACpC,MAAM,OAAO;EACb,KAAK;EACL,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;EAC7B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,GAAG;EACH,EAAE,OAAO,CAAC,OAAO,EAAE;EACnB,IAAI,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;EACnC,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACtD,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,KAAK,MAAM,GAAG,+BAA+B,GAAG,4BAA4B,CAAC;EAChI,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;EACxD,IAAI,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,oBAAoB,EAAE;EAC1D,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;EACnC,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;EAC1G,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;EACxC,KAAK,CAAC,CAAC;EACP,IAAI,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE;EACpC,MAAM,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;EACxC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;EACxB,MAAM,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC;EAC/B,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAC3B,GAAG;EACH,CAAC,CAAC;AACC,MAAC,UAAU,GAAG,YAAY;EAC7B,UAAU,CAAC,aAAa,GAAG;EAC3B,EAAE,KAAK,EAAE,MAAM;EACf,EAAE,IAAI,EAAE,QAAQ;EAChB,EAAE,QAAQ,EAAE,CAAC;EACb,EAAE,aAAa,EAAE,CAAC;EAClB,CAAC;;ECjdD,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACpC,QAAC,cAAc,GAAG;EACvB,EAAE,SAAS,EAAE;EACb,IAAI,IAAI,EAAE,aAAa,CAAC,UAAU;EAClC,IAAI,QAAQ,EAAE,oBAAoB,CAAC,MAAM;EACzC,GAAG;EACH,EAAE,IAAI,CAAC,GAAG,EAAE;EACZ,IAAI,OAAO,eAAe,CAAC,QAAQ,CAACK,IAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;EAC7D,GAAG;EACH,EAAE,MAAM,SAAS,CAAC,IAAI,EAAE;EACxB,IAAI,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/D,GAAG;EACH,EAAE,MAAM,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;EACnC,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACrG,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;EACzB,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;EACrC,IAAI,MAAM,WAAW,GAAG,EAAE,CAAC;EAC3B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC3C,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;EACrC,MAAM,MAAM,SAAS,GAAGA,IAAU,CAAC,IAAI,CAACA,IAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;EAC3E,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAClC,KAAK;EACL,IAAI,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EAC1D,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;EACnE,IAAI,OAAO,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;EACxD,GAAG;EACH,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE;EAC5B,IAAI,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACvD,IAAI,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;EAC3B,GAAG;EACH,EAAE,MAAM,CAAC,UAAU,EAAE;EACrB,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;EACzB,GAAG;EACH,EAAE;AACFjC,cAAU,CAAC,GAAG,CAAC,cAAc,CAAC;;AChClB,QAAC,OAAO,GAAG;EACvB,EAAE,WAAW;EACb,EAAE,UAAU;EACZ,EAAE,cAAc;EAChB,EAAE,iBAAiB;EACnB,EAAE,kBAAkB;EACpB,EAAE,UAAU;EACZ,EAAE,WAAW;EACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/PongGame/wwwroot/lib/pixi/dist/pixi.min.js b/PongGame/wwwroot/lib/pixi/dist/pixi.min.js new file mode 100644 index 0000000..5a20086 --- /dev/null +++ b/PongGame/wwwroot/lib/pixi/dist/pixi.min.js @@ -0,0 +1,1116 @@ +var wp=Object.defineProperty,Sp=Object.defineProperties;var Ap=Object.getOwnPropertyDescriptors;var Es=Object.getOwnPropertySymbols;var Ka=Object.prototype.hasOwnProperty,Za=Object.prototype.propertyIsEnumerable;var qa=(m,J,_t)=>J in m?wp(m,J,{enumerable:!0,configurable:!0,writable:!0,value:_t}):m[J]=_t,Zt=(m,J)=>{for(var _t in J||(J={}))Ka.call(J,_t)&&qa(m,_t,J[_t]);if(Es)for(var _t of Es(J))Za.call(J,_t)&&qa(m,_t,J[_t]);return m},mn=(m,J)=>Sp(m,Ap(J));var _n=(m,J)=>{var _t={};for(var xt in m)Ka.call(m,xt)&&J.indexOf(xt)<0&&(_t[xt]=m[xt]);if(m!=null&&Es)for(var xt of Es(m))J.indexOf(xt)<0&&Za.call(m,xt)&&(_t[xt]=m[xt]);return _t};/*! + * pixi.js - v7.0.2 + * Compiled Mon, 31 Oct 2022 15:20:53 UTC + * + * pixi.js is licensed under the MIT License. + * http://www.opensource.org/licenses/mit-license + */var PIXI=function(m){"use strict";var J=(i=>(i[i.WEBGL_LEGACY=0]="WEBGL_LEGACY",i[i.WEBGL=1]="WEBGL",i[i.WEBGL2=2]="WEBGL2",i))(J||{}),_t=(i=>(i[i.UNKNOWN=0]="UNKNOWN",i[i.WEBGL=1]="WEBGL",i[i.CANVAS=2]="CANVAS",i))(_t||{}),xt=(i=>(i[i.COLOR=16384]="COLOR",i[i.DEPTH=256]="DEPTH",i[i.STENCIL=1024]="STENCIL",i))(xt||{}),k=(i=>(i[i.NORMAL=0]="NORMAL",i[i.ADD=1]="ADD",i[i.MULTIPLY=2]="MULTIPLY",i[i.SCREEN=3]="SCREEN",i[i.OVERLAY=4]="OVERLAY",i[i.DARKEN=5]="DARKEN",i[i.LIGHTEN=6]="LIGHTEN",i[i.COLOR_DODGE=7]="COLOR_DODGE",i[i.COLOR_BURN=8]="COLOR_BURN",i[i.HARD_LIGHT=9]="HARD_LIGHT",i[i.SOFT_LIGHT=10]="SOFT_LIGHT",i[i.DIFFERENCE=11]="DIFFERENCE",i[i.EXCLUSION=12]="EXCLUSION",i[i.HUE=13]="HUE",i[i.SATURATION=14]="SATURATION",i[i.COLOR=15]="COLOR",i[i.LUMINOSITY=16]="LUMINOSITY",i[i.NORMAL_NPM=17]="NORMAL_NPM",i[i.ADD_NPM=18]="ADD_NPM",i[i.SCREEN_NPM=19]="SCREEN_NPM",i[i.NONE=20]="NONE",i[i.SRC_OVER=0]="SRC_OVER",i[i.SRC_IN=21]="SRC_IN",i[i.SRC_OUT=22]="SRC_OUT",i[i.SRC_ATOP=23]="SRC_ATOP",i[i.DST_OVER=24]="DST_OVER",i[i.DST_IN=25]="DST_IN",i[i.DST_OUT=26]="DST_OUT",i[i.DST_ATOP=27]="DST_ATOP",i[i.ERASE=26]="ERASE",i[i.SUBTRACT=28]="SUBTRACT",i[i.XOR=29]="XOR",i))(k||{}),Dt=(i=>(i[i.POINTS=0]="POINTS",i[i.LINES=1]="LINES",i[i.LINE_LOOP=2]="LINE_LOOP",i[i.LINE_STRIP=3]="LINE_STRIP",i[i.TRIANGLES=4]="TRIANGLES",i[i.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",i[i.TRIANGLE_FAN=6]="TRIANGLE_FAN",i))(Dt||{}),I=(i=>(i[i.RGBA=6408]="RGBA",i[i.RGB=6407]="RGB",i[i.RG=33319]="RG",i[i.RED=6403]="RED",i[i.RGBA_INTEGER=36249]="RGBA_INTEGER",i[i.RGB_INTEGER=36248]="RGB_INTEGER",i[i.RG_INTEGER=33320]="RG_INTEGER",i[i.RED_INTEGER=36244]="RED_INTEGER",i[i.ALPHA=6406]="ALPHA",i[i.LUMINANCE=6409]="LUMINANCE",i[i.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",i[i.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",i[i.DEPTH_STENCIL=34041]="DEPTH_STENCIL",i))(I||{}),de=(i=>(i[i.TEXTURE_2D=3553]="TEXTURE_2D",i[i.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",i[i.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",i[i.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",i[i.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",i[i.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",i[i.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",i[i.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",i[i.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",i))(de||{}),G=(i=>(i[i.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",i[i.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",i[i.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",i[i.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",i[i.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",i[i.UNSIGNED_INT=5125]="UNSIGNED_INT",i[i.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",i[i.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",i[i.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",i[i.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",i[i.BYTE=5120]="BYTE",i[i.SHORT=5122]="SHORT",i[i.INT=5124]="INT",i[i.FLOAT=5126]="FLOAT",i[i.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",i[i.HALF_FLOAT=36193]="HALF_FLOAT",i))(G||{}),Ei=(i=>(i[i.FLOAT=0]="FLOAT",i[i.INT=1]="INT",i[i.UINT=2]="UINT",i))(Ei||{}),Vt=(i=>(i[i.NEAREST=0]="NEAREST",i[i.LINEAR=1]="LINEAR",i))(Vt||{}),zt=(i=>(i[i.CLAMP=33071]="CLAMP",i[i.REPEAT=10497]="REPEAT",i[i.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",i))(zt||{}),Ft=(i=>(i[i.OFF=0]="OFF",i[i.POW2=1]="POW2",i[i.ON=2]="ON",i[i.ON_MANUAL=3]="ON_MANUAL",i))(Ft||{}),Rt=(i=>(i[i.NPM=0]="NPM",i[i.UNPACK=1]="UNPACK",i[i.PMA=2]="PMA",i[i.NO_PREMULTIPLIED_ALPHA=0]="NO_PREMULTIPLIED_ALPHA",i[i.PREMULTIPLY_ON_UPLOAD=1]="PREMULTIPLY_ON_UPLOAD",i[i.PREMULTIPLIED_ALPHA=2]="PREMULTIPLIED_ALPHA",i))(Rt||{}),Nt=(i=>(i[i.NO=0]="NO",i[i.YES=1]="YES",i[i.AUTO=2]="AUTO",i[i.BLEND=0]="BLEND",i[i.CLEAR=1]="CLEAR",i[i.BLIT=2]="BLIT",i))(Nt||{}),bi=(i=>(i[i.AUTO=0]="AUTO",i[i.MANUAL=1]="MANUAL",i))(bi||{}),wt=(i=>(i.LOW="lowp",i.MEDIUM="mediump",i.HIGH="highp",i))(wt||{}),ht=(i=>(i[i.NONE=0]="NONE",i[i.SCISSOR=1]="SCISSOR",i[i.STENCIL=2]="STENCIL",i[i.SPRITE=3]="SPRITE",i[i.COLOR=4]="COLOR",i))(ht||{}),gn=(i=>(i[i.RED=1]="RED",i[i.GREEN=2]="GREEN",i[i.BLUE=4]="BLUE",i[i.ALPHA=8]="ALPHA",i))(gn||{}),at=(i=>(i[i.NONE=0]="NONE",i[i.LOW=2]="LOW",i[i.MEDIUM=4]="MEDIUM",i[i.HIGH=8]="HIGH",i))(at||{}),Lt=(i=>(i[i.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",i[i.ARRAY_BUFFER=34962]="ARRAY_BUFFER",i[i.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",i))(Lt||{});const yn={createCanvas:(i,t)=>{const e=document.createElement("canvas");return e.width=i,e.height=t,e},getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>{var i;return(i=document.baseURI)!=null?i:window.location.href},getFontFaceSet:()=>document.fonts,fetch:(i,t)=>fetch(i,t)};var bs=/iPhone/i,vn=/iPod/i,xn=/iPad/i,Tn=/\biOS-universal(?:.+)Mac\b/i,ws=/\bAndroid(?:.+)Mobile\b/i,En=/Android/i,Ie=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,wi=/Silk/i,Qt=/Windows Phone/i,bn=/\bWindows(?:.+)ARM\b/i,wn=/BlackBerry/i,Sn=/BB10/i,An=/Opera Mini/i,Rn=/\b(CriOS|Chrome)(?:.+)Mobile/i,Cn=/Mobile(?:.+)Firefox\b/i,In=function(i){return typeof i!="undefined"&&i.platform==="MacIntel"&&typeof i.maxTouchPoints=="number"&&i.maxTouchPoints>1&&typeof MSStream=="undefined"};function Qa(i){return function(t){return t.test(i)}}function Ja(i){var t={userAgent:"",platform:"",maxTouchPoints:0};!i&&typeof navigator!="undefined"?t={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof i=="string"?t.userAgent=i:i&&i.userAgent&&(t={userAgent:i.userAgent,platform:i.platform,maxTouchPoints:i.maxTouchPoints||0});var e=t.userAgent,s=e.split("[FBAN");typeof s[1]!="undefined"&&(e=s[0]),s=e.split("Twitter"),typeof s[1]!="undefined"&&(e=s[0]);var r=Qa(e),n={apple:{phone:r(bs)&&!r(Qt),ipod:r(vn),tablet:!r(bs)&&(r(xn)||In(t))&&!r(Qt),universal:r(Tn),device:(r(bs)||r(vn)||r(xn)||r(Tn)||In(t))&&!r(Qt)},amazon:{phone:r(Ie),tablet:!r(Ie)&&r(wi),device:r(Ie)||r(wi)},android:{phone:!r(Qt)&&r(Ie)||!r(Qt)&&r(ws),tablet:!r(Qt)&&!r(Ie)&&!r(ws)&&(r(wi)||r(En)),device:!r(Qt)&&(r(Ie)||r(wi)||r(ws)||r(En))||r(/\bokhttp\b/i)},windows:{phone:r(Qt),tablet:r(bn),device:r(Qt)||r(bn)},other:{blackberry:r(wn),blackberry10:r(Sn),opera:r(An),firefox:r(Cn),chrome:r(Rn),device:r(wn)||r(Sn)||r(An)||r(Cn)||r(Rn)},any:!1,phone:!1,tablet:!1};return n.any=n.apple.device||n.android.device||n.windows.device||n.other.device,n.phone=n.apple.phone||n.android.phone||n.windows.phone,n.tablet=n.apple.tablet||n.android.tablet||n.windows.tablet,n}const Ot=Ja(globalThis.navigator);function th(){return!Ot.apple.device}function eh(i){let t=!0;if(Ot.tablet||Ot.phone){if(Ot.apple.device){const e=navigator.userAgent.match(/OS (\d+)_(\d+)?/);e&&parseInt(e[1],10)<11&&(t=!1)}if(Ot.android.device){const e=navigator.userAgent.match(/Android\s([0-9.]*)/);e&&parseInt(e[1],10)<7&&(t=!1)}}return t?i:4}const R={ADAPTER:yn,MIPMAP_TEXTURES:Ft.POW2,ANISOTROPIC_LEVEL:0,RESOLUTION:1,FILTER_RESOLUTION:1,FILTER_MULTISAMPLE:at.NONE,SPRITE_MAX_TEXTURES:eh(32),SPRITE_BATCH_SIZE:4096,RENDER_OPTIONS:{view:null,antialias:!1,autoDensity:!1,backgroundColor:0,backgroundAlpha:1,useContextAlpha:!0,clearBeforeRender:!0,preserveDrawingBuffer:!1,width:800,height:600,legacy:!1,hello:!1},GC_MODE:bi.AUTO,GC_MAX_IDLE:60*60,GC_MAX_CHECK_COUNT:60*10,WRAP_MODE:zt.CLAMP,SCALE_MODE:Vt.LINEAR,PRECISION_VERTEX:wt.HIGH,PRECISION_FRAGMENT:Ot.apple.device?wt.HIGH:wt.MEDIUM,CAN_UPLOAD_SAME_BUFFER:th(),CREATE_IMAGE_BITMAP:!1,ROUND_PIXELS:!1};R.PREFER_ENV=J.WEBGL2,R.STRICT_TEXTURE_CACHE=!1;var M=(i=>(i.Renderer="renderer",i.Application="application",i.RendererSystem="renderer-webgl-system",i.RendererPlugin="renderer-webgl-plugin",i.CanvasRendererSystem="renderer-canvas-system",i.CanvasRendererPlugin="renderer-canvas-plugin",i.Asset="asset",i.LoadParser="load-parser",i.ResolveParser="resolve-parser",i.CacheParser="cache-parser",i.DetectionParser="detection-parser",i))(M||{});const Pn=i=>{if(typeof i=="function"||typeof i=="object"&&i.extension){const t=typeof i.extension!="object"?{type:i.extension}:i.extension;i=mn(Zt({},t),{ref:i})}if(typeof i=="object")i=Zt({},i);else throw new Error("Invalid extension type");return typeof i.type=="string"&&(i.type=[i.type]),i},U={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...i){return i.map(Pn).forEach(t=>{t.type.forEach(e=>{var s,r;return(r=(s=this._removeHandlers)[e])==null?void 0:r.call(s,t)})}),this},add(...i){return i.map(Pn).forEach(t=>{t.type.forEach(e=>{const s=this._addHandlers,r=this._queue;s[e]?s[e](t):(r[e]=r[e]||[],r[e].push(t))})}),this},handle(i,t,e){const s=this._addHandlers,r=this._removeHandlers;s[i]=t,r[i]=e;const n=this._queue;return n[i]&&(n[i].forEach(o=>t(o)),delete n[i]),this},handleByMap(i,t){return this.handle(i,e=>{t[e.name]=e.ref},e=>{delete t[e.name]})},handleByList(i,t){return this.handle(i,e=>{t.push(e.ref),t.sort((s,r)=>{var n,o;return((n=r.priority)!=null?n:-1)-((o=s.priority)!=null?o:-1)})},e=>{const s=t.indexOf(e.ref);s!==-1&&t.splice(s,1)})}},Ve=Math.PI*2,Mn=180/Math.PI,Bn=Math.PI/180;var dt=(i=>(i[i.POLY=0]="POLY",i[i.RECT=1]="RECT",i[i.CIRC=2]="CIRC",i[i.ELIP=3]="ELIP",i[i.RREC=4]="RREC",i))(dt||{});class W{constructor(t=0,e=0){this.x=0,this.y=0,this.x=t,this.y=e}clone(){return new W(this.x,this.y)}copyFrom(t){return this.set(t.x,t.y),this}copyTo(t){return t.set(this.x,this.y),t}equals(t){return t.x===this.x&&t.y===this.y}set(t=0,e=t){return this.x=t,this.y=e,this}}const Si=[new W,new W,new W,new W];class z{constructor(t=0,e=0,s=0,r=0){this.x=Number(t),this.y=Number(e),this.width=Number(s),this.height=Number(r),this.type=dt.RECT}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}static get EMPTY(){return new z(0,0,0,0)}clone(){return new z(this.x,this.y,this.width,this.height)}copyFrom(t){return this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height,this}copyTo(t){return t.x=this.x,t.y=this.y,t.width=this.width,t.height=this.height,t}contains(t,e){return this.width<=0||this.height<=0?!1:t>=this.x&&t=this.y&&et.right?t.right:this.right)<=S)return!1;const H=this.yt.bottom?t.bottom:this.bottom)>H}const s=this.left,r=this.right,n=this.top,o=this.bottom;if(r<=s||o<=n)return!1;const a=Si[0].set(t.left,t.top),h=Si[1].set(t.left,t.bottom),l=Si[2].set(t.right,t.top),c=Si[3].set(t.right,t.bottom);if(l.x<=a.x||h.y<=a.y)return!1;const u=Math.sign(e.a*e.d-e.b*e.c);if(u===0||(e.apply(a,a),e.apply(h,h),e.apply(l,l),e.apply(c,c),Math.max(a.x,h.x,l.x,c.x)<=s||Math.min(a.x,h.x,l.x,c.x)>=r||Math.max(a.y,h.y,l.y,c.y)<=n||Math.min(a.y,h.y,l.y,c.y)>=o))return!1;const d=u*(h.y-a.y),f=u*(a.x-h.x),p=d*s+f*n,_=d*r+f*n,g=d*s+f*o,v=d*r+f*o;if(Math.max(p,_,g,v)<=d*a.x+f*a.y||Math.min(p,_,g,v)>=d*c.x+f*c.y)return!1;const T=u*(a.y-l.y),y=u*(l.x-a.x),x=T*s+y*n,b=T*r+y*n,D=T*s+y*o,C=T*r+y*o;return!(Math.max(x,b,D,C)<=T*a.x+y*a.y||Math.min(x,b,D,C)>=T*c.x+y*c.y)}pad(t=0,e=t){return this.x-=t,this.y-=e,this.width+=t*2,this.height+=e*2,this}fit(t){const e=Math.max(this.x,t.x),s=Math.min(this.x+this.width,t.x+t.width),r=Math.max(this.y,t.y),n=Math.min(this.y+this.height,t.y+t.height);return this.x=e,this.width=Math.max(s-e,0),this.y=r,this.height=Math.max(n-r,0),this}ceil(t=1,e=.001){const s=Math.ceil((this.x+this.width-e)*t)/t,r=Math.ceil((this.y+this.height-e)*t)/t;return this.x=Math.floor((this.x+e)*t)/t,this.y=Math.floor((this.y+e)*t)/t,this.width=s-this.x,this.height=r-this.y,this}enlarge(t){const e=Math.min(this.x,t.x),s=Math.max(this.x+this.width,t.x+t.width),r=Math.min(this.y,t.y),n=Math.max(this.y+this.height,t.y+t.height);return this.x=e,this.width=s-e,this.y=r,this.height=n-r,this}}class Ai{constructor(t=0,e=0,s=0){this.x=t,this.y=e,this.radius=s,this.type=dt.CIRC}clone(){return new Ai(this.x,this.y,this.radius)}contains(t,e){if(this.radius<=0)return!1;const s=this.radius*this.radius;let r=this.x-t,n=this.y-e;return r*=r,n*=n,r+n<=s}getBounds(){return new z(this.x-this.radius,this.y-this.radius,this.radius*2,this.radius*2)}}class Ri{constructor(t=0,e=0,s=0,r=0){this.x=t,this.y=e,this.width=s,this.height=r,this.type=dt.ELIP}clone(){return new Ri(this.x,this.y,this.width,this.height)}contains(t,e){if(this.width<=0||this.height<=0)return!1;let s=(t-this.x)/this.width,r=(e-this.y)/this.height;return s*=s,r*=r,s+r<=1}getBounds(){return new z(this.x-this.width,this.y-this.height,this.width,this.height)}}class fe{constructor(...t){let e=Array.isArray(t[0])?t[0]:t;if(typeof e[0]!="number"){const s=[];for(let r=0,n=e.length;re!=c>e&&t<(l-a)*((e-h)/(c-h))+a&&(s=!s)}return s}}class Ci{constructor(t=0,e=0,s=0,r=0,n=20){this.x=t,this.y=e,this.width=s,this.height=r,this.radius=n,this.type=dt.RREC}clone(){return new Ci(this.x,this.y,this.width,this.height,this.radius)}contains(t,e){if(this.width<=0||this.height<=0)return!1;if(t>=this.x&&t<=this.x+this.width&&e>=this.y&&e<=this.y+this.height){const s=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(e>=this.y+s&&e<=this.y+this.height-s||t>=this.x+s&&t<=this.x+this.width-s)return!0;let r=t-(this.x+s),n=e-(this.y+s);const o=s*s;if(r*r+n*n<=o||(r=t-(this.x+this.width-s),r*r+n*n<=o)||(n=e-(this.y+this.height-s),r*r+n*n<=o)||(r=t-(this.x+s),r*r+n*n<=o))return!0}return!1}}class Jt{constructor(t,e,s=0,r=0){this._x=s,this._y=r,this.cb=t,this.scope=e}clone(t=this.cb,e=this.scope){return new Jt(t,e,this._x,this._y)}set(t=0,e=t){return(this._x!==t||this._y!==e)&&(this._x=t,this._y=e,this.cb.call(this.scope)),this}copyFrom(t){return(this._x!==t.x||this._y!==t.y)&&(this._x=t.x,this._y=t.y,this.cb.call(this.scope)),this}copyTo(t){return t.set(this._x,this._y),t}equals(t){return t.x===this._x&&t.y===this._y}get x(){return this._x}set x(t){this._x!==t&&(this._x=t,this.cb.call(this.scope))}get y(){return this._y}set y(t){this._y!==t&&(this._y=t,this.cb.call(this.scope))}}class tt{constructor(t=1,e=0,s=0,r=1,n=0,o=0){this.array=null,this.a=t,this.b=e,this.c=s,this.d=r,this.tx=n,this.ty=o}fromArray(t){this.a=t[0],this.b=t[1],this.c=t[3],this.d=t[4],this.tx=t[2],this.ty=t[5]}set(t,e,s,r,n,o){return this.a=t,this.b=e,this.c=s,this.d=r,this.tx=n,this.ty=o,this}toArray(t,e){this.array||(this.array=new Float32Array(9));const s=e||this.array;return t?(s[0]=this.a,s[1]=this.b,s[2]=0,s[3]=this.c,s[4]=this.d,s[5]=0,s[6]=this.tx,s[7]=this.ty,s[8]=1):(s[0]=this.a,s[1]=this.c,s[2]=this.tx,s[3]=this.b,s[4]=this.d,s[5]=this.ty,s[6]=0,s[7]=0,s[8]=1),s}apply(t,e){e=e||new W;const s=t.x,r=t.y;return e.x=this.a*s+this.c*r+this.tx,e.y=this.b*s+this.d*r+this.ty,e}applyInverse(t,e){e=e||new W;const s=1/(this.a*this.d+this.c*-this.b),r=t.x,n=t.y;return e.x=this.d*s*r+-this.c*s*n+(this.ty*this.c-this.tx*this.d)*s,e.y=this.a*s*n+-this.b*s*r+(-this.ty*this.a+this.tx*this.b)*s,e}translate(t,e){return this.tx+=t,this.ty+=e,this}scale(t,e){return this.a*=t,this.d*=e,this.c*=t,this.b*=e,this.tx*=t,this.ty*=e,this}rotate(t){const e=Math.cos(t),s=Math.sin(t),r=this.a,n=this.c,o=this.tx;return this.a=r*e-this.b*s,this.b=r*s+this.b*e,this.c=n*e-this.d*s,this.d=n*s+this.d*e,this.tx=o*e-this.ty*s,this.ty=o*s+this.ty*e,this}append(t){const e=this.a,s=this.b,r=this.c,n=this.d;return this.a=t.a*e+t.b*r,this.b=t.a*s+t.b*n,this.c=t.c*e+t.d*r,this.d=t.c*s+t.d*n,this.tx=t.tx*e+t.ty*r+this.tx,this.ty=t.tx*s+t.ty*n+this.ty,this}setTransform(t,e,s,r,n,o,a,h,l){return this.a=Math.cos(a+l)*n,this.b=Math.sin(a+l)*n,this.c=-Math.sin(a-h)*o,this.d=Math.cos(a-h)*o,this.tx=t-(s*this.a+r*this.c),this.ty=e-(s*this.b+r*this.d),this}prepend(t){const e=this.tx;if(t.a!==1||t.b!==0||t.c!==0||t.d!==1){const s=this.a,r=this.c;this.a=s*t.a+this.b*t.c,this.b=s*t.b+this.b*t.d,this.c=r*t.a+this.d*t.c,this.d=r*t.b+this.d*t.d}return this.tx=e*t.a+this.ty*t.c+t.tx,this.ty=e*t.b+this.ty*t.d+t.ty,this}decompose(t){const e=this.a,s=this.b,r=this.c,n=this.d,o=t.pivot,a=-Math.atan2(-r,n),h=Math.atan2(s,e),l=Math.abs(a+h);return l<1e-5||Math.abs(Ve-l)<1e-5?(t.rotation=h,t.skew.x=t.skew.y=0):(t.rotation=0,t.skew.x=a,t.skew.y=h),t.scale.x=Math.sqrt(e*e+s*s),t.scale.y=Math.sqrt(r*r+n*n),t.position.x=this.tx+(o.x*e+o.y*r),t.position.y=this.ty+(o.x*s+o.y*n),t}invert(){const t=this.a,e=this.b,s=this.c,r=this.d,n=this.tx,o=t*r-e*s;return this.a=r/o,this.b=-e/o,this.c=-s/o,this.d=t/o,this.tx=(s*this.ty-r*n)/o,this.ty=-(t*this.ty-e*n)/o,this}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){const t=new tt;return t.a=this.a,t.b=this.b,t.c=this.c,t.d=this.d,t.tx=this.tx,t.ty=this.ty,t}copyTo(t){return t.a=this.a,t.b=this.b,t.c=this.c,t.d=this.d,t.tx=this.tx,t.ty=this.ty,t}copyFrom(t){return this.a=t.a,this.b=t.b,this.c=t.c,this.d=t.d,this.tx=t.tx,this.ty=t.ty,this}static get IDENTITY(){return new tt}static get TEMP_MATRIX(){return new tt}}const pe=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],me=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],_e=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],ge=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],Ss=[],Dn=[],Ii=Math.sign;function ih(){for(let i=0;i<16;i++){const t=[];Ss.push(t);for(let e=0;e<16;e++){const s=Ii(pe[i]*pe[e]+_e[i]*me[e]),r=Ii(me[i]*pe[e]+ge[i]*me[e]),n=Ii(pe[i]*_e[e]+_e[i]*ge[e]),o=Ii(me[i]*_e[e]+ge[i]*ge[e]);for(let a=0;a<16;a++)if(pe[a]===s&&me[a]===r&&_e[a]===n&&ge[a]===o){t.push(a);break}}}for(let i=0;i<16;i++){const t=new tt;t.set(pe[i],me[i],_e[i],ge[i],0,0),Dn.push(t)}}ih();const et={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:i=>pe[i],uY:i=>me[i],vX:i=>_e[i],vY:i=>ge[i],inv:i=>i&8?i&15:-i&7,add:(i,t)=>Ss[i][t],sub:(i,t)=>Ss[i][et.inv(t)],rotate180:i=>i^4,isVertical:i=>(i&3)===2,byDirection:(i,t)=>Math.abs(i)*2<=Math.abs(t)?t>=0?et.S:et.N:Math.abs(t)*2<=Math.abs(i)?i>0?et.E:et.W:t>0?i>0?et.SE:et.SW:i>0?et.NE:et.NW,matrixAppendRotationInv:(i,t,e=0,s=0)=>{const r=Dn[et.inv(t)];r.tx=e,r.ty=s,i.append(r)}},Fn=class{constructor(){this.worldTransform=new tt,this.localTransform=new tt,this.position=new Jt(this.onChange,this,0,0),this.scale=new Jt(this.onChange,this,1,1),this.pivot=new Jt(this.onChange,this,0,0),this.skew=new Jt(this.updateSkew,this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._localID=0,this._currentLocalID=0,this._worldID=0,this._parentID=0}onChange(){this._localID++}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._localID++}updateLocalTransform(){const i=this.localTransform;this._localID!==this._currentLocalID&&(i.a=this._cx*this.scale.x,i.b=this._sx*this.scale.x,i.c=this._cy*this.scale.y,i.d=this._sy*this.scale.y,i.tx=this.position.x-(this.pivot.x*i.a+this.pivot.y*i.c),i.ty=this.position.y-(this.pivot.x*i.b+this.pivot.y*i.d),this._currentLocalID=this._localID,this._parentID=-1)}updateTransform(i){const t=this.localTransform;if(this._localID!==this._currentLocalID&&(t.a=this._cx*this.scale.x,t.b=this._sx*this.scale.x,t.c=this._cy*this.scale.y,t.d=this._sy*this.scale.y,t.tx=this.position.x-(this.pivot.x*t.a+this.pivot.y*t.c),t.ty=this.position.y-(this.pivot.x*t.b+this.pivot.y*t.d),this._currentLocalID=this._localID,this._parentID=-1),this._parentID!==i._worldID){const e=i.worldTransform,s=this.worldTransform;s.a=t.a*e.a+t.b*e.c,s.b=t.a*e.b+t.b*e.d,s.c=t.c*e.a+t.d*e.c,s.d=t.c*e.b+t.d*e.d,s.tx=t.tx*e.a+t.ty*e.c+e.tx,s.ty=t.tx*e.b+t.ty*e.d+e.ty,this._parentID=i._worldID,this._worldID++}}setFromMatrix(i){i.decompose(this),this._localID++}get rotation(){return this._rotation}set rotation(i){this._rotation!==i&&(this._rotation=i,this.updateSkew())}};let ze=Fn;ze.IDENTITY=new Fn;class St{constructor(t){this.items=[],this._name=t,this._aliasCount=0}emit(t,e,s,r,n,o,a,h){if(arguments.length>8)throw new Error("max arguments reached");const{name:l,items:c}=this;this._aliasCount++;for(let u=0,d=c.length;u0&&this.items.length>1&&(this._aliasCount=0,this.items=this.items.slice(0))}add(t){return t[this._name]&&(this.ensureNonAliasedItems(),this.remove(t),this.items.push(t)),this}remove(t){const e=this.items.indexOf(t);return e!==-1&&(this.ensureNonAliasedItems(),this.items.splice(e,1)),this}contains(t){return this.items.includes(t)}removeAll(){return this.ensureNonAliasedItems(),this.items.length=0,this}destroy(){this.removeAll(),this.items=null,this._name=null}get empty(){return this.items.length===0}get name(){return this._name}}Object.defineProperties(St.prototype,{dispatch:{value:St.prototype.emit},run:{value:St.prototype.emit}}),R.TARGET_FPMS=.06;var ae=(i=>(i[i.HIGH=25]="HIGH",i[i.NORMAL=0]="NORMAL",i[i.LOW=-25]="LOW",i[i.UTILITY=-50]="UTILITY",i))(ae||{});class As{constructor(t,e=null,s=0,r=!1){this.next=null,this.previous=null,this._destroyed=!1,this.fn=t,this.context=e,this.priority=s,this.once=r}match(t,e=null){return this.fn===t&&this.context===e}emit(t){this.fn&&(this.context?this.fn.call(this.context,t):this.fn(t));const e=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),e}connect(t){this.previous=t,t.next&&(t.next.previous=this),this.next=t.next,t.next=this}destroy(t=!1){this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const e=this.next;return this.next=t?null:e,this.previous=null,e}}class Q{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 As(null,null,1/0),this.deltaMS=1/R.TARGET_FPMS,this.elapsedMS=1/R.TARGET_FPMS,this._tick=t=>{this._requestId=null,this.started&&(this.update(t),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(t,e,s=ae.NORMAL){return this._addListener(new As(t,e,s))}addOnce(t,e,s=ae.NORMAL){return this._addListener(new As(t,e,s,!0))}_addListener(t){let e=this._head.next,s=this._head;if(!e)t.connect(s);else{for(;e;){if(t.priority>e.priority){t.connect(s);break}s=e,e=e.next}t.previous||t.connect(s)}return this._startIfPossible(),this}remove(t,e){let s=this._head.next;for(;s;)s.match(t,e)?s=s.destroy():s=s.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let t=0,e=this._head;for(;e=e.next;)t++;return t}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let t=this._head.next;for(;t;)t=t.destroy(!0);this._head.destroy(),this._head=null}}update(t=performance.now()){let e;if(t>this.lastTime){if(e=this.elapsedMS=t-this.lastTime,e>this._maxElapsedMS&&(e=this._maxElapsedMS),e*=this.speed,this._minElapsedMS){const n=t-this._lastFrame|0;if(n{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=t.sharedTicker?Q.shared:new Q,t.autoStart&&this.start()}static destroy(){if(this._ticker){const t=this._ticker;this.ticker=null,t.destroy()}}}Rs.extension=M.Application,U.add(Rs);var Cs=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Rp(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}function Is(i,t,e){return e={path:t,exports:{},require:function(s,r){return sh(s,r==null?e.path:r)}},i(e,e.exports),e.exports}function Cp(i){return i&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}function Ip(i){return i&&Object.prototype.hasOwnProperty.call(i,"default")&&Object.keys(i).length===1?i.default:i}function Pp(i){if(i.__esModule)return i;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(i).forEach(function(e){var s=Object.getOwnPropertyDescriptor(i,e);Object.defineProperty(t,e,s.get?s:{enumerable:!0,get:function(){return i[e]}})}),t}function sh(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}var Pe=Is(function(i){"use strict";var t=Object.prototype.hasOwnProperty,e="~";function s(){}Object.create&&(s.prototype=Object.create(null),new s().__proto__||(e=!1));function r(h,l,c){this.fn=h,this.context=l,this.once=c||!1}function n(h,l,c,u,d){if(typeof c!="function")throw new TypeError("The listener must be a function");var f=new r(c,u||h,d),p=e?e+l:l;return h._events[p]?h._events[p].fn?h._events[p]=[h._events[p],f]:h._events[p].push(f):(h._events[p]=f,h._eventsCount++),h}function o(h,l){--h._eventsCount===0?h._events=new s:delete h._events[l]}function a(){this._events=new s,this._eventsCount=0}a.prototype.eventNames=function(){var l=[],c,u;if(this._eventsCount===0)return l;for(u in c=this._events)t.call(c,u)&&l.push(e?u.slice(1):u);return Object.getOwnPropertySymbols?l.concat(Object.getOwnPropertySymbols(c)):l},a.prototype.listeners=function(l){var c=e?e+l:l,u=this._events[c];if(!u)return[];if(u.fn)return[u.fn];for(var d=0,f=u.length,p=new Array(f);d80*e){a=l=i[0],h=c=i[1];for(var p=e;pl&&(l=u),d>c&&(c=d);f=Math.max(l-a,c-h),f=f!==0?32767/f:0}return We(n,o,e,a,h,f,0),o}function Nn(i,t,e,s,r){var n,o;if(r===Ds(i,t,e,s)>0)for(n=t;n=t;n-=s)o=Un(n,i[n],i[n+1],o);return o&&Mi(o,o.next)&&(Ye(o),o=o.next),o}function ye(i,t){if(!i)return i;t||(t=i);var e=i,s;do if(s=!1,!e.steiner&&(Mi(e,e.next)||rt(e.prev,e,e.next)===0)){if(Ye(e),e=t=e.prev,e===e.next)break;s=!0}else e=e.next;while(s||e!==t);return t}function We(i,t,e,s,r,n,o){if(!!i){!o&&n&&ph(i,s,r,n);for(var a=i,h,l;i.prev!==i.next;){if(h=i.prev,l=i.next,n?oh(i,s,r,n):nh(i)){t.push(h.i/e|0),t.push(i.i/e|0),t.push(l.i/e|0),Ye(i),i=l.next,a=l.next;continue}if(i=l,i===a){o?o===1?(i=ah(ye(i),t,e),We(i,t,e,s,r,n,2)):o===2&&hh(i,t,e,s,r,n):We(ye(i),t,e,s,r,n,1);break}}}}function nh(i){var t=i.prev,e=i,s=i.next;if(rt(t,e,s)>=0)return!1;for(var r=t.x,n=e.x,o=s.x,a=t.y,h=e.y,l=s.y,c=rn?r>o?r:o:n>o?n:o,f=a>h?a>l?a:l:h>l?h:l,p=s.next;p!==t;){if(p.x>=c&&p.x<=d&&p.y>=u&&p.y<=f&&Me(r,a,n,h,o,l,p.x,p.y)&&rt(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}function oh(i,t,e,s){var r=i.prev,n=i,o=i.next;if(rt(r,n,o)>=0)return!1;for(var a=r.x,h=n.x,l=o.x,c=r.y,u=n.y,d=o.y,f=ah?a>l?a:l:h>l?h:l,g=c>u?c>d?c:d:u>d?u:d,v=Ms(f,p,t,e,s),T=Ms(_,g,t,e,s),y=i.prevZ,x=i.nextZ;y&&y.z>=v&&x&&x.z<=T;){if(y.x>=f&&y.x<=_&&y.y>=p&&y.y<=g&&y!==r&&y!==o&&Me(a,c,h,u,l,d,y.x,y.y)&&rt(y.prev,y,y.next)>=0||(y=y.prevZ,x.x>=f&&x.x<=_&&x.y>=p&&x.y<=g&&x!==r&&x!==o&&Me(a,c,h,u,l,d,x.x,x.y)&&rt(x.prev,x,x.next)>=0))return!1;x=x.nextZ}for(;y&&y.z>=v;){if(y.x>=f&&y.x<=_&&y.y>=p&&y.y<=g&&y!==r&&y!==o&&Me(a,c,h,u,l,d,y.x,y.y)&&rt(y.prev,y,y.next)>=0)return!1;y=y.prevZ}for(;x&&x.z<=T;){if(x.x>=f&&x.x<=_&&x.y>=p&&x.y<=g&&x!==r&&x!==o&&Me(a,c,h,u,l,d,x.x,x.y)&&rt(x.prev,x,x.next)>=0)return!1;x=x.nextZ}return!0}function ah(i,t,e){var s=i;do{var r=s.prev,n=s.next.next;!Mi(r,n)&&Ln(r,s,s.next,n)&&je(r,n)&&je(n,r)&&(t.push(r.i/e|0),t.push(s.i/e|0),t.push(n.i/e|0),Ye(s),Ye(s.next),s=i=n),s=s.next}while(s!==i);return ye(s)}function hh(i,t,e,s,r,n){var o=i;do{for(var a=o.next.next;a!==o.prev;){if(o.i!==a.i&&gh(o,a)){var h=On(o,a);o=ye(o,o.next),h=ye(h,h.next),We(o,t,e,s,r,n,0),We(h,t,e,s,r,n,0);return}a=a.next}o=o.next}while(o!==i)}function lh(i,t,e,s){var r=[],n,o,a,h,l;for(n=0,o=t.length;n=e.next.y&&e.next.y!==e.y){var a=e.x+(r-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(a<=s&&a>n&&(n=a,o=e.x=e.x&&e.x>=l&&s!==e.x&&Me(ro.x||e.x===o.x&&fh(o,e)))&&(o=e,u=d)),e=e.next;while(e!==h);return o}function fh(i,t){return rt(i.prev,i,t.prev)<0&&rt(t.next,i,i.next)<0}function ph(i,t,e,s){var r=i;do r.z===0&&(r.z=Ms(r.x,r.y,t,e,s)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==i);r.prevZ.nextZ=null,r.prevZ=null,mh(r)}function mh(i){var t,e,s,r,n,o,a,h,l=1;do{for(e=i,i=null,n=null,o=0;e;){for(o++,s=e,a=0,t=0;t0||h>0&&s;)a!==0&&(h===0||!s||e.z<=s.z)?(r=e,e=e.nextZ,a--):(r=s,s=s.nextZ,h--),n?n.nextZ=r:i=r,r.prevZ=n,n=r;e=s}n.nextZ=null,l*=2}while(o>1);return i}function Ms(i,t,e,s,r){return i=(i-e)*r|0,t=(t-s)*r|0,i=(i|i<<8)&16711935,i=(i|i<<4)&252645135,i=(i|i<<2)&858993459,i=(i|i<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,i|t<<1}function _h(i){var t=i,e=i;do(t.x=(i-o)*(n-a)&&(i-o)*(s-a)>=(e-o)*(t-a)&&(e-o)*(n-a)>=(r-o)*(s-a)}function gh(i,t){return i.next.i!==t.i&&i.prev.i!==t.i&&!yh(i,t)&&(je(i,t)&&je(t,i)&&vh(i,t)&&(rt(i.prev,i,t.prev)||rt(i,t.prev,t))||Mi(i,t)&&rt(i.prev,i,i.next)>0&&rt(t.prev,t,t.next)>0)}function rt(i,t,e){return(t.y-i.y)*(e.x-t.x)-(t.x-i.x)*(e.y-t.y)}function Mi(i,t){return i.x===t.x&&i.y===t.y}function Ln(i,t,e,s){var r=Di(rt(i,t,e)),n=Di(rt(i,t,s)),o=Di(rt(e,s,i)),a=Di(rt(e,s,t));return!!(r!==n&&o!==a||r===0&&Bi(i,e,t)||n===0&&Bi(i,s,t)||o===0&&Bi(e,i,s)||a===0&&Bi(e,t,s))}function Bi(i,t,e){return t.x<=Math.max(i.x,e.x)&&t.x>=Math.min(i.x,e.x)&&t.y<=Math.max(i.y,e.y)&&t.y>=Math.min(i.y,e.y)}function Di(i){return i>0?1:i<0?-1:0}function yh(i,t){var e=i;do{if(e.i!==i.i&&e.next.i!==i.i&&e.i!==t.i&&e.next.i!==t.i&&Ln(e,e.next,i,t))return!0;e=e.next}while(e!==i);return!1}function je(i,t){return rt(i.prev,i,i.next)<0?rt(i,t,i.next)>=0&&rt(i,i.prev,t)>=0:rt(i,t,i.prev)<0||rt(i,i.next,t)<0}function vh(i,t){var e=i,s=!1,r=(i.x+t.x)/2,n=(i.y+t.y)/2;do e.y>n!=e.next.y>n&&e.next.y!==e.y&&r<(e.next.x-e.x)*(n-e.y)/(e.next.y-e.y)+e.x&&(s=!s),e=e.next;while(e!==i);return s}function On(i,t){var e=new Bs(i.i,i.x,i.y),s=new Bs(t.i,t.x,t.y),r=i.next,n=t.prev;return i.next=t,t.prev=i,e.next=r,r.prev=e,s.next=e,e.prev=s,n.next=s,s.prev=n,s}function Un(i,t,e,s){var r=new Bs(i,t,e);return s?(r.next=s.next,r.prev=s,s.next.prev=r,s.next=r):(r.prev=r,r.next=r),r}function Ye(i){i.next.prev=i.prev,i.prev.next=i.next,i.prevZ&&(i.prevZ.nextZ=i.nextZ),i.nextZ&&(i.nextZ.prevZ=i.prevZ)}function Bs(i,t,e){this.i=i,this.x=t,this.y=e,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}Pi.deviation=function(i,t,e,s){var r=t&&t.length,n=r?t[0]*e:i.length,o=Math.abs(Ds(i,0,n,e));if(r)for(var a=0,h=t.length;a0&&(s+=i[r-1].length,e.holes.push(s))}return e},Ps.default=rh;var xh=Is(function(i,t){/*! https://mths.be/punycode v1.3.2 by @mathias */(function(e){var s=t&&!t.nodeType&&t,r=i&&!i.nodeType&&i,n=typeof Cs=="object"&&Cs;(n.global===n||n.window===n||n.self===n)&&(e=n);var o,a=2147483647,h=36,l=1,c=26,u=38,d=700,f=72,p=128,_="-",g=/^xn--/,v=/[^\x20-\x7E]/,T=/[\x2E\u3002\uFF0E\uFF61]/g,y={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},x=h-l,b=Math.floor,D=String.fromCharCode,C;function S(A){throw RangeError(y[A])}function O(A,X){for(var $=A.length,K=[];$--;)K[$]=X(A[$]);return K}function H(A,X){var $=A.split("@"),K="";$.length>1&&(K=$[0]+"@",A=$[1]),A=A.replace(T,".");var Z=A.split("."),pt=O(Z,X).join(".");return K+pt}function P(A){for(var X=[],$=0,K=A.length,Z,pt;$=55296&&Z<=56319&&$65535&&(X-=65536,$+=D(X>>>10&1023|55296),X=56320|X&1023),$+=D(X),$}).join("")}function w(A){return A-48<10?A-22:A-65<26?A-65:A-97<26?A-97:h}function E(A,X){return A+22+75*(A<26)-((X!=0)<<5)}function V(A,X,$){var K=0;for(A=$?b(A/d):A>>1,A+=b(A/X);A>x*c>>1;K+=h)A=b(A/x);return b(K+(x+1)*A/(A+u))}function Y(A){var X=[],$=A.length,K,Z=0,pt=p,lt=f,mt,yt,bt,gt,st,ct,ut,qt,Kt;for(mt=A.lastIndexOf(_),mt<0&&(mt=0),yt=0;yt=128&&S("not-basic"),X.push(A.charCodeAt(yt));for(bt=mt>0?mt+1:0;bt<$;){for(gt=Z,st=1,ct=h;bt>=$&&S("invalid-input"),ut=w(A.charCodeAt(bt++)),(ut>=h||ut>b((a-Z)/st))&&S("overflow"),Z+=ut*st,qt=ct<=lt?l:ct>=lt+c?c:ct-lt,!(utb(a/Kt)&&S("overflow"),st*=Kt;K=X.length+1,lt=V(Z-gt,K,gt==0),b(Z/K)>a-pt&&S("overflow"),pt+=b(Z/K),Z%=K,X.splice(Z++,0,pt)}return N(X)}function F(A){var X,$,K,Z,pt,lt,mt,yt,bt,gt,st,ct=[],ut,qt,Kt,Ti;for(A=P(A),ut=A.length,X=p,$=0,pt=f,lt=0;lt=X&&stb((a-$)/qt)&&S("overflow"),$+=(mt-X)*qt,X=mt,lt=0;lta&&S("overflow"),st==X){for(yt=$,bt=h;gt=bt<=pt?l:bt>=pt+c?c:bt-pt,!(yt0&&a>o&&(a=o);for(var h=0;h=0?(u=l.substr(0,c),d=l.substr(c+1)):(u=l,d=""),f=decodeURIComponent(u),p=decodeURIComponent(d),Th(r,f)?Array.isArray(r[f])?r[f].push(p):r[f]=[r[f],p]:r[f]=p}return r},$e=function(i){switch(typeof i){case"string":return i;case"boolean":return i?"true":"false";case"number":return isFinite(i)?i:"";default:return""}},bh=function(i,t,e,s){return t=t||"&",e=e||"=",i===null&&(i=void 0),typeof i=="object"?Object.keys(i).map(function(r){var n=encodeURIComponent($e(r))+e;return Array.isArray(i[r])?i[r].map(function(o){return n+encodeURIComponent($e(o))}).join(t):n+encodeURIComponent($e(i[r]))}).join(t):s?encodeURIComponent($e(s))+e+encodeURIComponent($e(i)):""},Fs=Is(function(i,t){"use strict";t.decode=t.parse=Eh,t.encode=t.stringify=bh}),Gn=qe,kn=Nh,wh=Lh,Hn=Fh,Sh=Ct;function Ct(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var Ah=/^([a-z0-9.+-]+:)/i,Rh=/:[0-9]*$/,Ch=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,Ih=["<",">",'"',"`"," ","\r",` +`," "],Ph=["{","}","|","\\","^","`"].concat(Ih),Ns=["'"].concat(Ph),Xn=["%","/","?",";","#"].concat(Ns),Vn=["/","?","#"],Mh=255,zn=/^[+a-z0-9A-Z_-]{0,63}$/,Bh=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Dh={javascript:!0,"javascript:":!0},Ls={javascript:!0,"javascript:":!0},Be={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function qe(i,t,e){if(i&&Wt.isObject(i)&&i instanceof Ct)return i;var s=new Ct;return s.parse(i,t,e),s}Ct.prototype.parse=function(i,t,e){if(!Wt.isString(i))throw new TypeError("Parameter 'url' must be a string, not "+typeof i);var s=i.indexOf("?"),r=s!==-1&&s127?b+="x":b+=x[D];if(!b.match(zn)){var S=T.slice(0,f),O=T.slice(f+1),H=x.match(Bh);H&&(S.push(H[1]),O.unshift(H[2])),O.length&&(a="/"+O.join(".")+a),this.hostname=S.join(".");break}}}this.hostname.length>Mh?this.hostname="":this.hostname=this.hostname.toLowerCase(),v||(this.hostname=xh.toASCII(this.hostname));var P=this.port?":"+this.port:"",N=this.hostname||"";this.host=N+P,this.href+=this.host,v&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),a[0]!=="/"&&(a="/"+a))}if(!Dh[c])for(var f=0,y=Ns.length;f0?e.host.split("@"):!1;b&&(e.auth=b.shift(),e.host=e.hostname=b.shift())}return e.search=i.search,e.query=i.query,(!Wt.isNull(e.pathname)||!Wt.isNull(e.search))&&(e.path=(e.pathname?e.pathname:"")+(e.search?e.search:"")),e.href=e.format(),e}if(!T.length)return e.pathname=null,e.search?e.path="/"+e.search:e.path=null,e.href=e.format(),e;for(var D=T.slice(-1)[0],C=(e.host||i.host||T.length>1)&&(D==="."||D==="..")||D==="",S=0,O=T.length;O>=0;O--)D=T[O],D==="."?T.splice(O,1):D===".."?(T.splice(O,1),S++):S&&(T.splice(O,1),S--);if(!g&&!v)for(;S--;S)T.unshift("..");g&&T[0]!==""&&(!T[0]||T[0].charAt(0)!=="/")&&T.unshift(""),C&&T.join("/").substr(-1)!=="/"&&T.push("");var H=T[0]===""||T[0]&&T[0].charAt(0)==="/";if(x){e.hostname=e.host=H?"":T.length?T.shift():"";var b=e.host&&e.host.indexOf("@")>0?e.host.split("@"):!1;b&&(e.auth=b.shift(),e.host=e.hostname=b.shift())}return g=g||e.host&&T.length,g&&!H&&T.unshift(""),T.length?e.pathname=T.join("/"):(e.pathname=null,e.path=null),(!Wt.isNull(e.pathname)||!Wt.isNull(e.search))&&(e.path=(e.pathname?e.pathname:"")+(e.search?e.search:"")),e.auth=i.auth||e.auth,e.slashes=e.slashes||i.slashes,e.href=e.format(),e},Ct.prototype.parseHost=function(){var i=this.host,t=Rh.exec(i);t&&(t=t[0],t!==":"&&(this.port=t.substr(1)),i=i.substr(0,i.length-t.length)),i&&(this.hostname=i)};var Mp={parse:Gn,resolve:kn,resolveObject:wh,format:Hn,Url:Sh};const Wn={parse:Gn,format:Hn,resolve:kn};function Ut(i){if(typeof i!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(i)}`)}function jn(i){return i.split("?")[0].split("#")[0]}function Oh(i){return i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Uh(i,t,e){return i.replace(new RegExp(Oh(t),"g"),e)}function Gh(i,t){let e="",s=0,r=-1,n=0,o;for(let a=0;a<=i.length;++a){if(a2){const h=e.lastIndexOf("/");if(h!==e.length-1){h===-1?(e="",s=0):(e=e.slice(0,h),s=e.length-1-e.lastIndexOf("/")),r=a,n=0;continue}}else if(e.length===2||e.length===1){e="",s=0,r=a,n=0;continue}}t&&(e.length>0?e+="/..":e="..",s=2)}else e.length>0?e+=`/${i.slice(r+1,a)}`:e=i.slice(r+1,a),s=a-r-1;r=a,n=0}else o===46&&n!==-1?++n:n=-1}return e}const ft={toPosix(i){return Uh(i,"\\","/")},isUrl(i){return/^https?:/.test(this.toPosix(i))},isDataUrl(i){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(i)},hasProtocol(i){return/^[^/:]+:\//.test(this.toPosix(i))},getProtocol(i){Ut(i),i=this.toPosix(i);let t="";const e=/^file:\/\/\//.exec(i),s=/^[^/:]+:\/\//.exec(i),r=/^[^/:]+:\//.exec(i);if(e||s||r){const n=(e==null?void 0:e[0])||(s==null?void 0:s[0])||(r==null?void 0:r[0]);t=n,i=i.slice(n.length)}return t},toAbsolute(i,t,e){if(this.isDataUrl(i))return i;const s=jn(this.toPosix(t!=null?t:R.ADAPTER.getBaseUrl())),r=jn(this.toPosix(e!=null?e:this.rootname(s)));return Ut(i),i=this.toPosix(i),i.startsWith("/")?ft.join(r,i.slice(1)):this.isAbsolute(i)?i:this.join(s,i)},normalize(i){if(i=this.toPosix(i),Ut(i),i.length===0)return".";let t="";const e=i.startsWith("/");this.hasProtocol(i)&&(t=this.rootname(i),i=i.slice(t.length));const s=i.endsWith("/");return i=Gh(i,!1),i.length>0&&s&&(i+="/"),e?`/${i}`:t+i},isAbsolute(i){return Ut(i),i=this.toPosix(i),this.hasProtocol(i)?!0:i.startsWith("/")},join(...i){var e;if(i.length===0)return".";let t;for(let s=0;s0)if(t===void 0)t=r;else{const n=(e=i[s-1])!=null?e:"";this.extname(n)?t+=`/../${r}`:t+=`/${r}`}}return t===void 0?".":this.normalize(t)},dirname(i){if(Ut(i),i.length===0)return".";i=this.toPosix(i);let t=i.charCodeAt(0);const e=t===47;let s=-1,r=!0;const n=this.getProtocol(i),o=i;i=i.slice(n.length);for(let a=i.length-1;a>=1;--a)if(t=i.charCodeAt(a),t===47){if(!r){s=a;break}}else r=!1;return s===-1?e?"/":this.isUrl(o)?n+i:n:e&&s===1?"//":n+i.slice(0,s)},rootname(i){Ut(i),i=this.toPosix(i);let t="";if(i.startsWith("/")?t="/":t=this.getProtocol(i),this.isUrl(i)){const e=i.indexOf("/",t.length);e!==-1?t=i.slice(0,e):t=i,t.endsWith("/")||(t+="/")}return t},basename(i,t){Ut(i),t&&Ut(t),i=this.toPosix(i);let e=0,s=-1,r=!0,n;if(t!==void 0&&t.length>0&&t.length<=i.length){if(t.length===i.length&&t===i)return"";let o=t.length-1,a=-1;for(n=i.length-1;n>=0;--n){const h=i.charCodeAt(n);if(h===47){if(!r){e=n+1;break}}else a===-1&&(r=!1,a=n+1),o>=0&&(h===t.charCodeAt(o)?--o===-1&&(s=n):(o=-1,s=a))}return e===s?s=a:s===-1&&(s=i.length),i.slice(e,s)}for(n=i.length-1;n>=0;--n)if(i.charCodeAt(n)===47){if(!r){e=n+1;break}}else s===-1&&(r=!1,s=n+1);return s===-1?"":i.slice(e,s)},extname(i){Ut(i),i=this.toPosix(i);let t=-1,e=0,s=-1,r=!0,n=0;for(let o=i.length-1;o>=0;--o){const a=i.charCodeAt(o);if(a===47){if(!r){e=o+1;break}continue}s===-1&&(r=!1,s=o+1),a===46?t===-1?t=o:n!==1&&(n=1):t!==-1&&(n=-1)}return t===-1||s===-1||n===0||n===1&&t===s-1&&t===e+1?"":i.slice(t,s)},parse(i){Ut(i);const t={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return t;i=this.toPosix(i);let e=i.charCodeAt(0);const s=this.isAbsolute(i);let r;const n="";t.root=this.rootname(i),s||this.hasProtocol(i)?r=1:r=0;let o=-1,a=0,h=-1,l=!0,c=i.length-1,u=0;for(;c>=r;--c){if(e=i.charCodeAt(c),e===47){if(!l){a=c+1;break}continue}h===-1&&(l=!1,h=c+1),e===46?o===-1?o=c:u!==1&&(u=1):o!==-1&&(u=-1)}return o===-1||h===-1||u===0||u===1&&o===h-1&&o===a+1?h!==-1&&(a===0&&s?t.base=t.name=i.slice(1,h):t.base=t.name=i.slice(a,h)):(a===0&&s?(t.name=i.slice(1,o),t.base=i.slice(1,h)):(t.name=i.slice(a,o),t.base=i.slice(a,h)),t.ext=i.slice(o,h)),t.dir=this.dirname(i),n&&(t.dir=n+t.dir),t},sep:"/",delimiter:":"};R.RETINA_PREFIX=/@([0-9\.]+)x/,R.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT=!1;function kh(){}function Hh(){}let Os;function Yn(){return typeof Os=="undefined"&&(Os=function(){const t={stencil:!0,failIfMajorPerformanceCaveat:R.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT};try{if(!R.ADAPTER.getWebGLRenderingContext())return!1;const e=R.ADAPTER.createCanvas();let s=e.getContext("webgl",t)||e.getContext("experimental-webgl",t);const r=!!(s&&s.getContextAttributes().stencil);if(s){const n=s.getExtension("WEBGL_lose_context");n&&n.loseContext()}return s=null,r}catch(e){return!1}}()),Os}var Xh="#f0f8ff",Vh="#faebd7",zh="#00ffff",Wh="#7fffd4",jh="#f0ffff",Yh="#f5f5dc",$h="#ffe4c4",qh="#000000",Kh="#ffebcd",Zh="#0000ff",Qh="#8a2be2",Jh="#a52a2a",tl="#deb887",el="#5f9ea0",il="#7fff00",sl="#d2691e",rl="#ff7f50",nl="#6495ed",ol="#fff8dc",al="#dc143c",hl="#00ffff",ll="#00008b",cl="#008b8b",ul="#b8860b",dl="#a9a9a9",fl="#006400",pl="#a9a9a9",ml="#bdb76b",_l="#8b008b",gl="#556b2f",yl="#ff8c00",vl="#9932cc",xl="#8b0000",Tl="#e9967a",El="#8fbc8f",bl="#483d8b",wl="#2f4f4f",Sl="#2f4f4f",Al="#00ced1",Rl="#9400d3",Cl="#ff1493",Il="#00bfff",Pl="#696969",Ml="#696969",Bl="#1e90ff",Dl="#b22222",Fl="#fffaf0",Nl="#228b22",Ll="#ff00ff",Ol="#dcdcdc",Ul="#f8f8ff",Gl="#daa520",kl="#ffd700",Hl="#808080",Xl="#008000",Vl="#adff2f",zl="#808080",Wl="#f0fff0",jl="#ff69b4",Yl="#cd5c5c",$l="#4b0082",ql="#fffff0",Kl="#f0e68c",Zl="#fff0f5",Ql="#e6e6fa",Jl="#7cfc00",tc="#fffacd",ec="#add8e6",ic="#f08080",sc="#e0ffff",rc="#fafad2",nc="#d3d3d3",oc="#90ee90",ac="#d3d3d3",hc="#ffb6c1",lc="#ffa07a",cc="#20b2aa",uc="#87cefa",dc="#778899",fc="#778899",pc="#b0c4de",mc="#ffffe0",_c="#00ff00",gc="#32cd32",yc="#faf0e6",vc="#ff00ff",xc="#800000",Tc="#66cdaa",Ec="#0000cd",bc="#ba55d3",wc="#9370db",Sc="#3cb371",Ac="#7b68ee",Rc="#00fa9a",Cc="#48d1cc",Ic="#c71585",Pc="#191970",Mc="#f5fffa",Bc="#ffe4e1",Dc="#ffe4b5",Fc="#ffdead",Nc="#000080",Lc="#fdf5e6",Oc="#808000",Uc="#6b8e23",Gc="#ffa500",kc="#ff4500",Hc="#da70d6",Xc="#eee8aa",Vc="#98fb98",zc="#afeeee",Wc="#db7093",jc="#ffefd5",Yc="#ffdab9",$c="#cd853f",qc="#ffc0cb",Kc="#dda0dd",Zc="#b0e0e6",Qc="#800080",Jc="#663399",tu="#ff0000",eu="#bc8f8f",iu="#4169e1",su="#8b4513",ru="#fa8072",nu="#f4a460",ou="#2e8b57",au="#fff5ee",hu="#a0522d",lu="#c0c0c0",cu="#87ceeb",uu="#6a5acd",du="#708090",fu="#708090",pu="#fffafa",mu="#00ff7f",_u="#4682b4",gu="#d2b48c",yu="#008080",vu="#d8bfd8",xu="#ff6347",Tu="#40e0d0",Eu="#ee82ee",bu="#f5deb3",wu="#ffffff",Su="#f5f5f5",Au="#ffff00",Ru="#9acd32",Cu={aliceblue:Xh,antiquewhite:Vh,aqua:zh,aquamarine:Wh,azure:jh,beige:Yh,bisque:$h,black:qh,blanchedalmond:Kh,blue:Zh,blueviolet:Qh,brown:Jh,burlywood:tl,cadetblue:el,chartreuse:il,chocolate:sl,coral:rl,cornflowerblue:nl,cornsilk:ol,crimson:al,cyan:hl,darkblue:ll,darkcyan:cl,darkgoldenrod:ul,darkgray:dl,darkgreen:fl,darkgrey:pl,darkkhaki:ml,darkmagenta:_l,darkolivegreen:gl,darkorange:yl,darkorchid:vl,darkred:xl,darksalmon:Tl,darkseagreen:El,darkslateblue:bl,darkslategray:wl,darkslategrey:Sl,darkturquoise:Al,darkviolet:Rl,deeppink:Cl,deepskyblue:Il,dimgray:Pl,dimgrey:Ml,dodgerblue:Bl,firebrick:Dl,floralwhite:Fl,forestgreen:Nl,fuchsia:Ll,gainsboro:Ol,ghostwhite:Ul,goldenrod:Gl,gold:kl,gray:Hl,green:Xl,greenyellow:Vl,grey:zl,honeydew:Wl,hotpink:jl,indianred:Yl,indigo:$l,ivory:ql,khaki:Kl,lavenderblush:Zl,lavender:Ql,lawngreen:Jl,lemonchiffon:tc,lightblue:ec,lightcoral:ic,lightcyan:sc,lightgoldenrodyellow:rc,lightgray:nc,lightgreen:oc,lightgrey:ac,lightpink:hc,lightsalmon:lc,lightseagreen:cc,lightskyblue:uc,lightslategray:dc,lightslategrey:fc,lightsteelblue:pc,lightyellow:mc,lime:_c,limegreen:gc,linen:yc,magenta:vc,maroon:xc,mediumaquamarine:Tc,mediumblue:Ec,mediumorchid:bc,mediumpurple:wc,mediumseagreen:Sc,mediumslateblue:Ac,mediumspringgreen:Rc,mediumturquoise:Cc,mediumvioletred:Ic,midnightblue:Pc,mintcream:Mc,mistyrose:Bc,moccasin:Dc,navajowhite:Fc,navy:Nc,oldlace:Lc,olive:Oc,olivedrab:Uc,orange:Gc,orangered:kc,orchid:Hc,palegoldenrod:Xc,palegreen:Vc,paleturquoise:zc,palevioletred:Wc,papayawhip:jc,peachpuff:Yc,peru:$c,pink:qc,plum:Kc,powderblue:Zc,purple:Qc,rebeccapurple:Jc,red:tu,rosybrown:eu,royalblue:iu,saddlebrown:su,salmon:ru,sandybrown:nu,seagreen:ou,seashell:au,sienna:hu,silver:lu,skyblue:cu,slateblue:uu,slategray:du,slategrey:fu,snow:pu,springgreen:mu,steelblue:_u,tan:gu,teal:yu,thistle:vu,tomato:xu,turquoise:Tu,violet:Eu,wheat:bu,white:wu,whitesmoke:Su,yellow:Au,yellowgreen:Ru};function ve(i,t=[]){return t[0]=(i>>16&255)/255,t[1]=(i>>8&255)/255,t[2]=(i&255)/255,t}function Us(i){let t=i.toString(16);return t="000000".substring(0,6-t.length)+t,`#${t}`}function Fi(i){if(typeof i=="string"&&(i=Cu[i.toLowerCase()]||i,i[0]==="#"&&(i=i.slice(1)),i.length===3)){const[t,e,s]=i;i=t+t+e+e+s+s}return parseInt(i,16)}function Iu(i){return(i[0]*255<<16)+(i[1]*255<<8)+(i[2]*255|0)}function Pu(){const i=[],t=[];for(let s=0;s<32;s++)i[s]=s,t[s]=s;i[k.NORMAL_NPM]=k.NORMAL,i[k.ADD_NPM]=k.ADD,i[k.SCREEN_NPM]=k.SCREEN,t[k.NORMAL]=k.NORMAL_NPM,t[k.ADD]=k.ADD_NPM,t[k.SCREEN]=k.SCREEN_NPM;const e=[];return e.push(t),e.push(i),e}const Gs=Pu();function ks(i,t){return Gs[t?1:0][i]}function $n(i,t,e,s){return e=e||new Float32Array(4),s||s===void 0?(e[0]=i[0]*t,e[1]=i[1]*t,e[2]=i[2]*t):(e[0]=i[0],e[1]=i[1],e[2]=i[2]),e[3]=t,e}function Ni(i,t){if(t===1)return(t*255<<24)+i;if(t===0)return 0;let e=i>>16&255,s=i>>8&255,r=i&255;return e=e*t+.5|0,s=s*t+.5|0,r=r*t+.5|0,(t*255<<24)+(e<<16)+(s<<8)+r}function Hs(i,t,e,s){return e=e||new Float32Array(4),e[0]=(i>>16&255)/255,e[1]=(i>>8&255)/255,e[2]=(i&255)/255,(s||s===void 0)&&(e[0]*=t,e[1]*=t,e[2]*=t),e[3]=t,e}function qn(i,t=null){const e=i*6;if(t=t||new Uint16Array(e),t.length!==e)throw new Error(`Out buffer length is incorrect, got ${t.length} and expected ${e}`);for(let s=0,r=0;s>>1,i|=i>>>2,i|=i>>>4,i|=i>>>8,i|=i>>>16,i+1}function Xs(i){return!(i&i-1)&&!!i}function Vs(i){let t=(i>65535?1:0)<<4;i>>>=t;let e=(i>255?1:0)<<3;return i>>>=e,t|=e,e=(i>15?1:0)<<2,i>>>=e,t|=e,e=(i>3?1:0)<<1,i>>>=e,t|=e,t|i>>1}function xe(i,t,e){const s=i.length;let r;if(t>=s||e===0)return;e=t+e>s?s-t:e;const n=s-e;for(r=t;r=0;--s){const r=Ui[s];if(r.test&&r.test(i,e))return new r(i,t)}throw new Error("Unrecognized source type to auto-detect Resource")}class De{constructor(t=0,e=0){this._width=t,this._height=e,this.destroyed=!1,this.internal=!1,this.onResize=new St("setRealSize"),this.onUpdate=new St("update"),this.onError=new St("onError")}bind(t){this.onResize.add(t),this.onUpdate.add(t),this.onError.add(t),(this._width||this._height)&&this.onResize.emit(this._width,this._height)}unbind(t){this.onResize.remove(t),this.onUpdate.remove(t),this.onError.remove(t)}resize(t,e){(t!==this._width||e!==this._height)&&(this._width=t,this._height=e,this.onResize.emit(t,e))}get valid(){return!!this._width&&!!this._height}update(){this.destroyed||this.onUpdate.emit()}load(){return Promise.resolve(this)}get width(){return this._width}get height(){return this._height}style(t,e,s){return!1}dispose(){}destroy(){this.destroyed||(this.destroyed=!0,this.dispose(),this.onError.removeAll(),this.onError=null,this.onResize.removeAll(),this.onResize=null,this.onUpdate.removeAll(),this.onUpdate=null)}static test(t,e){return!1}}class Fe extends De{constructor(t,e){const{width:s,height:r}=e||{};if(!s||!r)throw new Error("BufferResource width or height invalid");super(s,r),this.data=t}upload(t,e,s){const r=t.gl;r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.alphaMode===Rt.UNPACK);const n=e.realWidth,o=e.realHeight;return s.width===n&&s.height===o?r.texSubImage2D(e.target,0,0,0,n,o,e.format,s.type,this.data):(s.width=n,s.height=o,r.texImage2D(e.target,0,s.internalFormat,n,o,0,e.format,s.type,this.data)),!0}dispose(){this.data=null}static test(t){return t instanceof Float32Array||t instanceof Uint8Array||t instanceof Uint32Array}}const Gu={scaleMode:Vt.NEAREST,format:I.RGBA,alphaMode:Rt.NPM},Ze=class extends Pe{constructor(i=null,t=null){super(),t=t||{};const{alphaMode:e,mipmap:s,anisotropicLevel:r,scaleMode:n,width:o,height:a,wrapMode:h,format:l,type:c,target:u,resolution:d,resourceOptions:f}=t;i&&!(i instanceof De)&&(i=js(i,f),i.internal=!0),this.resolution=d||R.RESOLUTION,this.width=Math.round((o||0)*this.resolution)/this.resolution,this.height=Math.round((a||0)*this.resolution)/this.resolution,this._mipmap=s!=null?s:R.MIPMAP_TEXTURES,this.anisotropicLevel=r!=null?r:R.ANISOTROPIC_LEVEL,this._wrapMode=h||R.WRAP_MODE,this._scaleMode=n!=null?n:R.SCALE_MODE,this.format=l||I.RGBA,this.type=c||G.UNSIGNED_BYTE,this.target=u||de.TEXTURE_2D,this.alphaMode=e!=null?e:Rt.UNPACK,this.uid=he(),this.touched=0,this.isPowerOfTwo=!1,this._refreshPOT(),this._glTextures={},this.dirtyId=0,this.dirtyStyleId=0,this.cacheId=null,this.valid=o>0&&a>0,this.textureCacheIds=[],this.destroyed=!1,this.resource=null,this._batchEnabled=0,this._batchLocation=0,this.parentTextureArray=null,this.setResource(i)}get realWidth(){return Math.round(this.width*this.resolution)}get realHeight(){return Math.round(this.height*this.resolution)}get mipmap(){return this._mipmap}set mipmap(i){this._mipmap!==i&&(this._mipmap=i,this.dirtyStyleId++)}get scaleMode(){return this._scaleMode}set scaleMode(i){this._scaleMode!==i&&(this._scaleMode=i,this.dirtyStyleId++)}get wrapMode(){return this._wrapMode}set wrapMode(i){this._wrapMode!==i&&(this._wrapMode=i,this.dirtyStyleId++)}setStyle(i,t){let e;return i!==void 0&&i!==this.scaleMode&&(this.scaleMode=i,e=!0),t!==void 0&&t!==this.mipmap&&(this.mipmap=t,e=!0),e&&this.dirtyStyleId++,this}setSize(i,t,e){return e=e||this.resolution,this.setRealSize(i*e,t*e,e)}setRealSize(i,t,e){return this.resolution=e||this.resolution,this.width=Math.round(i)/this.resolution,this.height=Math.round(t)/this.resolution,this._refreshPOT(),this.update(),this}_refreshPOT(){this.isPowerOfTwo=Xs(this.realWidth)&&Xs(this.realHeight)}setResolution(i){const t=this.resolution;return t===i?this:(this.resolution=i,this.valid&&(this.width=Math.round(this.width*t)/i,this.height=Math.round(this.height*t)/i,this.emit("update",this)),this._refreshPOT(),this)}setResource(i){if(this.resource===i)return this;if(this.resource)throw new Error("Resource can be set only once");return i.bind(this),this.resource=i,this}update(){this.valid?(this.dirtyId++,this.dirtyStyleId++,this.emit("update",this)):this.width>0&&this.height>0&&(this.valid=!0,this.emit("loaded",this),this.emit("update",this))}onError(i){this.emit("error",this,i)}destroy(){this.resource&&(this.resource.unbind(this),this.resource.internal&&this.resource.destroy(),this.resource=null),this.cacheId&&(delete It[this.cacheId],delete Tt[this.cacheId],this.cacheId=null),this.dispose(),Ze.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0}dispose(){this.emit("dispose",this)}castToBaseTexture(){return this}static from(i,t,e=R.STRICT_TEXTURE_CACHE){const s=typeof i=="string";let r=null;if(s)r=i;else{if(!i._pixiId){const o=(t==null?void 0:t.pixiIdPrefix)||"pixiid";i._pixiId=`${o}_${he()}`}r=i._pixiId}let n=It[r];if(s&&e&&!n)throw new Error(`The cacheId "${r}" does not exist in BaseTextureCache.`);return n||(n=new Ze(i,t),n.cacheId=r,Ze.addToCache(n,r)),n}static fromBuffer(i,t,e,s){i=i||new Float32Array(t*e*4);const r=new Fe(i,{width:t,height:e}),n=i instanceof Float32Array?G.FLOAT:G.UNSIGNED_BYTE;return new Ze(r,Object.assign({},Gu,s||{width:t,height:e,type:n}))}static addToCache(i,t){t&&(i.textureCacheIds.includes(t)||i.textureCacheIds.push(t),It[t]&&console.warn(`BaseTexture added to the cache with an id [${t}] that already had an entry`),It[t]=i)}static removeFromCache(i){if(typeof i=="string"){const t=It[i];if(t){const e=t.textureCacheIds.indexOf(i);return e>-1&&t.textureCacheIds.splice(e,1),delete It[i],t}}else if(i!=null&&i.textureCacheIds){for(let t=0;ts.resource).filter(s=>s).map(s=>s.load());return this._load=Promise.all(e).then(()=>{const{realWidth:s,realHeight:r}=this.items[0];return this.resize(s,r),Promise.resolve(this)}),this._load}}class to extends Ys{constructor(t,e){const{width:s,height:r}=e||{};let n,o;Array.isArray(t)?(n=t,o=t.length):o=t,super(o,{width:s,height:r}),n&&this.initFromArray(n,e)}addBaseTextureAt(t,e){if(t.resource)this.addResourceAt(t.resource,e);else throw new Error("ArrayResource does not support RenderTexture");return this}bind(t){super.bind(t),t.target=de.TEXTURE_2D_ARRAY}upload(t,e,s){const{length:r,itemDirtyIds:n,items:o}=this,{gl:a}=t;s.dirtyId<0&&a.texImage3D(a.TEXTURE_2D_ARRAY,0,s.internalFormat,this._width,this._height,r,0,e.format,s.type,null);for(let h=0;h0)if(i.resource)this.addResourceAt(i.resource,t);else throw new Error("CubeResource does not support copying of renderTexture.");else i.target=de.TEXTURE_CUBE_MAP_POSITIVE_X+t,i.parentTextureArray=this.baseTexture,this.items[t]=i;return i.valid&&!this.valid&&this.resize(i.realWidth,i.realHeight),this.items[t]=i,this}upload(i,t,e){const s=this.itemDirtyIds;for(let r=0;r{const r=this.source;this.url=r.src;const n=()=>{this.destroyed||(r.onload=null,r.onerror=null,this.resize(r.width,r.height),this._load=null,this.createBitmap?e(this.process()):e(this))};r.complete&&r.src?n():(r.onload=n,r.onerror=o=>{s(o),this.onError.emit(o)})}),this._load)}process(){const t=this.source;if(this._process!==null)return this._process;if(this.bitmap!==null||!globalThis.createImageBitmap)return Promise.resolve(this);const e=globalThis.createImageBitmap,s=!t.crossOrigin||t.crossOrigin==="anonymous";return this._process=fetch(t.src,{mode:s?"cors":"no-cors"}).then(r=>r.blob()).then(r=>e(r,0,0,t.width,t.height,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===Rt.UNPACK?"premultiply":"none"})).then(r=>this.destroyed?Promise.reject():(this.bitmap=r,this.update(),this._process=null,Promise.resolve(this))),this._process}upload(t,e,s){if(typeof this.alphaMode=="number"&&(e.alphaMode=this.alphaMode),!this.createBitmap)return super.upload(t,e,s);if(!this.bitmap&&(this.process(),!this.bitmap))return!1;if(super.upload(t,e,s,this.bitmap),!this.preserveBitmap){let r=!0;const n=e._glTextures;for(const o in n){const a=n[o];if(a!==s&&a.dirtyId!==e.dirtyId){r=!1;break}}r&&(this.bitmap.close&&this.bitmap.close(),this.bitmap=null)}return!0}dispose(){this.source.onload=null,this.source.onerror=null,super.dispose(),this.bitmap&&(this.bitmap.close(),this.bitmap=null),this._process=null,this._load=null}static test(t){return typeof HTMLImageElement!="undefined"&&(typeof t=="string"||t instanceof HTMLImageElement)}}const Gi=class extends ee{constructor(i,t){t=t||{},super(R.ADAPTER.createCanvas()),this._width=0,this._height=0,this.svg=i,this.scale=t.scale||1,this._overrideWidth=t.width,this._overrideHeight=t.height,this._resolve=null,this._crossorigin=t.crossorigin,this._load=null,t.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(i=>{if(this._resolve=()=>{this.resize(this.source.width,this.source.height),i(this)},Gi.SVG_XML.test(this.svg.trim())){if(!btoa)throw new Error("Your browser doesn't support base64 conversions.");this.svg=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`}this._loadSvg()}),this._load)}_loadSvg(){const i=new Image;ee.crossOrigin(i,this.svg,this._crossorigin),i.src=this.svg,i.onerror=t=>{!this._resolve||(i.onerror=null,this.onError.emit(t))},i.onload=()=>{if(!this._resolve)return;const t=i.width,e=i.height;if(!t||!e)throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");let s=t*this.scale,r=e*this.scale;(this._overrideWidth||this._overrideHeight)&&(s=this._overrideWidth||this._overrideHeight/e*t,r=this._overrideHeight||this._overrideWidth/t*e),s=Math.round(s),r=Math.round(r);const n=this.source;n.width=s,n.height=r,n._pixiId=`canvas_${he()}`,n.getContext("2d").drawImage(i,0,0,t,e,0,0,s,r),this._resolve(),this._resolve=null}}static getSize(i){const t=Gi.SVG_SIZE.exec(i),e={};return t&&(e[t[1]]=Math.round(parseFloat(t[3])),e[t[5]]=Math.round(parseFloat(t[7]))),e}dispose(){super.dispose(),this._resolve=null,this._crossorigin=null}static test(i,t){return t==="svg"||typeof i=="string"&&i.startsWith("data:image/svg+xml")||typeof i=="string"&&Gi.SVG_XML.test(i)}};let Ne=Gi;Ne.SVG_XML=/^(<\?xml[^?]+\?>)?\s*()]*-->)?\s*\]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;const Ks=class extends ee{constructor(i,t){if(t=t||{},!(i instanceof HTMLVideoElement)){const e=document.createElement("video");e.setAttribute("preload","auto"),e.setAttribute("webkit-playsinline",""),e.setAttribute("playsinline",""),typeof i=="string"&&(i=[i]);const s=i[0].src||i[0];ee.crossOrigin(e,s,t.crossorigin);for(let r=0;r{this.valid?t(this):(this._resolve=t,i.load())}),this._load}_onError(i){this.source.removeEventListener("error",this._onError,!0),this.onError.emit(i)}_isSourcePlaying(){const i=this.source;return!i.paused&&!i.ended&&this._isSourceReady()}_isSourceReady(){return this.source.readyState>2}_onPlayStart(){this.valid||this._onCanPlay(),this.autoUpdate&&!this._isConnectedToTicker&&(Q.shared.add(this.update,this),this._isConnectedToTicker=!0)}_onPlayStop(){this._isConnectedToTicker&&(Q.shared.remove(this.update,this),this._isConnectedToTicker=!1)}_onCanPlay(){const i=this.source;i.removeEventListener("canplay",this._onCanPlay),i.removeEventListener("canplaythrough",this._onCanPlay);const t=this.valid;this.resize(i.videoWidth,i.videoHeight),!t&&this._resolve&&(this._resolve(this),this._resolve=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&i.play()}dispose(){this._isConnectedToTicker&&(Q.shared.remove(this.update,this),this._isConnectedToTicker=!1);const i=this.source;i&&(i.removeEventListener("error",this._onError,!0),i.pause(),i.src="",i.load()),super.dispose()}get autoUpdate(){return this._autoUpdate}set autoUpdate(i){i!==this._autoUpdate&&(this._autoUpdate=i,!this._autoUpdate&&this._isConnectedToTicker?(Q.shared.remove(this.update,this),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._isSourcePlaying()&&(Q.shared.add(this.update,this),this._isConnectedToTicker=!0))}get updateFPS(){return this._updateFPS}set updateFPS(i){i!==this._updateFPS&&(this._updateFPS=i)}static test(i,t){return globalThis.HTMLVideoElement&&i instanceof HTMLVideoElement||Ks.TYPES.includes(t)}};let ki=Ks;ki.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],ki.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};class Ee extends ee{constructor(t,e){var r;var s=(...n)=>{super(...n)};e=e||{},typeof t=="string"?(s(Ee.EMPTY),this.url=t):(s(t),this.url=null),this.crossOrigin=(r=e.crossOrigin)!=null?r:!0,this.alphaMode=typeof e.alphaMode=="number"?e.alphaMode:null,this._load=null,e.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(async(t,e)=>{if(this.url===null){t(this);return}try{const s=await R.ADAPTER.fetch(this.url,{mode:this.crossOrigin?"cors":"no-cors"});if(this.destroyed)return;const r=await s.blob();if(this.destroyed)return;const n=await createImageBitmap(r,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===Rt.UNPACK?"premultiply":"none"});if(this.destroyed)return;this.source=n,this.update(),t(this)}catch(s){if(this.destroyed)return;e(s),this.onError.emit(s)}}),this._load)}upload(t,e,s){return this.source instanceof ImageBitmap?(typeof this.alphaMode=="number"&&(e.alphaMode=this.alphaMode),super.upload(t,e,s)):(this.load(),!1)}dispose(){this.source instanceof ImageBitmap&&this.source.close(),super.dispose(),this._load=null}static test(t){return!!globalThis.createImageBitmap&&typeof ImageBitmap!="undefined"&&(typeof t=="string"||t instanceof ImageBitmap)}static get EMPTY(){var t;return Ee._EMPTY=(t=Ee._EMPTY)!=null?t:R.ADAPTER.createCanvas(0,0),Ee._EMPTY}}Ui.push(Ee,qs,eo,ki,Ne,Fe,$s,to);class ku extends Fe{upload(t,e,s){const r=t.gl;r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.alphaMode===Rt.UNPACK);const n=e.realWidth,o=e.realHeight;return s.width===n&&s.height===o?r.texSubImage2D(e.target,0,0,0,n,o,e.format,s.type,this.data):(s.width=n,s.height=o,r.texImage2D(e.target,0,s.internalFormat,n,o,0,e.format,s.type,this.data)),!0}}class Hi{constructor(t,e){this.width=Math.round(t||100),this.height=Math.round(e||100),this.stencil=!1,this.depth=!1,this.dirtyId=0,this.dirtyFormat=0,this.dirtySize=0,this.depthTexture=null,this.colorTextures=[],this.glFramebuffers={},this.disposeRunner=new St("disposeFramebuffer"),this.multisample=at.NONE}get colorTexture(){return this.colorTextures[0]}addColorTexture(t=0,e){return this.colorTextures[t]=e||new j(null,{scaleMode:Vt.NEAREST,resolution:1,mipmap:Ft.OFF,width:this.width,height:this.height}),this.dirtyId++,this.dirtyFormat++,this}addDepthTexture(t){return this.depthTexture=t||new j(new ku(null,{width:this.width,height:this.height}),{scaleMode:Vt.NEAREST,resolution:1,width:this.width,height:this.height,mipmap:Ft.OFF,format:I.DEPTH_COMPONENT,type:G.UNSIGNED_SHORT}),this.dirtyId++,this.dirtyFormat++,this}enableDepth(){return this.depth=!0,this.dirtyId++,this.dirtyFormat++,this}enableStencil(){return this.stencil=!0,this.dirtyId++,this.dirtyFormat++,this}resize(t,e){if(t=Math.round(t),e=Math.round(e),!(t===this.width&&e===this.height)){this.width=t,this.height=e,this.dirtyId++,this.dirtySize++;for(let s=0;sPromise.resolve(r))}static fromBuffer(t,e,s,r){return new B(j.fromBuffer(t,e,s,r))}static fromLoader(t,e,s,r){const n=new j(t,Object.assign({scaleMode:R.SCALE_MODE,resolution:te(e)},r)),{resource:o}=n;o instanceof qs&&(o.url=e);const a=new B(n);return s||(s=e),j.addToCache(a.baseTexture,s),B.addToCache(a,s),s!==e&&(j.addToCache(a.baseTexture,e),B.addToCache(a,e)),a.baseTexture.valid?Promise.resolve(a):new Promise(h=>{a.baseTexture.once("loaded",()=>h(a))})}static addToCache(t,e){e&&(t.textureCacheIds.includes(e)||t.textureCacheIds.push(e),Tt[e]&&console.warn(`Texture added to the cache with an id [${e}] that already had an entry`),Tt[e]=t)}static removeFromCache(t){if(typeof t=="string"){const e=Tt[t];if(e){const s=e.textureCacheIds.indexOf(t);return s>-1&&e.textureCacheIds.splice(s,1),delete Tt[t],e}}else if(t!=null&&t.textureCacheIds){for(let e=0;ethis.baseTexture.width,a=s+n>this.baseTexture.height;if(o||a){const h=o&&a?"and":"or",l=`X: ${e} + ${r} = ${e+r} > ${this.baseTexture.width}`,c=`Y: ${s} + ${n} = ${s+n} > ${this.baseTexture.height}`;throw new Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${l} ${h} ${c}`)}this.valid=r&&n&&this.baseTexture.valid,!this.trim&&!this.rotate&&(this.orig=t),this.valid&&this.updateUvs()}get rotate(){return this._rotate}set rotate(t){this._rotate=t,this.valid&&this.updateUvs()}get width(){return this.orig.width}get height(){return this.orig.height}castToBaseTexture(){return this.baseTexture}static get EMPTY(){return B._EMPTY||(B._EMPTY=new B(new j),Xi(B._EMPTY),Xi(B._EMPTY.baseTexture)),B._EMPTY}static get WHITE(){if(!B._WHITE){const t=R.ADAPTER.createCanvas(16,16),e=t.getContext("2d");t.width=16,t.height=16,e.fillStyle="white",e.fillRect(0,0,16,16),B._WHITE=new B(j.from(t)),Xi(B._WHITE),Xi(B._WHITE.baseTexture)}return B._WHITE}}class ie extends B{constructor(t,e){super(t,e),this.valid=!0,this.filterFrame=null,this.filterPoolKey=null,this.updateUvs()}get framebuffer(){return this.baseTexture.framebuffer}get multisample(){return this.framebuffer.multisample}set multisample(t){this.framebuffer.multisample=t}resize(t,e,s=!0){const r=this.baseTexture.resolution,n=Math.round(t*r)/r,o=Math.round(e*r)/r;this.valid=n>0&&o>0,this._frame.width=this.orig.width=n,this._frame.height=this.orig.height=o,s&&this.baseTexture.resize(n,o),this.updateUvs()}setResolution(t){const{baseTexture:e}=this;e.resolution!==t&&(e.setResolution(t),this.resize(e.width,e.height,!1))}static create(t){return new ie(new Zs(t))}}class Js{constructor(t){this.texturePool={},this.textureOptions=t||{},this.enableFullScreen=!1,this._pixelsWidth=0,this._pixelsHeight=0}createTexture(t,e,s=at.NONE){const r=new Zs(Object.assign({width:t,height:e,resolution:1,multisample:s},this.textureOptions));return new ie(r)}getOptimalTexture(t,e,s=1,r=at.NONE){let n;t=Math.ceil(t*s-1e-6),e=Math.ceil(e*s-1e-6),!this.enableFullScreen||t!==this._pixelsWidth||e!==this._pixelsHeight?(t=Ke(t),e=Ke(e),n=((t&65535)<<16|e&65535)>>>0,r>1&&(n+=r*4294967296)):n=r>1?-r:-1,this.texturePool[n]||(this.texturePool[n]=[]);let o=this.texturePool[n].pop();return o||(o=this.createTexture(t,e,r)),o.filterPoolKey=n,o.setResolution(s),o}getFilterTexture(t,e,s){const r=this.getOptimalTexture(t.width,t.height,e||t.resolution,s||at.NONE);return r.filterFrame=t.filterFrame,r}returnTexture(t){const e=t.filterPoolKey;t.filterFrame=null,this.texturePool[e].push(t)}returnFilterTexture(t){this.returnTexture(t)}clear(t){if(t=t!==!1,t)for(const e in this.texturePool){const s=this.texturePool[e];if(s)for(let r=0;r0&&t.height>0;for(const e in this.texturePool){if(!(Number(e)<0))continue;const s=this.texturePool[e];if(s)for(let r=0;r1){for(let u=0;u1&&(c=this.getOptimalFilterTexture(l.width,l.height,e.resolution),c.filterFrame=l.filterFrame),s[u].apply(this,l,c,Nt.CLEAR,e);const d=l;l=c,c=d}s[u].apply(this,l,h.renderTexture,Nt.BLEND,e),u>1&&e.multisample>1&&this.returnFilterTexture(e.renderTexture),this.returnFilterTexture(l),this.returnFilterTexture(c)}e.clear(),this.statePool.push(e)}bindAndClear(t,e=Nt.CLEAR){const{renderTexture:s,state:r}=this.renderer;if(t===this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?this.renderer.projection.transform=this.activeState.transform:this.renderer.projection.transform=null,t!=null&&t.filterFrame){const o=this.tempRect;o.x=0,o.y=0,o.width=t.filterFrame.width,o.height=t.filterFrame.height,s.bind(t,t.filterFrame,o)}else t!==this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?s.bind(t):this.renderer.renderTexture.bind(t,this.activeState.bindingSourceFrame,this.activeState.bindingDestinationFrame);const n=r.stateId&1||this.forceClear;(e===Nt.CLEAR||e===Nt.BLIT&&n)&&this.renderer.framebuffer.clear(0,0,0,0)}applyFilter(t,e,s,r){const n=this.renderer;n.state.set(t.state),this.bindAndClear(s,r),t.uniforms.uSampler=e,t.uniforms.filterGlobals=this.globalUniforms,n.shader.bind(t),t.legacy=!!t.program.attributeData.aTextureCoord,t.legacy?(this.quadUv.map(e._frame,e.filterFrame),n.geometry.bind(this.quadUv),n.geometry.draw(Dt.TRIANGLES)):(n.geometry.bind(this.quad),n.geometry.draw(Dt.TRIANGLE_STRIP))}calculateSpriteMatrix(t,e){const{sourceFrame:s,destinationFrame:r}=this.activeState,{orig:n}=e._texture,o=t.set(r.width,0,0,r.height,s.x,s.y),a=e.worldTransform.copyTo(tt.TEMP_MATRIX);return a.invert(),o.prepend(a),o.scale(1/n.width,1/n.height),o.translate(e.anchor.x,e.anchor.y),o}destroy(){this.renderer=null,this.texturePool.clear(!1)}getOptimalFilterTexture(t,e,s=1,r=at.NONE){return this.texturePool.getOptimalTexture(t,e,s,r)}getFilterTexture(t,e,s){if(typeof t=="number"){const n=t;t=e,e=n}t=t||this.activeState.renderTexture;const r=this.texturePool.getOptimalTexture(t.width,t.height,e||t.resolution,s||at.NONE);return r.filterFrame=t.filterFrame,r}returnFilterTexture(t){this.texturePool.returnTexture(t)}emptyPool(){this.texturePool.clear(!0)}resize(){this.texturePool.setScreenSize(this.renderer.view)}transformAABB(t,e){const s=Vi[0],r=Vi[1],n=Vi[2],o=Vi[3];s.set(e.left,e.top),r.set(e.left,e.bottom),n.set(e.right,e.top),o.set(e.right,e.bottom),t.apply(s,s),t.apply(r,r),t.apply(n,n),t.apply(o,o);const a=Math.min(s.x,r.x,n.x,o.x),h=Math.min(s.y,r.y,n.y,o.y),l=Math.max(s.x,r.x,n.x,o.x),c=Math.max(s.y,r.y,n.y,o.y);e.x=a,e.y=h,e.width=l-a,e.height=c-h}roundFrame(t,e,s,r,n){if(!(t.width<=0||t.height<=0||s.width<=0||s.height<=0)){if(n){const{a:o,b:a,c:h,d:l}=n;if((Math.abs(a)>1e-4||Math.abs(h)>1e-4)&&(Math.abs(o)>1e-4||Math.abs(l)>1e-4))return}n=n?er.copyFrom(n):er.identity(),n.translate(-s.x,-s.y).scale(r.width/s.width,r.height/s.height).translate(r.x,r.y),this.transformAABB(n,t),t.ceil(e),this.transformAABB(n.invert(),t)}}}ir.extension={type:M.RendererSystem,name:"filter"},U.add(ir);class ti{constructor(t){this.renderer=t}flush(){}destroy(){this.renderer=null}start(){}stop(){this.flush()}render(t){}}class sr{constructor(t){this.renderer=t,this.emptyRenderer=new ti(t),this.currentRenderer=this.emptyRenderer}setObjectRenderer(t){this.currentRenderer!==t&&(this.currentRenderer.stop(),this.currentRenderer=t,this.currentRenderer.start())}flush(){this.setObjectRenderer(this.emptyRenderer)}reset(){this.setObjectRenderer(this.emptyRenderer)}copyBoundTextures(t,e){const{boundTextures:s}=this.renderer.texture;for(let r=e-1;r>=0;--r)t[r]=s[r]||null,t[r]&&(t[r]._batchLocation=r)}boundArray(t,e,s,r){const{elements:n,ids:o,count:a}=t;let h=0;for(let l=0;l=0&&u=J.WEBGL2&&(s=t.getContext("webgl2",e)),s)this.webGLVersion=2;else if(this.webGLVersion=1,s=t.getContext("webgl",e)||t.getContext("experimental-webgl",e),!s)throw new Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=s,this.getExtensions(),this.gl}getExtensions(){const{gl:t}=this,e={anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),s3tc:t.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:t.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:t.getExtension("WEBGL_compressed_texture_etc"),etc1:t.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:t.getExtension("WEBGL_compressed_texture_atc"),astc:t.getExtension("WEBGL_compressed_texture_astc")};this.webGLVersion===1?Object.assign(this.extensions,e,{drawBuffers:t.getExtension("WEBGL_draw_buffers"),depthTexture:t.getExtension("WEBGL_depth_texture"),loseContext:t.getExtension("WEBGL_lose_context"),vertexArrayObject:t.getExtension("OES_vertex_array_object")||t.getExtension("MOZ_OES_vertex_array_object")||t.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:t.getExtension("OES_element_index_uint"),floatTexture:t.getExtension("OES_texture_float"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),textureHalfFloat:t.getExtension("OES_texture_half_float"),textureHalfFloatLinear:t.getExtension("OES_texture_half_float_linear")}):this.webGLVersion===2&&Object.assign(this.extensions,e,{colorBufferFloat:t.getExtension("EXT_color_buffer_float")})}handleContextLost(t){t.preventDefault()}handleContextRestored(){this.renderer.runners.contextChange.emit(this.gl)}destroy(){const t=this.renderer.view;this.renderer=null,t.removeEventListener!==void 0&&(t.removeEventListener("webglcontextlost",this.handleContextLost),t.removeEventListener("webglcontextrestored",this.handleContextRestored)),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()}postrender(){this.renderer.objectRenderer.renderingToScreen&&this.gl.flush()}validateContext(t){const e=t.getContextAttributes(),s="WebGL2RenderingContext"in globalThis&&t instanceof globalThis.WebGL2RenderingContext;s&&(this.webGLVersion=2),e&&!e.stencil&&console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");const r=s||!!t.getExtension("OES_element_index_uint");this.supports.uint32Indices=r,r||console.warn("Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly")}}rr.extension={type:M.RendererSystem,name:"context"},U.add(rr);class ao{constructor(t){this.framebuffer=t,this.stencil=null,this.dirtyId=-1,this.dirtyFormat=-1,this.dirtySize=-1,this.multisample=at.NONE,this.msaaBuffer=null,this.blitFramebuffer=null,this.mipLevel=0}}const Yu=new z;class nr{constructor(t){this.renderer=t,this.managedFramebuffers=[],this.unknownFramebuffer=new Hi(10,10),this.msaaSamples=null}contextChange(){const t=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new z,this.hasMRT=!0,this.writeDepthTexture=!0,this.disposeAll(!0),this.renderer.context.webGLVersion===1){let e=this.renderer.context.extensions.drawBuffers,s=this.renderer.context.extensions.depthTexture;R.PREFER_ENV===J.WEBGL_LEGACY&&(e=null,s=null),e?t.drawBuffers=r=>e.drawBuffersWEBGL(r):(this.hasMRT=!1,t.drawBuffers=()=>{}),s||(this.writeDepthTexture=!1)}else this.msaaSamples=t.getInternalformatParameter(t.RENDERBUFFER,t.RGBA8,t.SAMPLES)}bind(t,e,s=0){const{gl:r}=this;if(t){const n=t.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(t);this.current!==t&&(this.current=t,r.bindFramebuffer(r.FRAMEBUFFER,n.framebuffer)),n.mipLevel!==s&&(t.dirtyId++,t.dirtyFormat++,n.mipLevel=s),n.dirtyId!==t.dirtyId&&(n.dirtyId=t.dirtyId,n.dirtyFormat!==t.dirtyFormat?(n.dirtyFormat=t.dirtyFormat,n.dirtySize=t.dirtySize,this.updateFramebuffer(t,s)):n.dirtySize!==t.dirtySize&&(n.dirtySize=t.dirtySize,this.resizeFramebuffer(t)));for(let o=0;o>s,a=e.height>>s,h=o/e.width;this.setViewport(e.x*h,e.y*h,o,a)}else{const o=t.width>>s,a=t.height>>s;this.setViewport(0,0,o,a)}}else this.current&&(this.current=null,r.bindFramebuffer(r.FRAMEBUFFER,null)),e?this.setViewport(e.x,e.y,e.width,e.height):this.setViewport(0,0,this.renderer.width,this.renderer.height)}setViewport(t,e,s,r){const n=this.viewport;t=Math.round(t),e=Math.round(e),s=Math.round(s),r=Math.round(r),(n.width!==s||n.height!==r||n.x!==t||n.y!==e)&&(n.x=t,n.y=e,n.width=s,n.height=r,this.gl.viewport(t,e,s,r))}get size(){return this.current?{x:0,y:0,width:this.current.width,height:this.current.height}:{x:0,y:0,width:this.renderer.width,height:this.renderer.height}}clear(t,e,s,r,n=xt.COLOR|xt.DEPTH){const{gl:o}=this;o.clearColor(t,e,s,r),o.clear(n)}initFramebuffer(t){const{gl:e}=this,s=new ao(e.createFramebuffer());return s.multisample=this.detectSamples(t.multisample),t.glFramebuffers[this.CONTEXT_UID]=s,this.managedFramebuffers.push(t),t.disposeRunner.add(this),s}resizeFramebuffer(t){const{gl:e}=this,s=t.glFramebuffers[this.CONTEXT_UID];s.stencil&&(e.bindRenderbuffer(e.RENDERBUFFER,s.stencil),s.msaaBuffer?e.renderbufferStorageMultisample(e.RENDERBUFFER,s.multisample,e.DEPTH24_STENCIL8,t.width,t.height):e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_STENCIL,t.width,t.height));const r=t.colorTextures;let n=r.length;e.drawBuffers||(n=Math.min(n,1));for(let o=0;o1&&this.canMultisampleFramebuffer(t)?r.msaaBuffer=r.msaaBuffer||s.createRenderbuffer():r.msaaBuffer&&(s.deleteRenderbuffer(r.msaaBuffer),r.msaaBuffer=null,r.blitFramebuffer&&(r.blitFramebuffer.dispose(),r.blitFramebuffer=null));const a=[];for(let h=0;h1&&s.drawBuffers(a),t.depthTexture&&this.writeDepthTexture){const l=t.depthTexture;this.renderer.texture.bind(l,0),s.framebufferTexture2D(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.TEXTURE_2D,l._glTextures[this.CONTEXT_UID].texture,e)}(t.stencil||t.depth)&&!(t.depthTexture&&this.writeDepthTexture)?(r.stencil=r.stencil||s.createRenderbuffer(),s.bindRenderbuffer(s.RENDERBUFFER,r.stencil),r.msaaBuffer?s.renderbufferStorageMultisample(s.RENDERBUFFER,r.multisample,s.DEPTH24_STENCIL8,t.width,t.height):s.renderbufferStorage(s.RENDERBUFFER,s.DEPTH_STENCIL,t.width,t.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.DEPTH_STENCIL_ATTACHMENT,s.RENDERBUFFER,r.stencil)):r.stencil&&(s.deleteRenderbuffer(r.stencil),r.stencil=null)}canMultisampleFramebuffer(t){return this.renderer.context.webGLVersion!==1&&t.colorTextures.length<=1&&!t.depthTexture}detectSamples(t){const{msaaSamples:e}=this;let s=at.NONE;if(t<=1||e===null)return s;for(let r=0;r=0&&this.managedFramebuffers.splice(n,1),t.disposeRunner.remove(this),e||(r.deleteFramebuffer(s.framebuffer),s.msaaBuffer&&r.deleteRenderbuffer(s.msaaBuffer),s.stencil&&r.deleteRenderbuffer(s.stencil)),s.blitFramebuffer&&s.blitFramebuffer.dispose()}disposeAll(t){const e=this.managedFramebuffers;this.managedFramebuffers=[];for(let s=0;ss.createVertexArrayOES(),t.bindVertexArray=r=>s.bindVertexArrayOES(r),t.deleteVertexArray=r=>s.deleteVertexArrayOES(r)):(this.hasVao=!1,t.createVertexArray=()=>null,t.bindVertexArray=()=>null,t.deleteVertexArray=()=>null)}if(e.webGLVersion!==2){const s=t.getExtension("ANGLE_instanced_arrays");s?(t.vertexAttribDivisor=(r,n)=>s.vertexAttribDivisorANGLE(r,n),t.drawElementsInstanced=(r,n,o,a,h)=>s.drawElementsInstancedANGLE(r,n,o,a,h),t.drawArraysInstanced=(r,n,o,a)=>s.drawArraysInstancedANGLE(r,n,o,a)):this.hasInstance=!1}this.canUseUInt32ElementIndex=e.webGLVersion===2||!!e.extensions.uint32ElementIndex}bind(t,e){e=e||this.renderer.shader.shader;const{gl:s}=this;let r=t.glVertexArrayObjects[this.CONTEXT_UID],n=!1;r||(this.managedGeometries[t.id]=t,t.disposeRunner.add(this),t.glVertexArrayObjects[this.CONTEXT_UID]=r={},n=!0);const o=r[e.program.id]||this.initGeometryVao(t,e,n);this._activeGeometry=t,this._activeVao!==o&&(this._activeVao=o,this.hasVao?s.bindVertexArray(o):this.activateVao(t,e.program)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){const t=this._activeGeometry,e=this.renderer.buffer;for(let s=0;s`${c}: ${l}`),s=i.getShaderInfoLog(t),r=s.split(` +`),n={},o=r.map(l=>parseFloat(l.replace(/^ERROR\: 0\:([\d]+)\:.*$/,"$1"))).filter(l=>l&&!n[l]?(n[l]=!0,!0):!1),a=[""];o.forEach(l=>{e[l-1]=`%c${e[l-1]}%c`,a.push("background: #FF0000; color:#FFFFFF; font-size: 10px","font-size: 10px")});const h=e.join(` +`);a[0]=h,console.error(s),console.groupCollapsed("click to view full shader code"),console.warn(...a),console.groupEnd()}function $u(i,t,e,s){i.getProgramParameter(t,i.LINK_STATUS)||(i.getShaderParameter(e,i.COMPILE_STATUS)||co(i,e),i.getShaderParameter(s,i.COMPILE_STATUS)||co(i,s),console.error("PixiJS Error: Could not initialize shader."),i.getProgramInfoLog(t)!==""&&console.warn("PixiJS Warning: gl.getProgramInfoLog()",i.getProgramInfoLog(t)))}function hr(i){const t=new Array(i);for(let e=0;e=J.WEBGL2&&(t=i.getContext("webgl2",{})),t||(t=i.getContext("webgl",{})||i.getContext("experimental-webgl",{}),t?t.getExtension("WEBGL_draw_buffers"):t=null),Le=t}return Le}let zi;function qu(){if(!zi){zi=wt.MEDIUM;const i=po();i&&i.getShaderPrecisionFormat&&(zi=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).precision?wt.HIGH:wt.MEDIUM)}return zi}function mo(i,t,e){if(i.substring(0,9)!=="precision"){let s=t;return t===wt.HIGH&&e!==wt.HIGH&&(s=wt.MEDIUM),`precision ${s} float; +${i}`}else if(e!==wt.HIGH&&i.substring(0,15)==="precision highp")return i.replace("precision highp","precision mediump");return i}const Ku={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 _o(i){return Ku[i]}let Wi=null;const go={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"};function yo(i,t){if(!Wi){const e=Object.keys(go);Wi={};for(let s=0;si.type==="float"&&i.size===1&&!i.isArray,code:i=>` + if(uv["${i}"] !== ud["${i}"].value) + { + ud["${i}"].value = uv["${i}"] + gl.uniform1f(ud["${i}"].location, uv["${i}"]) + } + `},{test:(i,t)=>(i.type==="sampler2D"||i.type==="samplerCube"||i.type==="sampler2DArray")&&i.size===1&&!i.isArray&&(t==null||t.castToBaseTexture!==void 0),code:i=>`t = syncData.textureCount++; + + renderer.texture.bind(uv["${i}"], t); + + if(ud["${i}"].value !== t) + { + ud["${i}"].value = t; + gl.uniform1i(ud["${i}"].location, t); +; // eslint-disable-line max-len + }`},{test:(i,t)=>i.type==="mat3"&&i.size===1&&!i.isArray&&t.a!==void 0,code:i=>` + gl.uniformMatrix3fv(ud["${i}"].location, false, uv["${i}"].toArray(true)); + `,codeUbo:i=>` + var ${i}_matrix = uv.${i}.toArray(true); + + data[offset] = ${i}_matrix[0]; + data[offset+1] = ${i}_matrix[1]; + data[offset+2] = ${i}_matrix[2]; + + data[offset + 4] = ${i}_matrix[3]; + data[offset + 5] = ${i}_matrix[4]; + data[offset + 6] = ${i}_matrix[5]; + + data[offset + 8] = ${i}_matrix[6]; + data[offset + 9] = ${i}_matrix[7]; + data[offset + 10] = ${i}_matrix[8]; + `},{test:(i,t)=>i.type==="vec2"&&i.size===1&&!i.isArray&&t.x!==void 0,code:i=>` + cv = ud["${i}"].value; + v = uv["${i}"]; + + if(cv[0] !== v.x || cv[1] !== v.y) + { + cv[0] = v.x; + cv[1] = v.y; + gl.uniform2f(ud["${i}"].location, v.x, v.y); + }`,codeUbo:i=>` + v = uv.${i}; + + data[offset] = v.x; + data[offset+1] = v.y; + `},{test:i=>i.type==="vec2"&&i.size===1&&!i.isArray,code:i=>` + cv = ud["${i}"].value; + v = uv["${i}"]; + + if(cv[0] !== v[0] || cv[1] !== v[1]) + { + cv[0] = v[0]; + cv[1] = v[1]; + gl.uniform2f(ud["${i}"].location, v[0], v[1]); + } + `},{test:(i,t)=>i.type==="vec4"&&i.size===1&&!i.isArray&&t.width!==void 0,code:i=>` + cv = ud["${i}"].value; + v = uv["${i}"]; + + 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["${i}"].location, v.x, v.y, v.width, v.height) + }`,codeUbo:i=>` + v = uv.${i}; + + data[offset] = v.x; + data[offset+1] = v.y; + data[offset+2] = v.width; + data[offset+3] = v.height; + `},{test:i=>i.type==="vec4"&&i.size===1&&!i.isArray,code:i=>` + cv = ud["${i}"].value; + v = uv["${i}"]; + + 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(ud["${i}"].location, v[0], v[1], v[2], v[3]) + }`}],Zu={float:` + if (cv !== v) + { + cu.value = v; + gl.uniform1f(location, v); + }`,vec2:` + 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:` + 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:` + 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]); + }`,int:` + if (cv !== v) + { + cu.value = v; + + gl.uniform1i(location, v); + }`,ivec2:` + if (cv[0] !== v[0] || cv[1] !== v[1]) + { + cv[0] = v[0]; + cv[1] = v[1]; + + gl.uniform2i(location, v[0], v[1]); + }`,ivec3:` + 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]); + }`,ivec4:` + 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]); + }`,uint:` + if (cv !== v) + { + cu.value = v; + + gl.uniform1ui(location, v); + }`,uvec2:` + if (cv[0] !== v[0] || cv[1] !== v[1]) + { + cv[0] = v[0]; + cv[1] = v[1]; + + gl.uniform2ui(location, v[0], v[1]); + }`,uvec3:` + 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]); + }`,uvec4:` + 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); + }`,bvec2:` + if (cv[0] != v[0] || cv[1] != v[1]) + { + cv[0] = v[0]; + cv[1] = v[1]; + + gl.uniform2i(location, v[0], v[1]); + }`,bvec3:` + 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]); + }`,bvec4:` + 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]); + }`,mat2:"gl.uniformMatrix2fv(location, false, v)",mat3:"gl.uniformMatrix3fv(location, false, v)",mat4:"gl.uniformMatrix4fv(location, false, v)",sampler2D:` + if (cv !== v) + { + cu.value = v; + + gl.uniform1i(location, v); + }`,samplerCube:` + if (cv !== v) + { + cu.value = v; + + gl.uniform1i(location, v); + }`,sampler2DArray:` + if (cv !== v) + { + cu.value = v; + + gl.uniform1i(location, v); + }`},Qu={float:"gl.uniform1fv(location, v)",vec2:"gl.uniform2fv(location, v)",vec3:"gl.uniform3fv(location, v)",vec4:"gl.uniform4fv(location, v)",mat4:"gl.uniformMatrix4fv(location, false, v)",mat3:"gl.uniformMatrix3fv(location, false, v)",mat2:"gl.uniformMatrix2fv(location, false, v)",int:"gl.uniform1iv(location, v)",ivec2:"gl.uniform2iv(location, v)",ivec3:"gl.uniform3iv(location, v)",ivec4:"gl.uniform4iv(location, v)",uint:"gl.uniform1uiv(location, v)",uvec2:"gl.uniform2uiv(location, v)",uvec3:"gl.uniform3uiv(location, v)",uvec4:"gl.uniform4uiv(location, v)",bool:"gl.uniform1iv(location, v)",bvec2:"gl.uniform2iv(location, v)",bvec3:"gl.uniform3iv(location, v)",bvec4:"gl.uniform4iv(location, v)",sampler2D:"gl.uniform1iv(location, v)",samplerCube:"gl.uniform1iv(location, v)",sampler2DArray:"gl.uniform1iv(location, v)"};function Ju(i,t){var s;const e=[` + var v = null; + var cv = null; + var cu = null; + var t = 0; + var gl = renderer.gl; + `];for(const r in i.uniforms){const n=t[r];if(!n){(s=i.uniforms[r])!=null&&s.group&&(i.uniforms[r].ubo?e.push(` + renderer.shader.syncUniformBufferGroup(uv.${r}, '${r}'); + `):e.push(` + renderer.shader.syncUniformGroup(uv.${r}, syncData); + `));continue}const o=i.uniforms[r];let a=!1;for(let h=0;h0&&(t+=` +else `),e0?this.maskStack[this.maskStack.length-1]._colorMask:15;s!==e&&this.renderer.gl.colorMask((s&1)!==0,(s&2)!==0,(s&4)!==0,(s&8)!==0)}destroy(){this.renderer=null}}mr.extension={type:M.RendererSystem,name:"mask"},U.add(mr);class Eo{constructor(t){this.renderer=t,this.maskStack=[],this.glConst=0}getStackLength(){return this.maskStack.length}setMaskStack(t){const{gl:e}=this.renderer,s=this.getStackLength();this.maskStack=t;const r=this.getStackLength();r!==s&&(r===0?e.disable(this.glConst):(e.enable(this.glConst),this._useCurrent()))}_useCurrent(){}destroy(){this.renderer=null,this.maskStack=null}}const bo=new tt,wo=[],$i=class extends Eo{constructor(i){super(i),this.glConst=R.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST}getStackLength(){const i=this.maskStack[this.maskStack.length-1];return i?i._scissorCounter:0}calcScissorRect(i){var o;if(i._scissorRectLocal)return;const t=i._scissorRect,{maskObject:e}=i,{renderer:s}=this,r=s.renderTexture,n=e.getBounds(!0,(o=wo.pop())!=null?o:new z);this.roundFrameToPixels(n,r.current?r.current.resolution:s.resolution,r.sourceFrame,r.destinationFrame,s.projection.transform),t&&n.fit(t),i._scissorRectLocal=n}static isMatrixRotated(i){if(!i)return!1;const{a:t,b:e,c:s,d:r}=i;return(Math.abs(e)>1e-4||Math.abs(s)>1e-4)&&(Math.abs(t)>1e-4||Math.abs(r)>1e-4)}testScissor(i){const{maskObject:t}=i;if(!t.isFastRect||!t.isFastRect()||$i.isMatrixRotated(t.worldTransform)||$i.isMatrixRotated(this.renderer.projection.transform))return!1;this.calcScissorRect(i);const e=i._scissorRectLocal;return e.width>0&&e.height>0}roundFrameToPixels(i,t,e,s,r){$i.isMatrixRotated(r)||(r=r?bo.copyFrom(r):bo.identity(),r.translate(-e.x,-e.y).scale(s.width/e.width,s.height/e.height).translate(s.x,s.y),this.renderer.filter.transformAABB(r,i),i.fit(s),i.x=Math.round(i.x*t),i.y=Math.round(i.y*t),i.width=Math.round(i.width*t),i.height=Math.round(i.height*t))}push(i){i._scissorRectLocal||this.calcScissorRect(i);const{gl:t}=this.renderer;i._scissorRect||t.enable(t.SCISSOR_TEST),i._scissorCounter++,i._scissorRect=i._scissorRectLocal,this._useCurrent()}pop(i){const{gl:t}=this.renderer;i&&wo.push(i._scissorRectLocal),this.getStackLength()>0?this._useCurrent():t.disable(t.SCISSOR_TEST)}_useCurrent(){const i=this.maskStack[this.maskStack.length-1]._scissorRect;let t;this.renderer.renderTexture.current?t=i.y:t=this.renderer.height-i.height-i.y,this.renderer.gl.scissor(i.x,t,i.width,i.height)}};let _r=$i;_r.extension={type:M.RendererSystem,name:"scissor"},U.add(_r);class gr extends Eo{constructor(t){super(t),this.glConst=R.ADAPTER.getWebGLRenderingContext().STENCIL_TEST}getStackLength(){const t=this.maskStack[this.maskStack.length-1];return t?t._stencilCounter:0}push(t){const e=t.maskObject,{gl:s}=this.renderer,r=t._stencilCounter;r===0&&(this.renderer.framebuffer.forceStencil(),s.clearStencil(0),s.clear(s.STENCIL_BUFFER_BIT),s.enable(s.STENCIL_TEST)),t._stencilCounter++;const n=t._colorMask;n!==0&&(t._colorMask=0,s.colorMask(!1,!1,!1,!1)),s.stencilFunc(s.EQUAL,r,4294967295),s.stencilOp(s.KEEP,s.KEEP,s.INCR),e.renderable=!0,e.render(this.renderer),this.renderer.batch.flush(),e.renderable=!1,n!==0&&(t._colorMask=n,s.colorMask((n&1)!==0,(n&2)!==0,(n&4)!==0,(n&8)!==0)),this._useCurrent()}pop(t){const e=this.renderer.gl;if(this.getStackLength()===0)e.disable(e.STENCIL_TEST);else{const s=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null,r=s?s._colorMask:15;r!==0&&(s._colorMask=0,e.colorMask(!1,!1,!1,!1)),e.stencilOp(e.KEEP,e.KEEP,e.DECR),t.renderable=!0,t.render(this.renderer),this.renderer.batch.flush(),t.renderable=!1,r!==0&&(s._colorMask=r,e.colorMask((r&1)!==0,(r&2)!==0,(r&4)!==0,(r&8)!==0)),this._useCurrent()}}_useCurrent(){const t=this.renderer.gl;t.stencilFunc(t.EQUAL,this.getStackLength(),4294967295),t.stencilOp(t.KEEP,t.KEEP,t.KEEP)}}gr.extension={type:M.RendererSystem,name:"stencil"},U.add(gr);class yr{constructor(t){this.renderer=t,this.destinationFrame=null,this.sourceFrame=null,this.defaultFrame=null,this.projectionMatrix=new tt,this.transform=null}update(t,e,s,r){this.destinationFrame=t||this.destinationFrame||this.defaultFrame,this.sourceFrame=e||this.sourceFrame||t,this.calculateProjection(this.destinationFrame,this.sourceFrame,s,r),this.transform&&this.projectionMatrix.append(this.transform);const n=this.renderer;n.globalUniforms.uniforms.projectionMatrix=this.projectionMatrix,n.globalUniforms.update(),n.shader.shader&&n.shader.syncUniformGroup(n.shader.shader.uniforms.globals)}calculateProjection(t,e,s,r){const n=this.projectionMatrix,o=r?-1:1;n.identity(),n.a=1/e.width*2,n.d=o*(1/e.height*2),n.tx=-1-e.x*n.a,n.ty=-o-e.y*n.d}setTransform(t){}destroy(){this.renderer=null}}yr.extension={type:M.RendererSystem,name:"projection"},U.add(yr);const we=new z,ii=new z;class vr{constructor(t){this.renderer=t,this.defaultMaskStack=[],this.current=null,this.sourceFrame=new z,this.destinationFrame=new z,this.viewportFrame=new z}bind(t=null,e,s){const r=this.renderer;this.current=t;let n,o,a;t?(n=t.baseTexture,a=n.resolution,e||(we.width=t.frame.width,we.height=t.frame.height,e=we),s||(ii.x=t.frame.x,ii.y=t.frame.y,ii.width=e.width,ii.height=e.height,s=ii),o=n.framebuffer):(a=r.resolution,e||(we.width=r._view.screen.width,we.height=r._view.screen.height,e=we),s||(s=we,s.width=e.width,s.height=e.height));const h=this.viewportFrame;h.x=s.x*a,h.y=s.y*a,h.width=s.width*a,h.height=s.height*a,t||(h.y=r.view.height-(h.y+h.height)),h.ceil(),this.renderer.framebuffer.bind(o,h),this.renderer.projection.update(s,e,a,!o),t?this.renderer.mask.setMaskStack(n.maskStack):this.renderer.mask.setMaskStack(this.defaultMaskStack),this.sourceFrame.copyFrom(e),this.destinationFrame.copyFrom(s)}clear(t,e){this.current?t=t||this.current.baseTexture.clearColor:t=t||this.renderer.background.colorRgba;const s=this.destinationFrame,r=this.current?this.current.baseTexture:this.renderer._view.screen,n=s.width!==r.width||s.height!==r.height;if(n){let{x:o,y:a,width:h,height:l}=this.viewportFrame;o=Math.round(o),a=Math.round(a),h=Math.round(h),l=Math.round(l),this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST),this.renderer.gl.scissor(o,a,h,l)}this.renderer.framebuffer.clear(t[0],t[1],t[2],t[3],e),n&&this.renderer.scissor.pop()}resize(){this.bind(null)}reset(){this.bind(null)}destroy(){this.renderer=null}}vr.extension={type:M.RendererSystem,name:"renderTexture"},U.add(vr);function cd(i,t,e,s,r){e.buffer.update(r)}const ud={float:` + data[offset] = v; + `,vec2:` + data[offset] = v[0]; + data[offset+1] = v[1]; + `,vec3:` + data[offset] = v[0]; + data[offset+1] = v[1]; + data[offset+2] = v[2]; + + `,vec4:` + data[offset] = v[0]; + data[offset+1] = v[1]; + data[offset+2] = v[2]; + data[offset+3] = v[3]; + `,mat2:` + data[offset] = v[0]; + data[offset+1] = v[1]; + + data[offset+4] = v[2]; + data[offset+5] = v[3]; + `,mat3:` + 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]; + `,mat4:` + for(var i = 0; i < 16; i++) + { + data[offset + i] = v[i]; + } + `},So={float:4,vec2:8,vec3:12,vec4:16,int:4,ivec2:8,ivec3:12,ivec4:16,uint:4,uvec2:8,uvec3:12,uvec4:16,bool:4,bvec2:8,bvec3:12,bvec4:16,mat2:16*2,mat3:16*3,mat4:16*4};function Ao(i){const t=i.map(n=>({data:n,offset:0,dataLen:0,dirty:0}));let e=0,s=0,r=0;for(let n=0;n1&&(e=Math.max(e,16)*o.data.size),o.dataLen=e,s%e!==0&&s<16){const a=s%e%16;s+=a,r+=a}s+e>16?(r=Math.ceil(r/16)*16,o.offset=r,r+=e,s=e):(o.offset=r,s+=e,r+=e)}return r=Math.ceil(r/16)*16,{uboElements:t,size:r}}function Ro(i,t){const e=[];for(const s in i)t[s]&&e.push(t[s]);return e.sort((s,r)=>s.index-r.index),e}function Co(i,t){if(!i.autoManage)return{size:0,syncFunc:cd};const e=Ro(i.uniforms,t),{uboElements:s,size:r}=Ao(e),n=[` + var v = null; + var v2 = null; + var cv = null; + var t = 0; + var gl = renderer.gl + var index = 0; + var data = buffer.data; + `];for(let o=0;o1){const u=_o(a.data.type),d=Math.max(So[a.data.type]/16,1),f=u/d,p=(4-f%4)%4;n.push(` + cv = ud.${l}.value; + v = uv.${l}; + offset = ${a.offset/4}; + + t = 0; + + for(var i=0; i < ${a.data.size*d}; i++) + { + for(var j = 0; j < ${f}; j++) + { + data[offset++] = v[t++]; + } + offset += ${p}; + } + + `)}else{const u=ud[a.data.type];n.push(` + cv = ud.${l}.value; + v = uv.${l}; + offset = ${a.offset/4}; + ${u}; + `)}}return n.push(` + renderer.buffer.update(buffer); + `),{size:r,syncFunc:new Function("ud","uv","renderer","syncData","buffer",n.join(` +`))}}class dd{}class Io{constructor(t,e){this.program=t,this.uniformData=e,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBufferBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBufferBindings=null,this.program=null}}function fd(i,t){const e={},s=t.getProgramParameter(i,t.ACTIVE_ATTRIBUTES);for(let r=0;rc>u?1:-1);for(let c=0;c>1,e++;this.stateId=i.data}for(let t=0;tthis.checkCountMax&&(this.checkCount=0,this.run())))}run(){const t=this.renderer.texture,e=t.managedTextures;let s=!1;for(let r=0;rthis.maxIdle&&(t.destroyTexture(n,!0),e[r]=null,s=!0)}if(s){let r=0;for(let n=0;n=0;r--)this.unload(t.children[r])}destroy(){this.renderer=null}}br.extension={type:M.RendererSystem,name:"textureGC"},U.add(br);function bd(i){let t;return"WebGL2RenderingContext"in globalThis&&i instanceof globalThis.WebGL2RenderingContext?t={[G.UNSIGNED_BYTE]:{[I.RGBA]:i.RGBA8,[I.RGB]:i.RGB8,[I.RG]:i.RG8,[I.RED]:i.R8,[I.RGBA_INTEGER]:i.RGBA8UI,[I.RGB_INTEGER]:i.RGB8UI,[I.RG_INTEGER]:i.RG8UI,[I.RED_INTEGER]:i.R8UI,[I.ALPHA]:i.ALPHA,[I.LUMINANCE]:i.LUMINANCE,[I.LUMINANCE_ALPHA]:i.LUMINANCE_ALPHA},[G.BYTE]:{[I.RGBA]:i.RGBA8_SNORM,[I.RGB]:i.RGB8_SNORM,[I.RG]:i.RG8_SNORM,[I.RED]:i.R8_SNORM,[I.RGBA_INTEGER]:i.RGBA8I,[I.RGB_INTEGER]:i.RGB8I,[I.RG_INTEGER]:i.RG8I,[I.RED_INTEGER]:i.R8I},[G.UNSIGNED_SHORT]:{[I.RGBA_INTEGER]:i.RGBA16UI,[I.RGB_INTEGER]:i.RGB16UI,[I.RG_INTEGER]:i.RG16UI,[I.RED_INTEGER]:i.R16UI,[I.DEPTH_COMPONENT]:i.DEPTH_COMPONENT16},[G.SHORT]:{[I.RGBA_INTEGER]:i.RGBA16I,[I.RGB_INTEGER]:i.RGB16I,[I.RG_INTEGER]:i.RG16I,[I.RED_INTEGER]:i.R16I},[G.UNSIGNED_INT]:{[I.RGBA_INTEGER]:i.RGBA32UI,[I.RGB_INTEGER]:i.RGB32UI,[I.RG_INTEGER]:i.RG32UI,[I.RED_INTEGER]:i.R32UI,[I.DEPTH_COMPONENT]:i.DEPTH_COMPONENT24},[G.INT]:{[I.RGBA_INTEGER]:i.RGBA32I,[I.RGB_INTEGER]:i.RGB32I,[I.RG_INTEGER]:i.RG32I,[I.RED_INTEGER]:i.R32I},[G.FLOAT]:{[I.RGBA]:i.RGBA32F,[I.RGB]:i.RGB32F,[I.RG]:i.RG32F,[I.RED]:i.R32F,[I.DEPTH_COMPONENT]:i.DEPTH_COMPONENT32F},[G.HALF_FLOAT]:{[I.RGBA]:i.RGBA16F,[I.RGB]:i.RGB16F,[I.RG]:i.RG16F,[I.RED]:i.R16F},[G.UNSIGNED_SHORT_5_6_5]:{[I.RGB]:i.RGB565},[G.UNSIGNED_SHORT_4_4_4_4]:{[I.RGBA]:i.RGBA4},[G.UNSIGNED_SHORT_5_5_5_1]:{[I.RGBA]:i.RGB5_A1},[G.UNSIGNED_INT_2_10_10_10_REV]:{[I.RGBA]:i.RGB10_A2,[I.RGBA_INTEGER]:i.RGB10_A2UI},[G.UNSIGNED_INT_10F_11F_11F_REV]:{[I.RGB]:i.R11F_G11F_B10F},[G.UNSIGNED_INT_5_9_9_9_REV]:{[I.RGB]:i.RGB9_E5},[G.UNSIGNED_INT_24_8]:{[I.DEPTH_STENCIL]:i.DEPTH24_STENCIL8},[G.FLOAT_32_UNSIGNED_INT_24_8_REV]:{[I.DEPTH_STENCIL]:i.DEPTH32F_STENCIL8}}:t={[G.UNSIGNED_BYTE]:{[I.RGBA]:i.RGBA,[I.RGB]:i.RGB,[I.ALPHA]:i.ALPHA,[I.LUMINANCE]:i.LUMINANCE,[I.LUMINANCE_ALPHA]:i.LUMINANCE_ALPHA},[G.UNSIGNED_SHORT_5_6_5]:{[I.RGB]:i.RGB},[G.UNSIGNED_SHORT_4_4_4_4]:{[I.RGBA]:i.RGBA},[G.UNSIGNED_SHORT_5_5_5_1]:{[I.RGBA]:i.RGBA}},t}class Ki{constructor(t){this.texture=t,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=G.UNSIGNED_BYTE,this.internalFormat=I.RGBA,this.samplerType=0}}class wr{constructor(t){this.renderer=t,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new j,this.hasIntegerTextures=!1}contextChange(){const t=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=bd(t);const e=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=e;for(let r=0;r=0;--n){const o=e[n];o&&o._glTextures[r].samplerType!==Ei.FLOAT&&this.renderer.texture.unbind(o)}}initTexture(t){const e=new Ki(this.gl.createTexture());return e.dirtyId=-1,t._glTextures[this.CONTEXT_UID]=e,this.managedTextures.push(t),t.on("dispose",this.destroyTexture,this),e}initTextureType(t,e){var s,r;e.internalFormat=(r=(s=this.internalFormats[t.type])==null?void 0:s[t.format])!=null?r:t.format,this.webGLVersion===2&&t.type===G.HALF_FLOAT?e.type=this.gl.HALF_FLOAT:e.type=t.type}updateTexture(t){var r;const e=t._glTextures[this.CONTEXT_UID];if(!e)return;const s=this.renderer;if(this.initTextureType(t,e),(r=t.resource)!=null&&r.upload(s,t,e))e.samplerType!==Ei.FLOAT&&(this.hasIntegerTextures=!0);else{const n=t.realWidth,o=t.realHeight,a=s.gl;(e.width!==n||e.height!==o||e.dirtyId<0)&&(e.width=n,e.height=o,a.texImage2D(t.target,0,e.internalFormat,n,o,0,t.format,e.type,null))}t.dirtyStyleId!==e.dirtyStyleId&&this.updateTextureStyle(t),e.dirtyId=t.dirtyId}destroyTexture(t,e){const{gl:s}=this;if(t=t.castToBaseTexture(),t._glTextures[this.CONTEXT_UID]&&(this.unbind(t),s.deleteTexture(t._glTextures[this.CONTEXT_UID].texture),t.off("dispose",this.destroyTexture,this),delete t._glTextures[this.CONTEXT_UID],!e)){const r=this.managedTextures.indexOf(t);r!==-1&&xe(this.managedTextures,r,1)}}updateTextureStyle(t){var s;const e=t._glTextures[this.CONTEXT_UID];!e||((t.mipmap===Ft.POW2||this.webGLVersion!==2)&&!t.isPowerOfTwo?e.mipmap=!1:e.mipmap=t.mipmap>=1,this.webGLVersion!==2&&!t.isPowerOfTwo?e.wrapMode=zt.CLAMP:e.wrapMode=t.wrapMode,(s=t.resource)!=null&&s.style(this.renderer,t,e)||this.setStyle(t,e),e.dirtyStyleId=t.dirtyStyleId)}setStyle(t,e){const s=this.gl;if(e.mipmap&&t.mipmap!==Ft.ON_MANUAL&&s.generateMipmap(t.target),s.texParameteri(t.target,s.TEXTURE_WRAP_S,e.wrapMode),s.texParameteri(t.target,s.TEXTURE_WRAP_T,e.wrapMode),e.mipmap){s.texParameteri(t.target,s.TEXTURE_MIN_FILTER,t.scaleMode===Vt.LINEAR?s.LINEAR_MIPMAP_LINEAR:s.NEAREST_MIPMAP_NEAREST);const r=this.renderer.context.extensions.anisotropicFiltering;if(r&&t.anisotropicLevel>0&&t.scaleMode===Vt.LINEAR){const n=Math.min(t.anisotropicLevel,s.getParameter(r.MAX_TEXTURE_MAX_ANISOTROPY_EXT));s.texParameterf(t.target,r.TEXTURE_MAX_ANISOTROPY_EXT,n)}}else s.texParameteri(t.target,s.TEXTURE_MIN_FILTER,t.scaleMode===Vt.LINEAR?s.LINEAR:s.NEAREST);s.texParameteri(t.target,s.TEXTURE_MAG_FILTER,t.scaleMode===Vt.LINEAR?s.LINEAR:s.NEAREST)}destroy(){this.renderer=null}}wr.extension={type:M.RendererSystem,name:"texture"},U.add(wr);const wd=new ze;class Sr{constructor(t){this.renderer=t,this._tempMatrix=new tt}generateTexture(t,e){const h=e||{},{region:s}=h,r=_n(h,["region"]),n=s||t.getLocalBounds(null,!0);n.width===0&&(n.width=1),n.height===0&&(n.height=1);const o=ie.create(Zt({width:n.width,height:n.height},r));this._tempMatrix.tx=-n.x,this._tempMatrix.ty=-n.y;const a=t.transform;return t.transform=wd,this.renderer.render(t,{renderTexture:o,transform:this._tempMatrix,skipUpdateTransform:!!t.parent,blit:!0}),t.transform=a,o}destroy(){}}Sr.extension={type:[M.RendererSystem,M.CanvasRendererSystem],name:"textureGenerator"},U.add(Sr);class Ar{constructor(){this.clearBeforeRender=!0,this._backgroundColor=0,this._backgroundColorRgba=[0,0,0,1],this._backgroundColorString="#000000",this.color=this._backgroundColor,this.alpha=1}init(t){this.clearBeforeRender=t.clearBeforeRender,t.color&&(this.color=typeof t.color=="string"?Fi(t.color):t.color),this.alpha=t.alpha}get color(){return this._backgroundColor}set color(t){this._backgroundColor=t,this._backgroundColorString=Us(t),ve(t,this._backgroundColorRgba)}get alpha(){return this._backgroundColorRgba[3]}set alpha(t){this._backgroundColorRgba[3]=t}get colorRgba(){return this._backgroundColorRgba}get colorString(){return this._backgroundColorString}destroy(){}}Ar.extension={type:[M.RendererSystem,M.CanvasRendererSystem],name:"background"},U.add(Ar);class Rr{constructor(t){this.renderer=t}init(t){this.screen=new z(0,0,t.width,t.height),this.element=t.view||R.ADAPTER.createCanvas(),this.resolution=t.resolution||R.RESOLUTION,this.autoDensity=!!t.autoDensity}resizeView(t,e){this.element.width=Math.round(t*this.resolution),this.element.height=Math.round(e*this.resolution);const s=this.element.width/this.resolution,r=this.element.height/this.resolution;this.screen.width=s,this.screen.height=r,this.autoDensity&&(this.element.style.width=`${s}px`,this.element.style.height=`${r}px`),this.renderer.emit("resize",s,r),this.renderer.runners.resize.emit(this.screen.width,this.screen.height)}destroy(t){var e;t&&((e=this.element.parentNode)==null||e.removeChild(this.element)),this.renderer=null,this.element=null,this.screen=null}}Rr.extension={type:[M.RendererSystem,M.CanvasRendererSystem],name:"_view"},U.add(Rr);class Cr{constructor(t){this.renderer=t,this.plugins={}}init(t){for(const e in t)this.plugins[e]=new t[e](this.renderer)}destroy(){for(const t in this.plugins)this.plugins[t].destroy(),this.plugins[t]=null}}Cr.extension={type:[M.RendererSystem,M.CanvasRendererSystem],name:"_plugin"},U.add(Cr);class Mo extends Pe{constructor(){super(...arguments),this.runners={},this._systemsHash={}}setup(t){var r;this.addRunners(...t.runners);const e=((r=t.priority)!=null?r:[]).filter(n=>t.systems[n]),s=[...e,...Object.keys(t.systems).filter(n=>!e.includes(n))];for(const n of s)this.addSystem(t.systems[n],n)}addRunners(...t){t.forEach(e=>{this.runners[e]=new St(e)})}addSystem(t,e){const s=new t(this);if(this[e])throw new Error(`Whoops! The name "${e}" is already in use`);this[e]=s,this._systemsHash[e]=s;for(const r in this.runners)this.runners[r].add(s);return this}emitWithCustomOptions(t,e){const s=Object.keys(this._systemsHash);t.items.forEach(r=>{const n=s.find(o=>this._systemsHash[o]===r);r[t.name](e[n])})}destroy(){Object.values(this.runners).forEach(t=>{t.destroy()}),this._systemsHash={}}}class Ir{constructor(t){this.renderer=t}run(t){const e=this.renderer;e.emitWithCustomOptions(e.runners.init,t),t.hello&&console.log(`PixiJS 7.0.2 - ${e.rendererLogId} - https://pixijs.com`),e.resize(this.renderer.screen.width,this.renderer.screen.height)}destroy(){}}Ir.extension={type:[M.RendererSystem,M.CanvasRendererSystem],name:"startup"},U.add(Ir);class Pr{constructor(t){this.renderer=t}contextChange(){this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(t){const{gl:e,CONTEXT_UID:s}=this,r=t._glTransformFeedbacks[s]||this.createGLTransformFeedback(t);e.bindTransformFeedback(e.TRANSFORM_FEEDBACK,r)}unbind(){const{gl:t}=this;t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,null)}beginTransformFeedback(t,e){const{gl:s,renderer:r}=this;e&&r.shader.bind(e),s.beginTransformFeedback(t)}endTransformFeedback(){const{gl:t}=this;t.endTransformFeedback()}createGLTransformFeedback(t){const{gl:e,renderer:s,CONTEXT_UID:r}=this,n=e.createTransformFeedback();t._glTransformFeedbacks[r]=n,e.bindTransformFeedback(e.TRANSFORM_FEEDBACK,n);for(let o=0;o0&&(e+=` +else `),sthis.size&&this.flush(),this._vertexCount+=i.vertexData.length/2,this._indexCount+=i.indices.length,this._bufferedTextures[this._bufferSize]=i._texture.baseTexture,this._bufferedElements[this._bufferSize++]=i)}buildTexturesAndDrawCalls(){const{_bufferedTextures:i,MAX_TEXTURES:t}=this,e=Ae._textureArrayPool,s=this.renderer.batch,r=this._tempBoundTextures,n=this.renderer.textureGC.count;let o=++j._globalBatch,a=0,h=e[0],l=0;s.copyBoundTextures(r,t);for(let c=0;c=t&&(s.boundArray(h,r,o,t),this.buildDrawCalls(h,l,c),l=c,h=e[++a],++o),u._batchEnabled=o,u.touched=n,h.elements[h.count++]=u)}h.count>0&&(s.boundArray(h,r,o,t),this.buildDrawCalls(h,l,this._bufferSize),++a,++o);for(let c=0;c=t.data.byteLength)e.bufferSubData(t.type,0,t.data);else{const n=t.static?e.STATIC_DRAW:e.DYNAMIC_DRAW;r.byteLength=t.data.byteLength,e.bufferData(t.type,t.data,n)}}dispose(t,e){if(!this.managedBuffers[t.id])return;delete this.managedBuffers[t.id];const s=t._glBuffers[this.CONTEXT_UID],r=this.gl;t.disposeRunner.remove(this),s&&(e||r.deleteBuffer(s.buffer),delete t._glBuffers[this.CONTEXT_UID])}disposeAll(t){const e=Object.keys(this.managedBuffers);for(let s=0;s=at.HIGH?this.multisample=at.HIGH:e>=at.MEDIUM?this.multisample=at.MEDIUM:e>=at.LOW?this.multisample=at.LOW:this.multisample=at.NONE}destroy(){}}Nr.extension={type:M.RendererSystem,name:"_multisample"},U.add(Nr);class Lr{constructor(t){this.renderer=t}render(t,e){const s=this.renderer;let r,n,o,a;if(e&&(r=e.renderTexture,n=e.clear,o=e.transform,a=e.skipUpdateTransform),this.renderingToScreen=!r,s.runners.prerender.emit(),s.emit("prerender"),s.projection.transform=o,!s.context.isLost){if(r||(this.lastObjectRendered=t),!a){const h=t.enableTempParent();t.updateTransform(),t.disableTempParent(h)}s.renderTexture.bind(r),s.batch.currentRenderer.start(),(n!=null?n:s.background.clearBeforeRender)&&s.renderTexture.clear(),t.render(s),s.batch.currentRenderer.flush(),r&&(e.blit&&s.framebuffer.blit(),r.baseTexture.update()),s.runners.postrender.emit(),s.projection.transform=null,s.emit("postrender")}}destroy(){this.renderer=null,this.lastObjectRendered=null}}Lr.extension={type:M.RendererSystem,name:"objectRenderer"},U.add(Lr);const Md="7.0.2";var Bd=`varying vec2 vTextureCoord; + +uniform sampler2D uSampler; +uniform float uAlpha; + +void main(void) +{ + gl_FragColor = texture2D(uSampler, vTextureCoord) * uAlpha; +} +`;class Dd extends Mt{constructor(t=1){super(Fo,Bd,{uAlpha:1}),this.alpha=t}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}}const Fd=` + attribute vec2 aVertexPosition; + + uniform mat3 projectionMatrix; + + uniform float strength; + + varying vec2 vBlurTexCoords[%size%]; + + uniform vec4 inputSize; + uniform vec4 outputFrame; + + vec4 filterVertexPosition( void ) + { + vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy; + + return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0); + } + + vec2 filterTextureCoord( void ) + { + return aVertexPosition * (outputFrame.zw * inputSize.zw); + } + + void main(void) + { + gl_Position = filterVertexPosition(); + + vec2 textureCoord = filterTextureCoord(); + %blur% + }`;function Nd(i,t){const e=Math.ceil(i/2);let s=Fd,r="",n;t?n="vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * strength, 0.0);":n="vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * strength);";for(let o=0;o=e&&(o=i-a-1),h=h.replace("%value%",t[o].toString()),r+=h,r+=` +`}return s=s.replace("%blur%",r),s=s.replace("%size%",i.toString()),s}class Or extends Mt{constructor(t,e=8,s=4,r=R.FILTER_RESOLUTION,n=5){const o=Nd(n,t),a=Ud(n);super(o,a),this.horizontal=t,this.resolution=r,this._quality=0,this.quality=s,this.blur=e}apply(t,e,s,r){if(s?this.horizontal?this.uniforms.strength=1/s.width*(s.width/e.width):this.uniforms.strength=1/s.height*(s.height/e.height):this.horizontal?this.uniforms.strength=1/t.renderer.width*(t.renderer.width/e.width):this.uniforms.strength=1/t.renderer.height*(t.renderer.height/e.height),this.uniforms.strength*=this.strength,this.uniforms.strength/=this.passes,this.passes===1)t.applyFilter(this,e,s,r);else{const n=t.getFilterTexture(),o=t.renderer;let a=e,h=n;this.state.blend=!1,t.applyFilter(this,a,h,Nt.CLEAR);for(let l=1;l 0.0) { + c.rgb /= c.a; + } + + vec4 result; + + result.r = (m[0] * c.r); + result.r += (m[1] * c.g); + result.r += (m[2] * c.b); + result.r += (m[3] * c.a); + result.r += m[4]; + + result.g = (m[5] * c.r); + result.g += (m[6] * c.g); + result.g += (m[7] * c.b); + result.g += (m[8] * c.a); + result.g += m[9]; + + result.b = (m[10] * c.r); + result.b += (m[11] * c.g); + result.b += (m[12] * c.b); + result.b += (m[13] * c.a); + result.b += m[14]; + + result.a = (m[15] * c.r); + result.a += (m[16] * c.g); + result.a += (m[17] * c.b); + result.a += (m[18] * c.a); + result.a += m[19]; + + vec3 rgb = mix(c.rgb, result.rgb, uAlpha); + + // Premultiply alpha again. + rgb *= result.a; + + gl_FragColor = vec4(rgb, result.a); +} +`;class Ur extends Mt{constructor(){const t={m:new Float32Array([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]),uAlpha:1};super(Mr,kd,t),this.alpha=1}_loadMatrix(t,e=!1){let s=t;e&&(this._multiply(s,this.uniforms.m,t),s=this._colorMatrix(s)),this.uniforms.m=s}_multiply(t,e,s){return t[0]=e[0]*s[0]+e[1]*s[5]+e[2]*s[10]+e[3]*s[15],t[1]=e[0]*s[1]+e[1]*s[6]+e[2]*s[11]+e[3]*s[16],t[2]=e[0]*s[2]+e[1]*s[7]+e[2]*s[12]+e[3]*s[17],t[3]=e[0]*s[3]+e[1]*s[8]+e[2]*s[13]+e[3]*s[18],t[4]=e[0]*s[4]+e[1]*s[9]+e[2]*s[14]+e[3]*s[19]+e[4],t[5]=e[5]*s[0]+e[6]*s[5]+e[7]*s[10]+e[8]*s[15],t[6]=e[5]*s[1]+e[6]*s[6]+e[7]*s[11]+e[8]*s[16],t[7]=e[5]*s[2]+e[6]*s[7]+e[7]*s[12]+e[8]*s[17],t[8]=e[5]*s[3]+e[6]*s[8]+e[7]*s[13]+e[8]*s[18],t[9]=e[5]*s[4]+e[6]*s[9]+e[7]*s[14]+e[8]*s[19]+e[9],t[10]=e[10]*s[0]+e[11]*s[5]+e[12]*s[10]+e[13]*s[15],t[11]=e[10]*s[1]+e[11]*s[6]+e[12]*s[11]+e[13]*s[16],t[12]=e[10]*s[2]+e[11]*s[7]+e[12]*s[12]+e[13]*s[17],t[13]=e[10]*s[3]+e[11]*s[8]+e[12]*s[13]+e[13]*s[18],t[14]=e[10]*s[4]+e[11]*s[9]+e[12]*s[14]+e[13]*s[19]+e[14],t[15]=e[15]*s[0]+e[16]*s[5]+e[17]*s[10]+e[18]*s[15],t[16]=e[15]*s[1]+e[16]*s[6]+e[17]*s[11]+e[18]*s[16],t[17]=e[15]*s[2]+e[16]*s[7]+e[17]*s[12]+e[18]*s[17],t[18]=e[15]*s[3]+e[16]*s[8]+e[17]*s[13]+e[18]*s[18],t[19]=e[15]*s[4]+e[16]*s[9]+e[17]*s[14]+e[18]*s[19]+e[19],t}_colorMatrix(t){const e=new Float32Array(t);return e[4]/=255,e[9]/=255,e[14]/=255,e[19]/=255,e}brightness(t,e){const s=[t,0,0,0,0,0,t,0,0,0,0,0,t,0,0,0,0,0,1,0];this._loadMatrix(s,e)}tint(t,e){const s=t>>16&255,r=t>>8&255,n=t&255,o=[s/255,0,0,0,0,0,r/255,0,0,0,0,0,n/255,0,0,0,0,0,1,0];this._loadMatrix(o,e)}greyscale(t,e){const s=[t,t,t,0,0,t,t,t,0,0,t,t,t,0,0,0,0,0,1,0];this._loadMatrix(s,e)}blackAndWhite(t){const e=[.3,.6,.1,0,0,.3,.6,.1,0,0,.3,.6,.1,0,0,0,0,0,1,0];this._loadMatrix(e,t)}hue(t,e){t=(t||0)/180*Math.PI;const s=Math.cos(t),r=Math.sin(t),n=Math.sqrt,o=1/3,a=n(o),h=s+(1-s)*o,l=o*(1-s)-a*r,c=o*(1-s)+a*r,u=o*(1-s)+a*r,d=s+o*(1-s),f=o*(1-s)-a*r,p=o*(1-s)-a*r,_=o*(1-s)+a*r,g=s+o*(1-s),v=[h,l,c,0,0,u,d,f,0,0,p,_,g,0,0,0,0,0,1,0];this._loadMatrix(v,e)}contrast(t,e){const s=(t||0)+1,r=-.5*(s-1),n=[s,0,0,0,r,0,s,0,0,r,0,0,s,0,r,0,0,0,1,0];this._loadMatrix(n,e)}saturate(t=0,e){const s=t*2/3+1,r=(s-1)*-.5,n=[s,r,r,0,0,r,s,r,0,0,r,r,s,0,0,0,0,0,1,0];this._loadMatrix(n,e)}desaturate(){this.saturate(-1)}negative(t){const e=[-1,0,0,1,0,0,-1,0,1,0,0,0,-1,1,0,0,0,0,1,0];this._loadMatrix(e,t)}sepia(t){const e=[.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0];this._loadMatrix(e,t)}technicolor(t){const e=[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];this._loadMatrix(e,t)}polaroid(t){const e=[1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0];this._loadMatrix(e,t)}toBGR(t){const e=[0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0];this._loadMatrix(e,t)}kodachrome(t){const e=[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];this._loadMatrix(e,t)}browni(t){const e=[.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0];this._loadMatrix(e,t)}vintage(t){const e=[.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0];this._loadMatrix(e,t)}colorTone(t,e,s,r,n){t=t||.2,e=e||.15,s=s||16770432,r=r||3375104;const o=(s>>16&255)/255,a=(s>>8&255)/255,h=(s&255)/255,l=(r>>16&255)/255,c=(r>>8&255)/255,u=(r&255)/255,d=[.3,.59,.11,0,0,o,a,h,t,0,l,c,u,e,0,o-l,a-c,h-u,0,0];this._loadMatrix(d,n)}night(t,e){t=t||.1;const s=[t*-2,-t,0,0,0,-t,0,t,0,0,0,t,t*2,0,0,0,0,0,1,0];this._loadMatrix(s,e)}predator(t,e){const s=[11.224130630493164*t,-4.794486999511719*t,-2.8746118545532227*t,0*t,.40342438220977783*t,-3.6330697536468506*t,9.193157196044922*t,-2.951810836791992*t,0*t,-1.316135048866272*t,-3.2184197902679443*t,-4.2375030517578125*t,7.476448059082031*t,0*t,.8044459223747253*t,0,0,0,1,0];this._loadMatrix(s,e)}lsd(t){const e=[2,-.4,.5,0,0,-.5,2,-.4,0,0,-.4,-.5,3,0,0,0,0,0,1,0];this._loadMatrix(e,t)}reset(){const t=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0];this._loadMatrix(t,!1)}get matrix(){return this.uniforms.m}set matrix(t){this.uniforms.m=t}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}}Ur.prototype.grayscale=Ur.prototype.greyscale;var Hd=`varying vec2 vFilterCoord; +varying vec2 vTextureCoord; + +uniform vec2 scale; +uniform mat2 rotation; +uniform sampler2D uSampler; +uniform sampler2D mapSampler; + +uniform highp vec4 inputSize; +uniform vec4 inputClamp; + +void main(void) +{ + vec4 map = texture2D(mapSampler, vFilterCoord); + + map -= 0.5; + map.xy = scale * inputSize.zw * (rotation * map.xy); + + gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw)); +} +`,Xd=`attribute vec2 aVertexPosition; + +uniform mat3 projectionMatrix; +uniform mat3 filterMatrix; + +varying vec2 vTextureCoord; +varying vec2 vFilterCoord; + +uniform vec4 inputSize; +uniform vec4 outputFrame; + +vec4 filterVertexPosition( void ) +{ + vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy; + + return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0); +} + +vec2 filterTextureCoord( void ) +{ + return aVertexPosition * (outputFrame.zw * inputSize.zw); +} + +void main(void) +{ + gl_Position = filterVertexPosition(); + vTextureCoord = filterTextureCoord(); + vFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0) ).xy; +} +`;class Vd extends Mt{constructor(t,e){const s=new tt;t.renderable=!1,super(Xd,Hd,{mapSampler:t._texture,filterMatrix:s,scale:{x:1,y:1},rotation:new Float32Array([1,0,0,1])}),this.maskSprite=t,this.maskMatrix=s,e==null&&(e=20),this.scale=new W(e,e)}apply(t,e,s,r){this.uniforms.filterMatrix=t.calculateSpriteMatrix(this.maskMatrix,this.maskSprite),this.uniforms.scale.x=this.scale.x,this.uniforms.scale.y=this.scale.y;const n=this.maskSprite.worldTransform,o=Math.sqrt(n.a*n.a+n.b*n.b),a=Math.sqrt(n.c*n.c+n.d*n.d);o!==0&&a!==0&&(this.uniforms.rotation[0]=n.a/o,this.uniforms.rotation[1]=n.b/o,this.uniforms.rotation[2]=n.c/a,this.uniforms.rotation[3]=n.d/a),t.applyFilter(this,e,s,r)}get map(){return this.uniforms.mapSampler}set map(t){this.uniforms.mapSampler=t}}var zd=` +attribute vec2 aVertexPosition; + +uniform mat3 projectionMatrix; + +varying vec2 v_rgbNW; +varying vec2 v_rgbNE; +varying vec2 v_rgbSW; +varying vec2 v_rgbSE; +varying vec2 v_rgbM; + +varying vec2 vFragCoord; + +uniform vec4 inputSize; +uniform vec4 outputFrame; + +vec4 filterVertexPosition( void ) +{ + vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy; + + return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0); +} + +void texcoords(vec2 fragCoord, vec2 inverseVP, + out vec2 v_rgbNW, out vec2 v_rgbNE, + out vec2 v_rgbSW, out vec2 v_rgbSE, + out vec2 v_rgbM) { + v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP; + v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP; + v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP; + v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP; + v_rgbM = vec2(fragCoord * inverseVP); +} + +void main(void) { + + gl_Position = filterVertexPosition(); + + vFragCoord = aVertexPosition * outputFrame.zw; + + texcoords(vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM); +} +`,Wd=`varying vec2 v_rgbNW; +varying vec2 v_rgbNE; +varying vec2 v_rgbSW; +varying vec2 v_rgbSE; +varying vec2 v_rgbM; + +varying vec2 vFragCoord; +uniform sampler2D uSampler; +uniform highp vec4 inputSize; + + +/** + Basic FXAA implementation based on the code on geeks3d.com with the + modification that the texture2DLod stuff was removed since it's + unsupported by WebGL. + + -- + + From: + https://github.com/mitsuhiko/webgl-meincraft + + Copyright (c) 2011 by Armin Ronacher. + + Some rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * The names of the contributors may not be used to endorse or + promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FXAA_REDUCE_MIN +#define FXAA_REDUCE_MIN (1.0/ 128.0) +#endif +#ifndef FXAA_REDUCE_MUL +#define FXAA_REDUCE_MUL (1.0 / 8.0) +#endif +#ifndef FXAA_SPAN_MAX +#define FXAA_SPAN_MAX 8.0 +#endif + +//optimized version for mobile, where dependent +//texture reads can be a bottleneck +vec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 inverseVP, + vec2 v_rgbNW, vec2 v_rgbNE, + vec2 v_rgbSW, vec2 v_rgbSE, + vec2 v_rgbM) { + vec4 color; + vec3 rgbNW = texture2D(tex, v_rgbNW).xyz; + vec3 rgbNE = texture2D(tex, v_rgbNE).xyz; + vec3 rgbSW = texture2D(tex, v_rgbSW).xyz; + vec3 rgbSE = texture2D(tex, v_rgbSE).xyz; + vec4 texColor = texture2D(tex, v_rgbM); + vec3 rgbM = texColor.xyz; + vec3 luma = vec3(0.299, 0.587, 0.114); + float lumaNW = dot(rgbNW, luma); + float lumaNE = dot(rgbNE, luma); + float lumaSW = dot(rgbSW, luma); + float lumaSE = dot(rgbSE, luma); + float lumaM = dot(rgbM, luma); + float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE))); + float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE))); + + mediump vec2 dir; + dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE)); + dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE)); + + float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) * + (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN); + + float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce); + dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX), + max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX), + dir * rcpDirMin)) * inverseVP; + + vec3 rgbA = 0.5 * ( + texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz + + texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz); + vec3 rgbB = rgbA * 0.5 + 0.25 * ( + texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz + + texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz); + + float lumaB = dot(rgbB, luma); + if ((lumaB < lumaMin) || (lumaB > lumaMax)) + color = vec4(rgbA, texColor.a); + else + color = vec4(rgbB, texColor.a); + return color; +} + +void main() { + + vec4 color; + + color = fxaa(uSampler, vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM); + + gl_FragColor = color; +} +`;class jd extends Mt{constructor(){super(zd,Wd)}}var Yd=`precision highp float; + +varying vec2 vTextureCoord; +varying vec4 vColor; + +uniform float uNoise; +uniform float uSeed; +uniform sampler2D uSampler; + +float rand(vec2 co) +{ + return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453); +} + +void main() +{ + vec4 color = texture2D(uSampler, vTextureCoord); + float randomValue = rand(gl_FragCoord.xy * uSeed); + float diff = (randomValue - 0.5) * uNoise; + + // Un-premultiply alpha before applying the color matrix. See issue #3539. + if (color.a > 0.0) { + color.rgb /= color.a; + } + + color.r += diff; + color.g += diff; + color.b += diff; + + // Premultiply alpha again. + color.rgb *= color.a; + + gl_FragColor = color; +} +`;class $d extends Mt{constructor(t=.5,e=Math.random()){super(Mr,Yd,{uNoise:0,uSeed:0}),this.noise=t,this.seed=e}get noise(){return this.uniforms.uNoise}set noise(t){this.uniforms.uNoise=t}get seed(){return this.uniforms.uSeed}set seed(t){this.uniforms.uSeed=t}}R.SORTABLE_CHILDREN=!1;class ri{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null,this.updateID=-1}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}clear(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}getRectangle(t){return this.minX>this.maxX||this.minY>this.maxY?z.EMPTY:(t=t||new z(0,0,1,1),t.x=this.minX,t.y=this.minY,t.width=this.maxX-this.minX,t.height=this.maxY-this.minY,t)}addPoint(t){this.minX=Math.min(this.minX,t.x),this.maxX=Math.max(this.maxX,t.x),this.minY=Math.min(this.minY,t.y),this.maxY=Math.max(this.maxY,t.y)}addPointMatrix(t,e){const{a:s,b:r,c:n,d:o,tx:a,ty:h}=t,l=s*e.x+n*e.y+a,c=r*e.x+o*e.y+h;this.minX=Math.min(this.minX,l),this.maxX=Math.max(this.maxX,l),this.minY=Math.min(this.minY,c),this.maxY=Math.max(this.maxY,c)}addQuad(t){let e=this.minX,s=this.minY,r=this.maxX,n=this.maxY,o=t[0],a=t[1];e=or?o:r,n=a>n?a:n,o=t[2],a=t[3],e=or?o:r,n=a>n?a:n,o=t[4],a=t[5],e=or?o:r,n=a>n?a:n,o=t[6],a=t[7],e=or?o:r,n=a>n?a:n,this.minX=e,this.minY=s,this.maxX=r,this.maxY=n}addFrame(t,e,s,r,n){this.addFrameMatrix(t.worldTransform,e,s,r,n)}addFrameMatrix(t,e,s,r,n){const o=t.a,a=t.b,h=t.c,l=t.d,c=t.tx,u=t.ty;let d=this.minX,f=this.minY,p=this.maxX,_=this.maxY,g=o*e+h*s+c,v=a*e+l*s+u;d=gp?g:p,_=v>_?v:_,g=o*r+h*s+c,v=a*r+l*s+u,d=gp?g:p,_=v>_?v:_,g=o*e+h*n+c,v=a*e+l*n+u,d=gp?g:p,_=v>_?v:_,g=o*r+h*n+c,v=a*r+l*n+u,d=gp?g:p,_=v>_?v:_,this.minX=d,this.minY=f,this.maxX=p,this.maxY=_}addVertexData(t,e,s){let r=this.minX,n=this.minY,o=this.maxX,a=this.maxY;for(let h=e;ho?l:o,a=c>a?c:a}this.minX=r,this.minY=n,this.maxX=o,this.maxY=a}addVertices(t,e,s,r){this.addVerticesMatrix(t.worldTransform,e,s,r)}addVerticesMatrix(t,e,s,r,n=0,o=n){const a=t.a,h=t.b,l=t.c,c=t.d,u=t.tx,d=t.ty;let f=this.minX,p=this.minY,_=this.maxX,g=this.maxY;for(let v=s;vr?t.maxX:r,this.maxY=t.maxY>n?t.maxY:n}addBoundsMask(t,e){const s=t.minX>e.minX?t.minX:e.minX,r=t.minY>e.minY?t.minY:e.minY,n=t.maxXl?n:l,this.maxY=o>c?o:c}}addBoundsMatrix(t,e){this.addFrameMatrix(e,t.minX,t.minY,t.maxX,t.maxY)}addBoundsArea(t,e){const s=t.minX>e.x?t.minX:e.x,r=t.minY>e.y?t.minY:e.y,n=t.maxXl?n:l,this.maxY=o>c?o:c}}pad(t=0,e=t){this.isEmpty()||(this.minX-=t,this.maxX+=t,this.minY-=e,this.maxY+=e)}addFramePad(t,e,s,r,n,o){t-=n,e-=o,s+=n,r+=o,this.minX=this.minXs?this.maxX:s,this.minY=this.minYr?this.maxY:r}}class it extends Pe{constructor(){super(),this.tempDisplayObjectParent=null,this.transform=new ze,this.alpha=1,this.visible=!0,this.renderable=!0,this.cullable=!1,this.cullArea=null,this.parent=null,this.worldAlpha=1,this._lastSortedIndex=0,this._zIndex=0,this.filterArea=null,this.filters=null,this._enabledFilters=null,this._bounds=new ri,this._localBounds=null,this._boundsID=0,this._boundsRect=null,this._localBoundsRect=null,this._mask=null,this._maskRefCount=0,this._destroyed=!1,this.isSprite=!1,this.isMask=!1}static mixin(t){const e=Object.keys(t);for(let s=0;s1)for(let e=0;ethis.children.length)throw new Error(`${t}addChildAt: The index ${e} supplied is out of bounds ${this.children.length}`);return t.parent&&t.parent.removeChild(t),t.parent=this,this.sortDirty=!0,t.transform._parentID=-1,this.children.splice(e,0,t),this._boundsID++,this.onChildrenChange(e),t.emit("added",this),this.emit("childAdded",t,this,e),t}swapChildren(t,e){if(t===e)return;const s=this.getChildIndex(t),r=this.getChildIndex(e);this.children[s]=e,this.children[r]=t,this.onChildrenChange(s=this.children.length)throw new Error(`The index ${e} supplied is out of bounds ${this.children.length}`);const s=this.getChildIndex(t);xe(this.children,s,1),this.children.splice(e,0,t),this.onChildrenChange(e)}getChildAt(t){if(t<0||t>=this.children.length)throw new Error(`getChildAt: Index (${t}) does not exist.`);return this.children[t]}removeChild(...t){if(t.length>1)for(let e=0;e0&&n<=r){o=this.children.splice(s,n);for(let a=0;a1&&this.children.sort(qd),this.sortDirty=!1}updateTransform(){this.sortableChildren&&this.sortDirty&&this.sortChildren(),this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha;for(let t=0,e=this.children.length;t0&&e.height>0))return;let s,r;if(this.cullArea?(s=this.cullArea,r=this.worldTransform):this._render!==At.prototype._render&&(s=this.getBounds(!0)),s&&e.intersects(s,r))this._render(t);else if(this.cullArea)return;for(let n=0,o=this.children.length;n=r&&ni.x=n&&ni.y>16)+(t&65280)+((t&255)<<16)}get texture(){return this._texture}set texture(t){this._texture!==t&&(this._texture&&this._texture.off("update",this._onTextureUpdate,this),this._texture=t||B.EMPTY,this._cachedTint=16777215,this._textureID=-1,this._textureTrimmedID=-1,t&&(t.baseTexture.valid?this._onTextureUpdate():t.once("update",this._onTextureUpdate,this)))}}const Oo=new tt;it.prototype._cacheAsBitmap=!1,it.prototype._cacheData=null,it.prototype._cacheAsBitmapResolution=null,it.prototype._cacheAsBitmapMultisample=null;class Zd{constructor(){this.textureCacheId=null,this.originalRender=null,this.originalRenderCanvas=null,this.originalCalculateBounds=null,this.originalGetLocalBounds=null,this.originalUpdateTransform=null,this.originalDestroy=null,this.originalMask=null,this.originalFilterArea=null,this.originalContainsPoint=null,this.sprite=null}}Object.defineProperties(it.prototype,{cacheAsBitmapResolution:{get(){return this._cacheAsBitmapResolution},set(i){i!==this._cacheAsBitmapResolution&&(this._cacheAsBitmapResolution=i,this.cacheAsBitmap&&(this.cacheAsBitmap=!1,this.cacheAsBitmap=!0))}},cacheAsBitmapMultisample:{get(){return this._cacheAsBitmapMultisample},set(i){i!==this._cacheAsBitmapMultisample&&(this._cacheAsBitmapMultisample=i,this.cacheAsBitmap&&(this.cacheAsBitmap=!1,this.cacheAsBitmap=!0))}},cacheAsBitmap:{get(){return this._cacheAsBitmap},set(i){if(this._cacheAsBitmap===i)return;this._cacheAsBitmap=i;let t;i?(this._cacheData||(this._cacheData=new Zd),t=this._cacheData,t.originalRender=this.render,t.originalRenderCanvas=this.renderCanvas,t.originalUpdateTransform=this.updateTransform,t.originalCalculateBounds=this.calculateBounds,t.originalGetLocalBounds=this.getLocalBounds,t.originalDestroy=this.destroy,t.originalContainsPoint=this.containsPoint,t.originalMask=this._mask,t.originalFilterArea=this.filterArea,this.render=this._renderCached,this.renderCanvas=this._renderCachedCanvas,this.destroy=this._cacheAsBitmapDestroy):(t=this._cacheData,t.sprite&&this._destroyCachedDisplayObject(),this.render=t.originalRender,this.renderCanvas=t.originalRenderCanvas,this.calculateBounds=t.originalCalculateBounds,this.getLocalBounds=t.originalGetLocalBounds,this.destroy=t.originalDestroy,this.updateTransform=t.originalUpdateTransform,this.containsPoint=t.originalContainsPoint,this._mask=t.originalMask,this.filterArea=t.originalFilterArea)}}}),it.prototype._renderCached=function(t){!this.visible||this.worldAlpha<=0||!this.renderable||(this._initCachedDisplayObject(t),this._cacheData.sprite.transform._worldID=this.transform._worldID,this._cacheData.sprite.worldAlpha=this.worldAlpha,this._cacheData.sprite._render(t))},it.prototype._initCachedDisplayObject=function(t){var d,f,p;if((d=this._cacheData)!=null&&d.sprite)return;const e=this.alpha;this.alpha=1,t.batch.flush();const s=this.getLocalBounds(null,!0).clone();if((f=this.filters)!=null&&f.length){const _=this.filters[0].padding;s.pad(_)}s.ceil(R.RESOLUTION);const r=t.renderTexture.current,n=t.renderTexture.sourceFrame.clone(),o=t.renderTexture.destinationFrame.clone(),a=t.projection.transform,h=ie.create({width:s.width,height:s.height,resolution:this.cacheAsBitmapResolution||t.resolution,multisample:(p=this.cacheAsBitmapMultisample)!=null?p:t.multisample}),l=`cacheAsBitmap_${he()}`;this._cacheData.textureCacheId=l,j.addToCache(h.baseTexture,l),B.addToCache(h,l);const c=this.transform.localTransform.copyTo(Oo).invert().translate(-s.x,-s.y);this.render=this._cacheData.originalRender,t.render(this,{renderTexture:h,clear:!0,transform:c,skipUpdateTransform:!1}),t.framebuffer.blit(),t.projection.transform=a,t.renderTexture.bind(r,n,o),this.render=this._renderCached,this.updateTransform=this.displayObjectUpdateTransform,this.calculateBounds=this._calculateCachedBounds,this.getLocalBounds=this._getCachedLocalBounds,this._mask=null,this.filterArea=null,this.alpha=e;const u=new le(h);u.transform.worldTransform=this.transform.worldTransform,u.anchor.x=-(s.x/s.width),u.anchor.y=-(s.y/s.height),u.alpha=e,u._bounds=this._bounds,this._cacheData.sprite=u,this.transform._parentID=-1,this.parent?this.updateTransform():(this.enableTempParent(),this.updateTransform(),this.disableTempParent(null)),this.containsPoint=u.containsPoint.bind(u)},it.prototype._renderCachedCanvas=function(t){!this.visible||this.worldAlpha<=0||!this.renderable||(this._initCachedDisplayObjectCanvas(t),this._cacheData.sprite.worldAlpha=this.worldAlpha,this._cacheData.sprite._renderCanvas(t))},it.prototype._initCachedDisplayObjectCanvas=function(t){var c;if((c=this._cacheData)!=null&&c.sprite)return;const e=this.getLocalBounds(null,!0),s=this.alpha;this.alpha=1;const r=t.canvasContext.activeContext,n=t._projTransform;e.ceil(R.RESOLUTION);const o=ie.create({width:e.width,height:e.height}),a=`cacheAsBitmap_${he()}`;this._cacheData.textureCacheId=a,j.addToCache(o.baseTexture,a),B.addToCache(o,a);const h=Oo;this.transform.localTransform.copyTo(h),h.invert(),h.tx-=e.x,h.ty-=e.y,this.renderCanvas=this._cacheData.originalRenderCanvas,t.render(this,{renderTexture:o,clear:!0,transform:h,skipUpdateTransform:!1}),t.canvasContext.activeContext=r,t._projTransform=n,this.renderCanvas=this._renderCachedCanvas,this.updateTransform=this.displayObjectUpdateTransform,this.calculateBounds=this._calculateCachedBounds,this.getLocalBounds=this._getCachedLocalBounds,this._mask=null,this.filterArea=null,this.alpha=s;const l=new le(o);l.transform.worldTransform=this.transform.worldTransform,l.anchor.x=-(e.x/e.width),l.anchor.y=-(e.y/e.height),l.alpha=s,l._bounds=this._bounds,this._cacheData.sprite=l,this.transform._parentID=-1,this.parent?this.updateTransform():(this.parent=t._tempDisplayObjectParent,this.updateTransform(),this.parent=null),this.containsPoint=l.containsPoint.bind(l)},it.prototype._calculateCachedBounds=function(){this._bounds.clear(),this._cacheData.sprite.transform._worldID=this.transform._worldID,this._cacheData.sprite._calculateBounds(),this._bounds.updateID=this._boundsID},it.prototype._getCachedLocalBounds=function(){return this._cacheData.sprite.getLocalBounds(null)},it.prototype._destroyCachedDisplayObject=function(){this._cacheData.sprite._texture.destroy(!0),this._cacheData.sprite=null,j.removeFromCache(this._cacheData.textureCacheId),B.removeFromCache(this._cacheData.textureCacheId),this._cacheData.textureCacheId=null},it.prototype._cacheAsBitmapDestroy=function(t){this.cacheAsBitmap=!1,this.destroy(t)},it.prototype.name=null,At.prototype.getChildByName=function(t,e){for(let s=0,r=this.children.length;ss.priority-r.priority)}dispatchEvent(t,e){t.propagationStopped=!1,t.propagationImmediatelyStopped=!1,this.propagate(t,e),this.dispatch.emit(e||t.type,t)}mapEvent(t){if(!this.rootTarget)return;const e=this.mappingTable[t.type];if(e)for(let s=0,r=e.length;s=0;r--)if(t.currentTarget=s[r],this.notifyTarget(t,e),t.propagationStopped||t.propagationImmediatelyStopped)return}}all(t,e,s=this.rootTarget){t.eventPhase=t.BUBBLING_PHASE;const r=s.children;if(r)for(let n=0;n=0;a--){const h=o[a],l=this.hitTestRecursive(h,e||h.interactive,s,r,n);if(l){if(l.length>0&&!l[l.length-1].parent)continue;return(l.length>0||t.interactive)&&l.push(t),l}}}return e&&r(t,s)?t.interactive?[t]:[]:null}hitPruneFn(t,e){var s;if(t.hitArea&&(t.worldTransform.applyInverse(e,Gr),!t.hitArea.contains(Gr.x,Gr.y)))return!0;if(t._mask){const r=t._mask.isMaskData?t._mask.maskObject:t._mask;if(r&&!((s=r.containsPoint)!=null&&s.call(r,e)))return!0}return!1}hitTestFn(t,e){return t.hitArea?!0:t.containsPoint?t.containsPoint(e):!1}notifyTarget(t,e){e=e!=null?e:t.type;const s=t.eventPhase===t.CAPTURING_PHASE||t.eventPhase===t.AT_TARGET?`${e}capture`:e;this.notifyListeners(t,s),t.eventPhase===t.AT_TARGET&&this.notifyListeners(t,e)}mapPointerDown(t){if(!(t instanceof Bt)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const e=this.createPointerEvent(t);if(this.dispatchEvent(e,"pointerdown"),e.pointerType==="touch")this.dispatchEvent(e,"touchstart");else if(e.pointerType==="mouse"||e.pointerType==="pen"){const r=e.button===2;this.dispatchEvent(e,r?"rightdown":"mousedown")}const s=this.trackingData(t.pointerId);s.pressTargetsByButton[t.button]=e.composedPath(),this.freeEvent(e)}mapPointerMove(t){var a;if(!(t instanceof Bt)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const e=this.createPointerEvent(t),s=e.pointerType==="mouse"||e.pointerType==="pen",r=this.trackingData(t.pointerId),n=this.findMountedTarget(r.overTargets);if(r.overTargets&&n!==e.target){const h=t.type==="mousemove"?"mouseout":"pointerout",l=this.createPointerEvent(t,h,n);if(this.dispatchEvent(l,"pointerout"),s&&this.dispatchEvent(l,"mouseout"),!e.composedPath().includes(n)){const c=this.createPointerEvent(t,"pointerleave",n);for(c.eventPhase=c.AT_TARGET;c.target&&!e.composedPath().includes(c.target);)c.currentTarget=c.target,this.notifyTarget(c),s&&this.notifyTarget(c,"mouseleave"),c.target=c.target.parent;this.freeEvent(c)}this.freeEvent(l)}if(n!==e.target){const h=t.type==="mousemove"?"mouseover":"pointerover",l=this.clonePointerEvent(e,h);this.dispatchEvent(l,"pointerover"),s&&this.dispatchEvent(l,"mouseover");let c=n==null?void 0:n.parent;for(;c&&c!==this.rootTarget.parent&&c!==e.target;)c=c.parent;if(!c||c===this.rootTarget.parent){const d=this.clonePointerEvent(e,"pointerenter");for(d.eventPhase=d.AT_TARGET;d.target&&d.target!==n&&d.target!==this.rootTarget.parent;)d.currentTarget=d.target,this.notifyTarget(d),s&&this.notifyTarget(d,"mouseenter"),d.target=d.target.parent;this.freeEvent(d)}this.freeEvent(l)}const o=this.moveOnAll?"all":"dispatchEvent";this[o](e,"pointermove"),e.pointerType==="touch"&&this[o](e,"touchmove"),s&&(this[o](e,"mousemove"),this.cursor=(a=e.target)==null?void 0:a.cursor),r.overTargets=e.composedPath(),this.freeEvent(e)}mapPointerOver(t){var o;if(!(t instanceof Bt)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const e=this.trackingData(t.pointerId),s=this.createPointerEvent(t),r=s.pointerType==="mouse"||s.pointerType==="pen";this.dispatchEvent(s,"pointerover"),r&&this.dispatchEvent(s,"mouseover"),s.pointerType==="mouse"&&(this.cursor=(o=s.target)==null?void 0:o.cursor);const n=this.clonePointerEvent(s,"pointerenter");for(n.eventPhase=n.AT_TARGET;n.target&&n.target!==this.rootTarget.parent;)n.currentTarget=n.target,this.notifyTarget(n),r&&this.notifyTarget(n,"mouseenter"),n.target=n.target.parent;e.overTargets=s.composedPath(),this.freeEvent(s),this.freeEvent(n)}mapPointerOut(t){if(!(t instanceof Bt)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const e=this.trackingData(t.pointerId);if(e.overTargets){const s=t.pointerType==="mouse"||t.pointerType==="pen",r=this.findMountedTarget(e.overTargets),n=this.createPointerEvent(t,"pointerout",r);this.dispatchEvent(n),s&&this.dispatchEvent(n,"mouseout");const o=this.createPointerEvent(t,"pointerleave",r);for(o.eventPhase=o.AT_TARGET;o.target&&o.target!==this.rootTarget.parent;)o.currentTarget=o.target,this.notifyTarget(o),s&&this.notifyTarget(o,"mouseleave"),o.target=o.target.parent;e.overTargets=null,this.freeEvent(n),this.freeEvent(o)}this.cursor=null}mapPointerUp(t){if(!(t instanceof Bt)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const e=performance.now(),s=this.createPointerEvent(t);if(this.dispatchEvent(s,"pointerup"),s.pointerType==="touch")this.dispatchEvent(s,"touchend");else if(s.pointerType==="mouse"||s.pointerType==="pen"){const a=s.button===2;this.dispatchEvent(s,a?"rightup":"mouseup")}const r=this.trackingData(t.pointerId),n=this.findMountedTarget(r.pressTargetsByButton[t.button]);let o=n;if(n&&!s.composedPath().includes(n)){let a=n;for(;a&&!s.composedPath().includes(a);){if(s.currentTarget=a,this.notifyTarget(s,"pointerupoutside"),s.pointerType==="touch")this.notifyTarget(s,"touchendoutside");else if(s.pointerType==="mouse"||s.pointerType==="pen"){const h=s.button===2;this.notifyTarget(s,h?"rightupoutside":"mouseupoutside")}a=a.parent}delete r.pressTargetsByButton[t.button],o=a}if(o){const a=this.clonePointerEvent(s,"click");a.target=o,a.path=null,r.clicksByButton[t.button]||(r.clicksByButton[t.button]={clickCount:0,target:a.target,timeStamp:e});const h=r.clicksByButton[t.button];h.target===a.target&&e-h.timeStamp<200?++h.clickCount:h.clickCount=1,h.target=a.target,h.timeStamp=e,a.detail=h.clickCount,a.pointerType==="mouse"?this.dispatchEvent(a,"click"):a.pointerType==="touch"&&this.dispatchEvent(a,"tap"),this.dispatchEvent(a,"pointertap"),this.freeEvent(a)}this.freeEvent(s)}mapPointerUpOutside(t){if(!(t instanceof Bt)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const e=this.trackingData(t.pointerId),s=this.findMountedTarget(e.pressTargetsByButton[t.button]),r=this.createPointerEvent(t);if(s){let n=s;for(;n;)r.currentTarget=n,this.notifyTarget(r,"pointerupoutside"),r.pointerType==="touch"?this.notifyTarget(r,"touchendoutside"):(r.pointerType==="mouse"||r.pointerType==="pen")&&this.notifyTarget(r,r.button===2?"rightupoutside":"mouseupoutside"),n=n.parent;delete e.pressTargetsByButton[t.button]}this.freeEvent(r)}mapWheel(t){if(!(t instanceof ts)){console.warn("EventBoundary cannot map a non-wheel event as a wheel event");return}const e=this.createWheelEvent(t);this.dispatchEvent(e),this.freeEvent(e)}findMountedTarget(t){if(!t)return null;let e=t[0];for(let s=1;s0&&(e=t.composedPath()[0]);const s=e!==this.domElement?"outside":"",r=this.normalizeToPointerData(t);for(let n=0,o=r.length;n{this._isMobileAccessibility=!0,this.activate(),this.destroyTouchHook()}),document.body.appendChild(t),this._hookDiv=t}destroyTouchHook(){!this._hookDiv||(document.body.removeChild(this._hookDiv),this._hookDiv=null)}activate(){var t;this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this.renderer.on("postrender",this.update,this),(t=this.renderer.view.parentNode)==null||t.appendChild(this.div))}deactivate(){var t;!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this.renderer.off("postrender",this.update),(t=this.div.parentNode)==null||t.removeChild(this.div))}updateAccessibleObjects(t){if(!t.visible||!t.accessibleChildren)return;t.accessible&&t.interactive&&(t._accessibleActive||this.addChild(t),t.renderId=this.renderId);const e=t.children;if(e)for(let s=0;s title : ${t.title}
tabIndex: ${t.tabIndex}`}capHitArea(t){t.x<0&&(t.width+=t.x,t.x=0),t.y<0&&(t.height+=t.y,t.y=0);const{width:e,height:s}=this.renderer;t.x+t.width>e&&(t.width=e-t.x),t.y+t.height>s&&(t.height=s-t.y)}addChild(t){let e=this.pool.pop();e||(e=document.createElement("button"),e.style.width=`${es}px`,e.style.height=`${es}px`,e.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",e.style.position="absolute",e.style.zIndex=Ho.toString(),e.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?e.setAttribute("aria-live","off"):e.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?e.setAttribute("aria-relevant","additions"):e.setAttribute("aria-relevant","text"),e.addEventListener("click",this._onClick.bind(this)),e.addEventListener("focus",this._onFocus.bind(this)),e.addEventListener("focusout",this._onFocusOut.bind(this))),e.style.pointerEvents=t.accessiblePointerEvents,e.type=t.accessibleType,t.accessibleTitle&&t.accessibleTitle!==null?e.title=t.accessibleTitle:(!t.accessibleHint||t.accessibleHint===null)&&(e.title=`displayObject ${t.tabIndex}`),t.accessibleHint&&t.accessibleHint!==null&&e.setAttribute("aria-label",t.accessibleHint),this.debug&&this.updateDebugHTML(e),t._accessibleActive=!0,t._accessibleDiv=e,e.displayObject=t,this.children.push(t),this.div.appendChild(t._accessibleDiv),t._accessibleDiv.tabIndex=t.tabIndex}_dispatchEvent(t,e){const{displayObject:s}=t.target,r=this.renderer.events.rootBoundary,n=Object.assign(new Oe(r),{target:s});r.rootTarget=this.renderer.lastObjectRendered,e.forEach(o=>r.dispatchEvent(n,o))}_onClick(t){this._dispatchEvent(t,["click","pointertap","tap"])}_onFocus(t){t.target.getAttribute("aria-live")||t.target.setAttribute("aria-live","assertive"),this._dispatchEvent(t,["mouseover"])}_onFocusOut(t){t.target.getAttribute("aria-live")||t.target.setAttribute("aria-live","polite"),this._dispatchEvent(t,["mouseout"])}_onKeyDown(t){t.keyCode===sf&&this.activate()}_onMouseMove(t){t.movementX===0&&t.movementY===0||this.deactivate()}destroy(){this.destroyTouchHook(),this.div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this.pool=null,this.children=null,this.renderer=null}}Hr.extension={name:"accessibility",type:[M.RendererPlugin,M.CanvasRendererPlugin]},U.add(Hr);const Xr=class{constructor(i){this.stage=new At,i=Object.assign({forceCanvas:!1},i),this.renderer=Do(i),Xr._plugins.forEach(t=>{t.init.call(this,i)})}render(){this.renderer.render(this.stage)}get view(){return this.renderer.view}get screen(){return this.renderer.screen}destroy(i,t){const e=Xr._plugins.slice(0);e.reverse(),e.forEach(s=>{s.destroy.call(this)}),this.stage.destroy(t),this.stage=null,this.renderer.destroy(i),this.renderer=null}};let Vr=Xr;Vr._plugins=[],U.handleByList(M.Application,Vr._plugins);class zr{static init(t){Object.defineProperty(this,"resizeTo",{set(e){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=e,e&&(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)return;this.cancelResize();let e,s;if(this._resizeTo===globalThis.window)e=globalThis.innerWidth,s=globalThis.innerHeight;else{const{clientWidth:r,clientHeight:n}=this._resizeTo;e=r,s=n}this.renderer.resize(e,s),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=t.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this.cancelResize(),this.cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}zr.extension=M.Application,U.add(zr);class lf{constructor(t,e=!1){this._loader=t,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=e}add(t){t.forEach(e=>{this._assetList.push(e)}),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;const t=[],e=Math.min(this._assetList.length,this._maxConcurrent);for(let s=0;s(Array.isArray(i)||(i=[i]),t?i.map(e=>typeof e=="string"?t(e):e):i);function Vo(i,t,e,s,r){const n=t[e];for(let o=0;o{const o=n.substring(1,n.length-1).split(",");r.push(o)}),Vo(i,r,0,e,s)}else s.push(i);return s}const ai=i=>!Array.isArray(i);class cf{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(t){return this._cache.has(t)}get(t){const e=this._cache.get(t);return e}set(t,e){const s=$t(t);let r;for(let a=0;a{r[a]=e}));const n=Object.keys(r),o={cacheKeys:n,keys:s};if(s.forEach(a=>{this._cacheMap.set(a,o)}),n.forEach(a=>{this._cache.has(a)&&this._cache.get(a),this._cache.set(a,r[a])}),e instanceof B){const a=e;s.forEach(h=>{a.baseTexture!==B.EMPTY.baseTexture&&j.addToCache(a.baseTexture,h),B.addToCache(a,h)})}}remove(t){if(this._cacheMap.get(t),!this._cacheMap.has(t))return;const e=this._cacheMap.get(t);e.cacheKeys.forEach(r=>{this._cache.delete(r)}),e.keys.forEach(r=>{this._cacheMap.delete(r)})}get parsers(){return this._parsers}}const Ue=new cf;class uf{constructor(){this._parsers=[],this.promiseCache={}}reset(){this.promiseCache={}}_getLoadPromiseAndParser(t,e){const s={promise:null,parser:null};return s.promise=(async()=>{var n,o;let r=null;for(let a=0;a({src:l})),a=o.length,h=o.map(async l=>{const c=ft.toAbsolute(l.src);if(!r[l.src])try{this.promiseCache[c]||(this.promiseCache[c]=this._getLoadPromiseAndParser(c,l)),r[l.src]=await this.promiseCache[c].promise,e&&e(++s/a)}catch(u){throw delete this.promiseCache[c],delete r[l.src],new Error(`[Loader.load] Failed to load ${c}. +${u}`)}});return await Promise.all(h),n?r[o[0].src]:r}async unload(t){const s=$t(t,r=>({src:r})).map(async r=>{var a,h;const n=ft.toAbsolute(r.src),o=this.promiseCache[n];if(o){const l=await o.promise;(h=(a=o.parser)==null?void 0:a.unload)==null||h.call(a,l,r,this),delete this.promiseCache[n]}});await Promise.all(s)}get parsers(){return this._parsers}}class df{constructor(){this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}prefer(...t){t.forEach(e=>{this._preferredOrder.push(e),e.priority||(e.priority=Object.keys(e.params))}),this._resolverHash={}}set basePath(t){this._basePath=t}get basePath(){return this._basePath}set rootPath(t){this._rootPath=t}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this._preferredOrder=[],this._resolverHash={},this._assetMap={},this._rootPath=null,this._basePath=null,this._manifest=null}addManifest(t){this._manifest,this._manifest=t,t.bundles.forEach(e=>{this.addBundle(e.name,e.assets)})}addBundle(t,e){const s=[];Array.isArray(e)?e.forEach(r=>{typeof r.name=="string"?s.push(r.name):s.push(...r.name),this.add(r.name,r.srcs)}):Object.keys(e).forEach(r=>{s.push(r),this.add(r,e[r])}),this._bundles[t]=s}add(t,e,s){const r=$t(t);r.forEach(o=>{this._assetMap[o]}),Array.isArray(e)||(typeof e=="string"?e=zo(e):e=[e]);const n=e.map(o=>{var h;let a=o;if(typeof o=="string"){let l=!1;for(let c=0;c{this._assetMap[o]=n})}resolveBundle(t){const e=ai(t);t=$t(t);const s={};return t.forEach(r=>{const n=this._bundles[r];n&&(s[r]=this.resolve(n))}),e?s[t[0]]:s}resolveUrl(t){const e=this.resolve(t);if(typeof t!="string"){const s={};for(const r in e)s[r]=e[r].src;return s}return e.src}resolve(t){const e=ai(t);t=$t(t);const s={};return t.forEach(r=>{var n;if(!this._resolverHash[r])if(this._assetMap[r]){let o=this._assetMap[r];const a=this._getPreferredOrder(o),h=o[0];a==null||a.priority.forEach(l=>{a.params[l].forEach(c=>{const u=o.filter(d=>d[l]?d[l]===c:!1);u.length&&(o=u)})}),this._resolverHash[r]=(n=o[0])!=null?n:h}else{let o=r;(this._basePath||this._rootPath)&&(o=ft.toAbsolute(o,this._basePath,this._rootPath)),this._resolverHash[r]={src:o}}s[r]=this._resolverHash[r]}),e?s[t[0]]:s}_getPreferredOrder(t){for(let e=0;en.params.format.includes(s.format));if(r)return r}return this._preferredOrder[0]}}class Wo{constructor(){this._detections=[],this._initialized=!1,this.resolver=new df,this.loader=new uf,this.cache=Ue,this._backgroundLoader=new lf(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(t={}){var n,o,a,h;if(this._initialized)return;if(this._initialized=!0,t.basePath&&(this.resolver.basePath=t.basePath),t.manifest){let l=t.manifest;typeof l=="string"&&(l=await this.load(l)),this.resolver.addManifest(l)}const e=(o=(n=t.texturePreference)==null?void 0:n.resolution)!=null?o:1,s=typeof e=="number"?[e]:e;let r=[];if((a=t.texturePreference)!=null&&a.format){const l=(h=t.texturePreference)==null?void 0:h.format;r=typeof l=="string"?[l]:l;for(const c of this._detections)await c.test()||(r=await c.remove(r))}else for(const l of this._detections)await l.test()&&(r=await l.add(r));this.resolver.prefer({params:{format:r,resolution:s}})}add(t,e,s){this.resolver.add(t,e,s)}async load(t,e){this._initialized||await this.init();const s=ai(t),r=$t(t).map(a=>typeof a!="string"?(this.resolver.add(a.src,a),a.src):a),n=this.resolver.resolve(r),o=await this._mapLoadToResolve(n,e);return s?o[r[0]]:o}addBundle(t,e){this.resolver.addBundle(t,e)}async loadBundle(t,e){this._initialized||await this.init();let s=!1;typeof t=="string"&&(s=!0,t=[t]);const r=this.resolver.resolveBundle(t),n={},o=Object.keys(r);let a=0,h=0;const l=()=>{e==null||e(++a/h)},c=o.map(u=>{const d=r[u];return h+=Object.keys(d).length,this._mapLoadToResolve(d,l).then(f=>{n[u]=f})});return await Promise.all(c),s?n[t[0]]:n}async backgroundLoad(t){this._initialized||await this.init(),typeof t=="string"&&(t=[t]);const e=this.resolver.resolve(t);this._backgroundLoader.add(Object.values(e))}async backgroundLoadBundle(t){this._initialized||await this.init(),typeof t=="string"&&(t=[t]);const e=this.resolver.resolveBundle(t);Object.values(e).forEach(s=>{this._backgroundLoader.add(Object.values(s))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(t){if(typeof t=="string")return Ue.get(t);const e={};for(let s=0;s{const l=n[a.src],c=[a.src];a.alias&&c.push(...a.alias),o[r[h]]=l,Ue.set(c,l)}),o}async unload(t){this._initialized||await this.init();const e=$t(t).map(r=>typeof r!="string"?r.src:r),s=this.resolver.resolve(e);await this._unloadFromResolved(s)}async unloadBundle(t){this._initialized||await this.init(),t=$t(t);const e=this.resolver.resolveBundle(t),s=Object.keys(e).map(r=>this._unloadFromResolved(e[r]));await Promise.all(s)}async _unloadFromResolved(t){const e=Object.values(t);e.forEach(s=>{Ue.remove(s.src)}),await this.loader.unload(e)}get detections(){return this._detections}}const hi=new Wo;U.handleByList(M.LoadParser,hi.loader.parsers).handleByList(M.ResolveParser,hi.resolver.parsers).handleByList(M.CacheParser,hi.cache.parsers).handleByList(M.DetectionParser,hi.detections);const jo={loader:M.LoadParser,resolver:M.ResolveParser,cache:M.CacheParser,detection:M.DetectionParser};U.handle(M.Asset,i=>{const t=i.ref;Object.entries(jo).filter(([e])=>!!t[e]).forEach(([e,s])=>{var r;return U.add(Object.assign(t[e],{extension:(r=t[e].extension)!=null?r:s}))})},i=>{const t=i.ref;Object.keys(jo).filter(e=>!!t[e]).forEach(e=>U.remove(t[e]))});const Yo={extension:M.CacheParser,test:i=>Array.isArray(i)&&i.every(t=>t instanceof B),getCacheableAssets:(i,t)=>{const e={};return i.forEach(s=>{t.forEach((r,n)=>{e[s+(n===0?"":n+1)]=r})}),e}};U.add(Yo);var kt=(i=>(i[i.Low=0]="Low",i[i.Normal=1]="Normal",i[i.High=2]="High",i))(kt||{});const $o={extension:{type:M.LoadParser,priority:kt.Low},test(i){return ft.extname(i).includes(".json")},async load(i){return await(await R.ADAPTER.fetch(i)).json()}};U.add($o);const qo={extension:{type:M.LoadParser,priority:kt.Low},test(i){return ft.extname(i).includes(".txt")},async load(i){return await(await R.ADAPTER.fetch(i)).text()}};U.add(qo);const ff=["normal","bold","100","200","300","400","500","600","700","800","900"],pf=["woff","woff2","ttf","otf"];function Ko(i){const t=ft.extname(i);return ft.basename(i,t).replace(/(-|_)/g," ").toLowerCase().split(" ").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}const Zo={extension:{type:M.LoadParser,priority:kt.Low},test(i){const e=i.split("?")[0].split(".").pop();return pf.includes(e)},async load(i,t){var s,r,n,o,a,h;if(!globalThis.navigator.onLine)throw new Error("[loadWebFont] Cannot load font - navigator is offline");const e=R.ADAPTER.getFontFaceSet();if(e){const l=[],c=(r=(s=t.data)==null?void 0:s.family)!=null?r:Ko(i),u=(a=(o=(n=t.data)==null?void 0:n.weights)==null?void 0:o.filter(f=>ff.includes(f)))!=null?a:["normal"],d=(h=t.data)!=null?h:{};for(let f=0;fR.ADAPTER.getFontFaceSet().delete(t))}};U.add(Zo);let Qo=0,Wr;const mf={id:"checkImageBitmap",code:` + async function checkImageBitmap() + { + try + { + if (typeof createImageBitmap !== 'function') return false; + + const response = await fetch('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII='); + const imageBlob = await response.blob(); + const imageBitmap = await createImageBitmap(imageBlob); + + return imageBitmap.width === 1 && imageBitmap.height === 1; + } + catch (e) + { + return false; + } + } + checkImageBitmap().then((result) => { self.postMessage(result); }); + `},_f={id:"loadImageBitmap",code:` + async function loadImageBitmap(url) + { + const response = await fetch(url); + + if (!response.ok) + { + throw new Error(\`[WorkerManager.loadImageBitmap] Failed to fetch \${url}: \` + + \`\${response.status} \${response.statusText}\`); + } + + const imageBlob = await response.blob(); + const imageBitmap = await createImageBitmap(imageBlob); + + return imageBitmap; + } + self.onmessage = async (event) => + { + try + { + const imageBitmap = await loadImageBitmap(event.data.data[0]); + + self.postMessage({ + data: imageBitmap, + uuid: event.data.uuid, + id: event.data.id, + }, [imageBitmap]); + } + catch(e) + { + self.postMessage({ + error: e, + uuid: event.data.uuid, + id: event.data.id, + }); + } + };`};let jr;class gf{constructor(){this._initialized=!1,this._createdWorkers=0,this.workerPool=[],this.queue=[],this.resolveHash={}}isImageBitmapSupported(){return this._isImageBitmapSupported!==void 0?this._isImageBitmapSupported:(this._isImageBitmapSupported=new Promise(t=>{const e=URL.createObjectURL(new Blob([mf.code],{type:"application/javascript"})),s=new Worker(e);s.addEventListener("message",r=>{s.terminate(),URL.revokeObjectURL(e),t(r.data)})}),this._isImageBitmapSupported)}loadImageBitmap(t){return this._run("loadImageBitmap",[t])}async _initWorkers(){this._initialized||(this._initialized=!0)}getWorker(){Wr===void 0&&(Wr=navigator.hardwareConcurrency||4);let t=this.workerPool.pop();return!t&&this._createdWorkers{this.complete(e.data),this.returnWorker(e.target),this.next()})),t}returnWorker(t){this.workerPool.push(t)}complete(t){t.error!==void 0?this.resolveHash[t.uuid].reject(t.error):this.resolveHash[t.uuid].resolve(t.data),this.resolveHash[t.uuid]=null}async _run(t,e){await this._initWorkers();const s=new Promise((r,n)=>{this.queue.push({id:t,arguments:e,resolve:r,reject:n})});return this.next(),s}next(){if(!this.queue.length)return;const t=this.getWorker();if(!t)return;const e=this.queue.pop(),s=e.id;this.resolveHash[Qo]={resolve:e.resolve,reject:e.reject},t.postMessage({data:e.arguments,uuid:Qo++,id:s})}}const Jo=new gf;function is(i,t){const e=i.split("?")[0],s=ft.extname(e).toLowerCase();return Array.isArray(t)?t.includes(s.toLowerCase()):s.toLowerCase()===t}function li(i,t,e){const s=new B(i);return s.baseTexture.on("dispose",()=>{delete t.promiseCache[e]}),s}const Yr=[".jpg",".png",".jpeg",".avif",".webp"];async function ta(i){const t=await R.ADAPTER.fetch(i);if(!t.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${i}: ${t.status} ${t.statusText}`);const e=await t.blob();return await createImageBitmap(e)}const ss={extension:{type:M.LoadParser,priority:kt.High},config:{preferWorkers:!0},test(i){let t=!1;for(let e=0;e{s=new Image,s.crossOrigin="anonymous",s.src=i,s.complete?n(s):s.onload=()=>{n(s)}});const r=new j(s,Zt({resolution:te(i)},t.data));return r.resource.src=i,li(r,e,i)},unload(i){i.destroy(!0)}};U.add(ss);const yf={extension:{type:M.LoadParser,priority:kt.High},test(i){return ft.extname(i).includes(".svg")},async testParse(i){return Ne.test(i)},async parse(i,t,e){var o,a,h;const s=new Ne(i,(o=t==null?void 0:t.data)==null?void 0:o.resourceOptions),r=new j(s,Zt({resolution:te(i)},t==null?void 0:t.data));r.resource.src=i;const n=li(r,e,i);return(h=(a=t==null?void 0:t.data)==null?void 0:a.resourceOptions)!=null&&h.autoLoad||await s.load(),n},async load(i,t){return(await R.ADAPTER.fetch(i)).text()},unload:ss.unload},ea={extension:M.ResolveParser,test:ss.test,parse:i=>{var t,e;return{resolution:parseFloat((e=(t=R.RETINA_PREFIX.exec(i))==null?void 0:t[1])!=null?e:"1"),format:i.split(".").pop(),src:i}}};U.add(ea);const ia={extension:{type:M.DetectionParser,priority:1},test:async()=>{if(!globalThis.createImageBitmap)return!1;const i="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=",t=await R.ADAPTER.fetch(i).then(e=>e.blob());return createImageBitmap(t).then(()=>!0,()=>!1)},add:async i=>[...i,"avif"],remove:async i=>i.filter(t=>t!=="avif")};U.add(ia);const sa={extension:{type:M.DetectionParser,priority:0},test:async()=>{if(!globalThis.createImageBitmap)return!1;const i="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=",t=await R.ADAPTER.fetch(i).then(e=>e.blob());return createImageBitmap(t).then(()=>!0,()=>!1)},add:async i=>[...i,"webp"],remove:async i=>i.filter(t=>t!=="webp")};U.add(sa);const ra=["png","jpg","jpeg"],na={extension:{type:M.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async i=>[...i,...ra],remove:async i=>i.filter(t=>!ra.includes(t))};U.add(na);var Et=(i=>(i[i.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",i[i.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",i[i.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",i[i.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",i[i.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",i[i.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",i[i.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",i[i.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",i[i.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",i[i.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",i[i.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",i[i.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",i[i.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",i[i.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",i[i.COMPRESSED_SRGB8_ETC2=37493]="COMPRESSED_SRGB8_ETC2",i[i.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",i[i.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",i[i.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",i[i.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",i[i.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",i[i.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",i[i.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",i[i.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",i[i.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",i[i.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35986]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",i[i.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",i[i.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",i))(Et||{});const ci={[33776]:.5,[33777]:.5,[33778]:1,[33779]:1,[35916]:.5,[35917]:.5,[35918]:1,[35919]:1,[37488]:.5,[37489]:.5,[37490]:1,[37491]:1,[37492]:.5,[37496]:1,[37493]:.5,[37497]:1,[37494]:.5,[37495]:.5,[35840]:.5,[35842]:.5,[35841]:.25,[35843]:.25,[36196]:.5,[35986]:.5,[35986]:1,[34798]:1,[37808]:1};class oa extends Fe{constructor(t,e={width:1,height:1,autoLoad:!0}){let s,r;typeof t=="string"?(s=t,r=new Uint8Array):(s=null,r=t),super(r,e),this.origin=s,this.buffer=r?new Ji(r):null,this.origin&&e.autoLoad!==!1&&this.load(),r!=null&&r.length&&(this.loaded=!0,this.onBlobLoaded(this.buffer.rawBinaryData))}onBlobLoaded(t){}async load(){const s=await(await(await fetch(this.origin)).blob()).arrayBuffer();return this.data=new Uint32Array(s),this.buffer=new Ji(s),this.loaded=!0,this.onBlobLoaded(s),this.update(),this}}class ce extends oa{constructor(t,e){super(t,e),this.format=e.format,this.levels=e.levels||1,this._width=e.width,this._height=e.height,this._extension=ce._formatToExtension(this.format),(e.levelBuffers||this.buffer)&&(this._levelBuffers=e.levelBuffers||ce._createLevelBuffers(t instanceof Uint8Array?t:this.buffer.uint8View,this.format,this.levels,4,4,this.width,this.height))}upload(t,e,s){const r=t.gl;if(!t.context.extensions[this._extension])throw new Error(`${this._extension} textures are not supported on the current machine`);if(!this._levelBuffers)return!1;for(let o=0,a=this.levels;o=33776&&t<=33779)return"s3tc";if(t>=37488&&t<=37497)return"etc";if(t>=35840&&t<=35843)return"pvrtc";if(t>=36196)return"etc1";if(t>=35986&&t<=34798)return"atc";throw new Error("Invalid (compressed) texture format given!")}static _createLevelBuffers(t,e,s,r,n,o,a){const h=new Array(s);let l=t.byteOffset,c=o,u=a,d=c+r-1&~(r-1),f=u+n-1&~(n-1),p=d*f*ci[e];for(let _=0;_1?c:d,levelHeight:s>1?u:f,levelBuffer:new Uint8Array(t.buffer,l,p)},l+=p,c=c>>1||1,u=u>>1||1,d=c+r-1&~(r-1),f=u+n-1&~(n-1),p=d*f*ci[e];return h}}let re,Ge;function aa(){Ge={s3tc:re.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:re.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:re.getExtension("WEBGL_compressed_texture_etc"),etc1:re.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:re.getExtension("WEBGL_compressed_texture_pvrtc")||re.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:re.getExtension("WEBGL_compressed_texture_atc"),astc:re.getExtension("WEBGL_compressed_texture_astc")}}const ha={extension:{type:M.DetectionParser,priority:2},test:async()=>{const t=R.ADAPTER.createCanvas().getContext("webgl");return t?(re=t,!0):!1},add:async i=>{Ge||aa();const t=[];for(const e in Ge)!Ge[e]||t.push(e);return[...t,...i]},remove:async i=>(Ge||aa(),i.filter(t=>!(t in Ge)))};U.add(ha);const $r=4,rs=124,vf=32,la=20,xf=542327876,ns={SIZE:1,FLAGS:2,HEIGHT:3,WIDTH:4,MIPMAP_COUNT:7,PIXEL_FORMAT:19},Tf={SIZE:0,FLAGS:1,FOURCC:2,RGB_BITCOUNT:3,R_BIT_MASK:4,G_BIT_MASK:5,B_BIT_MASK:6,A_BIT_MASK:7},os={DXGI_FORMAT:0,RESOURCE_DIMENSION:1,MISC_FLAG:2,ARRAY_SIZE:3,MISC_FLAGS2:4};var Ef=(i=>(i[i.DXGI_FORMAT_UNKNOWN=0]="DXGI_FORMAT_UNKNOWN",i[i.DXGI_FORMAT_R32G32B32A32_TYPELESS=1]="DXGI_FORMAT_R32G32B32A32_TYPELESS",i[i.DXGI_FORMAT_R32G32B32A32_FLOAT=2]="DXGI_FORMAT_R32G32B32A32_FLOAT",i[i.DXGI_FORMAT_R32G32B32A32_UINT=3]="DXGI_FORMAT_R32G32B32A32_UINT",i[i.DXGI_FORMAT_R32G32B32A32_SINT=4]="DXGI_FORMAT_R32G32B32A32_SINT",i[i.DXGI_FORMAT_R32G32B32_TYPELESS=5]="DXGI_FORMAT_R32G32B32_TYPELESS",i[i.DXGI_FORMAT_R32G32B32_FLOAT=6]="DXGI_FORMAT_R32G32B32_FLOAT",i[i.DXGI_FORMAT_R32G32B32_UINT=7]="DXGI_FORMAT_R32G32B32_UINT",i[i.DXGI_FORMAT_R32G32B32_SINT=8]="DXGI_FORMAT_R32G32B32_SINT",i[i.DXGI_FORMAT_R16G16B16A16_TYPELESS=9]="DXGI_FORMAT_R16G16B16A16_TYPELESS",i[i.DXGI_FORMAT_R16G16B16A16_FLOAT=10]="DXGI_FORMAT_R16G16B16A16_FLOAT",i[i.DXGI_FORMAT_R16G16B16A16_UNORM=11]="DXGI_FORMAT_R16G16B16A16_UNORM",i[i.DXGI_FORMAT_R16G16B16A16_UINT=12]="DXGI_FORMAT_R16G16B16A16_UINT",i[i.DXGI_FORMAT_R16G16B16A16_SNORM=13]="DXGI_FORMAT_R16G16B16A16_SNORM",i[i.DXGI_FORMAT_R16G16B16A16_SINT=14]="DXGI_FORMAT_R16G16B16A16_SINT",i[i.DXGI_FORMAT_R32G32_TYPELESS=15]="DXGI_FORMAT_R32G32_TYPELESS",i[i.DXGI_FORMAT_R32G32_FLOAT=16]="DXGI_FORMAT_R32G32_FLOAT",i[i.DXGI_FORMAT_R32G32_UINT=17]="DXGI_FORMAT_R32G32_UINT",i[i.DXGI_FORMAT_R32G32_SINT=18]="DXGI_FORMAT_R32G32_SINT",i[i.DXGI_FORMAT_R32G8X24_TYPELESS=19]="DXGI_FORMAT_R32G8X24_TYPELESS",i[i.DXGI_FORMAT_D32_FLOAT_S8X24_UINT=20]="DXGI_FORMAT_D32_FLOAT_S8X24_UINT",i[i.DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS=21]="DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS",i[i.DXGI_FORMAT_X32_TYPELESS_G8X24_UINT=22]="DXGI_FORMAT_X32_TYPELESS_G8X24_UINT",i[i.DXGI_FORMAT_R10G10B10A2_TYPELESS=23]="DXGI_FORMAT_R10G10B10A2_TYPELESS",i[i.DXGI_FORMAT_R10G10B10A2_UNORM=24]="DXGI_FORMAT_R10G10B10A2_UNORM",i[i.DXGI_FORMAT_R10G10B10A2_UINT=25]="DXGI_FORMAT_R10G10B10A2_UINT",i[i.DXGI_FORMAT_R11G11B10_FLOAT=26]="DXGI_FORMAT_R11G11B10_FLOAT",i[i.DXGI_FORMAT_R8G8B8A8_TYPELESS=27]="DXGI_FORMAT_R8G8B8A8_TYPELESS",i[i.DXGI_FORMAT_R8G8B8A8_UNORM=28]="DXGI_FORMAT_R8G8B8A8_UNORM",i[i.DXGI_FORMAT_R8G8B8A8_UNORM_SRGB=29]="DXGI_FORMAT_R8G8B8A8_UNORM_SRGB",i[i.DXGI_FORMAT_R8G8B8A8_UINT=30]="DXGI_FORMAT_R8G8B8A8_UINT",i[i.DXGI_FORMAT_R8G8B8A8_SNORM=31]="DXGI_FORMAT_R8G8B8A8_SNORM",i[i.DXGI_FORMAT_R8G8B8A8_SINT=32]="DXGI_FORMAT_R8G8B8A8_SINT",i[i.DXGI_FORMAT_R16G16_TYPELESS=33]="DXGI_FORMAT_R16G16_TYPELESS",i[i.DXGI_FORMAT_R16G16_FLOAT=34]="DXGI_FORMAT_R16G16_FLOAT",i[i.DXGI_FORMAT_R16G16_UNORM=35]="DXGI_FORMAT_R16G16_UNORM",i[i.DXGI_FORMAT_R16G16_UINT=36]="DXGI_FORMAT_R16G16_UINT",i[i.DXGI_FORMAT_R16G16_SNORM=37]="DXGI_FORMAT_R16G16_SNORM",i[i.DXGI_FORMAT_R16G16_SINT=38]="DXGI_FORMAT_R16G16_SINT",i[i.DXGI_FORMAT_R32_TYPELESS=39]="DXGI_FORMAT_R32_TYPELESS",i[i.DXGI_FORMAT_D32_FLOAT=40]="DXGI_FORMAT_D32_FLOAT",i[i.DXGI_FORMAT_R32_FLOAT=41]="DXGI_FORMAT_R32_FLOAT",i[i.DXGI_FORMAT_R32_UINT=42]="DXGI_FORMAT_R32_UINT",i[i.DXGI_FORMAT_R32_SINT=43]="DXGI_FORMAT_R32_SINT",i[i.DXGI_FORMAT_R24G8_TYPELESS=44]="DXGI_FORMAT_R24G8_TYPELESS",i[i.DXGI_FORMAT_D24_UNORM_S8_UINT=45]="DXGI_FORMAT_D24_UNORM_S8_UINT",i[i.DXGI_FORMAT_R24_UNORM_X8_TYPELESS=46]="DXGI_FORMAT_R24_UNORM_X8_TYPELESS",i[i.DXGI_FORMAT_X24_TYPELESS_G8_UINT=47]="DXGI_FORMAT_X24_TYPELESS_G8_UINT",i[i.DXGI_FORMAT_R8G8_TYPELESS=48]="DXGI_FORMAT_R8G8_TYPELESS",i[i.DXGI_FORMAT_R8G8_UNORM=49]="DXGI_FORMAT_R8G8_UNORM",i[i.DXGI_FORMAT_R8G8_UINT=50]="DXGI_FORMAT_R8G8_UINT",i[i.DXGI_FORMAT_R8G8_SNORM=51]="DXGI_FORMAT_R8G8_SNORM",i[i.DXGI_FORMAT_R8G8_SINT=52]="DXGI_FORMAT_R8G8_SINT",i[i.DXGI_FORMAT_R16_TYPELESS=53]="DXGI_FORMAT_R16_TYPELESS",i[i.DXGI_FORMAT_R16_FLOAT=54]="DXGI_FORMAT_R16_FLOAT",i[i.DXGI_FORMAT_D16_UNORM=55]="DXGI_FORMAT_D16_UNORM",i[i.DXGI_FORMAT_R16_UNORM=56]="DXGI_FORMAT_R16_UNORM",i[i.DXGI_FORMAT_R16_UINT=57]="DXGI_FORMAT_R16_UINT",i[i.DXGI_FORMAT_R16_SNORM=58]="DXGI_FORMAT_R16_SNORM",i[i.DXGI_FORMAT_R16_SINT=59]="DXGI_FORMAT_R16_SINT",i[i.DXGI_FORMAT_R8_TYPELESS=60]="DXGI_FORMAT_R8_TYPELESS",i[i.DXGI_FORMAT_R8_UNORM=61]="DXGI_FORMAT_R8_UNORM",i[i.DXGI_FORMAT_R8_UINT=62]="DXGI_FORMAT_R8_UINT",i[i.DXGI_FORMAT_R8_SNORM=63]="DXGI_FORMAT_R8_SNORM",i[i.DXGI_FORMAT_R8_SINT=64]="DXGI_FORMAT_R8_SINT",i[i.DXGI_FORMAT_A8_UNORM=65]="DXGI_FORMAT_A8_UNORM",i[i.DXGI_FORMAT_R1_UNORM=66]="DXGI_FORMAT_R1_UNORM",i[i.DXGI_FORMAT_R9G9B9E5_SHAREDEXP=67]="DXGI_FORMAT_R9G9B9E5_SHAREDEXP",i[i.DXGI_FORMAT_R8G8_B8G8_UNORM=68]="DXGI_FORMAT_R8G8_B8G8_UNORM",i[i.DXGI_FORMAT_G8R8_G8B8_UNORM=69]="DXGI_FORMAT_G8R8_G8B8_UNORM",i[i.DXGI_FORMAT_BC1_TYPELESS=70]="DXGI_FORMAT_BC1_TYPELESS",i[i.DXGI_FORMAT_BC1_UNORM=71]="DXGI_FORMAT_BC1_UNORM",i[i.DXGI_FORMAT_BC1_UNORM_SRGB=72]="DXGI_FORMAT_BC1_UNORM_SRGB",i[i.DXGI_FORMAT_BC2_TYPELESS=73]="DXGI_FORMAT_BC2_TYPELESS",i[i.DXGI_FORMAT_BC2_UNORM=74]="DXGI_FORMAT_BC2_UNORM",i[i.DXGI_FORMAT_BC2_UNORM_SRGB=75]="DXGI_FORMAT_BC2_UNORM_SRGB",i[i.DXGI_FORMAT_BC3_TYPELESS=76]="DXGI_FORMAT_BC3_TYPELESS",i[i.DXGI_FORMAT_BC3_UNORM=77]="DXGI_FORMAT_BC3_UNORM",i[i.DXGI_FORMAT_BC3_UNORM_SRGB=78]="DXGI_FORMAT_BC3_UNORM_SRGB",i[i.DXGI_FORMAT_BC4_TYPELESS=79]="DXGI_FORMAT_BC4_TYPELESS",i[i.DXGI_FORMAT_BC4_UNORM=80]="DXGI_FORMAT_BC4_UNORM",i[i.DXGI_FORMAT_BC4_SNORM=81]="DXGI_FORMAT_BC4_SNORM",i[i.DXGI_FORMAT_BC5_TYPELESS=82]="DXGI_FORMAT_BC5_TYPELESS",i[i.DXGI_FORMAT_BC5_UNORM=83]="DXGI_FORMAT_BC5_UNORM",i[i.DXGI_FORMAT_BC5_SNORM=84]="DXGI_FORMAT_BC5_SNORM",i[i.DXGI_FORMAT_B5G6R5_UNORM=85]="DXGI_FORMAT_B5G6R5_UNORM",i[i.DXGI_FORMAT_B5G5R5A1_UNORM=86]="DXGI_FORMAT_B5G5R5A1_UNORM",i[i.DXGI_FORMAT_B8G8R8A8_UNORM=87]="DXGI_FORMAT_B8G8R8A8_UNORM",i[i.DXGI_FORMAT_B8G8R8X8_UNORM=88]="DXGI_FORMAT_B8G8R8X8_UNORM",i[i.DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM=89]="DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM",i[i.DXGI_FORMAT_B8G8R8A8_TYPELESS=90]="DXGI_FORMAT_B8G8R8A8_TYPELESS",i[i.DXGI_FORMAT_B8G8R8A8_UNORM_SRGB=91]="DXGI_FORMAT_B8G8R8A8_UNORM_SRGB",i[i.DXGI_FORMAT_B8G8R8X8_TYPELESS=92]="DXGI_FORMAT_B8G8R8X8_TYPELESS",i[i.DXGI_FORMAT_B8G8R8X8_UNORM_SRGB=93]="DXGI_FORMAT_B8G8R8X8_UNORM_SRGB",i[i.DXGI_FORMAT_BC6H_TYPELESS=94]="DXGI_FORMAT_BC6H_TYPELESS",i[i.DXGI_FORMAT_BC6H_UF16=95]="DXGI_FORMAT_BC6H_UF16",i[i.DXGI_FORMAT_BC6H_SF16=96]="DXGI_FORMAT_BC6H_SF16",i[i.DXGI_FORMAT_BC7_TYPELESS=97]="DXGI_FORMAT_BC7_TYPELESS",i[i.DXGI_FORMAT_BC7_UNORM=98]="DXGI_FORMAT_BC7_UNORM",i[i.DXGI_FORMAT_BC7_UNORM_SRGB=99]="DXGI_FORMAT_BC7_UNORM_SRGB",i[i.DXGI_FORMAT_AYUV=100]="DXGI_FORMAT_AYUV",i[i.DXGI_FORMAT_Y410=101]="DXGI_FORMAT_Y410",i[i.DXGI_FORMAT_Y416=102]="DXGI_FORMAT_Y416",i[i.DXGI_FORMAT_NV12=103]="DXGI_FORMAT_NV12",i[i.DXGI_FORMAT_P010=104]="DXGI_FORMAT_P010",i[i.DXGI_FORMAT_P016=105]="DXGI_FORMAT_P016",i[i.DXGI_FORMAT_420_OPAQUE=106]="DXGI_FORMAT_420_OPAQUE",i[i.DXGI_FORMAT_YUY2=107]="DXGI_FORMAT_YUY2",i[i.DXGI_FORMAT_Y210=108]="DXGI_FORMAT_Y210",i[i.DXGI_FORMAT_Y216=109]="DXGI_FORMAT_Y216",i[i.DXGI_FORMAT_NV11=110]="DXGI_FORMAT_NV11",i[i.DXGI_FORMAT_AI44=111]="DXGI_FORMAT_AI44",i[i.DXGI_FORMAT_IA44=112]="DXGI_FORMAT_IA44",i[i.DXGI_FORMAT_P8=113]="DXGI_FORMAT_P8",i[i.DXGI_FORMAT_A8P8=114]="DXGI_FORMAT_A8P8",i[i.DXGI_FORMAT_B4G4R4A4_UNORM=115]="DXGI_FORMAT_B4G4R4A4_UNORM",i[i.DXGI_FORMAT_P208=116]="DXGI_FORMAT_P208",i[i.DXGI_FORMAT_V208=117]="DXGI_FORMAT_V208",i[i.DXGI_FORMAT_V408=118]="DXGI_FORMAT_V408",i[i.DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE=119]="DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE",i[i.DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE=120]="DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE",i[i.DXGI_FORMAT_FORCE_UINT=121]="DXGI_FORMAT_FORCE_UINT",i))(Ef||{}),bf=(i=>(i[i.DDS_DIMENSION_TEXTURE1D=2]="DDS_DIMENSION_TEXTURE1D",i[i.DDS_DIMENSION_TEXTURE2D=3]="DDS_DIMENSION_TEXTURE2D",i[i.DDS_DIMENSION_TEXTURE3D=6]="DDS_DIMENSION_TEXTURE3D",i))(bf||{});const wf=1,Sf=2,Af=4,Rf=64,Cf=512,If=131072,Pf=827611204,Mf=861165636,Bf=894720068,Df=808540228,Ff=4,Nf={[Pf]:Et.COMPRESSED_RGBA_S3TC_DXT1_EXT,[Mf]:Et.COMPRESSED_RGBA_S3TC_DXT3_EXT,[Bf]:Et.COMPRESSED_RGBA_S3TC_DXT5_EXT},Lf={[70]:Et.COMPRESSED_RGBA_S3TC_DXT1_EXT,[71]:Et.COMPRESSED_RGBA_S3TC_DXT1_EXT,[73]:Et.COMPRESSED_RGBA_S3TC_DXT3_EXT,[74]:Et.COMPRESSED_RGBA_S3TC_DXT3_EXT,[76]:Et.COMPRESSED_RGBA_S3TC_DXT5_EXT,[77]:Et.COMPRESSED_RGBA_S3TC_DXT5_EXT,[72]:Et.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,[75]:Et.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,[78]:Et.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT};function ca(i){const t=new Uint32Array(i);if(t[0]!==xf)throw new Error("Invalid DDS file magic word");const s=new Uint32Array(i,0,rs/Uint32Array.BYTES_PER_ELEMENT),r=s[ns.HEIGHT],n=s[ns.WIDTH],o=s[ns.MIPMAP_COUNT],a=new Uint32Array(i,ns.PIXEL_FORMAT*Uint32Array.BYTES_PER_ELEMENT,vf/Uint32Array.BYTES_PER_ELEMENT),h=a[wf];if(h&Af){const l=a[Tf.FOURCC];if(l!==Df){const y=Nf[l],x=$r+rs,b=new Uint8Array(i,x);return[new ce(b,{format:y,width:n,height:r,levels:o})]}const c=$r+rs,u=new Uint32Array(t.buffer,c,la/Uint32Array.BYTES_PER_ELEMENT),d=u[os.DXGI_FORMAT],f=u[os.RESOURCE_DIMENSION],p=u[os.MISC_FLAG],_=u[os.ARRAY_SIZE],g=Lf[d];if(g===void 0)throw new Error(`DDSParser cannot parse texture data with DXGI format ${d}`);if(p===Ff)throw new Error("DDSParser does not support cubemap textures");if(f===6)throw new Error("DDSParser does not supported 3D texture data");const v=new Array,T=$r+rs+la;if(_===1)v.push(new Uint8Array(i,T));else{const y=ci[g];let x=0,b=n,D=r;for(let S=0;S>>1,D=D>>>1}let C=T;for(let S=0;S<_;S++)v.push(new Uint8Array(i,C,x)),C+=x}return v.map(y=>new ce(y,{format:g,width:n,height:r,levels:o}))}throw h&Rf?new Error("DDSParser does not support uncompressed texture data."):h&Cf?new Error("DDSParser does not supported YUV uncompressed texture data."):h&If?new Error("DDSParser does not support single-channel (lumninance) texture data!"):h&Sf?new Error("DDSParser does not support single-channel (alpha) texture data!"):new Error("DDSParser failed to load a texture file due to an unknown reason!")}const ua=[171,75,84,88,32,49,49,187,13,10,26,10],Of=67305985,Ht={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},qr=64,Kr={[G.UNSIGNED_BYTE]:1,[G.UNSIGNED_SHORT]:2,[G.INT]:4,[G.UNSIGNED_INT]:4,[G.FLOAT]:4,[G.HALF_FLOAT]:8},da={[I.RGBA]:4,[I.RGB]:3,[I.RG]:2,[I.RED]:1,[I.LUMINANCE]:1,[I.LUMINANCE_ALPHA]:2,[I.ALPHA]:1},fa={[G.UNSIGNED_SHORT_4_4_4_4]:2,[G.UNSIGNED_SHORT_5_5_5_1]:2,[G.UNSIGNED_SHORT_5_6_5]:2};function pa(i,t,e=!1){const s=new DataView(t);if(!Uf(i,s))return null;const r=s.getUint32(Ht.ENDIANNESS,!0)===Of,n=s.getUint32(Ht.GL_TYPE,r),o=s.getUint32(Ht.GL_FORMAT,r),a=s.getUint32(Ht.GL_INTERNAL_FORMAT,r),h=s.getUint32(Ht.PIXEL_WIDTH,r),l=s.getUint32(Ht.PIXEL_HEIGHT,r)||1,c=s.getUint32(Ht.PIXEL_DEPTH,r)||1,u=s.getUint32(Ht.NUMBER_OF_ARRAY_ELEMENTS,r)||1,d=s.getUint32(Ht.NUMBER_OF_FACES,r),f=s.getUint32(Ht.NUMBER_OF_MIPMAP_LEVELS,r),p=s.getUint32(Ht.BYTES_OF_KEY_VALUE_DATA,r);if(l===0||c!==1)throw new Error("Only 2D textures are supported");if(d!==1)throw new Error("CubeTextures are not supported by KTXLoader yet!");if(u!==1)throw new Error("WebGL does not support array textures");const _=4,g=4,v=h+3&-4,T=l+3&-4,y=new Array(u);let x=h*l;n===0&&(x=v*T);let b;if(n!==0?Kr[n]?b=Kr[n]*da[o]:b=fa[n]:b=ci[a],b===void 0)throw new Error("Unable to resolve the pixel format stored in the *.ktx file!");const D=e?kf(s,p,r):null;let S=x*b,O=h,H=l,P=v,N=T,w=qr+p;for(let E=0;E1||n!==0?O:P,levelHeight:f>1||n!==0?H:N,levelBuffer:new Uint8Array(t,Y,S)},Y+=S}w+=V+4,w=w%4!==0?w+4-w%4:w,O=O>>1||1,H=H>>1||1,P=O+_-1&~(_-1),N=H+g-1&~(g-1),S=P*N*b}return n!==0?{uncompressed:y.map(E=>{let V=E[0].levelBuffer,Y=!1;return n===G.FLOAT?V=new Float32Array(E[0].levelBuffer.buffer,E[0].levelBuffer.byteOffset,E[0].levelBuffer.byteLength/4):n===G.UNSIGNED_INT?(Y=!0,V=new Uint32Array(E[0].levelBuffer.buffer,E[0].levelBuffer.byteOffset,E[0].levelBuffer.byteLength/4)):n===G.INT&&(Y=!0,V=new Int32Array(E[0].levelBuffer.buffer,E[0].levelBuffer.byteOffset,E[0].levelBuffer.byteLength/4)),{resource:new Fe(V,{width:E[0].levelWidth,height:E[0].levelHeight}),type:n,format:Y?Gf(o):o}}),kvData:D}:{compressed:y.map(E=>new ce(null,{format:a,width:h,height:l,levels:f,levelBuffers:E})),kvData:D}}function Uf(i,t){for(let e=0;et-r){console.error("KTXLoader: keyAndValueByteSize out of bounds");break}let h=0;for(;h{const h=new j(a,Zt({mipmap:Ft.OFF,alphaMode:Rt.NO_PREMULTIPLIED_ALPHA,resolution:te(i)},t.data));return li(h,e,i)});return o.length===1?o[0]:o},unload(i){Array.isArray(i)?i.forEach(t=>t.destroy(!0)):i.destroy(!0)}};U.add(ma);const _a={extension:{type:M.LoadParser,priority:kt.High},test(i){return is(i,".ktx")},async load(i,t,e){const r=await(await R.ADAPTER.fetch(i)).arrayBuffer(),{compressed:n,uncompressed:o,kvData:a}=pa(i,r),h=n!=null?n:o,l=Zt({mipmap:Ft.OFF,alphaMode:Rt.NO_PREMULTIPLIED_ALPHA,resolution:te(i)},t.data),c=h.map(u=>{h===o&&Object.assign(l,{type:u.type,format:u.format});const d=new j(u,l);return d.ktxKeyValueData=a,li(d,e,i)});return c.length===1?c[0]:c},unload(i){Array.isArray(i)?i.forEach(t=>t.destroy(!0)):i.destroy(!0)}};U.add(_a);const ga={extension:M.ResolveParser,test:i=>{const e=i.split("?")[0].split(".").pop();return["basis","ktx","dds"].includes(e)},parse:i=>{var s,r,n,o;if(i.split("?")[0].split(".").pop()==="ktx"){const a=[".s3tc.ktx",".s3tc_sRGB.ktx",".etc.ktx",".etc1.ktx",".pvrt.ktx",".atc.ktx",".astc.ktx"];if(a.some(h=>i.endsWith(h)))return{resolution:parseFloat((r=(s=R.RETINA_PREFIX.exec(i))==null?void 0:s[1])!=null?r:"1"),format:a.find(h=>i.endsWith(h)),src:i}}return{resolution:parseFloat((o=(n=R.RETINA_PREFIX.exec(i))==null?void 0:n[1])!=null?o:"1"),format:i.split(".").pop(),src:i}}};U.add(ga);const ya=new z,va=4,Zr=class{constructor(i){this.renderer=i}async image(i,t,e){const s=new Image;return s.src=await this.base64(i,t,e),s}async base64(i,t,e){const s=this.canvas(i);if(s.toDataURL!==void 0)return s.toDataURL(t,e);if(s.convertToBlob!==void 0){const r=await s.convertToBlob({type:t,quality:e});return await new Promise(n=>{const o=new FileReader;o.onload=()=>n(o.result),o.readAsDataURL(r)})}throw new Error("Extract.base64() requires ICanvas.toDataURL or ICanvas.convertToBlob to be implemented")}canvas(i,t){const e=this.renderer;let s,r=!1,n,o=!1;i&&(i instanceof ie?n=i:(n=this.renderer.generateTexture(i),o=!0)),n?(s=n.baseTexture.resolution,t=t!=null?t:n.frame,r=!1,e.renderTexture.bind(n)):(s=e.resolution,t||(t=ya,t.width=e.width,t.height=e.height),r=!0,e.renderTexture.bind(null));const a=Math.round(t.width*s),h=Math.round(t.height*s);let l=new Ws(a,h,1);const c=new Uint8Array(va*a*h),u=e.gl;u.readPixels(Math.round(t.x*s),Math.round(t.y*s),a,h,u.RGBA,u.UNSIGNED_BYTE,c);const d=l.context.getImageData(0,0,a,h);if(Zr.arrayPostDivide(c,d.data),l.context.putImageData(d,0,0),r){const f=new Ws(l.width,l.height,1);f.context.scale(1,-1),f.context.drawImage(l.canvas,0,-h),l.destroy(),l=f}return o&&n.destroy(!0),l.canvas}pixels(i,t){const e=this.renderer;let s,r,n=!1;i&&(i instanceof ie?r=i:(r=this.renderer.generateTexture(i),n=!0)),r?(s=r.baseTexture.resolution,t=t!=null?t:r.frame,e.renderTexture.bind(r)):(s=e.resolution,t||(t=ya,t.width=e.width,t.height=e.height),e.renderTexture.bind(null));const o=Math.round(t.width*s),a=Math.round(t.height*s),h=new Uint8Array(va*o*a),l=e.gl;return l.readPixels(Math.round(t.x*s),Math.round(t.y*s),o,a,l.RGBA,l.UNSIGNED_BYTE,h),n&&r.destroy(!0),Zr.arrayPostDivide(h,h),h}destroy(){this.renderer=null}static arrayPostDivide(i,t){for(let e=0;e(i.MITER="miter",i.BEVEL="bevel",i.ROUND="round",i))(ne||{}),ue=(i=>(i.BUTT="butt",i.ROUND="round",i.SQUARE="square",i))(ue||{});const ke={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(i,t=20){if(!this.adaptive||!i||isNaN(i))return t;let e=Math.ceil(i/this.maxLength);return ethis.maxSegments&&(e=this.maxSegments),e}};class ui{constructor(){this.color=16777215,this.alpha=1,this.texture=B.WHITE,this.matrix=null,this.visible=!1,this.reset()}clone(){const t=new ui;return t.color=this.color,t.alpha=this.alpha,t.texture=this.texture,t.matrix=this.matrix,t.visible=this.visible,t}reset(){this.color=16777215,this.alpha=1,this.texture=B.WHITE,this.matrix=null,this.visible=!1}destroy(){this.texture=null,this.matrix=null}}function xa(i,t=!1){const e=i.length;if(e<6)return;let s=0;for(let r=0,n=i[e-2],o=i[e-1];r0||t&&s<=0){const r=e/2;for(let n=r+r%2;n=6){xa(e,!1);const o=[];for(let l=0;l=0&&a>=0&&r>=0&&n>=0)){t.length=0;return}const h=Math.ceil(2.3*Math.sqrt(o+a)),l=h*8+(r?4:0)+(n?4:0);if(t.length=l,l===0)return;if(h===0){t.length=8,t[0]=t[6]=e+r,t[1]=t[3]=s+n,t[2]=t[4]=e-r,t[5]=t[7]=s-n;return}let c=0,u=h*4+(r?2:0)+2,d=u,f=l;{const p=r+o,_=n,g=e+p,v=e-p,T=s+_;if(t[c++]=g,t[c++]=T,t[--u]=T,t[--u]=v,n){const y=s-_;t[d++]=v,t[d++]=y,t[--f]=y,t[--f]=g}}for(let p=1;p=0&&n>=0&&o.push(e,s,e+r,s,e+r,s+n,e,s+n)},triangulate(i,t){const e=i.points,s=t.points;if(e.length===0)return;const r=s.length/2;s.push(e[0],e[1],e[2],e[3],e[6],e[7],e[4],e[5]),t.indices.push(r,r+1,r+2,r+1,r+2,r+3)}},Ea={build(i){di.build(i)},triangulate(i,t){di.triangulate(i,t)}};function ba(i,t,e,s,r,n,o,a){const h=i-e*r,l=t-s*r,c=i+e*n,u=t+s*n;let d,f;o?(d=s,f=-e):(d=-s,f=e);const p=h+d,_=l+f,g=c+d,v=u+f;return a.push(p,_),a.push(g,v),2}function Re(i,t,e,s,r,n,o,a){const h=e-i,l=s-t;let c=Math.atan2(h,l),u=Math.atan2(r-i,n-t);a&&cu&&(u+=Math.PI*2);let d=c;const f=u-c,p=Math.abs(f),_=Math.sqrt(h*h+l*l),g=(15*p*Math.sqrt(_)/Math.PI>>0)+1,v=f/g;if(d+=v,a){o.push(i,t),o.push(e,s);for(let T=1,y=d;T=0&&(n.join===ne.ROUND?d+=Re(y,x,y-C*w,x-S*w,y-O*w,x-H*w,c,!1)+4:d+=2,c.push(y-O*E,x-H*E),c.push(y+O*w,x+H*w));continue}const pt=(-C+v)*(-S+x)-(-C+y)*(-S+T),lt=(-O+b)*(-H+x)-(-O+y)*(-H+D),mt=(q*lt-A*pt)/K,yt=(X*pt-ot*lt)/K,bt=(mt-y)*(mt-y)+(yt-x)*(yt-x),gt=y+(mt-y)*w,st=x+(yt-x)*w,ct=y-(mt-y)*E,ut=x-(yt-x)*E,qt=Math.min(q*q+ot*ot,A*A+X*X),Kt=Z?w:E,Ti=qt+Kt*Kt*_;bt<=Ti?n.join===ne.BEVEL||bt/_>g?(Z?(c.push(gt,st),c.push(y+C*E,x+S*E),c.push(gt,st),c.push(y+O*E,x+H*E)):(c.push(y-C*w,x-S*w),c.push(ct,ut),c.push(y-O*w,x-H*w),c.push(ct,ut)),d+=2):n.join===ne.ROUND?Z?(c.push(gt,st),c.push(y+C*E,x+S*E),d+=Re(y,x,y+C*E,x+S*E,y+O*E,x+H*E,c,!0)+4,c.push(gt,st),c.push(y+O*E,x+H*E)):(c.push(y-C*w,x-S*w),c.push(ct,ut),d+=Re(y,x,y-C*w,x-S*w,y-O*w,x-H*w,c,!1)+4,c.push(y-O*w,x-H*w),c.push(ct,ut)):(c.push(gt,st),c.push(ct,ut)):(c.push(y-C*w,x-S*w),c.push(y+C*E,x+S*E),n.join===ne.ROUND?Z?d+=Re(y,x,y+C*E,x+S*E,y+O*E,x+H*E,c,!0)+2:d+=Re(y,x,y-C*w,x-S*w,y-O*w,x-H*w,c,!1)+2:n.join===ne.MITER&&bt/_<=g&&(Z?(c.push(ct,ut),c.push(ct,ut)):(c.push(gt,st),c.push(gt,st)),d+=2),c.push(y-O*w,x-H*w),c.push(y+O*E,x+H*E),d+=2)}v=s[(u-2)*2],T=s[(u-2)*2+1],y=s[(u-1)*2],x=s[(u-1)*2+1],C=-(T-x),S=v-y,P=Math.sqrt(C*C+S*S),C/=P,S/=P,C*=p,S*=p,c.push(y-C*w,x-S*w),c.push(y+C*E,x+S*E),h||(n.cap===ue.ROUND?d+=Re(y-C*(w-E)*.5,x-S*(w-E)*.5,y-C*w,x-S*w,y+C*E,x+S*E,c,!1)+2:n.cap===ue.SQUARE&&(d+=ba(y,x,C,S,w,E,!1,c)));const V=t.indices,Y=ke.epsilon*ke.epsilon;for(let F=f;Fd*l}}static arc(t,e,s,r,n,o,a,h,l){const c=a-o,u=ke._segmentsCount(Math.abs(c)*n,Math.ceil(Math.abs(c)/Ve)*40),d=c/(u*2),f=d*2,p=Math.cos(d),_=Math.sin(d),g=u-1,v=g%1/g;for(let T=0;T<=g;++T){const y=T+v*T,x=d+o+f*y,b=Math.cos(x),D=-Math.sin(x);l.push((p*b+_*D)*n+s,(p*-D+_*b)*n+r)}}}class as{static curveLength(t,e,s,r,n,o,a,h){let c=0,u=0,d=0,f=0,p=0,_=0,g=0,v=0,T=0,y=0,x=0,b=t,D=e;for(let C=1;C<=10;++C)u=C/10,d=u*u,f=d*u,p=1-u,_=p*p,g=_*p,v=g*t+3*_*u*s+3*p*d*n+f*a,T=g*e+3*_*u*r+3*p*d*o+f*h,y=b-v,x=D-T,b=v,D=T,c+=Math.sqrt(y*y+x*x);return c}static curveTo(t,e,s,r,n,o,a){const h=a[a.length-2],l=a[a.length-1];a.length-=2;const c=ke._segmentsCount(as.curveLength(h,l,t,e,s,r,n,o));let u=0,d=0,f=0,p=0,_=0;a.push(h,l);for(let g=1,v=0;g<=c;++g)v=g/c,u=1-v,d=u*u,f=d*u,p=v*v,_=p*v,a.push(f*h+3*d*v*t+3*u*p*s+_*n,f*l+3*d*v*e+3*u*p*r+_*o)}}class hs{static curveLength(t,e,s,r,n,o){const a=t-2*s+n,h=e-2*r+o,l=2*s-2*t,c=2*r-2*e,u=4*(a*a+h*h),d=4*(a*l+h*c),f=l*l+c*c,p=2*Math.sqrt(u+d+f),_=Math.sqrt(u),g=2*u*_,v=2*Math.sqrt(f),T=d/_;return(g*p+_*d*(p-v)+(4*f*u-d*d)*Math.log((2*_+T+p)/(T+v)))/(4*g)}static curveTo(t,e,s,r,n){const o=n[n.length-2],a=n[n.length-1],h=ke._segmentsCount(hs.curveLength(o,a,t,e,s,r));let l=0,c=0;for(let u=1;u<=h;++u){const d=u/h;l=o+(t-o)*d,c=a+(e-a)*d,n.push(l+(t+(s-t)*d-l)*d,c+(e+(r-e)*d-c)*d)}}}class wa{constructor(){this.reset()}begin(t,e,s){this.reset(),this.style=t,this.start=e,this.attribStart=s}end(t,e){this.attribSize=e-this.attribStart,this.size=t-this.start}reset(){this.style=null,this.size=0,this.start=0,this.attribStart=0,this.attribSize=0}}const ls={[dt.POLY]:Jr,[dt.CIRC]:di,[dt.ELIP]:di,[dt.RECT]:Ta,[dt.RREC]:Ea},sn=[],fi=[];class pi{constructor(t,e=null,s=null,r=null){this.points=[],this.holes=[],this.shape=t,this.lineStyle=s,this.fillStyle=e,this.matrix=r,this.type=t.type}clone(){return new pi(this.shape,this.fillStyle,this.lineStyle,this.matrix)}destroy(){this.shape=null,this.holes.length=0,this.holes=null,this.points.length=0,this.points=null,this.lineStyle=null,this.fillStyle=null}}const He=new W,Sa=class extends Dr{constructor(){super(),this.closePointEps=1e-4,this.boundsPadding=0,this.uvsFloat32=null,this.indicesUint16=null,this.batchable=!1,this.points=[],this.colors=[],this.uvs=[],this.indices=[],this.textureIds=[],this.graphicsData=[],this.drawCalls=[],this.batchDirty=-1,this.batches=[],this.dirty=0,this.cacheDirty=-1,this.clearDirty=0,this.shapeIndex=0,this._bounds=new ri,this.boundsDirty=-1}get bounds(){return this.updateBatches(),this.boundsDirty!==this.dirty&&(this.boundsDirty=this.dirty,this.calculateBounds()),this._bounds}invalidate(){this.boundsDirty=-1,this.dirty++,this.batchDirty++,this.shapeIndex=0,this.points.length=0,this.colors.length=0,this.uvs.length=0,this.indices.length=0,this.textureIds.length=0;for(let i=0;i0&&(this.invalidate(),this.clearDirty++,this.graphicsData.length=0),this}drawShape(i,t=null,e=null,s=null){const r=new pi(i,t,e,s);return this.graphicsData.push(r),this.dirty++,this}drawHole(i,t=null){if(!this.graphicsData.length)return null;const e=new pi(i,null,null,t),s=this.graphicsData[this.graphicsData.length-1];return e.lineStyle=s.lineStyle,s.holes.push(e),this.dirty++,this}destroy(){super.destroy();for(let i=0;i0&&(e=this.batches[this.batches.length-1],s=e.style);for(let a=this.shapeIndex;a65535;this.indicesUint16&&this.indices.length===this.indicesUint16.length&&o===this.indicesUint16.BYTES_PER_ELEMENT>2?this.indicesUint16.set(this.indices):this.indicesUint16=o?new Uint32Array(this.indices):new Uint16Array(this.indices),this.batchable=this.isBatchable(),this.batchable?this.packBatches():this.buildDrawCalls()}_compareStyles(i,t){return!(!i||!t||i.texture.baseTexture!==t.texture.baseTexture||i.color+i.alpha!==t.color+t.alpha||!!i.native!=!!t.native)}validateBatching(){if(this.dirty===this.cacheDirty||!this.graphicsData.length)return!1;for(let i=0,t=this.graphicsData.length;i65535*2)return!1;const i=this.batches;for(let t=0;t0&&(s=fi.pop(),s||(s=new Zi,s.texArray=new Qi),this.drawCalls.push(s)),s.start=l,s.size=0,s.texArray.count=0,s.type=h),p.touched=1,p._batchEnabled=i,p._batchLocation=r,p.wrapMode=zt.REPEAT,s.texArray.elements[s.texArray.count++]=p,r++)),s.size+=u.size,l+=u.size,o=p._batchLocation,this.addColors(t,f.color,f.alpha,u.attribSize,u.attribStart),this.addTextureIds(e,o,u.attribSize,u.attribStart)}j._globalBatch=i,this.packAttributes()}packAttributes(){const i=this.points,t=this.uvs,e=this.colors,s=this.textureIds,r=new ArrayBuffer(i.length*3*4),n=new Float32Array(r),o=new Uint32Array(r);let a=0;for(let h=0;h>16)+(t&65280)+((t&255)<<16),o=Ni(n,e);i.length=Math.max(i.length,r+s);for(let a=0;a0&&i.alpha>0;return t?(i.matrix&&(i.matrix=i.matrix.clone(),i.matrix.invert()),Object.assign(this._lineStyle,{visible:t},i)):this._lineStyle.reset(),this}startPoly(){if(this.currentPath){const i=this.currentPath.points,t=this.currentPath.points.length;t>2&&(this.drawShape(this.currentPath),this.currentPath=new fe,this.currentPath.closeStroke=!1,this.currentPath.points.push(i[t-2],i[t-1]))}else this.currentPath=new fe,this.currentPath.closeStroke=!1}finishPoly(){this.currentPath&&(this.currentPath.points.length>2?(this.drawShape(this.currentPath),this.currentPath=null):this.currentPath.points.length=0)}moveTo(i,t){return this.startPoly(),this.currentPath.points[0]=i,this.currentPath.points[1]=t,this}lineTo(i,t){this.currentPath||this.moveTo(0,0);const e=this.currentPath.points,s=e[e.length-2],r=e[e.length-1];return(s!==i||r!==t)&&e.push(i,t),this}_initCurve(i=0,t=0){this.currentPath?this.currentPath.points.length===0&&(this.currentPath.points=[i,t]):this.moveTo(i,t)}quadraticCurveTo(i,t,e,s){this._initCurve();const r=this.currentPath.points;return r.length===0&&this.moveTo(0,0),hs.curveTo(i,t,e,s,r),this}bezierCurveTo(i,t,e,s,r,n){return this._initCurve(),as.curveTo(i,t,e,s,r,n,this.currentPath.points),this}arcTo(i,t,e,s,r){this._initCurve(i,t);const n=this.currentPath.points,o=en.curveTo(i,t,e,s,r,n);if(o){const{cx:a,cy:h,radius:l,startAngle:c,endAngle:u,anticlockwise:d}=o;this.arc(a,h,l,c,u,d)}return this}arc(i,t,e,s,r,n=!1){if(s===r)return this;if(!n&&r<=s?r+=Ve:n&&s<=r&&(s+=Ve),r-s===0)return this;const a=i+Math.cos(s)*e,h=t+Math.sin(s)*e,l=this._geometry.closePointEps;let c=this.currentPath?this.currentPath.points:null;if(c){const u=Math.abs(c[c.length-2]-a),d=Math.abs(c[c.length-1]-h);u0;return t?(i.matrix&&(i.matrix=i.matrix.clone(),i.matrix.invert()),Object.assign(this._fillStyle,{visible:t},i)):this._fillStyle.reset(),this}endFill(){return this.finishPoly(),this._fillStyle.reset(),this}drawRect(i,t,e,s){return this.drawShape(new z(i,t,e,s))}drawRoundedRect(i,t,e,s,r){return this.drawShape(new Ci(i,t,e,s,r))}drawCircle(i,t,e){return this.drawShape(new Ai(i,t,e))}drawEllipse(i,t,e,s){return this.drawShape(new Ri(i,t,e,s))}drawPolygon(...i){let t,e=!0;const s=i[0];s.points?(e=s.closeStroke,t=s.points):Array.isArray(i[0])?t=i[0]:t=i;const r=new fe(t);return r.closeStroke=e,this.drawShape(r),this}drawShape(i){return this._holeMode?this._geometry.drawHole(i,this._matrix):this._geometry.drawShape(i,this._fillStyle.clone(),this._lineStyle.clone(),this._matrix),this}clear(){return this._geometry.clear(),this._lineStyle.reset(),this._fillStyle.reset(),this._boundsID++,this._matrix=null,this._holeMode=!1,this.currentPath=null,this}isFastRect(){const i=this._geometry.graphicsData;return i.length===1&&i[0].shape.type===dt.RECT&&!i[0].matrix&&!i[0].holes.length&&!(i[0].lineStyle.visible&&i[0].lineStyle.width)}_render(i){this.finishPoly();const t=this._geometry;t.updateBatches(),t.batchable?(this.batchDirty!==t.batchDirty&&this._populateBatches(),this._renderBatched(i)):(i.batch.flush(),this._renderDirect(i))}_populateBatches(){const i=this._geometry,t=this.blendMode,e=i.batches.length;this.batchTint=-1,this._transformID=-1,this.batchDirty=i.batchDirty,this.batches.length=e,this.vertexData=new Float32Array(i.points);for(let s=0;s>16&255)/255*r,n.tint[1]=(s>>8&255)/255*r,n.tint[2]=(s&255)/255*r,n.tint[3]=r,i.shader.bind(t),i.geometry.bind(e,t),i.state.set(this.state);for(let a=0,h=o.length;a>16)+(a&65280)+((a&255)<<16)}}}calculateVertices(){const i=this.transform._worldID;if(this._transformID===i)return;this._transformID=i;const t=this.transform.worldTransform,e=t.a,s=t.b,r=t.c,n=t.d,o=t.tx,a=t.ty,h=this._geometry.points,l=this.vertexData;let c=0;for(let u=0;u>16)+(t&65280)+((t&255)<<16),this._colorDirty=!0)}get tint(){return this._tint}update(){if(this._colorDirty){this._colorDirty=!1;const t=this.texture.baseTexture;Hs(this._tint,this._alpha,this.uniforms.uColor,t.alphaMode)}this.uvMatrix.update()&&(this.uniforms.uTextureMatrix=this.uvMatrix.mapCoord)}}class mi extends se{constructor(t,e,s){super();const r=new nt(t),n=new nt(e,!0),o=new nt(s,!0,!0);this.addAttribute("aVertexPosition",r,2,!1,G.FLOAT).addAttribute("aTextureCoord",n,2,!1,G.FLOAT).addIndex(o),this._updateId=-1}get vertexDirtyId(){return this.buffers[0]._updateID}}class Ia extends mi{constructor(t=100,e=100,s=10,r=10){super(),this.segWidth=s,this.segHeight=r,this.width=t,this.height=e,this.build()}build(){const t=this.segWidth*this.segHeight,e=[],s=[],r=[],n=this.segWidth-1,o=this.segHeight-1,a=this.width/n,h=this.height/o;for(let c=0;c0){const p=h.x-t[d].x,_=h.y-t[d].y,g=Math.sqrt(p*p+_*_);h=t[d],a+=g/l}else a=d/(c-1);n[f]=a,n[f+1]=0,n[f+2]=a,n[f+3]=1}let u=0;for(let d=0;d1&&(u=1);const d=Math.sqrt(r*r+n*n),f=this.textureScale>0?this.textureScale*this._width/2:this._width/2;r/=d,n/=d,r*=f,n*=f,o[c]=l.x+r,o[c+1]=l.y+n,o[c+2]=l.x-r,o[c+3]=l.y-n,e=l}this.buffers[0].update()}update(){this.textureScale>0?this.build():this.updateVertices()}}class Yf extends Ce{constructor(t,e,s=0){const r=new Pa(t.height,e,s),n=new Xe(t);s>0&&(t.baseTexture.wrapMode=zt.REPEAT),super(r,n),this.autoUpdate=!0}_render(t){const e=this.geometry;(this.autoUpdate||e._width!==this.shader.texture.height)&&(e._width=this.shader.texture.height,e.update()),super._render(t)}}class Ma extends Ce{constructor(t,e,s){const r=new Ia(t.width,t.height,e,s),n=new Xe(B.WHITE);super(r,n),this.texture=t,this.autoResize=!0}textureUpdated(){this._textureID=this.shader.texture._updateID;const t=this.geometry,{width:e,height:s}=this.shader.texture;this.autoResize&&(t.width!==e||t.height!==s)&&(t.width=this.shader.texture.width,t.height=this.shader.texture.height,t.build())}set texture(t){this.shader.texture!==t&&(this.shader.texture=t,this._textureID=-1,t.baseTexture.valid?this.textureUpdated():t.once("update",this.textureUpdated,this))}get texture(){return this.shader.texture}_render(t){this._textureID!==this.shader.texture._updateID&&this.textureUpdated(),super._render(t)}destroy(t){this.shader.texture.off("update",this.textureUpdated,this),super.destroy(t)}}class $f extends Ce{constructor(t=B.EMPTY,e,s,r,n){const o=new mi(e,s,r);o.getBuffer("aVertexPosition").static=!1;const a=new Xe(t);super(o,a,null,n),this.autoUpdate=!0}get vertices(){return this.geometry.getBuffer("aVertexPosition").data}set vertices(t){this.geometry.getBuffer("aVertexPosition").data=t}_render(t){this.autoUpdate&&this.geometry.getBuffer("aVertexPosition").update(),super._render(t)}}const fs=10;class qf extends Ma{constructor(t,e=fs,s=fs,r=fs,n=fs){super(B.WHITE,4,4),this._origWidth=t.orig.width,this._origHeight=t.orig.height,this._width=this._origWidth,this._height=this._origHeight,this._leftWidth=e,this._rightWidth=r,this._topHeight=s,this._bottomHeight=n,this.texture=t}textureUpdated(){this._textureID=this.shader.texture._updateID,this._refresh()}get vertices(){return this.geometry.getBuffer("aVertexPosition").data}set vertices(t){this.geometry.getBuffer("aVertexPosition").data=t}updateHorizontalVertices(){const t=this.vertices,e=this._getMinScale();t[9]=t[11]=t[13]=t[15]=this._topHeight*e,t[17]=t[19]=t[21]=t[23]=this._height-this._bottomHeight*e,t[25]=t[27]=t[29]=t[31]=this._height}updateVerticalVertices(){const t=this.vertices,e=this._getMinScale();t[2]=t[10]=t[18]=t[26]=this._leftWidth*e,t[4]=t[12]=t[20]=t[28]=this._width-this._rightWidth*e,t[6]=t[14]=t[22]=t[30]=this._width}_getMinScale(){const t=this._leftWidth+this._rightWidth,e=this._width>t?1:this._width/t,s=this._topHeight+this._bottomHeight,r=this._height>s?1:this._height/s;return Math.min(e,r)}get width(){return this._width}set width(t){this._width=t,this._refresh()}get height(){return this._height}set height(t){this._height=t,this._refresh()}get leftWidth(){return this._leftWidth}set leftWidth(t){this._leftWidth=t,this._refresh()}get rightWidth(){return this._rightWidth}set rightWidth(t){this._rightWidth=t,this._refresh()}get topHeight(){return this._topHeight}set topHeight(t){this._topHeight=t,this._refresh()}get bottomHeight(){return this._bottomHeight}set bottomHeight(t){this._bottomHeight=t,this._refresh()}_refresh(){const t=this.texture,e=this.geometry.buffers[1].data;this._origWidth=t.orig.width,this._origHeight=t.orig.height;const s=1/this._origWidth,r=1/this._origHeight;e[0]=e[8]=e[16]=e[24]=0,e[1]=e[3]=e[5]=e[7]=0,e[6]=e[14]=e[22]=e[30]=1,e[25]=e[27]=e[29]=e[31]=1,e[2]=e[10]=e[18]=e[26]=s*this._leftWidth,e[4]=e[12]=e[20]=e[28]=1-s*this._rightWidth,e[9]=e[11]=e[13]=e[15]=r*this._topHeight,e[17]=e[19]=e[21]=e[23]=1-r*this._bottomHeight,this.updateHorizontalVertices(),this.updateVerticalVertices(),this.geometry.buffers[0].update(),this.geometry.buffers[1].update()}}class Kf extends At{constructor(t=1500,e,s=16384,r=!1){super();const n=16384;s>n&&(s=n),this._properties=[!1,!0,!1,!1,!1],this._maxSize=t,this._batchSize=s,this._buffers=null,this._bufferUpdateIDs=[],this._updateID=0,this.interactiveChildren=!1,this.blendMode=k.NORMAL,this.autoResize=r,this.roundPixels=!0,this.baseTexture=null,this.setProperties(e),this._tint=0,this.tintRgb=new Float32Array(4),this.tint=16777215}setProperties(t){t&&(this._properties[0]="vertices"in t||"scale"in t?!!t.vertices||!!t.scale:this._properties[0],this._properties[1]="position"in t?!!t.position:this._properties[1],this._properties[2]="rotation"in t?!!t.rotation:this._properties[2],this._properties[3]="uvs"in t?!!t.uvs:this._properties[3],this._properties[4]="tint"in t||"alpha"in t?!!t.tint||!!t.alpha:this._properties[4])}updateTransform(){this.displayObjectUpdateTransform()}get tint(){return this._tint}set tint(t){this._tint=t,ve(t,this.tintRgb)}render(t){!this.visible||this.worldAlpha<=0||!this.children.length||!this.renderable||(this.baseTexture||(this.baseTexture=this.children[0]._texture.baseTexture,this.baseTexture.valid||this.baseTexture.once("update",()=>this.onChildrenChange(0))),t.batch.setObjectRenderer(t.plugins.particle),t.plugins.particle.render(this))}onChildrenChange(t){const e=Math.floor(t/this._batchSize);for(;this._bufferUpdateIDs.lengths&&!t.autoResize&&(o=s);let a=t._buffers;a||(a=t._buffers=this.generateBuffers(t));const h=e[0]._texture.baseTexture,l=h.alphaMode>0;this.state.blendMode=ks(t.blendMode,l),n.state.set(this.state);const c=n.gl,u=t.worldTransform.copyTo(this.tempMatrix);u.prepend(n.globalUniforms.uniforms.projectionMatrix),this.shader.uniforms.translationMatrix=u.toArray(!0),this.shader.uniforms.uColor=$n(t.tintRgb,t.worldAlpha,this.shader.uniforms.uColor,l),this.shader.uniforms.uSampler=h,this.renderer.shader.bind(this.shader);let d=!1;for(let f=0,p=0;fr&&(_=r),p>=a.length&&a.push(this._generateOneMoreBuffer(t));const g=a[p];g.uploadDynamic(e,f,_);const v=t._bufferUpdateIDs[p]||0;d=d||g._updateID0,c=h.alpha,u=c<1&&l?Ni(h._tintRGB,c):h._tintRGB+(c*255<<24);r[o]=u,r[o+n]=u,r[o+n*2]=u,r[o+n*3]=u,o+=n*4}}destroy(){super.destroy(),this.shader&&(this.shader.destroy(),this.shader=null),this.tempMatrix=null}}an.extension={name:"particle",type:M.RendererPlugin},U.add(an),R.UPLOADS_PER_FRAME=4;var _i=(i=>(i[i.LINEAR_VERTICAL=0]="LINEAR_VERTICAL",i[i.LINEAR_HORIZONTAL=1]="LINEAR_HORIZONTAL",i))(_i||{});const hn={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:_i.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100,leading:0},Jf=["serif","sans-serif","monospace","cursive","fantasy","system-ui"];class oe{constructor(t){this.styleID=0,this.reset(),cn(this,t,t)}clone(){const t={};return cn(t,this,hn),new oe(t)}reset(){cn(this,hn,hn)}get align(){return this._align}set align(t){this._align!==t&&(this._align=t,this.styleID++)}get breakWords(){return this._breakWords}set breakWords(t){this._breakWords!==t&&(this._breakWords=t,this.styleID++)}get dropShadow(){return this._dropShadow}set dropShadow(t){this._dropShadow!==t&&(this._dropShadow=t,this.styleID++)}get dropShadowAlpha(){return this._dropShadowAlpha}set dropShadowAlpha(t){this._dropShadowAlpha!==t&&(this._dropShadowAlpha=t,this.styleID++)}get dropShadowAngle(){return this._dropShadowAngle}set dropShadowAngle(t){this._dropShadowAngle!==t&&(this._dropShadowAngle=t,this.styleID++)}get dropShadowBlur(){return this._dropShadowBlur}set dropShadowBlur(t){this._dropShadowBlur!==t&&(this._dropShadowBlur=t,this.styleID++)}get dropShadowColor(){return this._dropShadowColor}set dropShadowColor(t){const e=ln(t);this._dropShadowColor!==e&&(this._dropShadowColor=e,this.styleID++)}get dropShadowDistance(){return this._dropShadowDistance}set dropShadowDistance(t){this._dropShadowDistance!==t&&(this._dropShadowDistance=t,this.styleID++)}get fill(){return this._fill}set fill(t){const e=ln(t);this._fill!==e&&(this._fill=e,this.styleID++)}get fillGradientType(){return this._fillGradientType}set fillGradientType(t){this._fillGradientType!==t&&(this._fillGradientType=t,this.styleID++)}get fillGradientStops(){return this._fillGradientStops}set fillGradientStops(t){tp(this._fillGradientStops,t)||(this._fillGradientStops=t,this.styleID++)}get fontFamily(){return this._fontFamily}set fontFamily(t){this.fontFamily!==t&&(this._fontFamily=t,this.styleID++)}get fontSize(){return this._fontSize}set fontSize(t){this._fontSize!==t&&(this._fontSize=t,this.styleID++)}get fontStyle(){return this._fontStyle}set fontStyle(t){this._fontStyle!==t&&(this._fontStyle=t,this.styleID++)}get fontVariant(){return this._fontVariant}set fontVariant(t){this._fontVariant!==t&&(this._fontVariant=t,this.styleID++)}get fontWeight(){return this._fontWeight}set fontWeight(t){this._fontWeight!==t&&(this._fontWeight=t,this.styleID++)}get letterSpacing(){return this._letterSpacing}set letterSpacing(t){this._letterSpacing!==t&&(this._letterSpacing=t,this.styleID++)}get lineHeight(){return this._lineHeight}set lineHeight(t){this._lineHeight!==t&&(this._lineHeight=t,this.styleID++)}get leading(){return this._leading}set leading(t){this._leading!==t&&(this._leading=t,this.styleID++)}get lineJoin(){return this._lineJoin}set lineJoin(t){this._lineJoin!==t&&(this._lineJoin=t,this.styleID++)}get miterLimit(){return this._miterLimit}set miterLimit(t){this._miterLimit!==t&&(this._miterLimit=t,this.styleID++)}get padding(){return this._padding}set padding(t){this._padding!==t&&(this._padding=t,this.styleID++)}get stroke(){return this._stroke}set stroke(t){const e=ln(t);this._stroke!==e&&(this._stroke=e,this.styleID++)}get strokeThickness(){return this._strokeThickness}set strokeThickness(t){this._strokeThickness!==t&&(this._strokeThickness=t,this.styleID++)}get textBaseline(){return this._textBaseline}set textBaseline(t){this._textBaseline!==t&&(this._textBaseline=t,this.styleID++)}get trim(){return this._trim}set trim(t){this._trim!==t&&(this._trim=t,this.styleID++)}get whiteSpace(){return this._whiteSpace}set whiteSpace(t){this._whiteSpace!==t&&(this._whiteSpace=t,this.styleID++)}get wordWrap(){return this._wordWrap}set wordWrap(t){this._wordWrap!==t&&(this._wordWrap=t,this.styleID++)}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(t){this._wordWrapWidth!==t&&(this._wordWrapWidth=t,this.styleID++)}toFontString(){const t=typeof this.fontSize=="number"?`${this.fontSize}px`:this.fontSize;let e=this.fontFamily;Array.isArray(this.fontFamily)||(e=this.fontFamily.split(","));for(let s=e.length-1;s>=0;s--){let r=e[s].trim();!/([\"\'])[^\'\"]+\1/.test(r)&&!Jf.includes(r)&&(r=`"${r}"`),e[s]=r}return`${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${t} ${e.join(",")}`}}function Da(i){return typeof i=="number"?Us(i):(typeof i=="string"&&i.startsWith("0x")&&(i=i.replace("0x","#")),i)}function ln(i){if(Array.isArray(i)){for(let t=0;tp)if(o!==""&&(a+=L.addLine(o),o="",n=0),L.canBreakWords(v,e.breakWords)){const y=L.wordWrapSplit(v);for(let x=0;xp&&(a+=L.addLine(o),f=!1,o="",n=0),o+=b,n+=C}}else{o.length>0&&(a+=L.addLine(o),o="",n=0);const y=g===_.length-1;a+=L.addLine(v,!y),f=!1,o="",n=0}else T+n>p&&(f=!1,a+=L.addLine(o),o="",n=0),(o.length>0||!L.isBreakingSpace(v)||f)&&(o+=v,n+=T)}return a+=L.addLine(o,!1),a}static addLine(t,e=!0){return t=L.trimRight(t),t=e?`${t} +`:t,t}static getFromCache(t,e,s,r){let n=s[t];if(typeof n!="number"){const o=t.length*e;n=r.measureText(t).width+o,s[t]=n}return n}static collapseSpaces(t){return t==="normal"||t==="pre-line"}static collapseNewlines(t){return t==="normal"}static trimRight(t){if(typeof t!="string")return"";for(let e=t.length-1;e>=0;e--){const s=t[e];if(!L.isBreakingSpace(s))break;t=t.slice(0,-1)}return t}static isNewline(t){return typeof t!="string"?!1:L._newlines.includes(t.charCodeAt(0))}static isBreakingSpace(t,e){return typeof t!="string"?!1:L._breakingSpaces.includes(t.charCodeAt(0))}static tokenize(t){const e=[];let s="";if(typeof t!="string")return e;for(let r=0;ra;--d){for(let _=0;_0&&f>p&&(_=(p+f)/2);const g=p+u,v=e.lineHeight*(d+1);let T=g;d+10}}function ip(i,t){var s;let e=!1;if((s=i==null?void 0:i._textures)!=null&&s.length){for(let r=0;r{!this.queue||this.prepareItems()},this.registerFindHook(ap),this.registerFindHook(hp),this.registerFindHook(ip),this.registerFindHook(sp),this.registerFindHook(rp),this.registerUploadHook(np),this.registerUploadHook(op)}upload(t){return new Promise(e=>{t&&this.add(t),this.queue.length?(this.completes.push(e),this.ticking||(this.ticking=!0,Q.system.addOnce(this.tick,this,ae.UTILITY))):e()})}tick(){setTimeout(this.delayedTick,0)}prepareItems(){for(this.limiter.beginFrame();this.queue.length&&this.limiter.allowedToUpload();){const t=this.queue[0];let e=!1;if(t&&!t._destroyed){for(let s=0,r=this.uploadHooks.length;s=0;e--)this.add(t.children[e]);return this}destroy(){this.ticking&&Q.system.remove(this.tick,this),this.ticking=!1,this.addHooks=null,this.uploadHooks=null,this.renderer=null,this.completes=null,this.queue=null,this.limiter=null,this.uploadHookHelper=null}}function Oa(i,t){return t instanceof j?(t._glTextures[i.CONTEXT_UID]||i.texture.bind(t),!0):!1}function lp(i,t){if(!(t instanceof ds))return!1;const{geometry:e}=t;t.finishPoly(),e.updateBatches();const{batches:s}=e;for(let r=0;r{this._callback=i,this._batchIndex=0,this._frameKeys.length<=gi.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(i){let t=i;const e=gi.BATCH_SIZE;for(;t-i{this._batchIndex*gi.BATCH_SIZE{s[r]=t}),Object.keys(t.textures).forEach(r=>{s[r]=t.textures[r]}),!e){const r=ft.dirname(i[0]);t.linkedSheets.forEach((n,o)=>{const a=Ua([`${r}/${t.data.meta.related_multi_packs[o]}`],n,!0);Object.assign(s,a)})}return s}const Ga={extension:M.Asset,cache:{test:i=>i instanceof _s,getCacheableAssets:(i,t)=>Ua(i,t,!1)},resolver:{test:i=>{const e=i.split("?")[0].split("."),s=e.pop(),r=e.pop();return s==="json"&&dp.includes(r)},parse:i=>{var e,s;const t=i.split(".");return{resolution:parseFloat((s=(e=R.RETINA_PREFIX.exec(i))==null?void 0:e[1])!=null?s:"1"),format:t[t.length-2],src:i}}},loader:{extension:{type:M.LoadParser,priority:kt.Normal},async testParse(i,t){return ft.extname(t.src).includes(".json")&&!!i.frames},async parse(i,t,e){var l,c;let s=ft.dirname(t.src);s&&s.lastIndexOf("/")!==s.length-1&&(s+="/");const r=s+i.meta.image,o=(await e.load([r]))[r],a=new _s(o.baseTexture,i,t.src);await a.parse();const h=(l=i==null?void 0:i.meta)==null?void 0:l.related_multi_packs;if(Array.isArray(h)){const u=[];for(const f of h){if(typeof f!="string")continue;const p=s+f;(c=t.data)!=null&&c.ignoreMultiPack||u.push(e.load({src:p,data:{ignoreMultiPack:!0}}))}const d=await Promise.all(u);a.linkedSheets=d,d.forEach(f=>{f.linkedSheets=[a].concat(a.linkedSheets.filter(p=>p!==f))})}return a},unload(i){i.destroy(!0)}}};U.add(Ga);class gs extends le{constructor(t,e=!0){super(t[0]instanceof B?t[0]:t[0].texture),this._textures=null,this._durations=null,this._autoUpdate=e,this._isConnectedToTicker=!1,this.animationSpeed=1,this.loop=!0,this.updateAnchor=!1,this.onComplete=null,this.onFrameChange=null,this.onLoop=null,this._currentTime=0,this._playing=!1,this._previousFrame=null,this.textures=t}stop(){!this._playing||(this._playing=!1,this._autoUpdate&&this._isConnectedToTicker&&(Q.shared.remove(this.update,this),this._isConnectedToTicker=!1))}play(){this._playing||(this._playing=!0,this._autoUpdate&&!this._isConnectedToTicker&&(Q.shared.add(this.update,this,ae.HIGH),this._isConnectedToTicker=!0))}gotoAndStop(t){this.stop(),this.currentFrame=t}gotoAndPlay(t){this.currentFrame=t,this.play()}update(t){if(!this._playing)return;const e=this.animationSpeed*t,s=this.currentFrame;if(this._durations!==null){let r=this._currentTime%1*this._durations[this.currentFrame];for(r+=e/60*1e3;r<0;)this._currentTime--,r+=this._durations[this.currentFrame];const n=Math.sign(this.animationSpeed*t);for(this._currentTime=Math.floor(this._currentTime);r>=this._durations[this.currentFrame];)r-=this._durations[this.currentFrame]*n,this._currentTime+=n;this._currentTime+=r/this._durations[this.currentFrame]}else this._currentTime+=e;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()):s!==this.currentFrame&&(this.loop&&this.onLoop&&(this.animationSpeed>0&&this.currentFrames&&this.onLoop()),this.updateTexture())}updateTexture(){const t=this.currentFrame;this._previousFrame!==t&&(this._previousFrame=t,this._texture=this._textures[t],this._textureID=-1,this._textureTrimmedID=-1,this._cachedTint=16777215,this.uvs=this._texture._uvs.uvsFloat32,this.updateAnchor&&this._anchor.copyFrom(this._texture.defaultAnchor),this.onFrameChange&&this.onFrameChange(this.currentFrame))}destroy(t){this.stop(),super.destroy(t),this.onComplete=null,this.onFrameChange=null,this.onLoop=null}static fromFrames(t){const e=[];for(let s=0;sthis.totalFrames-1)throw new Error(`[AnimatedSprite]: Invalid frame index value ${t}, expected to be between 0 and totalFrames ${this.totalFrames}.`);const e=this.currentFrame;this._currentTime=t,e!==this.currentFrame&&this.updateTexture()}get playing(){return this._playing}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,!this._autoUpdate&&this._isConnectedToTicker?(Q.shared.remove(this.update,this),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._playing&&(Q.shared.add(this.update,this),this._isConnectedToTicker=!0))}}const yi=new W;class dn extends le{constructor(t,e=100,s=100){super(t),this.tileTransform=new ze,this._width=e,this._height=s,this.uvMatrix=this.texture.uvMatrix||new Yi(t),this.pluginName="tilingSprite",this.uvRespectAnchor=!1}get clampMargin(){return this.uvMatrix.clampMargin}set clampMargin(t){this.uvMatrix.clampMargin=t,this.uvMatrix.update(!0)}get tileScale(){return this.tileTransform.scale}set tileScale(t){this.tileTransform.scale.copyFrom(t)}get tilePosition(){return this.tileTransform.position}set tilePosition(t){this.tileTransform.position.copyFrom(t)}_onTextureUpdate(){this.uvMatrix&&(this.uvMatrix.texture=this._texture),this._cachedTint=16777215}_render(t){const e=this._texture;!e||!e.valid||(this.tileTransform.updateLocalTransform(),this.uvMatrix.update(),t.batch.setObjectRenderer(t.plugins[this.pluginName]),t.plugins[this.pluginName].render(this))}_calculateBounds(){const t=this._width*-this._anchor._x,e=this._height*-this._anchor._y,s=this._width*(1-this._anchor._x),r=this._height*(1-this._anchor._y);this._bounds.addFrame(this.transform,t,e,s,r)}getLocalBounds(t){return this.children.length===0?(this._bounds.minX=this._width*-this._anchor._x,this._bounds.minY=this._height*-this._anchor._y,this._bounds.maxX=this._width*(1-this._anchor._x),this._bounds.maxY=this._height*(1-this._anchor._y),t||(this._localBoundsRect||(this._localBoundsRect=new z),t=this._localBoundsRect),this._bounds.getRectangle(t)):super.getLocalBounds.call(this,t)}containsPoint(t){this.worldTransform.applyInverse(t,yi);const e=this._width,s=this._height,r=-e*this.anchor._x;if(yi.x>=r&&yi.x=n&&yi.y1?Gt.from(mp,_p,e):Gt.from(ka,pp,e)}render(t){const e=this.renderer,s=this.quad;let r=s.vertices;r[0]=r[6]=t._width*-t.anchor.x,r[1]=r[3]=t._height*-t.anchor.y,r[2]=r[4]=t._width*(1-t.anchor.x),r[5]=r[7]=t._height*(1-t.anchor.y);const n=t.uvRespectAnchor?t.anchor.x:0,o=t.uvRespectAnchor?t.anchor.y:0;r=s.uvs,r[0]=r[6]=-n,r[1]=r[3]=-o,r[2]=r[4]=1-n,r[5]=r[7]=1-o,s.invalidate();const a=t._texture,h=a.baseTexture,l=h.alphaMode>0,c=t.tileTransform.localTransform,u=t.uvMatrix;let d=h.isPowerOfTwo&&a.frame.width===h.width&&a.frame.height===h.height;d&&(h._glTextures[e.CONTEXT_UID]?d=h.wrapMode!==zt.CLAMP:h.wrapMode===zt.CLAMP&&(h.wrapMode=zt.REPEAT));const f=d?this.simpleShader:this.shader,p=a.width,_=a.height,g=t._width,v=t._height;ys.set(c.a*p/g,c.b*p/v,c.c*_/g,c.d*_/v,c.tx/g,c.ty/v),ys.invert(),d?ys.prepend(u.mapCoord):(f.uniforms.uMapCoord=u.mapCoord.toArray(!0),f.uniforms.uClampFrame=u.uClampFrame,f.uniforms.uClampOffset=u.uClampOffset),f.uniforms.uTransform=ys.toArray(!0),f.uniforms.uColor=Hs(t.tint,t.worldAlpha,f.uniforms.uColor,l),f.uniforms.translationMatrix=t.transform.worldTransform.toArray(!0),f.uniforms.uSampler=a,e.shader.bind(f),e.geometry.bind(s),this.state.blendMode=ks(t.blendMode,l),e.state.set(this.state),e.geometry.draw(this.renderer.gl.TRIANGLES,6,0)}}fn.extension={name:"tilingSprite",type:M.RendererPlugin},U.add(fn);class vi{constructor(){this.info=[],this.common=[],this.page=[],this.char=[],this.kerning=[],this.distanceField=[]}}class xi{static test(t){return typeof t=="string"&&t.startsWith("info face=")}static parse(t){const e=t.match(/^[a-z]+\s+.+$/gm),s={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(const n in e){const o=e[n].match(/^[a-z]+/gm)[0],a=e[n].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),h={};for(const l in a){const c=a[l].split("="),u=c[0],d=c[1].replace(/"/gm,""),f=parseFloat(d),p=isNaN(f)?d:f;h[u]=p}s[o].push(h)}const r=new vi;return s.info.forEach(n=>r.info.push({face:n.face,size:parseInt(n.size,10)})),s.common.forEach(n=>r.common.push({lineHeight:parseInt(n.lineHeight,10)})),s.page.forEach(n=>r.page.push({id:parseInt(n.id,10),file:n.file})),s.char.forEach(n=>r.char.push({id:parseInt(n.id,10),page:parseInt(n.page,10),x:parseInt(n.x,10),y:parseInt(n.y,10),width:parseInt(n.width,10),height:parseInt(n.height,10),xoffset:parseInt(n.xoffset,10),yoffset:parseInt(n.yoffset,10),xadvance:parseInt(n.xadvance,10)})),s.kerning.forEach(n=>r.kerning.push({first:parseInt(n.first,10),second:parseInt(n.second,10),amount:parseInt(n.amount,10)})),s.distanceField.forEach(n=>r.distanceField.push({distanceRange:parseInt(n.distanceRange,10),fieldType:n.fieldType})),r}}class vs{static test(t){return t instanceof XMLDocument&&t.getElementsByTagName("page").length&&t.getElementsByTagName("info")[0].getAttribute("face")!==null}static parse(t){const e=new vi,s=t.getElementsByTagName("info"),r=t.getElementsByTagName("common"),n=t.getElementsByTagName("page"),o=t.getElementsByTagName("char"),a=t.getElementsByTagName("kerning"),h=t.getElementsByTagName("distanceField");for(let l=0;l")){const e=new globalThis.DOMParser().parseFromString(t,"text/xml");return vs.test(e)}return!1}static parse(t){const e=new globalThis.DOMParser().parseFromString(t,"text/xml");return vs.parse(e)}}const pn=[xi,vs,xs];function Ha(i){for(let t=0;t=a-P*n){if(p===0)throw new Error(`[BitmapFont] textureHeight ${a}px is too small (fontFamily: '${c.fontFamily}', fontSize: ${c.fontSize}px, char: '${S}')`);--C,_=null,g=null,v=null,p=0,f=0,T=0;continue}if(T=Math.max(P+O.fontProperties.descent,T),N*n+f>=u){if(f===0)throw new Error(`[BitmapFont] textureWidth ${o}px is too small (fontFamily: '${c.fontFamily}', fontSize: ${c.fontSize}px, char: '${S}')`);--C,p+=T*n,p=Math.ceil(p),f=0,T=0;continue}yp(_,g,O,f,p,n,c);const w=Ts(O.text);d.char.push({id:w,page:x.length-1,x:f/n,y:p/n,width:N,height:P,xoffset:0,yoffset:0,xadvance:Math.ceil(H-(c.dropShadow?c.dropShadowDistance:0)-(c.stroke?c.strokeThickness:0))}),f+=(N+2*r)*n,f=Math.ceil(f)}for(let C=0,S=l.length;C 0.99) {\r + alpha = 1.0;\r + }\r +\r + // NPM Textures, NPM outputs\r + gl_FragColor = vec4(uColor.rgb, uColor.a * alpha);\r +\r +}\r +`,Tp=`// Mesh material default fragment\r +attribute vec2 aVertexPosition;\r +attribute vec2 aTextureCoord;\r +\r +uniform mat3 projectionMatrix;\r +uniform mat3 translationMatrix;\r +uniform mat3 uTextureMatrix;\r +\r +varying vec2 vTextureCoord;\r +\r +void main(void)\r +{\r + gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\r +\r + vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\r +}\r +`;const Va=[],za=[],Wa=[],ja=class extends At{constructor(i,t={}){super(),this._tint=16777215;const{align:e,tint:s,maxWidth:r,letterSpacing:n,fontName:o,fontSize:a}=Object.assign({},ja.styleDefaults,t);if(!vt.available[o])throw new Error(`Missing BitmapFont "${o}"`);this._activePagesMeshData=[],this._textWidth=0,this._textHeight=0,this._align=e,this._tint=s,this._font=void 0,this._fontName=o,this._fontSize=a,this.text=i,this._maxWidth=r,this._maxLineHeight=0,this._letterSpacing=n,this._anchor=new Jt(()=>{this.dirty=!0},this,0,0),this._roundPixels=R.ROUND_PIXELS,this.dirty=!0,this._resolution=R.RESOLUTION,this._autoResolution=!0,this._textureCache={}}updateText(){var H;const i=vt.available[this._fontName],t=this.fontSize,e=t/i.size,s=new W,r=[],n=[],o=[],a=this._text.replace(/(?:\r\n|\r)/g,` +`)||" ",h=Xa(a),l=this._maxWidth*i.size/t,c=i.distanceFieldType==="none"?Va:za;let u=null,d=0,f=0,p=0,_=-1,g=0,v=0,T=0,y=0;for(let P=0;P0&&s.x>l&&(++v,xe(r,1+_-v,1+P-_),P=_,_=-1,n.push(g),o.push(r.length>0?r[r.length-1].prevSpaces:0),f=Math.max(f,g),p++,s.x=0,s.y+=i.lineHeight,u=null,y=0)}const x=h[h.length-1];x!=="\r"&&x!==` +`&&(/(?:\s)/.test(x)&&(d=g),n.push(d),f=Math.max(f,d),o.push(-1));const b=[];for(let P=0;P<=p;P++){let N=0;this._align==="right"?N=f-n[P]:this._align==="center"?N=(f-n[P])/2:this._align==="justify"&&(N=o[P]<0?0:(f-n[P])/o[P]),b.push(N)}const D=r.length,C={},S=[],O=this._activePagesMeshData;c.push(...O);for(let P=0;P6*w)||N.vertices.lengtht[r.mesh.texture.baseTexture.uid]).forEach(r=>{r.mesh.texture=B.EMPTY});for(const r in t)t[r].destroy(),delete t[r];this._font=null,this._textureCache=null,super.destroy(i)}};let Ya=ja;Ya.styleDefaults={align:"left",tint:16777215,maxWidth:0,letterSpacing:0};const Ep=[".xml",".fnt"],$a={extension:{type:M.LoadParser,priority:kt.Normal},test(i){return Ep.includes(ft.extname(i))},async testParse(i){return xi.test(i)||xs.test(i)},async parse(i,t,e){const s=xi.test(i)?xi.parse(i):xs.parse(i),{src:r}=t,{page:n}=s,o=[];for(let l=0;la[l]);return vt.install(s,h,!0)},async load(i,t){return(await R.ADAPTER.fetch(i)).text()},unload(i){i.destroy()}};U.add($a);const bp={AlphaFilter:Dd,BlurFilter:Gd,BlurFilterPass:Or,ColorMatrixFilter:Ur,DisplacementFilter:Vd,FXAAFilter:jd,NoiseFilter:$d};return m.ALPHA_MODES=Rt,m.AbstractMultiResource=Ys,m.AccessibilityManager=Hr,m.AnimatedSprite=gs,m.Application=Vr,m.ArrayResource=to,m.Assets=hi,m.AssetsClass=Wo,m.Attribute=Je,m.BLEND_MODES=k,m.BUFFER_BITS=xt,m.BUFFER_TYPE=Lt,m.BackgroundSystem=Ar,m.BaseImageResource=ee,m.BasePrepare=La,m.BaseRenderTexture=Zs,m.BaseTexture=j,m.BatchDrawCall=Zi,m.BatchGeometry=Dr,m.BatchRenderer=si,m.BatchShaderGenerator=No,m.BatchSystem=sr,m.BatchTextureArray=Qi,m.BitmapFont=vt,m.BitmapFontData=vi,m.BitmapText=Ya,m.BlobResource=oa,m.Bounds=ri,m.BrowserAdapter=yn,m.Buffer=nt,m.BufferResource=Fe,m.BufferSystem=Fr,m.CLEAR_MODES=Nt,m.COLOR_MASK_BITS=gn,m.Cache=Ue,m.CanvasResource=eo,m.Circle=Ai,m.CompressedTextureResource=ce,m.Container=At,m.ContextSystem=rr,m.CountLimiter=Na,m.CubeResource=$s,m.DEG_TO_RAD=Bn,m.DRAW_MODES=Dt,m.DisplayObject=it,m.ENV=J,m.Ellipse=Ri,m.EventBoundary=Go,m.EventSystem=kr,m.ExtensionType=M,m.Extract=Qr,m.FORMATS=I,m.FORMATS_TO_COMPONENTS=da,m.FederatedDisplayObject=ko,m.FederatedEvent=Oe,m.FederatedMouseEvent=oi,m.FederatedPointerEvent=Bt,m.FederatedWheelEvent=ts,m.FillStyle=ui,m.Filter=Mt,m.FilterState=no,m.FilterSystem=ir,m.Framebuffer=Hi,m.FramebufferSystem=nr,m.GC_MODES=bi,m.GLFramebuffer=ao,m.GLProgram=Io,m.GLTexture=Ki,m.GRAPHICS_CURVES=ke,m.GenerateTextureSystem=Sr,m.Geometry=se,m.GeometrySystem=ar,m.Graphics=ds,m.GraphicsData=pi,m.GraphicsGeometry=rn,m.IGLUniformData=dd,m.INSTALLED=Ui,m.INTERNAL_FORMATS=Et,m.INTERNAL_FORMAT_TO_BYTES_PER_PIXEL=ci,m.ImageBitmapResource=Ee,m.ImageResource=qs,m.LINE_CAP=ue,m.LINE_JOIN=ne,m.LineStyle=cs,m.LoaderParserPriority=kt,m.MASK_TYPES=ht,m.MIPMAP_MODES=Ft,m.MSAA_QUALITY=at,m.MaskData=ho,m.MaskSystem=mr,m.Matrix=tt,m.Mesh=Ce,m.MeshBatchUvs=Aa,m.MeshGeometry=mi,m.MeshMaterial=Xe,m.MultisampleSystem=Nr,m.NineSlicePlane=qf,m.ObjectRenderer=ti,m.ObjectRendererSystem=Lr,m.ObservablePoint=Jt,m.PI_2=Ve,m.PRECISION=wt,m.ParticleContainer=Kf,m.ParticleRenderer=an,m.PlaneGeometry=Ia,m.PluginSystem=Cr,m.Point=W,m.Polygon=fe,m.Prepare=un,m.Program=jt,m.ProjectionSystem=yr,m.Quad=ro,m.QuadUv=tr,m.RAD_TO_DEG=Mn,m.RENDERER_TYPE=_t,m.Rectangle=z,m.RenderTexture=ie,m.RenderTexturePool=Js,m.RenderTextureSystem=vr,m.Renderer=Se,m.ResizePlugin=zr,m.Resource=De,m.RopeGeometry=Pa,m.RoundedRectangle=Ci,m.Runner=St,m.SAMPLER_TYPES=Ei,m.SCALE_MODES=Vt,m.SHAPES=dt,m.SVGResource=Ne,m.ScissorSystem=_r,m.Shader=Gt,m.ShaderSystem=xr,m.SimpleMesh=$f,m.SimplePlane=Ma,m.SimpleRope=Yf,m.Sprite=le,m.SpriteMaskFilter=To,m.Spritesheet=_s,m.StartupSystem=Ir,m.State=Yt,m.StateSystem=Er,m.StencilSystem=gr,m.SystemManager=Mo,m.TARGETS=de,m.TEXT_GRADIENT=_i,m.TYPES=G,m.TYPES_TO_BYTES_PER_COMPONENT=Kr,m.TYPES_TO_BYTES_PER_PIXEL=fa,m.TemporaryDisplayObject=Lo,m.Text=ms,m.TextFormat=xi,m.TextMetrics=L,m.TextStyle=oe,m.Texture=B,m.TextureGCSystem=br,m.TextureMatrix=Yi,m.TextureSystem=wr,m.TextureUvs=Qs,m.Ticker=Q,m.TickerPlugin=Rs,m.TilingSprite=dn,m.TilingSpriteRenderer=fn,m.TimeLimiter=up,m.Transform=ze,m.TransformFeedback=Id,m.TransformFeedbackSystem=Pr,m.UPDATE_PRIORITY=ae,m.UniformGroup=Pt,m.VERSION=Md,m.VideoResource=ki,m.ViewSystem=Rr,m.ViewableBuffer=Ji,m.WRAP_MODES=zt,m.XMLFormat=vs,m.XMLStringFormat=xs,m.accessibleTarget=Uo,m.autoDetectFormat=Ha,m.autoDetectRenderer=Do,m.autoDetectResource=js,m.cacheTextureArray=Yo,m.checkExtension=is,m.checkMaxIfStatementsInShader=vo,m.convertToList=$t,m.createStringVariations=zo,m.createTexture=li,m.createUBOElements=Ao,m.defaultFilterVertex=Mr,m.defaultVertex=Fo,m.detectAvif=ia,m.detectCompressedTextures=ha,m.detectDefaults=na,m.detectWebp=sa,m.extensions=U,m.filters=bp,m.generateProgram=Po,m.generateUniformBufferSync=Co,m.getFontFamilyName=Ko,m.getTestContext=po,m.getUBOData=Ro,m.graphicsUtils=zf,m.groupD8=et,m.isMobile=Ot,m.isSingleItem=ai,m.loadBitmapFont=$a,m.loadDDS=ma,m.loadImageBitmap=ta,m.loadJson=$o,m.loadKTX=_a,m.loadSVG=yf,m.loadTextures=ss,m.loadTxt=qo,m.loadWebFont=Zo,m.parseDDS=ca,m.parseKTX=pa,m.resolveCompressedTextureUrl=ga,m.resolveTextureUrl=ea,m.settings=R,m.spritesheetAsset=Ga,m.uniformParsers=be,m.utils=Uu,Object.defineProperty(m,"__esModule",{value:!0}),m}({}); +//# sourceMappingURL=pixi.min.js.map diff --git a/PongGame/wwwroot/lib/pixi/dist/pixi.min.js.map b/PongGame/wwwroot/lib/pixi/dist/pixi.min.js.map new file mode 100644 index 0000000..d905141 --- /dev/null +++ b/PongGame/wwwroot/lib/pixi/dist/pixi.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pixi.min.js","sources":["../../../packages/constants/lib/index.mjs","../../../packages/settings/lib/adapter.mjs","../../../packages/settings/lib/node_modules/ismobilejs/esm/isMobile.mjs","../../../packages/settings/lib/utils/isMobile.mjs","../../../packages/settings/lib/utils/canUploadSameBuffer.mjs","../../../packages/settings/lib/utils/maxRecommendedTextures.mjs","../../../packages/settings/lib/settings.mjs","../../../packages/core/lib/settings.mjs","../../../packages/extensions/lib/index.mjs","../../../packages/math/lib/const.mjs","../../../packages/math/lib/Point.mjs","../../../packages/math/lib/shapes/Rectangle.mjs","../../../packages/math/lib/shapes/Circle.mjs","../../../packages/math/lib/shapes/Ellipse.mjs","../../../packages/math/lib/shapes/Polygon.mjs","../../../packages/math/lib/shapes/RoundedRectangle.mjs","../../../packages/math/lib/ObservablePoint.mjs","../../../packages/math/lib/Matrix.mjs","../../../packages/math/lib/groupD8.mjs","../../../packages/math/lib/Transform.mjs","../../../packages/runner/lib/Runner.mjs","../../../packages/ticker/lib/settings.mjs","../../../packages/ticker/lib/const.mjs","../../../packages/ticker/lib/TickerListener.mjs","../../../packages/ticker/lib/Ticker.mjs","../../../packages/ticker/lib/TickerPlugin.mjs","../../../node_modules/eventemitter3/index.js","../../../node_modules/earcut/src/earcut.js","../../../node_modules/url/node_modules/punycode/punycode.js","../../../node_modules/url/util.js","../../../node_modules/querystring/decode.js","../../../node_modules/querystring/encode.js","../../../node_modules/querystring/index.js","../../../node_modules/url/url.js","../../../packages/utils/lib/url.mjs","../../../packages/utils/lib/path.mjs","../../../packages/utils/lib/settings.mjs","../../../packages/utils/lib/browser/hello.mjs","../../../packages/utils/lib/browser/isWebGLSupported.mjs","../../../packages/utils/lib/node_modules/css-color-names/css-color-names.mjs","../../../packages/utils/lib/color/hex.mjs","../../../packages/utils/lib/color/premultiply.mjs","../../../packages/utils/lib/data/createIndicesForQuads.mjs","../../../packages/utils/lib/data/getBufferType.mjs","../../../packages/utils/lib/data/interleaveTypedArrays.mjs","../../../packages/utils/lib/data/pow2.mjs","../../../packages/utils/lib/data/removeItems.mjs","../../../packages/utils/lib/data/sign.mjs","../../../packages/utils/lib/data/uid.mjs","../../../packages/utils/lib/logging/deprecation.mjs","../../../packages/utils/lib/media/caches.mjs","../../../packages/utils/lib/media/CanvasRenderTarget.mjs","../../../packages/utils/lib/media/trimCanvas.mjs","../../../packages/utils/lib/const.mjs","../../../packages/utils/lib/network/decomposeDataUri.mjs","../../../packages/utils/lib/network/determineCrossOrigin.mjs","../../../packages/utils/lib/network/getResolutionOfUrl.mjs","../../../packages/core/lib/textures/resources/autoDetectResource.mjs","../../../packages/core/lib/textures/resources/Resource.mjs","../../../packages/core/lib/textures/resources/BufferResource.mjs","../../../packages/core/lib/textures/BaseTexture.mjs","../../../packages/core/lib/textures/resources/AbstractMultiResource.mjs","../../../packages/core/lib/textures/resources/ArrayResource.mjs","../../../packages/core/lib/textures/resources/BaseImageResource.mjs","../../../packages/core/lib/textures/resources/CanvasResource.mjs","../../../packages/core/lib/textures/resources/CubeResource.mjs","../../../packages/core/lib/textures/resources/ImageResource.mjs","../../../packages/core/lib/textures/resources/SVGResource.mjs","../../../packages/core/lib/textures/resources/VideoResource.mjs","../../../packages/core/lib/textures/resources/ImageBitmapResource.mjs","../../../packages/core/lib/textures/resources/index.mjs","../../../packages/core/lib/textures/resources/DepthResource.mjs","../../../packages/core/lib/framebuffer/Framebuffer.mjs","../../../packages/core/lib/renderTexture/BaseRenderTexture.mjs","../../../packages/core/lib/textures/TextureUvs.mjs","../../../packages/core/lib/textures/Texture.mjs","../../../packages/core/lib/renderTexture/RenderTexture.mjs","../../../packages/core/lib/renderTexture/RenderTexturePool.mjs","../../../packages/core/lib/geometry/Attribute.mjs","../../../packages/core/lib/geometry/Buffer.mjs","../../../packages/core/lib/geometry/utils/interleaveTypedArrays.mjs","../../../packages/core/lib/geometry/Geometry.mjs","../../../packages/core/lib/utils/Quad.mjs","../../../packages/core/lib/utils/QuadUv.mjs","../../../packages/core/lib/shader/UniformGroup.mjs","../../../packages/core/lib/filters/FilterState.mjs","../../../packages/core/lib/filters/FilterSystem.mjs","../../../packages/core/lib/batch/ObjectRenderer.mjs","../../../packages/core/lib/batch/BatchSystem.mjs","../../../packages/core/lib/context/ContextSystem.mjs","../../../packages/core/lib/framebuffer/GLFramebuffer.mjs","../../../packages/core/lib/framebuffer/FramebufferSystem.mjs","../../../packages/core/lib/geometry/GeometrySystem.mjs","../../../packages/core/lib/mask/MaskData.mjs","../../../packages/core/lib/shader/utils/compileShader.mjs","../../../packages/core/lib/shader/utils/logProgramError.mjs","../../../packages/core/lib/shader/utils/defaultValue.mjs","../../../packages/core/lib/shader/utils/getTestContext.mjs","../../../packages/core/lib/shader/utils/getMaxFragmentPrecision.mjs","../../../packages/core/lib/shader/utils/setPrecision.mjs","../../../packages/core/lib/shader/utils/mapSize.mjs","../../../packages/core/lib/shader/utils/mapType.mjs","../../../packages/core/lib/shader/utils/uniformParsers.mjs","../../../packages/core/lib/shader/utils/generateUniformsSync.mjs","../../../packages/core/lib/shader/utils/checkMaxIfStatementsInShader.mjs","../../../packages/core/lib/shader/utils/unsafeEvalSupported.mjs","../../../packages/core/lib/shader/defaultProgram.mjs","../../../packages/core/lib/shader/defaultProgram2.mjs","../../../packages/core/lib/shader/Program.mjs","../../../packages/core/lib/shader/Shader.mjs","../../../packages/core/lib/state/State.mjs","../../../packages/core/lib/filters/defaultFilter.mjs","../../../packages/core/lib/filters/defaultFilter2.mjs","../../../packages/core/lib/filters/Filter.mjs","../../../packages/core/lib/filters/spriteMask/spriteMaskFilter2.mjs","../../../packages/core/lib/filters/spriteMask/spriteMaskFilter3.mjs","../../../packages/core/lib/textures/TextureMatrix.mjs","../../../packages/core/lib/filters/spriteMask/SpriteMaskFilter.mjs","../../../packages/core/lib/mask/MaskSystem.mjs","../../../packages/core/lib/mask/AbstractMaskSystem.mjs","../../../packages/core/lib/mask/ScissorSystem.mjs","../../../packages/core/lib/mask/StencilSystem.mjs","../../../packages/core/lib/projection/ProjectionSystem.mjs","../../../packages/core/lib/renderTexture/RenderTextureSystem.mjs","../../../packages/core/lib/shader/utils/generateUniformBufferSync.mjs","../../../packages/core/lib/shader/GLProgram.mjs","../../../packages/core/lib/shader/utils/getAttributeData.mjs","../../../packages/core/lib/shader/utils/getUniformData.mjs","../../../packages/core/lib/shader/utils/generateProgram.mjs","../../../packages/core/lib/shader/ShaderSystem.mjs","../../../packages/core/lib/state/utils/mapWebGLBlendModesToPixi.mjs","../../../packages/core/lib/state/StateSystem.mjs","../../../packages/core/lib/textures/TextureGCSystem.mjs","../../../packages/core/lib/textures/utils/mapTypeAndFormatToInternalFormat.mjs","../../../packages/core/lib/textures/GLTexture.mjs","../../../packages/core/lib/textures/TextureSystem.mjs","../../../packages/core/lib/renderTexture/GenerateTextureSystem.mjs","../../../packages/core/lib/background/BackgroundSystem.mjs","../../../packages/core/lib/view/ViewSystem.mjs","../../../packages/core/lib/plugin/PluginSystem.mjs","../../../packages/core/lib/system/SystemManager.mjs","../../../packages/core/lib/startup/StartupSystem.mjs","../../../packages/core/lib/transformFeedback/TransformFeedbackSystem.mjs","../../../packages/core/lib/autoDetectRenderer.mjs","../../../packages/core/lib/fragments/default.mjs","../../../packages/core/lib/fragments/defaultFilter.mjs","../../../packages/core/lib/fragments/index.mjs","../../../packages/core/lib/Renderer.mjs","../../../packages/core/lib/batch/BatchDrawCall.mjs","../../../packages/core/lib/batch/BatchTextureArray.mjs","../../../packages/core/lib/geometry/ViewableBuffer.mjs","../../../packages/core/lib/batch/BatchShaderGenerator.mjs","../../../packages/core/lib/batch/BatchGeometry.mjs","../../../packages/core/lib/batch/texture.mjs","../../../packages/core/lib/batch/texture2.mjs","../../../packages/core/lib/batch/BatchRenderer.mjs","../../../packages/core/lib/transformFeedback/TransformFeedback.mjs","../../../packages/core/lib/geometry/GLBuffer.mjs","../../../packages/core/lib/geometry/BufferSystem.mjs","../../../packages/core/lib/framebuffer/MultisampleSystem.mjs","../../../packages/core/lib/render/ObjectRendererSystem.mjs","../../../packages/core/lib/index.mjs","../../../packages/filter-alpha/lib/alpha.mjs","../../../packages/filter-alpha/lib/AlphaFilter.mjs","../../../packages/filter-blur/lib/generateBlurVertSource.mjs","../../../packages/filter-blur/lib/generateBlurFragSource.mjs","../../../packages/filter-blur/lib/BlurFilterPass.mjs","../../../packages/filter-blur/lib/BlurFilter.mjs","../../../packages/filter-color-matrix/lib/colorMatrix.mjs","../../../packages/filter-color-matrix/lib/ColorMatrixFilter.mjs","../../../packages/filter-displacement/lib/displacement.mjs","../../../packages/filter-displacement/lib/displacement2.mjs","../../../packages/filter-displacement/lib/DisplacementFilter.mjs","../../../packages/filter-fxaa/lib/fxaa.mjs","../../../packages/filter-fxaa/lib/fxaa2.mjs","../../../packages/filter-fxaa/lib/FXAAFilter.mjs","../../../packages/filter-noise/lib/noise.mjs","../../../packages/filter-noise/lib/NoiseFilter.mjs","../../../packages/display/lib/settings.mjs","../../../packages/display/lib/Bounds.mjs","../../../packages/display/lib/DisplayObject.mjs","../../../packages/display/lib/Container.mjs","../../../packages/sprite/lib/Sprite.mjs","../../../packages/mixin-cache-as-bitmap/lib/index.mjs","../../../packages/mixin-get-child-by-name/lib/index.mjs","../../../packages/mixin-get-global-position/lib/index.mjs","../../../packages/accessibility/lib/accessibleTarget.mjs","../../../packages/events/lib/FederatedEvent.mjs","../../../packages/events/lib/FederatedMouseEvent.mjs","../../../packages/events/lib/FederatedPointerEvent.mjs","../../../packages/events/lib/FederatedWheelEvent.mjs","../../../packages/events/lib/EventBoundary.mjs","../../../packages/events/lib/EventSystem.mjs","../../../packages/events/lib/FederatedEventTarget.mjs","../../../packages/accessibility/lib/AccessibilityManager.mjs","../../../packages/app/lib/Application.mjs","../../../packages/app/lib/ResizePlugin.mjs","../../../packages/assets/lib/BackgroundLoader.mjs","../../../packages/assets/lib/utils/convertToList.mjs","../../../packages/assets/lib/utils/createStringVariations.mjs","../../../packages/assets/lib/utils/isSingleItem.mjs","../../../packages/assets/lib/cache/Cache.mjs","../../../packages/assets/lib/loader/Loader.mjs","../../../packages/assets/lib/resolver/Resolver.mjs","../../../packages/assets/lib/Assets.mjs","../../../packages/assets/lib/AssetExtension.mjs","../../../packages/assets/lib/cache/parsers/cacheTextureArray.mjs","../../../packages/assets/lib/loader/parsers/LoaderParser.mjs","../../../packages/assets/lib/loader/parsers/loadJson.mjs","../../../packages/assets/lib/loader/parsers/loadTxt.mjs","../../../packages/assets/lib/loader/parsers/loadWebFont.mjs","../../../packages/assets/lib/loader/parsers/WorkerManager.mjs","../../../packages/assets/lib/loader/parsers/textures/utils/checkExtension.mjs","../../../packages/assets/lib/loader/parsers/textures/utils/createTexture.mjs","../../../packages/assets/lib/loader/parsers/textures/loadTexture.mjs","../../../packages/assets/lib/loader/parsers/textures/loadSVG.mjs","../../../packages/assets/lib/resolver/parsers/resolveTextureUrl.mjs","../../../packages/assets/lib/detections/parsers/detectAvif.mjs","../../../packages/assets/lib/detections/parsers/detectWebp.mjs","../../../packages/assets/lib/detections/parsers/detectDefaults.mjs","../../../packages/compressed-textures/lib/const.mjs","../../../packages/compressed-textures/lib/resources/BlobResource.mjs","../../../packages/compressed-textures/lib/resources/CompressedTextureResource.mjs","../../../packages/compressed-textures/lib/loaders/detectCompressedTextures.mjs","../../../packages/compressed-textures/lib/parsers/parseDDS.mjs","../../../packages/compressed-textures/lib/parsers/parseKTX.mjs","../../../packages/compressed-textures/lib/loaders/loadDDS.mjs","../../../packages/compressed-textures/lib/loaders/loadKTX.mjs","../../../packages/compressed-textures/lib/loaders/resolveCompressedTextureUrl.mjs","../../../packages/extract/lib/Extract.mjs","../../../packages/graphics/lib/const.mjs","../../../packages/graphics/lib/styles/FillStyle.mjs","../../../packages/graphics/lib/utils/buildPoly.mjs","../../../packages/graphics/lib/utils/buildCircle.mjs","../../../packages/graphics/lib/utils/buildRectangle.mjs","../../../packages/graphics/lib/utils/buildRoundedRectangle.mjs","../../../packages/graphics/lib/utils/buildLine.mjs","../../../packages/graphics/lib/utils/ArcUtils.mjs","../../../packages/graphics/lib/utils/BezierUtils.mjs","../../../packages/graphics/lib/utils/QuadraticUtils.mjs","../../../packages/graphics/lib/utils/BatchPart.mjs","../../../packages/graphics/lib/utils/index.mjs","../../../packages/graphics/lib/GraphicsData.mjs","../../../packages/graphics/lib/GraphicsGeometry.mjs","../../../packages/graphics/lib/styles/LineStyle.mjs","../../../packages/graphics/lib/Graphics.mjs","../../../packages/graphics/lib/index.mjs","../../../packages/mesh/lib/MeshBatchUvs.mjs","../../../packages/mesh/lib/Mesh.mjs","../../../packages/mesh/lib/shader/mesh.mjs","../../../packages/mesh/lib/shader/mesh2.mjs","../../../packages/mesh/lib/MeshMaterial.mjs","../../../packages/mesh/lib/MeshGeometry.mjs","../../../packages/mesh-extras/lib/geometry/PlaneGeometry.mjs","../../../packages/mesh-extras/lib/geometry/RopeGeometry.mjs","../../../packages/mesh-extras/lib/SimpleRope.mjs","../../../packages/mesh-extras/lib/SimplePlane.mjs","../../../packages/mesh-extras/lib/SimpleMesh.mjs","../../../packages/mesh-extras/lib/NineSlicePlane.mjs","../../../packages/particle-container/lib/ParticleContainer.mjs","../../../packages/particle-container/lib/ParticleBuffer.mjs","../../../packages/particle-container/lib/particles.mjs","../../../packages/particle-container/lib/particles2.mjs","../../../packages/particle-container/lib/ParticleRenderer.mjs","../../../packages/prepare/lib/settings.mjs","../../../packages/text/lib/const.mjs","../../../packages/text/lib/TextStyle.mjs","../../../packages/text/lib/TextMetrics.mjs","../../../packages/text/lib/Text.mjs","../../../packages/prepare/lib/CountLimiter.mjs","../../../packages/prepare/lib/BasePrepare.mjs","../../../packages/prepare/lib/Prepare.mjs","../../../packages/prepare/lib/TimeLimiter.mjs","../../../packages/spritesheet/lib/Spritesheet.mjs","../../../packages/spritesheet/lib/spritesheetAsset.mjs","../../../packages/sprite-animated/lib/AnimatedSprite.mjs","../../../packages/sprite-tiling/lib/TilingSprite.mjs","../../../packages/sprite-tiling/lib/sprite-tiling-simple.mjs","../../../packages/sprite-tiling/lib/sprite-tiling-fallback.mjs","../../../packages/sprite-tiling/lib/sprite-tiling-fallback2.mjs","../../../packages/sprite-tiling/lib/sprite-tiling.mjs","../../../packages/sprite-tiling/lib/sprite-tiling2.mjs","../../../packages/sprite-tiling/lib/TilingSpriteRenderer.mjs","../../../packages/text-bitmap/lib/BitmapFontData.mjs","../../../packages/text-bitmap/lib/formats/TextFormat.mjs","../../../packages/text-bitmap/lib/formats/XMLFormat.mjs","../../../packages/text-bitmap/lib/formats/XMLStringFormat.mjs","../../../packages/text-bitmap/lib/formats/index.mjs","../../../packages/text-bitmap/lib/utils/generateFillStyle.mjs","../../../packages/text-bitmap/lib/utils/drawGlyph.mjs","../../../packages/text-bitmap/lib/utils/splitTextToCharacters.mjs","../../../packages/text-bitmap/lib/utils/resolveCharacters.mjs","../../../packages/text-bitmap/lib/utils/extractCharCode.mjs","../../../packages/text-bitmap/lib/BitmapFont.mjs","../../../packages/text-bitmap/lib/shader/msdf.mjs","../../../packages/text-bitmap/lib/shader/msdf2.mjs","../../../packages/text-bitmap/lib/BitmapText.mjs","../../../packages/text-bitmap/lib/loadBitmapFont.mjs","../src/index.ts"],"sourcesContent":["var ENV = /* @__PURE__ */ ((ENV2) => {\n ENV2[ENV2[\"WEBGL_LEGACY\"] = 0] = \"WEBGL_LEGACY\";\n ENV2[ENV2[\"WEBGL\"] = 1] = \"WEBGL\";\n ENV2[ENV2[\"WEBGL2\"] = 2] = \"WEBGL2\";\n return ENV2;\n})(ENV || {});\nvar RENDERER_TYPE = /* @__PURE__ */ ((RENDERER_TYPE2) => {\n RENDERER_TYPE2[RENDERER_TYPE2[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n RENDERER_TYPE2[RENDERER_TYPE2[\"WEBGL\"] = 1] = \"WEBGL\";\n RENDERER_TYPE2[RENDERER_TYPE2[\"CANVAS\"] = 2] = \"CANVAS\";\n return RENDERER_TYPE2;\n})(RENDERER_TYPE || {});\nvar BUFFER_BITS = /* @__PURE__ */ ((BUFFER_BITS2) => {\n BUFFER_BITS2[BUFFER_BITS2[\"COLOR\"] = 16384] = \"COLOR\";\n BUFFER_BITS2[BUFFER_BITS2[\"DEPTH\"] = 256] = \"DEPTH\";\n BUFFER_BITS2[BUFFER_BITS2[\"STENCIL\"] = 1024] = \"STENCIL\";\n return BUFFER_BITS2;\n})(BUFFER_BITS || {});\nvar BLEND_MODES = /* @__PURE__ */ ((BLEND_MODES2) => {\n BLEND_MODES2[BLEND_MODES2[\"NORMAL\"] = 0] = \"NORMAL\";\n BLEND_MODES2[BLEND_MODES2[\"ADD\"] = 1] = \"ADD\";\n BLEND_MODES2[BLEND_MODES2[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n BLEND_MODES2[BLEND_MODES2[\"SCREEN\"] = 3] = \"SCREEN\";\n BLEND_MODES2[BLEND_MODES2[\"OVERLAY\"] = 4] = \"OVERLAY\";\n BLEND_MODES2[BLEND_MODES2[\"DARKEN\"] = 5] = \"DARKEN\";\n BLEND_MODES2[BLEND_MODES2[\"LIGHTEN\"] = 6] = \"LIGHTEN\";\n BLEND_MODES2[BLEND_MODES2[\"COLOR_DODGE\"] = 7] = \"COLOR_DODGE\";\n BLEND_MODES2[BLEND_MODES2[\"COLOR_BURN\"] = 8] = \"COLOR_BURN\";\n BLEND_MODES2[BLEND_MODES2[\"HARD_LIGHT\"] = 9] = \"HARD_LIGHT\";\n BLEND_MODES2[BLEND_MODES2[\"SOFT_LIGHT\"] = 10] = \"SOFT_LIGHT\";\n BLEND_MODES2[BLEND_MODES2[\"DIFFERENCE\"] = 11] = \"DIFFERENCE\";\n BLEND_MODES2[BLEND_MODES2[\"EXCLUSION\"] = 12] = \"EXCLUSION\";\n BLEND_MODES2[BLEND_MODES2[\"HUE\"] = 13] = \"HUE\";\n BLEND_MODES2[BLEND_MODES2[\"SATURATION\"] = 14] = \"SATURATION\";\n BLEND_MODES2[BLEND_MODES2[\"COLOR\"] = 15] = \"COLOR\";\n BLEND_MODES2[BLEND_MODES2[\"LUMINOSITY\"] = 16] = \"LUMINOSITY\";\n BLEND_MODES2[BLEND_MODES2[\"NORMAL_NPM\"] = 17] = \"NORMAL_NPM\";\n BLEND_MODES2[BLEND_MODES2[\"ADD_NPM\"] = 18] = \"ADD_NPM\";\n BLEND_MODES2[BLEND_MODES2[\"SCREEN_NPM\"] = 19] = \"SCREEN_NPM\";\n BLEND_MODES2[BLEND_MODES2[\"NONE\"] = 20] = \"NONE\";\n BLEND_MODES2[BLEND_MODES2[\"SRC_OVER\"] = 0] = \"SRC_OVER\";\n BLEND_MODES2[BLEND_MODES2[\"SRC_IN\"] = 21] = \"SRC_IN\";\n BLEND_MODES2[BLEND_MODES2[\"SRC_OUT\"] = 22] = \"SRC_OUT\";\n BLEND_MODES2[BLEND_MODES2[\"SRC_ATOP\"] = 23] = \"SRC_ATOP\";\n BLEND_MODES2[BLEND_MODES2[\"DST_OVER\"] = 24] = \"DST_OVER\";\n BLEND_MODES2[BLEND_MODES2[\"DST_IN\"] = 25] = \"DST_IN\";\n BLEND_MODES2[BLEND_MODES2[\"DST_OUT\"] = 26] = \"DST_OUT\";\n BLEND_MODES2[BLEND_MODES2[\"DST_ATOP\"] = 27] = \"DST_ATOP\";\n BLEND_MODES2[BLEND_MODES2[\"ERASE\"] = 26] = \"ERASE\";\n BLEND_MODES2[BLEND_MODES2[\"SUBTRACT\"] = 28] = \"SUBTRACT\";\n BLEND_MODES2[BLEND_MODES2[\"XOR\"] = 29] = \"XOR\";\n return BLEND_MODES2;\n})(BLEND_MODES || {});\nvar DRAW_MODES = /* @__PURE__ */ ((DRAW_MODES2) => {\n DRAW_MODES2[DRAW_MODES2[\"POINTS\"] = 0] = \"POINTS\";\n DRAW_MODES2[DRAW_MODES2[\"LINES\"] = 1] = \"LINES\";\n DRAW_MODES2[DRAW_MODES2[\"LINE_LOOP\"] = 2] = \"LINE_LOOP\";\n DRAW_MODES2[DRAW_MODES2[\"LINE_STRIP\"] = 3] = \"LINE_STRIP\";\n DRAW_MODES2[DRAW_MODES2[\"TRIANGLES\"] = 4] = \"TRIANGLES\";\n DRAW_MODES2[DRAW_MODES2[\"TRIANGLE_STRIP\"] = 5] = \"TRIANGLE_STRIP\";\n DRAW_MODES2[DRAW_MODES2[\"TRIANGLE_FAN\"] = 6] = \"TRIANGLE_FAN\";\n return DRAW_MODES2;\n})(DRAW_MODES || {});\nvar FORMATS = /* @__PURE__ */ ((FORMATS2) => {\n FORMATS2[FORMATS2[\"RGBA\"] = 6408] = \"RGBA\";\n FORMATS2[FORMATS2[\"RGB\"] = 6407] = \"RGB\";\n FORMATS2[FORMATS2[\"RG\"] = 33319] = \"RG\";\n FORMATS2[FORMATS2[\"RED\"] = 6403] = \"RED\";\n FORMATS2[FORMATS2[\"RGBA_INTEGER\"] = 36249] = \"RGBA_INTEGER\";\n FORMATS2[FORMATS2[\"RGB_INTEGER\"] = 36248] = \"RGB_INTEGER\";\n FORMATS2[FORMATS2[\"RG_INTEGER\"] = 33320] = \"RG_INTEGER\";\n FORMATS2[FORMATS2[\"RED_INTEGER\"] = 36244] = \"RED_INTEGER\";\n FORMATS2[FORMATS2[\"ALPHA\"] = 6406] = \"ALPHA\";\n FORMATS2[FORMATS2[\"LUMINANCE\"] = 6409] = \"LUMINANCE\";\n FORMATS2[FORMATS2[\"LUMINANCE_ALPHA\"] = 6410] = \"LUMINANCE_ALPHA\";\n FORMATS2[FORMATS2[\"DEPTH_COMPONENT\"] = 6402] = \"DEPTH_COMPONENT\";\n FORMATS2[FORMATS2[\"DEPTH_STENCIL\"] = 34041] = \"DEPTH_STENCIL\";\n return FORMATS2;\n})(FORMATS || {});\nvar TARGETS = /* @__PURE__ */ ((TARGETS2) => {\n TARGETS2[TARGETS2[\"TEXTURE_2D\"] = 3553] = \"TEXTURE_2D\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP\"] = 34067] = \"TEXTURE_CUBE_MAP\";\n TARGETS2[TARGETS2[\"TEXTURE_2D_ARRAY\"] = 35866] = \"TEXTURE_2D_ARRAY\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_X\"] = 34069] = \"TEXTURE_CUBE_MAP_POSITIVE_X\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_X\"] = 34070] = \"TEXTURE_CUBE_MAP_NEGATIVE_X\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_Y\"] = 34071] = \"TEXTURE_CUBE_MAP_POSITIVE_Y\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_Y\"] = 34072] = \"TEXTURE_CUBE_MAP_NEGATIVE_Y\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_Z\"] = 34073] = \"TEXTURE_CUBE_MAP_POSITIVE_Z\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_Z\"] = 34074] = \"TEXTURE_CUBE_MAP_NEGATIVE_Z\";\n return TARGETS2;\n})(TARGETS || {});\nvar TYPES = /* @__PURE__ */ ((TYPES2) => {\n TYPES2[TYPES2[\"UNSIGNED_BYTE\"] = 5121] = \"UNSIGNED_BYTE\";\n TYPES2[TYPES2[\"UNSIGNED_SHORT\"] = 5123] = \"UNSIGNED_SHORT\";\n TYPES2[TYPES2[\"UNSIGNED_SHORT_5_6_5\"] = 33635] = \"UNSIGNED_SHORT_5_6_5\";\n TYPES2[TYPES2[\"UNSIGNED_SHORT_4_4_4_4\"] = 32819] = \"UNSIGNED_SHORT_4_4_4_4\";\n TYPES2[TYPES2[\"UNSIGNED_SHORT_5_5_5_1\"] = 32820] = \"UNSIGNED_SHORT_5_5_5_1\";\n TYPES2[TYPES2[\"UNSIGNED_INT\"] = 5125] = \"UNSIGNED_INT\";\n TYPES2[TYPES2[\"UNSIGNED_INT_10F_11F_11F_REV\"] = 35899] = \"UNSIGNED_INT_10F_11F_11F_REV\";\n TYPES2[TYPES2[\"UNSIGNED_INT_2_10_10_10_REV\"] = 33640] = \"UNSIGNED_INT_2_10_10_10_REV\";\n TYPES2[TYPES2[\"UNSIGNED_INT_24_8\"] = 34042] = \"UNSIGNED_INT_24_8\";\n TYPES2[TYPES2[\"UNSIGNED_INT_5_9_9_9_REV\"] = 35902] = \"UNSIGNED_INT_5_9_9_9_REV\";\n TYPES2[TYPES2[\"BYTE\"] = 5120] = \"BYTE\";\n TYPES2[TYPES2[\"SHORT\"] = 5122] = \"SHORT\";\n TYPES2[TYPES2[\"INT\"] = 5124] = \"INT\";\n TYPES2[TYPES2[\"FLOAT\"] = 5126] = \"FLOAT\";\n TYPES2[TYPES2[\"FLOAT_32_UNSIGNED_INT_24_8_REV\"] = 36269] = \"FLOAT_32_UNSIGNED_INT_24_8_REV\";\n TYPES2[TYPES2[\"HALF_FLOAT\"] = 36193] = \"HALF_FLOAT\";\n return TYPES2;\n})(TYPES || {});\nvar SAMPLER_TYPES = /* @__PURE__ */ ((SAMPLER_TYPES2) => {\n SAMPLER_TYPES2[SAMPLER_TYPES2[\"FLOAT\"] = 0] = \"FLOAT\";\n SAMPLER_TYPES2[SAMPLER_TYPES2[\"INT\"] = 1] = \"INT\";\n SAMPLER_TYPES2[SAMPLER_TYPES2[\"UINT\"] = 2] = \"UINT\";\n return SAMPLER_TYPES2;\n})(SAMPLER_TYPES || {});\nvar SCALE_MODES = /* @__PURE__ */ ((SCALE_MODES2) => {\n SCALE_MODES2[SCALE_MODES2[\"NEAREST\"] = 0] = \"NEAREST\";\n SCALE_MODES2[SCALE_MODES2[\"LINEAR\"] = 1] = \"LINEAR\";\n return SCALE_MODES2;\n})(SCALE_MODES || {});\nvar WRAP_MODES = /* @__PURE__ */ ((WRAP_MODES2) => {\n WRAP_MODES2[WRAP_MODES2[\"CLAMP\"] = 33071] = \"CLAMP\";\n WRAP_MODES2[WRAP_MODES2[\"REPEAT\"] = 10497] = \"REPEAT\";\n WRAP_MODES2[WRAP_MODES2[\"MIRRORED_REPEAT\"] = 33648] = \"MIRRORED_REPEAT\";\n return WRAP_MODES2;\n})(WRAP_MODES || {});\nvar MIPMAP_MODES = /* @__PURE__ */ ((MIPMAP_MODES2) => {\n MIPMAP_MODES2[MIPMAP_MODES2[\"OFF\"] = 0] = \"OFF\";\n MIPMAP_MODES2[MIPMAP_MODES2[\"POW2\"] = 1] = \"POW2\";\n MIPMAP_MODES2[MIPMAP_MODES2[\"ON\"] = 2] = \"ON\";\n MIPMAP_MODES2[MIPMAP_MODES2[\"ON_MANUAL\"] = 3] = \"ON_MANUAL\";\n return MIPMAP_MODES2;\n})(MIPMAP_MODES || {});\nvar ALPHA_MODES = /* @__PURE__ */ ((ALPHA_MODES2) => {\n ALPHA_MODES2[ALPHA_MODES2[\"NPM\"] = 0] = \"NPM\";\n ALPHA_MODES2[ALPHA_MODES2[\"UNPACK\"] = 1] = \"UNPACK\";\n ALPHA_MODES2[ALPHA_MODES2[\"PMA\"] = 2] = \"PMA\";\n ALPHA_MODES2[ALPHA_MODES2[\"NO_PREMULTIPLIED_ALPHA\"] = 0] = \"NO_PREMULTIPLIED_ALPHA\";\n ALPHA_MODES2[ALPHA_MODES2[\"PREMULTIPLY_ON_UPLOAD\"] = 1] = \"PREMULTIPLY_ON_UPLOAD\";\n ALPHA_MODES2[ALPHA_MODES2[\"PREMULTIPLIED_ALPHA\"] = 2] = \"PREMULTIPLIED_ALPHA\";\n return ALPHA_MODES2;\n})(ALPHA_MODES || {});\nvar CLEAR_MODES = /* @__PURE__ */ ((CLEAR_MODES2) => {\n CLEAR_MODES2[CLEAR_MODES2[\"NO\"] = 0] = \"NO\";\n CLEAR_MODES2[CLEAR_MODES2[\"YES\"] = 1] = \"YES\";\n CLEAR_MODES2[CLEAR_MODES2[\"AUTO\"] = 2] = \"AUTO\";\n CLEAR_MODES2[CLEAR_MODES2[\"BLEND\"] = 0] = \"BLEND\";\n CLEAR_MODES2[CLEAR_MODES2[\"CLEAR\"] = 1] = \"CLEAR\";\n CLEAR_MODES2[CLEAR_MODES2[\"BLIT\"] = 2] = \"BLIT\";\n return CLEAR_MODES2;\n})(CLEAR_MODES || {});\nvar GC_MODES = /* @__PURE__ */ ((GC_MODES2) => {\n GC_MODES2[GC_MODES2[\"AUTO\"] = 0] = \"AUTO\";\n GC_MODES2[GC_MODES2[\"MANUAL\"] = 1] = \"MANUAL\";\n return GC_MODES2;\n})(GC_MODES || {});\nvar PRECISION = /* @__PURE__ */ ((PRECISION2) => {\n PRECISION2[\"LOW\"] = \"lowp\";\n PRECISION2[\"MEDIUM\"] = \"mediump\";\n PRECISION2[\"HIGH\"] = \"highp\";\n return PRECISION2;\n})(PRECISION || {});\nvar MASK_TYPES = /* @__PURE__ */ ((MASK_TYPES2) => {\n MASK_TYPES2[MASK_TYPES2[\"NONE\"] = 0] = \"NONE\";\n MASK_TYPES2[MASK_TYPES2[\"SCISSOR\"] = 1] = \"SCISSOR\";\n MASK_TYPES2[MASK_TYPES2[\"STENCIL\"] = 2] = \"STENCIL\";\n MASK_TYPES2[MASK_TYPES2[\"SPRITE\"] = 3] = \"SPRITE\";\n MASK_TYPES2[MASK_TYPES2[\"COLOR\"] = 4] = \"COLOR\";\n return MASK_TYPES2;\n})(MASK_TYPES || {});\nvar COLOR_MASK_BITS = /* @__PURE__ */ ((COLOR_MASK_BITS2) => {\n COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"RED\"] = 1] = \"RED\";\n COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"GREEN\"] = 2] = \"GREEN\";\n COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"BLUE\"] = 4] = \"BLUE\";\n COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"ALPHA\"] = 8] = \"ALPHA\";\n return COLOR_MASK_BITS2;\n})(COLOR_MASK_BITS || {});\nvar MSAA_QUALITY = /* @__PURE__ */ ((MSAA_QUALITY2) => {\n MSAA_QUALITY2[MSAA_QUALITY2[\"NONE\"] = 0] = \"NONE\";\n MSAA_QUALITY2[MSAA_QUALITY2[\"LOW\"] = 2] = \"LOW\";\n MSAA_QUALITY2[MSAA_QUALITY2[\"MEDIUM\"] = 4] = \"MEDIUM\";\n MSAA_QUALITY2[MSAA_QUALITY2[\"HIGH\"] = 8] = \"HIGH\";\n return MSAA_QUALITY2;\n})(MSAA_QUALITY || {});\nvar BUFFER_TYPE = /* @__PURE__ */ ((BUFFER_TYPE2) => {\n BUFFER_TYPE2[BUFFER_TYPE2[\"ELEMENT_ARRAY_BUFFER\"] = 34963] = \"ELEMENT_ARRAY_BUFFER\";\n BUFFER_TYPE2[BUFFER_TYPE2[\"ARRAY_BUFFER\"] = 34962] = \"ARRAY_BUFFER\";\n BUFFER_TYPE2[BUFFER_TYPE2[\"UNIFORM_BUFFER\"] = 35345] = \"UNIFORM_BUFFER\";\n return BUFFER_TYPE2;\n})(BUFFER_TYPE || {});\n\nexport { ALPHA_MODES, BLEND_MODES, BUFFER_BITS, BUFFER_TYPE, CLEAR_MODES, COLOR_MASK_BITS, DRAW_MODES, ENV, FORMATS, GC_MODES, MASK_TYPES, MIPMAP_MODES, MSAA_QUALITY, PRECISION, RENDERER_TYPE, SAMPLER_TYPES, SCALE_MODES, TARGETS, TYPES, WRAP_MODES };\n//# sourceMappingURL=index.mjs.map\n","const BrowserAdapter = {\n createCanvas: (width, height) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n },\n getWebGLRenderingContext: () => WebGLRenderingContext,\n getNavigator: () => navigator,\n getBaseUrl: () => document.baseURI ?? window.location.href,\n getFontFaceSet: () => document.fonts,\n fetch: (url, options) => fetch(url, options)\n};\n\nexport { BrowserAdapter };\n//# sourceMappingURL=adapter.mjs.map\n","var appleIphone = /iPhone/i;\nvar appleIpod = /iPod/i;\nvar appleTablet = /iPad/i;\nvar appleUniversal = /\\biOS-universal(?:.+)Mac\\b/i;\nvar androidPhone = /\\bAndroid(?:.+)Mobile\\b/i;\nvar androidTablet = /Android/i;\nvar amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i;\nvar amazonTablet = /Silk/i;\nvar windowsPhone = /Windows Phone/i;\nvar windowsTablet = /\\bWindows(?:.+)ARM\\b/i;\nvar otherBlackBerry = /BlackBerry/i;\nvar otherBlackBerry10 = /BB10/i;\nvar otherOpera = /Opera Mini/i;\nvar otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nvar otherFirefox = /Mobile(?:.+)Firefox\\b/i;\nvar isAppleTabletOnIos13 = function (navigator) {\n return (typeof navigator !== 'undefined' &&\n navigator.platform === 'MacIntel' &&\n typeof navigator.maxTouchPoints === 'number' &&\n navigator.maxTouchPoints > 1 &&\n typeof MSStream === 'undefined');\n};\nfunction createMatch(userAgent) {\n return function (regex) { return regex.test(userAgent); };\n}\nfunction isMobile(param) {\n var nav = {\n userAgent: '',\n platform: '',\n maxTouchPoints: 0\n };\n if (!param && typeof navigator !== 'undefined') {\n nav = {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n maxTouchPoints: navigator.maxTouchPoints || 0\n };\n }\n else if (typeof param === 'string') {\n nav.userAgent = param;\n }\n else if (param && param.userAgent) {\n nav = {\n userAgent: param.userAgent,\n platform: param.platform,\n maxTouchPoints: param.maxTouchPoints || 0\n };\n }\n var userAgent = nav.userAgent;\n var tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n var match = createMatch(userAgent);\n var result = {\n apple: {\n phone: match(appleIphone) && !match(windowsPhone),\n ipod: match(appleIpod),\n tablet: !match(appleIphone) &&\n (match(appleTablet) || isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone),\n universal: match(appleUniversal),\n device: (match(appleIphone) ||\n match(appleIpod) ||\n match(appleTablet) ||\n match(appleUniversal) ||\n isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone)\n },\n amazon: {\n phone: match(amazonPhone),\n tablet: !match(amazonPhone) && match(amazonTablet),\n device: match(amazonPhone) || match(amazonTablet)\n },\n android: {\n phone: (!match(windowsPhone) && match(amazonPhone)) ||\n (!match(windowsPhone) && match(androidPhone)),\n tablet: !match(windowsPhone) &&\n !match(amazonPhone) &&\n !match(androidPhone) &&\n (match(amazonTablet) || match(androidTablet)),\n device: (!match(windowsPhone) &&\n (match(amazonPhone) ||\n match(amazonTablet) ||\n match(androidPhone) ||\n match(androidTablet))) ||\n match(/\\bokhttp\\b/i)\n },\n windows: {\n phone: match(windowsPhone),\n tablet: match(windowsTablet),\n device: match(windowsPhone) || match(windowsTablet)\n },\n other: {\n blackberry: match(otherBlackBerry),\n blackberry10: match(otherBlackBerry10),\n opera: match(otherOpera),\n firefox: match(otherFirefox),\n chrome: match(otherChrome),\n device: match(otherBlackBerry) ||\n match(otherBlackBerry10) ||\n match(otherOpera) ||\n match(otherFirefox) ||\n match(otherChrome)\n },\n any: false,\n phone: false,\n tablet: false\n };\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n\nexport { isMobile as default };\n//# sourceMappingURL=isMobile.mjs.map\n","import '../node_modules/ismobilejs/esm/index.mjs';\nimport isMobile$1 from '../node_modules/ismobilejs/esm/isMobile.mjs';\n\nconst isMobile = isMobile$1(globalThis.navigator);\n\nexport { isMobile };\n//# sourceMappingURL=isMobile.mjs.map\n","import { isMobile } from './isMobile.mjs';\n\nfunction canUploadSameBuffer() {\n return !isMobile.apple.device;\n}\n\nexport { canUploadSameBuffer };\n//# sourceMappingURL=canUploadSameBuffer.mjs.map\n","import { isMobile } from './isMobile.mjs';\n\nfunction maxRecommendedTextures(max) {\n let allowMax = true;\n if (isMobile.tablet || isMobile.phone) {\n if (isMobile.apple.device) {\n const match = navigator.userAgent.match(/OS (\\d+)_(\\d+)?/);\n if (match) {\n const majorVersion = parseInt(match[1], 10);\n if (majorVersion < 11) {\n allowMax = false;\n }\n }\n }\n if (isMobile.android.device) {\n const match = navigator.userAgent.match(/Android\\s([0-9.]*)/);\n if (match) {\n const majorVersion = parseInt(match[1], 10);\n if (majorVersion < 7) {\n allowMax = false;\n }\n }\n }\n }\n return allowMax ? max : 4;\n}\n\nexport { maxRecommendedTextures };\n//# sourceMappingURL=maxRecommendedTextures.mjs.map\n","import { MIPMAP_MODES, MSAA_QUALITY, GC_MODES, WRAP_MODES, SCALE_MODES, PRECISION } from '@pixi/constants';\nimport { BrowserAdapter } from './adapter.mjs';\nimport { canUploadSameBuffer } from './utils/canUploadSameBuffer.mjs';\nimport { isMobile } from './utils/isMobile.mjs';\nimport { maxRecommendedTextures } from './utils/maxRecommendedTextures.mjs';\n\nconst settings = {\n ADAPTER: BrowserAdapter,\n MIPMAP_TEXTURES: MIPMAP_MODES.POW2,\n ANISOTROPIC_LEVEL: 0,\n RESOLUTION: 1,\n FILTER_RESOLUTION: 1,\n FILTER_MULTISAMPLE: MSAA_QUALITY.NONE,\n SPRITE_MAX_TEXTURES: maxRecommendedTextures(32),\n SPRITE_BATCH_SIZE: 4096,\n RENDER_OPTIONS: {\n view: null,\n antialias: false,\n autoDensity: false,\n backgroundColor: 0,\n backgroundAlpha: 1,\n useContextAlpha: true,\n clearBeforeRender: true,\n preserveDrawingBuffer: false,\n width: 800,\n height: 600,\n legacy: false,\n hello: false\n },\n GC_MODE: GC_MODES.AUTO,\n GC_MAX_IDLE: 60 * 60,\n GC_MAX_CHECK_COUNT: 60 * 10,\n WRAP_MODE: WRAP_MODES.CLAMP,\n SCALE_MODE: SCALE_MODES.LINEAR,\n PRECISION_VERTEX: PRECISION.HIGH,\n PRECISION_FRAGMENT: isMobile.apple.device ? PRECISION.HIGH : PRECISION.MEDIUM,\n CAN_UPLOAD_SAME_BUFFER: canUploadSameBuffer(),\n CREATE_IMAGE_BITMAP: false,\n ROUND_PIXELS: false\n};\n\nexport { settings };\n//# sourceMappingURL=settings.mjs.map\n","import { settings } from '@pixi/settings';\nexport { settings } from '@pixi/settings';\nimport { ENV } from '@pixi/constants';\n\nsettings.PREFER_ENV = ENV.WEBGL2;\nsettings.STRICT_TEXTURE_CACHE = false;\n//# sourceMappingURL=settings.mjs.map\n","var ExtensionType = /* @__PURE__ */ ((ExtensionType2) => {\n ExtensionType2[\"Renderer\"] = \"renderer\";\n ExtensionType2[\"Application\"] = \"application\";\n ExtensionType2[\"RendererSystem\"] = \"renderer-webgl-system\";\n ExtensionType2[\"RendererPlugin\"] = \"renderer-webgl-plugin\";\n ExtensionType2[\"CanvasRendererSystem\"] = \"renderer-canvas-system\";\n ExtensionType2[\"CanvasRendererPlugin\"] = \"renderer-canvas-plugin\";\n ExtensionType2[\"Asset\"] = \"asset\";\n ExtensionType2[\"LoadParser\"] = \"load-parser\";\n ExtensionType2[\"ResolveParser\"] = \"resolve-parser\";\n ExtensionType2[\"CacheParser\"] = \"cache-parser\";\n ExtensionType2[\"DetectionParser\"] = \"detection-parser\";\n return ExtensionType2;\n})(ExtensionType || {});\nconst normalizeExtension = (ext) => {\n if (typeof ext === \"function\" || typeof ext === \"object\" && ext.extension) {\n const metadata = typeof ext.extension !== \"object\" ? { type: ext.extension } : ext.extension;\n ext = { ...metadata, ref: ext };\n }\n if (typeof ext === \"object\") {\n ext = { ...ext };\n } else {\n throw new Error(\"Invalid extension type\");\n }\n if (typeof ext.type === \"string\") {\n ext.type = [ext.type];\n }\n return ext;\n};\nconst extensions = {\n _addHandlers: {},\n _removeHandlers: {},\n _queue: {},\n remove(...extensions2) {\n extensions2.map(normalizeExtension).forEach((ext) => {\n ext.type.forEach((type) => this._removeHandlers[type]?.(ext));\n });\n return this;\n },\n add(...extensions2) {\n extensions2.map(normalizeExtension).forEach((ext) => {\n ext.type.forEach((type) => {\n const handlers = this._addHandlers;\n const queue = this._queue;\n if (!handlers[type]) {\n queue[type] = queue[type] || [];\n queue[type].push(ext);\n } else {\n handlers[type](ext);\n }\n });\n });\n return this;\n },\n handle(type, onAdd, onRemove) {\n const addHandlers = this._addHandlers;\n const removeHandlers = this._removeHandlers;\n addHandlers[type] = onAdd;\n removeHandlers[type] = onRemove;\n const queue = this._queue;\n if (queue[type]) {\n queue[type].forEach((ext) => onAdd(ext));\n delete queue[type];\n }\n return this;\n },\n handleByMap(type, map) {\n return this.handle(type, (extension) => {\n map[extension.name] = extension.ref;\n }, (extension) => {\n delete map[extension.name];\n });\n },\n handleByList(type, list) {\n return this.handle(type, (extension) => {\n list.push(extension.ref);\n list.sort((a, b) => (b.priority ?? -1) - (a.priority ?? -1));\n }, (extension) => {\n const index = list.indexOf(extension.ref);\n if (index !== -1) {\n list.splice(index, 1);\n }\n });\n }\n};\n\nexport { ExtensionType, extensions };\n//# sourceMappingURL=index.mjs.map\n","const PI_2 = Math.PI * 2;\nconst RAD_TO_DEG = 180 / Math.PI;\nconst DEG_TO_RAD = Math.PI / 180;\nvar SHAPES = /* @__PURE__ */ ((SHAPES2) => {\n SHAPES2[SHAPES2[\"POLY\"] = 0] = \"POLY\";\n SHAPES2[SHAPES2[\"RECT\"] = 1] = \"RECT\";\n SHAPES2[SHAPES2[\"CIRC\"] = 2] = \"CIRC\";\n SHAPES2[SHAPES2[\"ELIP\"] = 3] = \"ELIP\";\n SHAPES2[SHAPES2[\"RREC\"] = 4] = \"RREC\";\n return SHAPES2;\n})(SHAPES || {});\n\nexport { DEG_TO_RAD, PI_2, RAD_TO_DEG, SHAPES };\n//# sourceMappingURL=const.mjs.map\n","class Point {\n constructor(x = 0, y = 0) {\n this.x = 0;\n this.y = 0;\n this.x = x;\n this.y = y;\n }\n clone() {\n return new Point(this.x, this.y);\n }\n copyFrom(p) {\n this.set(p.x, p.y);\n return this;\n }\n copyTo(p) {\n p.set(this.x, this.y);\n return p;\n }\n equals(p) {\n return p.x === this.x && p.y === this.y;\n }\n set(x = 0, y = x) {\n this.x = x;\n this.y = y;\n return this;\n }\n}\n\nexport { Point };\n//# sourceMappingURL=Point.mjs.map\n","import { SHAPES } from '../const.mjs';\nimport { Point } from '../Point.mjs';\n\nconst tempPoints = [new Point(), new Point(), new Point(), new Point()];\nclass Rectangle {\n constructor(x = 0, y = 0, width = 0, height = 0) {\n this.x = Number(x);\n this.y = Number(y);\n this.width = Number(width);\n this.height = Number(height);\n this.type = SHAPES.RECT;\n }\n get left() {\n return this.x;\n }\n get right() {\n return this.x + this.width;\n }\n get top() {\n return this.y;\n }\n get bottom() {\n return this.y + this.height;\n }\n static get EMPTY() {\n return new Rectangle(0, 0, 0, 0);\n }\n clone() {\n return new Rectangle(this.x, this.y, this.width, this.height);\n }\n copyFrom(rectangle) {\n this.x = rectangle.x;\n this.y = rectangle.y;\n this.width = rectangle.width;\n this.height = rectangle.height;\n return this;\n }\n copyTo(rectangle) {\n rectangle.x = this.x;\n rectangle.y = this.y;\n rectangle.width = this.width;\n rectangle.height = this.height;\n return rectangle;\n }\n contains(x, y) {\n if (this.width <= 0 || this.height <= 0) {\n return false;\n }\n if (x >= this.x && x < this.x + this.width) {\n if (y >= this.y && y < this.y + this.height) {\n return true;\n }\n }\n return false;\n }\n intersects(other, transform) {\n if (!transform) {\n const x02 = this.x < other.x ? other.x : this.x;\n const x12 = this.right > other.right ? other.right : this.right;\n if (x12 <= x02) {\n return false;\n }\n const y02 = this.y < other.y ? other.y : this.y;\n const y12 = this.bottom > other.bottom ? other.bottom : this.bottom;\n return y12 > y02;\n }\n const x0 = this.left;\n const x1 = this.right;\n const y0 = this.top;\n const y1 = this.bottom;\n if (x1 <= x0 || y1 <= y0) {\n return false;\n }\n const lt = tempPoints[0].set(other.left, other.top);\n const lb = tempPoints[1].set(other.left, other.bottom);\n const rt = tempPoints[2].set(other.right, other.top);\n const rb = tempPoints[3].set(other.right, other.bottom);\n if (rt.x <= lt.x || lb.y <= lt.y) {\n return false;\n }\n const s = Math.sign(transform.a * transform.d - transform.b * transform.c);\n if (s === 0) {\n return false;\n }\n transform.apply(lt, lt);\n transform.apply(lb, lb);\n transform.apply(rt, rt);\n transform.apply(rb, rb);\n if (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) {\n return false;\n }\n const nx = s * (lb.y - lt.y);\n const ny = s * (lt.x - lb.x);\n const n00 = nx * x0 + ny * y0;\n const n10 = nx * x1 + ny * y0;\n const n01 = nx * x0 + ny * y1;\n const n11 = nx * x1 + ny * y1;\n if (Math.max(n00, n10, n01, n11) <= nx * lt.x + ny * lt.y || Math.min(n00, n10, n01, n11) >= nx * rb.x + ny * rb.y) {\n return false;\n }\n const mx = s * (lt.y - rt.y);\n const my = s * (rt.x - lt.x);\n const m00 = mx * x0 + my * y0;\n const m10 = mx * x1 + my * y0;\n const m01 = mx * x0 + my * y1;\n const m11 = mx * x1 + my * y1;\n if (Math.max(m00, m10, m01, m11) <= mx * lt.x + my * lt.y || Math.min(m00, m10, m01, m11) >= mx * rb.x + my * rb.y) {\n return false;\n }\n return true;\n }\n pad(paddingX = 0, paddingY = paddingX) {\n this.x -= paddingX;\n this.y -= paddingY;\n this.width += paddingX * 2;\n this.height += paddingY * 2;\n return this;\n }\n fit(rectangle) {\n const x1 = Math.max(this.x, rectangle.x);\n const x2 = Math.min(this.x + this.width, rectangle.x + rectangle.width);\n const y1 = Math.max(this.y, rectangle.y);\n const y2 = Math.min(this.y + this.height, rectangle.y + rectangle.height);\n this.x = x1;\n this.width = Math.max(x2 - x1, 0);\n this.y = y1;\n this.height = Math.max(y2 - y1, 0);\n return this;\n }\n ceil(resolution = 1, eps = 1e-3) {\n const x2 = Math.ceil((this.x + this.width - eps) * resolution) / resolution;\n const y2 = Math.ceil((this.y + this.height - eps) * resolution) / resolution;\n this.x = Math.floor((this.x + eps) * resolution) / resolution;\n this.y = Math.floor((this.y + eps) * resolution) / resolution;\n this.width = x2 - this.x;\n this.height = y2 - this.y;\n return this;\n }\n enlarge(rectangle) {\n const x1 = Math.min(this.x, rectangle.x);\n const x2 = Math.max(this.x + this.width, rectangle.x + rectangle.width);\n const y1 = Math.min(this.y, rectangle.y);\n const y2 = Math.max(this.y + this.height, rectangle.y + rectangle.height);\n this.x = x1;\n this.width = x2 - x1;\n this.y = y1;\n this.height = y2 - y1;\n return this;\n }\n}\n\nexport { Rectangle };\n//# sourceMappingURL=Rectangle.mjs.map\n","import { SHAPES } from '../const.mjs';\nimport { Rectangle } from './Rectangle.mjs';\n\nclass Circle {\n constructor(x = 0, y = 0, radius = 0) {\n this.x = x;\n this.y = y;\n this.radius = radius;\n this.type = SHAPES.CIRC;\n }\n clone() {\n return new Circle(this.x, this.y, this.radius);\n }\n contains(x, y) {\n if (this.radius <= 0) {\n return false;\n }\n const r2 = this.radius * this.radius;\n let dx = this.x - x;\n let dy = this.y - y;\n dx *= dx;\n dy *= dy;\n return dx + dy <= r2;\n }\n getBounds() {\n return new Rectangle(this.x - this.radius, this.y - this.radius, this.radius * 2, this.radius * 2);\n }\n}\n\nexport { Circle };\n//# sourceMappingURL=Circle.mjs.map\n","import { Rectangle } from './Rectangle.mjs';\nimport { SHAPES } from '../const.mjs';\n\nclass Ellipse {\n constructor(x = 0, y = 0, halfWidth = 0, halfHeight = 0) {\n this.x = x;\n this.y = y;\n this.width = halfWidth;\n this.height = halfHeight;\n this.type = SHAPES.ELIP;\n }\n clone() {\n return new Ellipse(this.x, this.y, this.width, this.height);\n }\n contains(x, y) {\n if (this.width <= 0 || this.height <= 0) {\n return false;\n }\n let normx = (x - this.x) / this.width;\n let normy = (y - this.y) / this.height;\n normx *= normx;\n normy *= normy;\n return normx + normy <= 1;\n }\n getBounds() {\n return new Rectangle(this.x - this.width, this.y - this.height, this.width, this.height);\n }\n}\n\nexport { Ellipse };\n//# sourceMappingURL=Ellipse.mjs.map\n","import { SHAPES } from '../const.mjs';\n\nclass Polygon {\n constructor(...points) {\n let flat = Array.isArray(points[0]) ? points[0] : points;\n if (typeof flat[0] !== \"number\") {\n const p = [];\n for (let i = 0, il = flat.length; i < il; i++) {\n p.push(flat[i].x, flat[i].y);\n }\n flat = p;\n }\n this.points = flat;\n this.type = SHAPES.POLY;\n this.closeStroke = true;\n }\n clone() {\n const points = this.points.slice();\n const polygon = new Polygon(points);\n polygon.closeStroke = this.closeStroke;\n return polygon;\n }\n contains(x, y) {\n let inside = false;\n const length = this.points.length / 2;\n for (let i = 0, j = length - 1; i < length; j = i++) {\n const xi = this.points[i * 2];\n const yi = this.points[i * 2 + 1];\n const xj = this.points[j * 2];\n const yj = this.points[j * 2 + 1];\n const intersect = yi > y !== yj > y && x < (xj - xi) * ((y - yi) / (yj - yi)) + xi;\n if (intersect) {\n inside = !inside;\n }\n }\n return inside;\n }\n}\n\nexport { Polygon };\n//# sourceMappingURL=Polygon.mjs.map\n","import { SHAPES } from '../const.mjs';\n\nclass RoundedRectangle {\n constructor(x = 0, y = 0, width = 0, height = 0, radius = 20) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.radius = radius;\n this.type = SHAPES.RREC;\n }\n clone() {\n return new RoundedRectangle(this.x, this.y, this.width, this.height, this.radius);\n }\n contains(x, y) {\n if (this.width <= 0 || this.height <= 0) {\n return false;\n }\n if (x >= this.x && x <= this.x + this.width) {\n if (y >= this.y && y <= this.y + this.height) {\n const radius = Math.max(0, Math.min(this.radius, Math.min(this.width, this.height) / 2));\n if (y >= this.y + radius && y <= this.y + this.height - radius || x >= this.x + radius && x <= this.x + this.width - radius) {\n return true;\n }\n let dx = x - (this.x + radius);\n let dy = y - (this.y + radius);\n const radius2 = radius * radius;\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n dx = x - (this.x + this.width - radius);\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n dy = y - (this.y + this.height - radius);\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n dx = x - (this.x + radius);\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n }\n }\n return false;\n }\n}\n\nexport { RoundedRectangle };\n//# sourceMappingURL=RoundedRectangle.mjs.map\n","class ObservablePoint {\n constructor(cb, scope, x = 0, y = 0) {\n this._x = x;\n this._y = y;\n this.cb = cb;\n this.scope = scope;\n }\n clone(cb = this.cb, scope = this.scope) {\n return new ObservablePoint(cb, scope, this._x, this._y);\n }\n set(x = 0, y = x) {\n if (this._x !== x || this._y !== y) {\n this._x = x;\n this._y = y;\n this.cb.call(this.scope);\n }\n return this;\n }\n copyFrom(p) {\n if (this._x !== p.x || this._y !== p.y) {\n this._x = p.x;\n this._y = p.y;\n this.cb.call(this.scope);\n }\n return this;\n }\n copyTo(p) {\n p.set(this._x, this._y);\n return p;\n }\n equals(p) {\n return p.x === this._x && p.y === this._y;\n }\n get x() {\n return this._x;\n }\n set x(value) {\n if (this._x !== value) {\n this._x = value;\n this.cb.call(this.scope);\n }\n }\n get y() {\n return this._y;\n }\n set y(value) {\n if (this._y !== value) {\n this._y = value;\n this.cb.call(this.scope);\n }\n }\n}\n\nexport { ObservablePoint };\n//# sourceMappingURL=ObservablePoint.mjs.map\n","import { Point } from './Point.mjs';\nimport { PI_2 } from './const.mjs';\n\nclass Matrix {\n constructor(a = 1, b = 0, c = 0, d = 1, tx = 0, ty = 0) {\n this.array = null;\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.tx = tx;\n this.ty = ty;\n }\n fromArray(array) {\n this.a = array[0];\n this.b = array[1];\n this.c = array[3];\n this.d = array[4];\n this.tx = array[2];\n this.ty = array[5];\n }\n set(a, b, c, d, tx, ty) {\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.tx = tx;\n this.ty = ty;\n return this;\n }\n toArray(transpose, out) {\n if (!this.array) {\n this.array = new Float32Array(9);\n }\n const array = out || this.array;\n if (transpose) {\n array[0] = this.a;\n array[1] = this.b;\n array[2] = 0;\n array[3] = this.c;\n array[4] = this.d;\n array[5] = 0;\n array[6] = this.tx;\n array[7] = this.ty;\n array[8] = 1;\n } else {\n array[0] = this.a;\n array[1] = this.c;\n array[2] = this.tx;\n array[3] = this.b;\n array[4] = this.d;\n array[5] = this.ty;\n array[6] = 0;\n array[7] = 0;\n array[8] = 1;\n }\n return array;\n }\n apply(pos, newPos) {\n newPos = newPos || new Point();\n const x = pos.x;\n const y = pos.y;\n newPos.x = this.a * x + this.c * y + this.tx;\n newPos.y = this.b * x + this.d * y + this.ty;\n return newPos;\n }\n applyInverse(pos, newPos) {\n newPos = newPos || new Point();\n const id = 1 / (this.a * this.d + this.c * -this.b);\n const x = pos.x;\n const y = pos.y;\n newPos.x = this.d * id * x + -this.c * id * y + (this.ty * this.c - this.tx * this.d) * id;\n newPos.y = this.a * id * y + -this.b * id * x + (-this.ty * this.a + this.tx * this.b) * id;\n return newPos;\n }\n translate(x, y) {\n this.tx += x;\n this.ty += y;\n return this;\n }\n scale(x, y) {\n this.a *= x;\n this.d *= y;\n this.c *= x;\n this.b *= y;\n this.tx *= x;\n this.ty *= y;\n return this;\n }\n rotate(angle) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const a1 = this.a;\n const c1 = this.c;\n const tx1 = this.tx;\n this.a = a1 * cos - this.b * sin;\n this.b = a1 * sin + this.b * cos;\n this.c = c1 * cos - this.d * sin;\n this.d = c1 * sin + this.d * cos;\n this.tx = tx1 * cos - this.ty * sin;\n this.ty = tx1 * sin + this.ty * cos;\n return this;\n }\n append(matrix) {\n const a1 = this.a;\n const b1 = this.b;\n const c1 = this.c;\n const d1 = this.d;\n this.a = matrix.a * a1 + matrix.b * c1;\n this.b = matrix.a * b1 + matrix.b * d1;\n this.c = matrix.c * a1 + matrix.d * c1;\n this.d = matrix.c * b1 + matrix.d * d1;\n this.tx = matrix.tx * a1 + matrix.ty * c1 + this.tx;\n this.ty = matrix.tx * b1 + matrix.ty * d1 + this.ty;\n return this;\n }\n setTransform(x, y, pivotX, pivotY, scaleX, scaleY, rotation, skewX, skewY) {\n this.a = Math.cos(rotation + skewY) * scaleX;\n this.b = Math.sin(rotation + skewY) * scaleX;\n this.c = -Math.sin(rotation - skewX) * scaleY;\n this.d = Math.cos(rotation - skewX) * scaleY;\n this.tx = x - (pivotX * this.a + pivotY * this.c);\n this.ty = y - (pivotX * this.b + pivotY * this.d);\n return this;\n }\n prepend(matrix) {\n const tx1 = this.tx;\n if (matrix.a !== 1 || matrix.b !== 0 || matrix.c !== 0 || matrix.d !== 1) {\n const a1 = this.a;\n const c1 = this.c;\n this.a = a1 * matrix.a + this.b * matrix.c;\n this.b = a1 * matrix.b + this.b * matrix.d;\n this.c = c1 * matrix.a + this.d * matrix.c;\n this.d = c1 * matrix.b + this.d * matrix.d;\n }\n this.tx = tx1 * matrix.a + this.ty * matrix.c + matrix.tx;\n this.ty = tx1 * matrix.b + this.ty * matrix.d + matrix.ty;\n return this;\n }\n decompose(transform) {\n const a = this.a;\n const b = this.b;\n const c = this.c;\n const d = this.d;\n const pivot = transform.pivot;\n const skewX = -Math.atan2(-c, d);\n const skewY = Math.atan2(b, a);\n const delta = Math.abs(skewX + skewY);\n if (delta < 1e-5 || Math.abs(PI_2 - delta) < 1e-5) {\n transform.rotation = skewY;\n transform.skew.x = transform.skew.y = 0;\n } else {\n transform.rotation = 0;\n transform.skew.x = skewX;\n transform.skew.y = skewY;\n }\n transform.scale.x = Math.sqrt(a * a + b * b);\n transform.scale.y = Math.sqrt(c * c + d * d);\n transform.position.x = this.tx + (pivot.x * a + pivot.y * c);\n transform.position.y = this.ty + (pivot.x * b + pivot.y * d);\n return transform;\n }\n invert() {\n const a1 = this.a;\n const b1 = this.b;\n const c1 = this.c;\n const d1 = this.d;\n const tx1 = this.tx;\n const n = a1 * d1 - b1 * c1;\n this.a = d1 / n;\n this.b = -b1 / n;\n this.c = -c1 / n;\n this.d = a1 / n;\n this.tx = (c1 * this.ty - d1 * tx1) / n;\n this.ty = -(a1 * this.ty - b1 * tx1) / n;\n return this;\n }\n identity() {\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.tx = 0;\n this.ty = 0;\n return this;\n }\n clone() {\n const matrix = new Matrix();\n matrix.a = this.a;\n matrix.b = this.b;\n matrix.c = this.c;\n matrix.d = this.d;\n matrix.tx = this.tx;\n matrix.ty = this.ty;\n return matrix;\n }\n copyTo(matrix) {\n matrix.a = this.a;\n matrix.b = this.b;\n matrix.c = this.c;\n matrix.d = this.d;\n matrix.tx = this.tx;\n matrix.ty = this.ty;\n return matrix;\n }\n copyFrom(matrix) {\n this.a = matrix.a;\n this.b = matrix.b;\n this.c = matrix.c;\n this.d = matrix.d;\n this.tx = matrix.tx;\n this.ty = matrix.ty;\n return this;\n }\n static get IDENTITY() {\n return new Matrix();\n }\n static get TEMP_MATRIX() {\n return new Matrix();\n }\n}\n\nexport { Matrix };\n//# sourceMappingURL=Matrix.mjs.map\n","import { Matrix } from './Matrix.mjs';\n\nconst ux = [1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1];\nconst uy = [0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1];\nconst vx = [0, -1, -1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 0, -1, -1, -1];\nconst vy = [1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, 1, 0, -1];\nconst rotationCayley = [];\nconst rotationMatrices = [];\nconst signum = Math.sign;\nfunction init() {\n for (let i = 0; i < 16; i++) {\n const row = [];\n rotationCayley.push(row);\n for (let j = 0; j < 16; j++) {\n const _ux = signum(ux[i] * ux[j] + vx[i] * uy[j]);\n const _uy = signum(uy[i] * ux[j] + vy[i] * uy[j]);\n const _vx = signum(ux[i] * vx[j] + vx[i] * vy[j]);\n const _vy = signum(uy[i] * vx[j] + vy[i] * vy[j]);\n for (let k = 0; k < 16; k++) {\n if (ux[k] === _ux && uy[k] === _uy && vx[k] === _vx && vy[k] === _vy) {\n row.push(k);\n break;\n }\n }\n }\n }\n for (let i = 0; i < 16; i++) {\n const mat = new Matrix();\n mat.set(ux[i], uy[i], vx[i], vy[i], 0, 0);\n rotationMatrices.push(mat);\n }\n}\ninit();\nconst groupD8 = {\n E: 0,\n SE: 1,\n S: 2,\n SW: 3,\n W: 4,\n NW: 5,\n N: 6,\n NE: 7,\n MIRROR_VERTICAL: 8,\n MAIN_DIAGONAL: 10,\n MIRROR_HORIZONTAL: 12,\n REVERSE_DIAGONAL: 14,\n uX: (ind) => ux[ind],\n uY: (ind) => uy[ind],\n vX: (ind) => vx[ind],\n vY: (ind) => vy[ind],\n inv: (rotation) => {\n if (rotation & 8) {\n return rotation & 15;\n }\n return -rotation & 7;\n },\n add: (rotationSecond, rotationFirst) => rotationCayley[rotationSecond][rotationFirst],\n sub: (rotationSecond, rotationFirst) => rotationCayley[rotationSecond][groupD8.inv(rotationFirst)],\n rotate180: (rotation) => rotation ^ 4,\n isVertical: (rotation) => (rotation & 3) === 2,\n byDirection: (dx, dy) => {\n if (Math.abs(dx) * 2 <= Math.abs(dy)) {\n if (dy >= 0) {\n return groupD8.S;\n }\n return groupD8.N;\n } else if (Math.abs(dy) * 2 <= Math.abs(dx)) {\n if (dx > 0) {\n return groupD8.E;\n }\n return groupD8.W;\n } else if (dy > 0) {\n if (dx > 0) {\n return groupD8.SE;\n }\n return groupD8.SW;\n } else if (dx > 0) {\n return groupD8.NE;\n }\n return groupD8.NW;\n },\n matrixAppendRotationInv: (matrix, rotation, tx = 0, ty = 0) => {\n const mat = rotationMatrices[groupD8.inv(rotation)];\n mat.tx = tx;\n mat.ty = ty;\n matrix.append(mat);\n }\n};\n\nexport { groupD8 };\n//# sourceMappingURL=groupD8.mjs.map\n","import { ObservablePoint } from './ObservablePoint.mjs';\nimport { Matrix } from './Matrix.mjs';\n\nconst _Transform = class {\n constructor() {\n this.worldTransform = new Matrix();\n this.localTransform = new Matrix();\n this.position = new ObservablePoint(this.onChange, this, 0, 0);\n this.scale = new ObservablePoint(this.onChange, this, 1, 1);\n this.pivot = new ObservablePoint(this.onChange, this, 0, 0);\n this.skew = new ObservablePoint(this.updateSkew, this, 0, 0);\n this._rotation = 0;\n this._cx = 1;\n this._sx = 0;\n this._cy = 0;\n this._sy = 1;\n this._localID = 0;\n this._currentLocalID = 0;\n this._worldID = 0;\n this._parentID = 0;\n }\n onChange() {\n this._localID++;\n }\n updateSkew() {\n this._cx = Math.cos(this._rotation + this.skew.y);\n this._sx = Math.sin(this._rotation + this.skew.y);\n this._cy = -Math.sin(this._rotation - this.skew.x);\n this._sy = Math.cos(this._rotation - this.skew.x);\n this._localID++;\n }\n updateLocalTransform() {\n const lt = this.localTransform;\n if (this._localID !== this._currentLocalID) {\n lt.a = this._cx * this.scale.x;\n lt.b = this._sx * this.scale.x;\n lt.c = this._cy * this.scale.y;\n lt.d = this._sy * this.scale.y;\n lt.tx = this.position.x - (this.pivot.x * lt.a + this.pivot.y * lt.c);\n lt.ty = this.position.y - (this.pivot.x * lt.b + this.pivot.y * lt.d);\n this._currentLocalID = this._localID;\n this._parentID = -1;\n }\n }\n updateTransform(parentTransform) {\n const lt = this.localTransform;\n if (this._localID !== this._currentLocalID) {\n lt.a = this._cx * this.scale.x;\n lt.b = this._sx * this.scale.x;\n lt.c = this._cy * this.scale.y;\n lt.d = this._sy * this.scale.y;\n lt.tx = this.position.x - (this.pivot.x * lt.a + this.pivot.y * lt.c);\n lt.ty = this.position.y - (this.pivot.x * lt.b + this.pivot.y * lt.d);\n this._currentLocalID = this._localID;\n this._parentID = -1;\n }\n if (this._parentID !== parentTransform._worldID) {\n const pt = parentTransform.worldTransform;\n const wt = this.worldTransform;\n wt.a = lt.a * pt.a + lt.b * pt.c;\n wt.b = lt.a * pt.b + lt.b * pt.d;\n wt.c = lt.c * pt.a + lt.d * pt.c;\n wt.d = lt.c * pt.b + lt.d * pt.d;\n wt.tx = lt.tx * pt.a + lt.ty * pt.c + pt.tx;\n wt.ty = lt.tx * pt.b + lt.ty * pt.d + pt.ty;\n this._parentID = parentTransform._worldID;\n this._worldID++;\n }\n }\n setFromMatrix(matrix) {\n matrix.decompose(this);\n this._localID++;\n }\n get rotation() {\n return this._rotation;\n }\n set rotation(value) {\n if (this._rotation !== value) {\n this._rotation = value;\n this.updateSkew();\n }\n }\n};\nlet Transform = _Transform;\nTransform.IDENTITY = new _Transform();\n\nexport { Transform };\n//# sourceMappingURL=Transform.mjs.map\n","class Runner {\n constructor(name) {\n this.items = [];\n this._name = name;\n this._aliasCount = 0;\n }\n emit(a0, a1, a2, a3, a4, a5, a6, a7) {\n if (arguments.length > 8) {\n throw new Error(\"max arguments reached\");\n }\n const { name, items } = this;\n this._aliasCount++;\n for (let i = 0, len = items.length; i < len; i++) {\n items[i][name](a0, a1, a2, a3, a4, a5, a6, a7);\n }\n if (items === this.items) {\n this._aliasCount--;\n }\n return this;\n }\n ensureNonAliasedItems() {\n if (this._aliasCount > 0 && this.items.length > 1) {\n this._aliasCount = 0;\n this.items = this.items.slice(0);\n }\n }\n add(item) {\n if (item[this._name]) {\n this.ensureNonAliasedItems();\n this.remove(item);\n this.items.push(item);\n }\n return this;\n }\n remove(item) {\n const index = this.items.indexOf(item);\n if (index !== -1) {\n this.ensureNonAliasedItems();\n this.items.splice(index, 1);\n }\n return this;\n }\n contains(item) {\n return this.items.includes(item);\n }\n removeAll() {\n this.ensureNonAliasedItems();\n this.items.length = 0;\n return this;\n }\n destroy() {\n this.removeAll();\n this.items = null;\n this._name = null;\n }\n get empty() {\n return this.items.length === 0;\n }\n get name() {\n return this._name;\n }\n}\nObject.defineProperties(Runner.prototype, {\n dispatch: { value: Runner.prototype.emit },\n run: { value: Runner.prototype.emit }\n});\n\nexport { Runner };\n//# sourceMappingURL=Runner.mjs.map\n","import { settings } from '@pixi/settings';\nexport { settings } from '@pixi/settings';\n\nsettings.TARGET_FPMS = 0.06;\n//# sourceMappingURL=settings.mjs.map\n","var UPDATE_PRIORITY = /* @__PURE__ */ ((UPDATE_PRIORITY2) => {\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"HIGH\"] = 25] = \"HIGH\";\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"NORMAL\"] = 0] = \"NORMAL\";\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"LOW\"] = -25] = \"LOW\";\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"UTILITY\"] = -50] = \"UTILITY\";\n return UPDATE_PRIORITY2;\n})(UPDATE_PRIORITY || {});\n\nexport { UPDATE_PRIORITY };\n//# sourceMappingURL=const.mjs.map\n","class TickerListener {\n constructor(fn, context = null, priority = 0, once = false) {\n this.next = null;\n this.previous = null;\n this._destroyed = false;\n this.fn = fn;\n this.context = context;\n this.priority = priority;\n this.once = once;\n }\n match(fn, context = null) {\n return this.fn === fn && this.context === context;\n }\n emit(deltaTime) {\n if (this.fn) {\n if (this.context) {\n this.fn.call(this.context, deltaTime);\n } else {\n this.fn(deltaTime);\n }\n }\n const redirect = this.next;\n if (this.once) {\n this.destroy(true);\n }\n if (this._destroyed) {\n this.next = null;\n }\n return redirect;\n }\n connect(previous) {\n this.previous = previous;\n if (previous.next) {\n previous.next.previous = this;\n }\n this.next = previous.next;\n previous.next = this;\n }\n destroy(hard = false) {\n this._destroyed = true;\n this.fn = null;\n this.context = null;\n if (this.previous) {\n this.previous.next = this.next;\n }\n if (this.next) {\n this.next.previous = this.previous;\n }\n const redirect = this.next;\n this.next = hard ? null : redirect;\n this.previous = null;\n return redirect;\n }\n}\n\nexport { TickerListener };\n//# sourceMappingURL=TickerListener.mjs.map\n","import './settings.mjs';\nimport { UPDATE_PRIORITY } from './const.mjs';\nimport { TickerListener } from './TickerListener.mjs';\nimport { settings } from '@pixi/settings';\n\nclass Ticker {\n constructor() {\n this.autoStart = false;\n this.deltaTime = 1;\n this.lastTime = -1;\n this.speed = 1;\n this.started = false;\n this._requestId = null;\n this._maxElapsedMS = 100;\n this._minElapsedMS = 0;\n this._protected = false;\n this._lastFrame = -1;\n this._head = new TickerListener(null, null, Infinity);\n this.deltaMS = 1 / settings.TARGET_FPMS;\n this.elapsedMS = 1 / settings.TARGET_FPMS;\n this._tick = (time) => {\n this._requestId = null;\n if (this.started) {\n this.update(time);\n if (this.started && this._requestId === null && this._head.next) {\n this._requestId = requestAnimationFrame(this._tick);\n }\n }\n };\n }\n _requestIfNeeded() {\n if (this._requestId === null && this._head.next) {\n this.lastTime = performance.now();\n this._lastFrame = this.lastTime;\n this._requestId = requestAnimationFrame(this._tick);\n }\n }\n _cancelIfNeeded() {\n if (this._requestId !== null) {\n cancelAnimationFrame(this._requestId);\n this._requestId = null;\n }\n }\n _startIfPossible() {\n if (this.started) {\n this._requestIfNeeded();\n } else if (this.autoStart) {\n this.start();\n }\n }\n add(fn, context, priority = UPDATE_PRIORITY.NORMAL) {\n return this._addListener(new TickerListener(fn, context, priority));\n }\n addOnce(fn, context, priority = UPDATE_PRIORITY.NORMAL) {\n return this._addListener(new TickerListener(fn, context, priority, true));\n }\n _addListener(listener) {\n let current = this._head.next;\n let previous = this._head;\n if (!current) {\n listener.connect(previous);\n } else {\n while (current) {\n if (listener.priority > current.priority) {\n listener.connect(previous);\n break;\n }\n previous = current;\n current = current.next;\n }\n if (!listener.previous) {\n listener.connect(previous);\n }\n }\n this._startIfPossible();\n return this;\n }\n remove(fn, context) {\n let listener = this._head.next;\n while (listener) {\n if (listener.match(fn, context)) {\n listener = listener.destroy();\n } else {\n listener = listener.next;\n }\n }\n if (!this._head.next) {\n this._cancelIfNeeded();\n }\n return this;\n }\n get count() {\n if (!this._head) {\n return 0;\n }\n let count = 0;\n let current = this._head;\n while (current = current.next) {\n count++;\n }\n return count;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this._requestIfNeeded();\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this._cancelIfNeeded();\n }\n }\n destroy() {\n if (!this._protected) {\n this.stop();\n let listener = this._head.next;\n while (listener) {\n listener = listener.destroy(true);\n }\n this._head.destroy();\n this._head = null;\n }\n }\n update(currentTime = performance.now()) {\n let elapsedMS;\n if (currentTime > this.lastTime) {\n elapsedMS = this.elapsedMS = currentTime - this.lastTime;\n if (elapsedMS > this._maxElapsedMS) {\n elapsedMS = this._maxElapsedMS;\n }\n elapsedMS *= this.speed;\n if (this._minElapsedMS) {\n const delta = currentTime - this._lastFrame | 0;\n if (delta < this._minElapsedMS) {\n return;\n }\n this._lastFrame = currentTime - delta % this._minElapsedMS;\n }\n this.deltaMS = elapsedMS;\n this.deltaTime = this.deltaMS * settings.TARGET_FPMS;\n const head = this._head;\n let listener = head.next;\n while (listener) {\n listener = listener.emit(this.deltaTime);\n }\n if (!head.next) {\n this._cancelIfNeeded();\n }\n } else {\n this.deltaTime = this.deltaMS = this.elapsedMS = 0;\n }\n this.lastTime = currentTime;\n }\n get FPS() {\n return 1e3 / this.elapsedMS;\n }\n get minFPS() {\n return 1e3 / this._maxElapsedMS;\n }\n set minFPS(fps) {\n const minFPS = Math.min(this.maxFPS, fps);\n const minFPMS = Math.min(Math.max(0, minFPS) / 1e3, settings.TARGET_FPMS);\n this._maxElapsedMS = 1 / minFPMS;\n }\n get maxFPS() {\n if (this._minElapsedMS) {\n return Math.round(1e3 / this._minElapsedMS);\n }\n return 0;\n }\n set maxFPS(fps) {\n if (fps === 0) {\n this._minElapsedMS = 0;\n } else {\n const maxFPS = Math.max(this.minFPS, fps);\n this._minElapsedMS = 1 / (maxFPS / 1e3);\n }\n }\n static get shared() {\n if (!Ticker._shared) {\n const shared = Ticker._shared = new Ticker();\n shared.autoStart = true;\n shared._protected = true;\n }\n return Ticker._shared;\n }\n static get system() {\n if (!Ticker._system) {\n const system = Ticker._system = new Ticker();\n system.autoStart = true;\n system._protected = true;\n }\n return Ticker._system;\n }\n}\n\nexport { Ticker };\n//# sourceMappingURL=Ticker.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\nimport { UPDATE_PRIORITY } from './const.mjs';\nimport { Ticker } from './Ticker.mjs';\n\nclass TickerPlugin {\n static init(options) {\n options = Object.assign({\n autoStart: true,\n sharedTicker: false\n }, options);\n Object.defineProperty(this, \"ticker\", {\n set(ticker) {\n if (this._ticker) {\n this._ticker.remove(this.render, this);\n }\n this._ticker = ticker;\n if (ticker) {\n ticker.add(this.render, this, UPDATE_PRIORITY.LOW);\n }\n },\n get() {\n return this._ticker;\n }\n });\n this.stop = () => {\n this._ticker.stop();\n };\n this.start = () => {\n this._ticker.start();\n };\n this._ticker = null;\n this.ticker = options.sharedTicker ? Ticker.shared : new Ticker();\n if (options.autoStart) {\n this.start();\n }\n }\n static destroy() {\n if (this._ticker) {\n const oldTicker = this._ticker;\n this.ticker = null;\n oldTicker.destroy();\n }\n }\n}\nTickerPlugin.extension = ExtensionType.Application;\nextensions.add(TickerPlugin);\n\nexport { TickerPlugin };\n//# sourceMappingURL=TickerPlugin.mjs.map\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n 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);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","import { parse, format, resolve } from 'url';\n\nconst url = {\n parse: parse,\n format: format,\n resolve: resolve\n};\n\nexport { url };\n//# sourceMappingURL=url.mjs.map\n","import { settings } from '@pixi/settings';\n\nfunction assertPath(path2) {\n if (typeof path2 !== \"string\") {\n throw new TypeError(`Path must be a string. Received ${JSON.stringify(path2)}`);\n }\n}\nfunction removeUrlParams(url) {\n const re = url.split(\"?\")[0];\n return re.split(\"#\")[0];\n}\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction replaceAll(str, find, replace) {\n return str.replace(new RegExp(escapeRegExp(find), \"g\"), replace);\n}\nfunction normalizeStringPosix(path2, allowAboveRoot) {\n let res = \"\";\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let code;\n for (let i = 0; i <= path2.length; ++i) {\n if (i < path2.length) {\n code = path2.charCodeAt(i);\n } else if (code === 47) {\n break;\n } else {\n code = 47;\n }\n if (code === 47) {\n if (lastSlash === i - 1 || dots === 1) {\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(\"/\");\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = \"\";\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\");\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = \"\";\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0) {\n res += \"/..\";\n } else {\n res = \"..\";\n }\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) {\n res += `/${path2.slice(lastSlash + 1, i)}`;\n } else {\n res = path2.slice(lastSlash + 1, i);\n }\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\nconst path = {\n toPosix(path2) {\n return replaceAll(path2, \"\\\\\", \"/\");\n },\n isUrl(path2) {\n return /^https?:/.test(this.toPosix(path2));\n },\n isDataUrl(path2) {\n return /^data:([a-z]+\\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s<>]*?)$/i.test(path2);\n },\n hasProtocol(path2) {\n return /^[^/:]+:\\//.test(this.toPosix(path2));\n },\n getProtocol(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n let protocol = \"\";\n const isFile = /^file:\\/\\/\\//.exec(path2);\n const isHttp = /^[^/:]+:\\/\\//.exec(path2);\n const isWindows = /^[^/:]+:\\//.exec(path2);\n if (isFile || isHttp || isWindows) {\n const arr = isFile?.[0] || isHttp?.[0] || isWindows?.[0];\n protocol = arr;\n path2 = path2.slice(arr.length);\n }\n return protocol;\n },\n toAbsolute(url, customBaseUrl, customRootUrl) {\n if (this.isDataUrl(url))\n return url;\n const baseUrl = removeUrlParams(this.toPosix(customBaseUrl ?? settings.ADAPTER.getBaseUrl()));\n const rootUrl = removeUrlParams(this.toPosix(customRootUrl ?? this.rootname(baseUrl)));\n assertPath(url);\n url = this.toPosix(url);\n if (url.startsWith(\"/\")) {\n return path.join(rootUrl, url.slice(1));\n }\n const absolutePath = this.isAbsolute(url) ? url : this.join(baseUrl, url);\n return absolutePath;\n },\n normalize(path2) {\n path2 = this.toPosix(path2);\n assertPath(path2);\n if (path2.length === 0)\n return \".\";\n let protocol = \"\";\n const isAbsolute = path2.startsWith(\"/\");\n if (this.hasProtocol(path2)) {\n protocol = this.rootname(path2);\n path2 = path2.slice(protocol.length);\n }\n const trailingSeparator = path2.endsWith(\"/\");\n path2 = normalizeStringPosix(path2, false);\n if (path2.length > 0 && trailingSeparator)\n path2 += \"/\";\n if (isAbsolute)\n return `/${path2}`;\n return protocol + path2;\n },\n isAbsolute(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n if (this.hasProtocol(path2))\n return true;\n return path2.startsWith(\"/\");\n },\n join(...segments) {\n if (segments.length === 0) {\n return \".\";\n }\n let joined;\n for (let i = 0; i < segments.length; ++i) {\n const arg = segments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === void 0)\n joined = arg;\n else {\n const prevArg = segments[i - 1] ?? \"\";\n if (this.extname(prevArg)) {\n joined += `/../${arg}`;\n } else {\n joined += `/${arg}`;\n }\n }\n }\n }\n if (joined === void 0) {\n return \".\";\n }\n return this.normalize(joined);\n },\n dirname(path2) {\n assertPath(path2);\n if (path2.length === 0)\n return \".\";\n path2 = this.toPosix(path2);\n let code = path2.charCodeAt(0);\n const hasRoot = code === 47;\n let end = -1;\n let matchedSlash = true;\n const proto = this.getProtocol(path2);\n const origpath = path2;\n path2 = path2.slice(proto.length);\n for (let i = path2.length - 1; i >= 1; --i) {\n code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n matchedSlash = false;\n }\n }\n if (end === -1)\n return hasRoot ? \"/\" : this.isUrl(origpath) ? proto + path2 : proto;\n if (hasRoot && end === 1)\n return \"//\";\n return proto + path2.slice(0, end);\n },\n rootname(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n let root = \"\";\n if (path2.startsWith(\"/\"))\n root = \"/\";\n else {\n root = this.getProtocol(path2);\n }\n if (this.isUrl(path2)) {\n const index = path2.indexOf(\"/\", root.length);\n if (index !== -1) {\n root = path2.slice(0, index);\n } else\n root = path2;\n if (!root.endsWith(\"/\"))\n root += \"/\";\n }\n return root;\n },\n basename(path2, ext) {\n assertPath(path2);\n if (ext)\n assertPath(ext);\n path2 = this.toPosix(path2);\n let start = 0;\n let end = -1;\n let matchedSlash = true;\n let i;\n if (ext !== void 0 && ext.length > 0 && ext.length <= path2.length) {\n if (ext.length === path2.length && ext === path2)\n return \"\";\n let extIdx = ext.length - 1;\n let firstNonSlashEnd = -1;\n for (i = path2.length - 1; i >= 0; --i) {\n const code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n end = i;\n }\n } else {\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n if (start === end)\n end = firstNonSlashEnd;\n else if (end === -1)\n end = path2.length;\n return path2.slice(start, end);\n }\n for (i = path2.length - 1; i >= 0; --i) {\n if (path2.charCodeAt(i) === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n }\n if (end === -1)\n return \"\";\n return path2.slice(start, end);\n },\n extname(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let preDotState = 0;\n for (let i = path2.length - 1; i >= 0; --i) {\n const code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46) {\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n preDotState = -1;\n }\n }\n if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return \"\";\n }\n return path2.slice(startDot, end);\n },\n parse(path2) {\n assertPath(path2);\n const ret = { root: \"\", dir: \"\", base: \"\", ext: \"\", name: \"\" };\n if (path2.length === 0)\n return ret;\n path2 = this.toPosix(path2);\n let code = path2.charCodeAt(0);\n const isAbsolute = this.isAbsolute(path2);\n let start;\n const protocol = \"\";\n ret.root = this.rootname(path2);\n if (isAbsolute || this.hasProtocol(path2)) {\n start = 1;\n } else {\n start = 0;\n }\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let i = path2.length - 1;\n let preDotState = 0;\n for (; i >= start; --i) {\n code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46) {\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n preDotState = -1;\n }\n }\n if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute)\n ret.base = ret.name = path2.slice(1, end);\n else\n ret.base = ret.name = path2.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path2.slice(1, startDot);\n ret.base = path2.slice(1, end);\n } else {\n ret.name = path2.slice(startPart, startDot);\n ret.base = path2.slice(startPart, end);\n }\n ret.ext = path2.slice(startDot, end);\n }\n ret.dir = this.dirname(path2);\n if (protocol)\n ret.dir = protocol + ret.dir;\n return ret;\n },\n sep: \"/\",\n delimiter: \":\"\n};\n\nexport { path };\n//# sourceMappingURL=path.mjs.map\n","import { settings } from '@pixi/settings';\nexport { settings } from '@pixi/settings';\n\nsettings.RETINA_PREFIX = /@([0-9\\.]+)x/;\nsettings.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT = false;\n//# sourceMappingURL=settings.mjs.map\n","function skipHello() {\n}\nfunction sayHello() {\n}\n\nexport { sayHello, skipHello };\n//# sourceMappingURL=hello.mjs.map\n","import '../settings.mjs';\nimport { settings } from '@pixi/settings';\n\nlet supported;\nfunction isWebGLSupported() {\n if (typeof supported === \"undefined\") {\n supported = function supported2() {\n const contextOptions = {\n stencil: true,\n failIfMajorPerformanceCaveat: settings.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT\n };\n try {\n if (!settings.ADAPTER.getWebGLRenderingContext()) {\n return false;\n }\n const canvas = settings.ADAPTER.createCanvas();\n let gl = canvas.getContext(\"webgl\", contextOptions) || canvas.getContext(\"experimental-webgl\", contextOptions);\n const success = !!(gl && gl.getContextAttributes().stencil);\n if (gl) {\n const loseContext = gl.getExtension(\"WEBGL_lose_context\");\n if (loseContext) {\n loseContext.loseContext();\n }\n }\n gl = null;\n return success;\n } catch (e) {\n return false;\n }\n }();\n }\n return supported;\n}\n\nexport { isWebGLSupported };\n//# sourceMappingURL=isWebGLSupported.mjs.map\n","var aliceblue = \"#f0f8ff\";\nvar antiquewhite = \"#faebd7\";\nvar aqua = \"#00ffff\";\nvar aquamarine = \"#7fffd4\";\nvar azure = \"#f0ffff\";\nvar beige = \"#f5f5dc\";\nvar bisque = \"#ffe4c4\";\nvar black = \"#000000\";\nvar blanchedalmond = \"#ffebcd\";\nvar blue = \"#0000ff\";\nvar blueviolet = \"#8a2be2\";\nvar brown = \"#a52a2a\";\nvar burlywood = \"#deb887\";\nvar cadetblue = \"#5f9ea0\";\nvar chartreuse = \"#7fff00\";\nvar chocolate = \"#d2691e\";\nvar coral = \"#ff7f50\";\nvar cornflowerblue = \"#6495ed\";\nvar cornsilk = \"#fff8dc\";\nvar crimson = \"#dc143c\";\nvar cyan = \"#00ffff\";\nvar darkblue = \"#00008b\";\nvar darkcyan = \"#008b8b\";\nvar darkgoldenrod = \"#b8860b\";\nvar darkgray = \"#a9a9a9\";\nvar darkgreen = \"#006400\";\nvar darkgrey = \"#a9a9a9\";\nvar darkkhaki = \"#bdb76b\";\nvar darkmagenta = \"#8b008b\";\nvar darkolivegreen = \"#556b2f\";\nvar darkorange = \"#ff8c00\";\nvar darkorchid = \"#9932cc\";\nvar darkred = \"#8b0000\";\nvar darksalmon = \"#e9967a\";\nvar darkseagreen = \"#8fbc8f\";\nvar darkslateblue = \"#483d8b\";\nvar darkslategray = \"#2f4f4f\";\nvar darkslategrey = \"#2f4f4f\";\nvar darkturquoise = \"#00ced1\";\nvar darkviolet = \"#9400d3\";\nvar deeppink = \"#ff1493\";\nvar deepskyblue = \"#00bfff\";\nvar dimgray = \"#696969\";\nvar dimgrey = \"#696969\";\nvar dodgerblue = \"#1e90ff\";\nvar firebrick = \"#b22222\";\nvar floralwhite = \"#fffaf0\";\nvar forestgreen = \"#228b22\";\nvar fuchsia = \"#ff00ff\";\nvar gainsboro = \"#dcdcdc\";\nvar ghostwhite = \"#f8f8ff\";\nvar goldenrod = \"#daa520\";\nvar gold = \"#ffd700\";\nvar gray = \"#808080\";\nvar green = \"#008000\";\nvar greenyellow = \"#adff2f\";\nvar grey = \"#808080\";\nvar honeydew = \"#f0fff0\";\nvar hotpink = \"#ff69b4\";\nvar indianred = \"#cd5c5c\";\nvar indigo = \"#4b0082\";\nvar ivory = \"#fffff0\";\nvar khaki = \"#f0e68c\";\nvar lavenderblush = \"#fff0f5\";\nvar lavender = \"#e6e6fa\";\nvar lawngreen = \"#7cfc00\";\nvar lemonchiffon = \"#fffacd\";\nvar lightblue = \"#add8e6\";\nvar lightcoral = \"#f08080\";\nvar lightcyan = \"#e0ffff\";\nvar lightgoldenrodyellow = \"#fafad2\";\nvar lightgray = \"#d3d3d3\";\nvar lightgreen = \"#90ee90\";\nvar lightgrey = \"#d3d3d3\";\nvar lightpink = \"#ffb6c1\";\nvar lightsalmon = \"#ffa07a\";\nvar lightseagreen = \"#20b2aa\";\nvar lightskyblue = \"#87cefa\";\nvar lightslategray = \"#778899\";\nvar lightslategrey = \"#778899\";\nvar lightsteelblue = \"#b0c4de\";\nvar lightyellow = \"#ffffe0\";\nvar lime = \"#00ff00\";\nvar limegreen = \"#32cd32\";\nvar linen = \"#faf0e6\";\nvar magenta = \"#ff00ff\";\nvar maroon = \"#800000\";\nvar mediumaquamarine = \"#66cdaa\";\nvar mediumblue = \"#0000cd\";\nvar mediumorchid = \"#ba55d3\";\nvar mediumpurple = \"#9370db\";\nvar mediumseagreen = \"#3cb371\";\nvar mediumslateblue = \"#7b68ee\";\nvar mediumspringgreen = \"#00fa9a\";\nvar mediumturquoise = \"#48d1cc\";\nvar mediumvioletred = \"#c71585\";\nvar midnightblue = \"#191970\";\nvar mintcream = \"#f5fffa\";\nvar mistyrose = \"#ffe4e1\";\nvar moccasin = \"#ffe4b5\";\nvar navajowhite = \"#ffdead\";\nvar navy = \"#000080\";\nvar oldlace = \"#fdf5e6\";\nvar olive = \"#808000\";\nvar olivedrab = \"#6b8e23\";\nvar orange = \"#ffa500\";\nvar orangered = \"#ff4500\";\nvar orchid = \"#da70d6\";\nvar palegoldenrod = \"#eee8aa\";\nvar palegreen = \"#98fb98\";\nvar paleturquoise = \"#afeeee\";\nvar palevioletred = \"#db7093\";\nvar papayawhip = \"#ffefd5\";\nvar peachpuff = \"#ffdab9\";\nvar peru = \"#cd853f\";\nvar pink = \"#ffc0cb\";\nvar plum = \"#dda0dd\";\nvar powderblue = \"#b0e0e6\";\nvar purple = \"#800080\";\nvar rebeccapurple = \"#663399\";\nvar red = \"#ff0000\";\nvar rosybrown = \"#bc8f8f\";\nvar royalblue = \"#4169e1\";\nvar saddlebrown = \"#8b4513\";\nvar salmon = \"#fa8072\";\nvar sandybrown = \"#f4a460\";\nvar seagreen = \"#2e8b57\";\nvar seashell = \"#fff5ee\";\nvar sienna = \"#a0522d\";\nvar silver = \"#c0c0c0\";\nvar skyblue = \"#87ceeb\";\nvar slateblue = \"#6a5acd\";\nvar slategray = \"#708090\";\nvar slategrey = \"#708090\";\nvar snow = \"#fffafa\";\nvar springgreen = \"#00ff7f\";\nvar steelblue = \"#4682b4\";\nvar tan = \"#d2b48c\";\nvar teal = \"#008080\";\nvar thistle = \"#d8bfd8\";\nvar tomato = \"#ff6347\";\nvar turquoise = \"#40e0d0\";\nvar violet = \"#ee82ee\";\nvar wheat = \"#f5deb3\";\nvar white = \"#ffffff\";\nvar whitesmoke = \"#f5f5f5\";\nvar yellow = \"#ffff00\";\nvar yellowgreen = \"#9acd32\";\nvar cssColorNames = {\n\taliceblue: aliceblue,\n\tantiquewhite: antiquewhite,\n\taqua: aqua,\n\taquamarine: aquamarine,\n\tazure: azure,\n\tbeige: beige,\n\tbisque: bisque,\n\tblack: black,\n\tblanchedalmond: blanchedalmond,\n\tblue: blue,\n\tblueviolet: blueviolet,\n\tbrown: brown,\n\tburlywood: burlywood,\n\tcadetblue: cadetblue,\n\tchartreuse: chartreuse,\n\tchocolate: chocolate,\n\tcoral: coral,\n\tcornflowerblue: cornflowerblue,\n\tcornsilk: cornsilk,\n\tcrimson: crimson,\n\tcyan: cyan,\n\tdarkblue: darkblue,\n\tdarkcyan: darkcyan,\n\tdarkgoldenrod: darkgoldenrod,\n\tdarkgray: darkgray,\n\tdarkgreen: darkgreen,\n\tdarkgrey: darkgrey,\n\tdarkkhaki: darkkhaki,\n\tdarkmagenta: darkmagenta,\n\tdarkolivegreen: darkolivegreen,\n\tdarkorange: darkorange,\n\tdarkorchid: darkorchid,\n\tdarkred: darkred,\n\tdarksalmon: darksalmon,\n\tdarkseagreen: darkseagreen,\n\tdarkslateblue: darkslateblue,\n\tdarkslategray: darkslategray,\n\tdarkslategrey: darkslategrey,\n\tdarkturquoise: darkturquoise,\n\tdarkviolet: darkviolet,\n\tdeeppink: deeppink,\n\tdeepskyblue: deepskyblue,\n\tdimgray: dimgray,\n\tdimgrey: dimgrey,\n\tdodgerblue: dodgerblue,\n\tfirebrick: firebrick,\n\tfloralwhite: floralwhite,\n\tforestgreen: forestgreen,\n\tfuchsia: fuchsia,\n\tgainsboro: gainsboro,\n\tghostwhite: ghostwhite,\n\tgoldenrod: goldenrod,\n\tgold: gold,\n\tgray: gray,\n\tgreen: green,\n\tgreenyellow: greenyellow,\n\tgrey: grey,\n\thoneydew: honeydew,\n\thotpink: hotpink,\n\tindianred: indianred,\n\tindigo: indigo,\n\tivory: ivory,\n\tkhaki: khaki,\n\tlavenderblush: lavenderblush,\n\tlavender: lavender,\n\tlawngreen: lawngreen,\n\tlemonchiffon: lemonchiffon,\n\tlightblue: lightblue,\n\tlightcoral: lightcoral,\n\tlightcyan: lightcyan,\n\tlightgoldenrodyellow: lightgoldenrodyellow,\n\tlightgray: lightgray,\n\tlightgreen: lightgreen,\n\tlightgrey: lightgrey,\n\tlightpink: lightpink,\n\tlightsalmon: lightsalmon,\n\tlightseagreen: lightseagreen,\n\tlightskyblue: lightskyblue,\n\tlightslategray: lightslategray,\n\tlightslategrey: lightslategrey,\n\tlightsteelblue: lightsteelblue,\n\tlightyellow: lightyellow,\n\tlime: lime,\n\tlimegreen: limegreen,\n\tlinen: linen,\n\tmagenta: magenta,\n\tmaroon: maroon,\n\tmediumaquamarine: mediumaquamarine,\n\tmediumblue: mediumblue,\n\tmediumorchid: mediumorchid,\n\tmediumpurple: mediumpurple,\n\tmediumseagreen: mediumseagreen,\n\tmediumslateblue: mediumslateblue,\n\tmediumspringgreen: mediumspringgreen,\n\tmediumturquoise: mediumturquoise,\n\tmediumvioletred: mediumvioletred,\n\tmidnightblue: midnightblue,\n\tmintcream: mintcream,\n\tmistyrose: mistyrose,\n\tmoccasin: moccasin,\n\tnavajowhite: navajowhite,\n\tnavy: navy,\n\toldlace: oldlace,\n\tolive: olive,\n\tolivedrab: olivedrab,\n\torange: orange,\n\torangered: orangered,\n\torchid: orchid,\n\tpalegoldenrod: palegoldenrod,\n\tpalegreen: palegreen,\n\tpaleturquoise: paleturquoise,\n\tpalevioletred: palevioletred,\n\tpapayawhip: papayawhip,\n\tpeachpuff: peachpuff,\n\tperu: peru,\n\tpink: pink,\n\tplum: plum,\n\tpowderblue: powderblue,\n\tpurple: purple,\n\trebeccapurple: rebeccapurple,\n\tred: red,\n\trosybrown: rosybrown,\n\troyalblue: royalblue,\n\tsaddlebrown: saddlebrown,\n\tsalmon: salmon,\n\tsandybrown: sandybrown,\n\tseagreen: seagreen,\n\tseashell: seashell,\n\tsienna: sienna,\n\tsilver: silver,\n\tskyblue: skyblue,\n\tslateblue: slateblue,\n\tslategray: slategray,\n\tslategrey: slategrey,\n\tsnow: snow,\n\tspringgreen: springgreen,\n\tsteelblue: steelblue,\n\ttan: tan,\n\tteal: teal,\n\tthistle: thistle,\n\ttomato: tomato,\n\tturquoise: turquoise,\n\tviolet: violet,\n\twheat: wheat,\n\twhite: white,\n\twhitesmoke: whitesmoke,\n\tyellow: yellow,\n\tyellowgreen: yellowgreen\n};\n\nexport { aliceblue, antiquewhite, aqua, aquamarine, azure, beige, bisque, black, blanchedalmond, blue, blueviolet, brown, burlywood, cadetblue, chartreuse, chocolate, coral, cornflowerblue, cornsilk, crimson, cyan, darkblue, darkcyan, darkgoldenrod, darkgray, darkgreen, darkgrey, darkkhaki, darkmagenta, darkolivegreen, darkorange, darkorchid, darkred, darksalmon, darkseagreen, darkslateblue, darkslategray, darkslategrey, darkturquoise, darkviolet, deeppink, deepskyblue, cssColorNames as default, dimgray, dimgrey, dodgerblue, firebrick, floralwhite, forestgreen, fuchsia, gainsboro, ghostwhite, gold, goldenrod, gray, green, greenyellow, grey, honeydew, hotpink, indianred, indigo, ivory, khaki, lavender, lavenderblush, lawngreen, lemonchiffon, lightblue, lightcoral, lightcyan, lightgoldenrodyellow, lightgray, lightgreen, lightgrey, lightpink, lightsalmon, lightseagreen, lightskyblue, lightslategray, lightslategrey, lightsteelblue, lightyellow, lime, limegreen, linen, magenta, maroon, mediumaquamarine, mediumblue, mediumorchid, mediumpurple, mediumseagreen, mediumslateblue, mediumspringgreen, mediumturquoise, mediumvioletred, midnightblue, mintcream, mistyrose, moccasin, navajowhite, navy, oldlace, olive, olivedrab, orange, orangered, orchid, palegoldenrod, palegreen, paleturquoise, palevioletred, papayawhip, peachpuff, peru, pink, plum, powderblue, purple, rebeccapurple, red, rosybrown, royalblue, saddlebrown, salmon, sandybrown, seagreen, seashell, sienna, silver, skyblue, slateblue, slategray, slategrey, snow, springgreen, steelblue, tan, teal, thistle, tomato, turquoise, violet, wheat, white, whitesmoke, yellow, yellowgreen };\n//# sourceMappingURL=css-color-names.mjs.map\n","import cssColorNames from '../node_modules/css-color-names/css-color-names.mjs';\n\nfunction hex2rgb(hex, out = []) {\n out[0] = (hex >> 16 & 255) / 255;\n out[1] = (hex >> 8 & 255) / 255;\n out[2] = (hex & 255) / 255;\n return out;\n}\nfunction hex2string(hex) {\n let hexString = hex.toString(16);\n hexString = \"000000\".substring(0, 6 - hexString.length) + hexString;\n return `#${hexString}`;\n}\nfunction string2hex(string) {\n if (typeof string === \"string\") {\n string = cssColorNames[string.toLowerCase()] || string;\n if (string[0] === \"#\") {\n string = string.slice(1);\n }\n if (string.length === 3) {\n const [r, g, b] = string;\n string = r + r + g + g + b + b;\n }\n }\n return parseInt(string, 16);\n}\nfunction rgb2hex(rgb) {\n return (rgb[0] * 255 << 16) + (rgb[1] * 255 << 8) + (rgb[2] * 255 | 0);\n}\n\nexport { hex2rgb, hex2string, rgb2hex, string2hex };\n//# sourceMappingURL=hex.mjs.map\n","import { BLEND_MODES } from '@pixi/constants';\n\nfunction mapPremultipliedBlendModes() {\n const pm = [];\n const npm = [];\n for (let i = 0; i < 32; i++) {\n pm[i] = i;\n npm[i] = i;\n }\n pm[BLEND_MODES.NORMAL_NPM] = BLEND_MODES.NORMAL;\n pm[BLEND_MODES.ADD_NPM] = BLEND_MODES.ADD;\n pm[BLEND_MODES.SCREEN_NPM] = BLEND_MODES.SCREEN;\n npm[BLEND_MODES.NORMAL] = BLEND_MODES.NORMAL_NPM;\n npm[BLEND_MODES.ADD] = BLEND_MODES.ADD_NPM;\n npm[BLEND_MODES.SCREEN] = BLEND_MODES.SCREEN_NPM;\n const array = [];\n array.push(npm);\n array.push(pm);\n return array;\n}\nconst premultiplyBlendMode = mapPremultipliedBlendModes();\nfunction correctBlendMode(blendMode, premultiplied) {\n return premultiplyBlendMode[premultiplied ? 1 : 0][blendMode];\n}\nfunction premultiplyRgba(rgb, alpha, out, premultiply) {\n out = out || new Float32Array(4);\n if (premultiply || premultiply === void 0) {\n out[0] = rgb[0] * alpha;\n out[1] = rgb[1] * alpha;\n out[2] = rgb[2] * alpha;\n } else {\n out[0] = rgb[0];\n out[1] = rgb[1];\n out[2] = rgb[2];\n }\n out[3] = alpha;\n return out;\n}\nfunction premultiplyTint(tint, alpha) {\n if (alpha === 1) {\n return (alpha * 255 << 24) + tint;\n }\n if (alpha === 0) {\n return 0;\n }\n let R = tint >> 16 & 255;\n let G = tint >> 8 & 255;\n let B = tint & 255;\n R = R * alpha + 0.5 | 0;\n G = G * alpha + 0.5 | 0;\n B = B * alpha + 0.5 | 0;\n return (alpha * 255 << 24) + (R << 16) + (G << 8) + B;\n}\nfunction premultiplyTintToRgba(tint, alpha, out, premultiply) {\n out = out || new Float32Array(4);\n out[0] = (tint >> 16 & 255) / 255;\n out[1] = (tint >> 8 & 255) / 255;\n out[2] = (tint & 255) / 255;\n if (premultiply || premultiply === void 0) {\n out[0] *= alpha;\n out[1] *= alpha;\n out[2] *= alpha;\n }\n out[3] = alpha;\n return out;\n}\n\nexport { correctBlendMode, premultiplyBlendMode, premultiplyRgba, premultiplyTint, premultiplyTintToRgba };\n//# sourceMappingURL=premultiply.mjs.map\n","function createIndicesForQuads(size, outBuffer = null) {\n const totalIndices = size * 6;\n outBuffer = outBuffer || new Uint16Array(totalIndices);\n if (outBuffer.length !== totalIndices) {\n throw new Error(`Out buffer length is incorrect, got ${outBuffer.length} and expected ${totalIndices}`);\n }\n for (let i = 0, j = 0; i < totalIndices; i += 6, j += 4) {\n outBuffer[i + 0] = j + 0;\n outBuffer[i + 1] = j + 1;\n outBuffer[i + 2] = j + 2;\n outBuffer[i + 3] = j + 0;\n outBuffer[i + 4] = j + 2;\n outBuffer[i + 5] = j + 3;\n }\n return outBuffer;\n}\n\nexport { createIndicesForQuads };\n//# sourceMappingURL=createIndicesForQuads.mjs.map\n","function getBufferType(array) {\n if (array.BYTES_PER_ELEMENT === 4) {\n if (array instanceof Float32Array) {\n return \"Float32Array\";\n } else if (array instanceof Uint32Array) {\n return \"Uint32Array\";\n }\n return \"Int32Array\";\n } else if (array.BYTES_PER_ELEMENT === 2) {\n if (array instanceof Uint16Array) {\n return \"Uint16Array\";\n }\n } else if (array.BYTES_PER_ELEMENT === 1) {\n if (array instanceof Uint8Array) {\n return \"Uint8Array\";\n }\n }\n return null;\n}\n\nexport { getBufferType };\n//# sourceMappingURL=getBufferType.mjs.map\n","import { getBufferType } from './getBufferType.mjs';\n\nconst map = { Float32Array, Uint32Array, Int32Array, Uint8Array };\nfunction interleaveTypedArrays(arrays, sizes) {\n let outSize = 0;\n let stride = 0;\n const views = {};\n for (let i = 0; i < arrays.length; i++) {\n stride += sizes[i];\n outSize += arrays[i].length;\n }\n const buffer = new ArrayBuffer(outSize * 4);\n let out = null;\n let littleOffset = 0;\n for (let i = 0; i < arrays.length; i++) {\n const size = sizes[i];\n const array = arrays[i];\n const type = getBufferType(array);\n if (!views[type]) {\n views[type] = new map[type](buffer);\n }\n out = views[type];\n for (let j = 0; j < array.length; j++) {\n const indexStart = (j / size | 0) * stride + littleOffset;\n const index = j % size;\n out[indexStart + index] = array[j];\n }\n littleOffset += size;\n }\n return new Float32Array(buffer);\n}\n\nexport { interleaveTypedArrays };\n//# sourceMappingURL=interleaveTypedArrays.mjs.map\n","function nextPow2(v) {\n v += v === 0 ? 1 : 0;\n --v;\n v |= v >>> 1;\n v |= v >>> 2;\n v |= v >>> 4;\n v |= v >>> 8;\n v |= v >>> 16;\n return v + 1;\n}\nfunction isPow2(v) {\n return !(v & v - 1) && !!v;\n}\nfunction log2(v) {\n let r = (v > 65535 ? 1 : 0) << 4;\n v >>>= r;\n let shift = (v > 255 ? 1 : 0) << 3;\n v >>>= shift;\n r |= shift;\n shift = (v > 15 ? 1 : 0) << 2;\n v >>>= shift;\n r |= shift;\n shift = (v > 3 ? 1 : 0) << 1;\n v >>>= shift;\n r |= shift;\n return r | v >> 1;\n}\n\nexport { isPow2, log2, nextPow2 };\n//# sourceMappingURL=pow2.mjs.map\n","function removeItems(arr, startIdx, removeCount) {\n const length = arr.length;\n let i;\n if (startIdx >= length || removeCount === 0) {\n return;\n }\n removeCount = startIdx + removeCount > length ? length - startIdx : removeCount;\n const len = length - removeCount;\n for (i = startIdx; i < len; ++i) {\n arr[i] = arr[i + removeCount];\n }\n arr.length = len;\n}\n\nexport { removeItems };\n//# sourceMappingURL=removeItems.mjs.map\n","function sign(n) {\n if (n === 0)\n return 0;\n return n < 0 ? -1 : 1;\n}\n\nexport { sign };\n//# sourceMappingURL=sign.mjs.map\n","let nextUid = 0;\nfunction uid() {\n return ++nextUid;\n}\n\nexport { uid };\n//# sourceMappingURL=uid.mjs.map\n","const warnings = {};\nfunction deprecation(version, message, ignoreDepth = 3) {\n if (warnings[message]) {\n return;\n }\n let stack = new Error().stack;\n if (typeof stack === \"undefined\") {\n console.warn(\"PixiJS Deprecation Warning: \", `${message}\nDeprecated since v${version}`);\n } else {\n stack = stack.split(\"\\n\").splice(ignoreDepth).join(\"\\n\");\n if (console.groupCollapsed) {\n console.groupCollapsed(\"%cPixiJS Deprecation Warning: %c%s\", \"color:#614108;background:#fffbe6\", \"font-weight:normal;color:#614108;background:#fffbe6\", `${message}\nDeprecated since v${version}`);\n console.warn(stack);\n console.groupEnd();\n } else {\n console.warn(\"PixiJS Deprecation Warning: \", `${message}\nDeprecated since v${version}`);\n console.warn(stack);\n }\n }\n warnings[message] = true;\n}\n\nexport { deprecation };\n//# sourceMappingURL=deprecation.mjs.map\n","const ProgramCache = {};\nconst TextureCache = /* @__PURE__ */ Object.create(null);\nconst BaseTextureCache = /* @__PURE__ */ Object.create(null);\nfunction destroyTextureCache() {\n let key;\n for (key in TextureCache) {\n TextureCache[key].destroy();\n }\n for (key in BaseTextureCache) {\n BaseTextureCache[key].destroy();\n }\n}\nfunction clearTextureCache() {\n let key;\n for (key in TextureCache) {\n delete TextureCache[key];\n }\n for (key in BaseTextureCache) {\n delete BaseTextureCache[key];\n }\n}\n\nexport { BaseTextureCache, ProgramCache, TextureCache, clearTextureCache, destroyTextureCache };\n//# sourceMappingURL=caches.mjs.map\n","import { settings } from '@pixi/settings';\n\nclass CanvasRenderTarget {\n constructor(width, height, resolution) {\n this.canvas = settings.ADAPTER.createCanvas();\n this.context = this.canvas.getContext(\"2d\");\n this.resolution = resolution || settings.RESOLUTION;\n this.resize(width, height);\n }\n clear() {\n this.context.setTransform(1, 0, 0, 1, 0, 0);\n this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n resize(desiredWidth, desiredHeight) {\n this.canvas.width = Math.round(desiredWidth * this.resolution);\n this.canvas.height = Math.round(desiredHeight * this.resolution);\n }\n destroy() {\n this.context = null;\n this.canvas = null;\n }\n get width() {\n return this.canvas.width;\n }\n set width(val) {\n this.canvas.width = Math.round(val);\n }\n get height() {\n return this.canvas.height;\n }\n set height(val) {\n this.canvas.height = Math.round(val);\n }\n}\n\nexport { CanvasRenderTarget };\n//# sourceMappingURL=CanvasRenderTarget.mjs.map\n","function trimCanvas(canvas) {\n let width = canvas.width;\n let height = canvas.height;\n const context = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const imageData = context.getImageData(0, 0, width, height);\n const pixels = imageData.data;\n const len = pixels.length;\n const bound = {\n top: null,\n left: null,\n right: null,\n bottom: null\n };\n let data = null;\n let i;\n let x;\n let y;\n for (i = 0; i < len; i += 4) {\n if (pixels[i + 3] !== 0) {\n x = i / 4 % width;\n y = ~~(i / 4 / width);\n if (bound.top === null) {\n bound.top = y;\n }\n if (bound.left === null) {\n bound.left = x;\n } else if (x < bound.left) {\n bound.left = x;\n }\n if (bound.right === null) {\n bound.right = x + 1;\n } else if (bound.right < x) {\n bound.right = x + 1;\n }\n if (bound.bottom === null) {\n bound.bottom = y;\n } else if (bound.bottom < y) {\n bound.bottom = y;\n }\n }\n }\n if (bound.top !== null) {\n width = bound.right - bound.left;\n height = bound.bottom - bound.top + 1;\n data = context.getImageData(bound.left, bound.top, width, height);\n }\n return {\n height,\n width,\n data\n };\n}\n\nexport { trimCanvas };\n//# sourceMappingURL=trimCanvas.mjs.map\n","const DATA_URI = /^\\s*data:(?:([\\w-]+)\\/([\\w+.-]+))?(?:;charset=([\\w-]+))?(?:;(base64))?,(.*)/i;\n\nexport { DATA_URI };\n//# sourceMappingURL=const.mjs.map\n","import { DATA_URI } from '../const.mjs';\n\nfunction decomposeDataUri(dataUri) {\n const dataUriMatch = DATA_URI.exec(dataUri);\n if (dataUriMatch) {\n return {\n mediaType: dataUriMatch[1] ? dataUriMatch[1].toLowerCase() : void 0,\n subType: dataUriMatch[2] ? dataUriMatch[2].toLowerCase() : void 0,\n charset: dataUriMatch[3] ? dataUriMatch[3].toLowerCase() : void 0,\n encoding: dataUriMatch[4] ? dataUriMatch[4].toLowerCase() : void 0,\n data: dataUriMatch[5]\n };\n }\n return void 0;\n}\n\nexport { decomposeDataUri };\n//# sourceMappingURL=decomposeDataUri.mjs.map\n","import { url } from '../url.mjs';\n\nlet tempAnchor;\nfunction determineCrossOrigin(url$1, loc = globalThis.location) {\n if (url$1.startsWith(\"data:\")) {\n return \"\";\n }\n loc = loc || globalThis.location;\n if (!tempAnchor) {\n tempAnchor = document.createElement(\"a\");\n }\n tempAnchor.href = url$1;\n const parsedUrl = url.parse(tempAnchor.href);\n const samePort = !parsedUrl.port && loc.port === \"\" || parsedUrl.port === loc.port;\n if (parsedUrl.hostname !== loc.hostname || !samePort || parsedUrl.protocol !== loc.protocol) {\n return \"anonymous\";\n }\n return \"\";\n}\n\nexport { determineCrossOrigin };\n//# sourceMappingURL=determineCrossOrigin.mjs.map\n","import '../settings.mjs';\nimport { settings } from '@pixi/settings';\n\nfunction getResolutionOfUrl(url, defaultValue = 1) {\n const resolution = settings.RETINA_PREFIX.exec(url);\n if (resolution) {\n return parseFloat(resolution[1]);\n }\n return defaultValue;\n}\n\nexport { getResolutionOfUrl };\n//# sourceMappingURL=getResolutionOfUrl.mjs.map\n","const INSTALLED = [];\nfunction autoDetectResource(source, options) {\n if (!source) {\n return null;\n }\n let extension = \"\";\n if (typeof source === \"string\") {\n const result = /\\.(\\w{3,4})(?:$|\\?|#)/i.exec(source);\n if (result) {\n extension = result[1].toLowerCase();\n }\n }\n for (let i = INSTALLED.length - 1; i >= 0; --i) {\n const ResourcePlugin = INSTALLED[i];\n if (ResourcePlugin.test && ResourcePlugin.test(source, extension)) {\n return new ResourcePlugin(source, options);\n }\n }\n throw new Error(\"Unrecognized source type to auto-detect Resource\");\n}\n\nexport { INSTALLED, autoDetectResource };\n//# sourceMappingURL=autoDetectResource.mjs.map\n","import { Runner } from '@pixi/runner';\n\nclass Resource {\n constructor(width = 0, height = 0) {\n this._width = width;\n this._height = height;\n this.destroyed = false;\n this.internal = false;\n this.onResize = new Runner(\"setRealSize\");\n this.onUpdate = new Runner(\"update\");\n this.onError = new Runner(\"onError\");\n }\n bind(baseTexture) {\n this.onResize.add(baseTexture);\n this.onUpdate.add(baseTexture);\n this.onError.add(baseTexture);\n if (this._width || this._height) {\n this.onResize.emit(this._width, this._height);\n }\n }\n unbind(baseTexture) {\n this.onResize.remove(baseTexture);\n this.onUpdate.remove(baseTexture);\n this.onError.remove(baseTexture);\n }\n resize(width, height) {\n if (width !== this._width || height !== this._height) {\n this._width = width;\n this._height = height;\n this.onResize.emit(width, height);\n }\n }\n get valid() {\n return !!this._width && !!this._height;\n }\n update() {\n if (!this.destroyed) {\n this.onUpdate.emit();\n }\n }\n load() {\n return Promise.resolve(this);\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n style(_renderer, _baseTexture, _glTexture) {\n return false;\n }\n dispose() {\n }\n destroy() {\n if (!this.destroyed) {\n this.destroyed = true;\n this.dispose();\n this.onError.removeAll();\n this.onError = null;\n this.onResize.removeAll();\n this.onResize = null;\n this.onUpdate.removeAll();\n this.onUpdate = null;\n }\n }\n static test(_source, _extension) {\n return false;\n }\n}\n\nexport { Resource };\n//# sourceMappingURL=Resource.mjs.map\n","import { Resource } from './Resource.mjs';\nimport { ALPHA_MODES } from '@pixi/constants';\n\nclass BufferResource extends Resource {\n constructor(source, options) {\n const { width, height } = options || {};\n if (!width || !height) {\n throw new Error(\"BufferResource width or height invalid\");\n }\n super(width, height);\n this.data = source;\n }\n upload(renderer, baseTexture, glTexture) {\n const gl = renderer.gl;\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK);\n const width = baseTexture.realWidth;\n const height = baseTexture.realHeight;\n if (glTexture.width === width && glTexture.height === height) {\n gl.texSubImage2D(baseTexture.target, 0, 0, 0, width, height, baseTexture.format, glTexture.type, this.data);\n } else {\n glTexture.width = width;\n glTexture.height = height;\n gl.texImage2D(baseTexture.target, 0, glTexture.internalFormat, width, height, 0, baseTexture.format, glTexture.type, this.data);\n }\n return true;\n }\n dispose() {\n this.data = null;\n }\n static test(source) {\n return source instanceof Float32Array || source instanceof Uint8Array || source instanceof Uint32Array;\n }\n}\n\nexport { BufferResource };\n//# sourceMappingURL=BufferResource.mjs.map\n","import { EventEmitter, uid, isPow2, BaseTextureCache, TextureCache } from '@pixi/utils';\nimport { SCALE_MODES, FORMATS, ALPHA_MODES, TYPES, TARGETS } from '@pixi/constants';\nimport { Resource } from './resources/Resource.mjs';\nimport { BufferResource } from './resources/BufferResource.mjs';\nimport { autoDetectResource } from './resources/autoDetectResource.mjs';\nimport { settings } from '@pixi/settings';\n\nconst defaultBufferOptions = {\n scaleMode: SCALE_MODES.NEAREST,\n format: FORMATS.RGBA,\n alphaMode: ALPHA_MODES.NPM\n};\nconst _BaseTexture = class extends EventEmitter {\n constructor(resource = null, options = null) {\n super();\n options = options || {};\n const {\n alphaMode,\n mipmap,\n anisotropicLevel,\n scaleMode,\n width,\n height,\n wrapMode,\n format,\n type,\n target,\n resolution,\n resourceOptions\n } = options;\n if (resource && !(resource instanceof Resource)) {\n resource = autoDetectResource(resource, resourceOptions);\n resource.internal = true;\n }\n this.resolution = resolution || settings.RESOLUTION;\n this.width = Math.round((width || 0) * this.resolution) / this.resolution;\n this.height = Math.round((height || 0) * this.resolution) / this.resolution;\n this._mipmap = mipmap ?? settings.MIPMAP_TEXTURES;\n this.anisotropicLevel = anisotropicLevel ?? settings.ANISOTROPIC_LEVEL;\n this._wrapMode = wrapMode || settings.WRAP_MODE;\n this._scaleMode = scaleMode ?? settings.SCALE_MODE;\n this.format = format || FORMATS.RGBA;\n this.type = type || TYPES.UNSIGNED_BYTE;\n this.target = target || TARGETS.TEXTURE_2D;\n this.alphaMode = alphaMode ?? ALPHA_MODES.UNPACK;\n this.uid = uid();\n this.touched = 0;\n this.isPowerOfTwo = false;\n this._refreshPOT();\n this._glTextures = {};\n this.dirtyId = 0;\n this.dirtyStyleId = 0;\n this.cacheId = null;\n this.valid = width > 0 && height > 0;\n this.textureCacheIds = [];\n this.destroyed = false;\n this.resource = null;\n this._batchEnabled = 0;\n this._batchLocation = 0;\n this.parentTextureArray = null;\n this.setResource(resource);\n }\n get realWidth() {\n return Math.round(this.width * this.resolution);\n }\n get realHeight() {\n return Math.round(this.height * this.resolution);\n }\n get mipmap() {\n return this._mipmap;\n }\n set mipmap(value) {\n if (this._mipmap !== value) {\n this._mipmap = value;\n this.dirtyStyleId++;\n }\n }\n get scaleMode() {\n return this._scaleMode;\n }\n set scaleMode(value) {\n if (this._scaleMode !== value) {\n this._scaleMode = value;\n this.dirtyStyleId++;\n }\n }\n get wrapMode() {\n return this._wrapMode;\n }\n set wrapMode(value) {\n if (this._wrapMode !== value) {\n this._wrapMode = value;\n this.dirtyStyleId++;\n }\n }\n setStyle(scaleMode, mipmap) {\n let dirty;\n if (scaleMode !== void 0 && scaleMode !== this.scaleMode) {\n this.scaleMode = scaleMode;\n dirty = true;\n }\n if (mipmap !== void 0 && mipmap !== this.mipmap) {\n this.mipmap = mipmap;\n dirty = true;\n }\n if (dirty) {\n this.dirtyStyleId++;\n }\n return this;\n }\n setSize(desiredWidth, desiredHeight, resolution) {\n resolution = resolution || this.resolution;\n return this.setRealSize(desiredWidth * resolution, desiredHeight * resolution, resolution);\n }\n setRealSize(realWidth, realHeight, resolution) {\n this.resolution = resolution || this.resolution;\n this.width = Math.round(realWidth) / this.resolution;\n this.height = Math.round(realHeight) / this.resolution;\n this._refreshPOT();\n this.update();\n return this;\n }\n _refreshPOT() {\n this.isPowerOfTwo = isPow2(this.realWidth) && isPow2(this.realHeight);\n }\n setResolution(resolution) {\n const oldResolution = this.resolution;\n if (oldResolution === resolution) {\n return this;\n }\n this.resolution = resolution;\n if (this.valid) {\n this.width = Math.round(this.width * oldResolution) / resolution;\n this.height = Math.round(this.height * oldResolution) / resolution;\n this.emit(\"update\", this);\n }\n this._refreshPOT();\n return this;\n }\n setResource(resource) {\n if (this.resource === resource) {\n return this;\n }\n if (this.resource) {\n throw new Error(\"Resource can be set only once\");\n }\n resource.bind(this);\n this.resource = resource;\n return this;\n }\n update() {\n if (!this.valid) {\n if (this.width > 0 && this.height > 0) {\n this.valid = true;\n this.emit(\"loaded\", this);\n this.emit(\"update\", this);\n }\n } else {\n this.dirtyId++;\n this.dirtyStyleId++;\n this.emit(\"update\", this);\n }\n }\n onError(event) {\n this.emit(\"error\", this, event);\n }\n destroy() {\n if (this.resource) {\n this.resource.unbind(this);\n if (this.resource.internal) {\n this.resource.destroy();\n }\n this.resource = null;\n }\n if (this.cacheId) {\n delete BaseTextureCache[this.cacheId];\n delete TextureCache[this.cacheId];\n this.cacheId = null;\n }\n this.dispose();\n _BaseTexture.removeFromCache(this);\n this.textureCacheIds = null;\n this.destroyed = true;\n }\n dispose() {\n this.emit(\"dispose\", this);\n }\n castToBaseTexture() {\n return this;\n }\n static from(source, options, strict = settings.STRICT_TEXTURE_CACHE) {\n const isFrame = typeof source === \"string\";\n let cacheId = null;\n if (isFrame) {\n cacheId = source;\n } else {\n if (!source._pixiId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source._pixiId = `${prefix}_${uid()}`;\n }\n cacheId = source._pixiId;\n }\n let baseTexture = BaseTextureCache[cacheId];\n if (isFrame && strict && !baseTexture) {\n throw new Error(`The cacheId \"${cacheId}\" does not exist in BaseTextureCache.`);\n }\n if (!baseTexture) {\n baseTexture = new _BaseTexture(source, options);\n baseTexture.cacheId = cacheId;\n _BaseTexture.addToCache(baseTexture, cacheId);\n }\n return baseTexture;\n }\n static fromBuffer(buffer, width, height, options) {\n buffer = buffer || new Float32Array(width * height * 4);\n const resource = new BufferResource(buffer, { width, height });\n const type = buffer instanceof Float32Array ? TYPES.FLOAT : TYPES.UNSIGNED_BYTE;\n return new _BaseTexture(resource, Object.assign({}, defaultBufferOptions, options || { width, height, type }));\n }\n static addToCache(baseTexture, id) {\n if (id) {\n if (!baseTexture.textureCacheIds.includes(id)) {\n baseTexture.textureCacheIds.push(id);\n }\n if (BaseTextureCache[id]) {\n console.warn(`BaseTexture added to the cache with an id [${id}] that already had an entry`);\n }\n BaseTextureCache[id] = baseTexture;\n }\n }\n static removeFromCache(baseTexture) {\n if (typeof baseTexture === \"string\") {\n const baseTextureFromCache = BaseTextureCache[baseTexture];\n if (baseTextureFromCache) {\n const index = baseTextureFromCache.textureCacheIds.indexOf(baseTexture);\n if (index > -1) {\n baseTextureFromCache.textureCacheIds.splice(index, 1);\n }\n delete BaseTextureCache[baseTexture];\n return baseTextureFromCache;\n }\n } else if (baseTexture?.textureCacheIds) {\n for (let i = 0; i < baseTexture.textureCacheIds.length; ++i) {\n delete BaseTextureCache[baseTexture.textureCacheIds[i]];\n }\n baseTexture.textureCacheIds.length = 0;\n return baseTexture;\n }\n return null;\n }\n};\nlet BaseTexture = _BaseTexture;\nBaseTexture._globalBatch = 0;\n\nexport { BaseTexture };\n//# sourceMappingURL=BaseTexture.mjs.map\n","import { Resource } from './Resource.mjs';\nimport { BaseTexture } from '../BaseTexture.mjs';\nimport { autoDetectResource } from './autoDetectResource.mjs';\n\nclass AbstractMultiResource extends Resource {\n constructor(length, options) {\n const { width, height } = options || {};\n super(width, height);\n this.items = [];\n this.itemDirtyIds = [];\n for (let i = 0; i < length; i++) {\n const partTexture = new BaseTexture();\n this.items.push(partTexture);\n this.itemDirtyIds.push(-2);\n }\n this.length = length;\n this._load = null;\n this.baseTexture = null;\n }\n initFromArray(resources, options) {\n for (let i = 0; i < this.length; i++) {\n if (!resources[i]) {\n continue;\n }\n if (resources[i].castToBaseTexture) {\n this.addBaseTextureAt(resources[i].castToBaseTexture(), i);\n } else if (resources[i] instanceof Resource) {\n this.addResourceAt(resources[i], i);\n } else {\n this.addResourceAt(autoDetectResource(resources[i], options), i);\n }\n }\n }\n dispose() {\n for (let i = 0, len = this.length; i < len; i++) {\n this.items[i].destroy();\n }\n this.items = null;\n this.itemDirtyIds = null;\n this._load = null;\n }\n addResourceAt(resource, index) {\n if (!this.items[index]) {\n throw new Error(`Index ${index} is out of bounds`);\n }\n if (resource.valid && !this.valid) {\n this.resize(resource.width, resource.height);\n }\n this.items[index].setResource(resource);\n return this;\n }\n bind(baseTexture) {\n if (this.baseTexture !== null) {\n throw new Error(\"Only one base texture per TextureArray is allowed\");\n }\n super.bind(baseTexture);\n for (let i = 0; i < this.length; i++) {\n this.items[i].parentTextureArray = baseTexture;\n this.items[i].on(\"update\", baseTexture.update, baseTexture);\n }\n }\n unbind(baseTexture) {\n super.unbind(baseTexture);\n for (let i = 0; i < this.length; i++) {\n this.items[i].parentTextureArray = null;\n this.items[i].off(\"update\", baseTexture.update, baseTexture);\n }\n }\n load() {\n if (this._load) {\n return this._load;\n }\n const resources = this.items.map((item) => item.resource).filter((item) => item);\n const promises = resources.map((item) => item.load());\n this._load = Promise.all(promises).then(() => {\n const { realWidth, realHeight } = this.items[0];\n this.resize(realWidth, realHeight);\n return Promise.resolve(this);\n });\n return this._load;\n }\n}\n\nexport { AbstractMultiResource };\n//# sourceMappingURL=AbstractMultiResource.mjs.map\n","import { TARGETS } from '@pixi/constants';\nimport { AbstractMultiResource } from './AbstractMultiResource.mjs';\n\nclass ArrayResource extends AbstractMultiResource {\n constructor(source, options) {\n const { width, height } = options || {};\n let urls;\n let length;\n if (Array.isArray(source)) {\n urls = source;\n length = source.length;\n } else {\n length = source;\n }\n super(length, { width, height });\n if (urls) {\n this.initFromArray(urls, options);\n }\n }\n addBaseTextureAt(baseTexture, index) {\n if (baseTexture.resource) {\n this.addResourceAt(baseTexture.resource, index);\n } else {\n throw new Error(\"ArrayResource does not support RenderTexture\");\n }\n return this;\n }\n bind(baseTexture) {\n super.bind(baseTexture);\n baseTexture.target = TARGETS.TEXTURE_2D_ARRAY;\n }\n upload(renderer, texture, glTexture) {\n const { length, itemDirtyIds, items } = this;\n const { gl } = renderer;\n if (glTexture.dirtyId < 0) {\n gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, glTexture.internalFormat, this._width, this._height, length, 0, texture.format, glTexture.type, null);\n }\n for (let i = 0; i < length; i++) {\n const item = items[i];\n if (itemDirtyIds[i] < item.dirtyId) {\n itemDirtyIds[i] = item.dirtyId;\n if (item.valid) {\n gl.texSubImage3D(gl.TEXTURE_2D_ARRAY, 0, 0, 0, i, item.resource.width, item.resource.height, 1, texture.format, glTexture.type, item.resource.source);\n }\n }\n }\n return true;\n }\n}\n\nexport { ArrayResource };\n//# sourceMappingURL=ArrayResource.mjs.map\n","import { ALPHA_MODES } from '@pixi/constants';\nimport { determineCrossOrigin } from '@pixi/utils';\nimport { Resource } from './Resource.mjs';\n\nclass BaseImageResource extends Resource {\n constructor(source) {\n const sourceAny = source;\n const width = sourceAny.naturalWidth || sourceAny.videoWidth || sourceAny.width;\n const height = sourceAny.naturalHeight || sourceAny.videoHeight || sourceAny.height;\n super(width, height);\n this.source = source;\n this.noSubImage = false;\n }\n static crossOrigin(element, url, crossorigin) {\n if (crossorigin === void 0 && !url.startsWith(\"data:\")) {\n element.crossOrigin = determineCrossOrigin(url);\n } else if (crossorigin !== false) {\n element.crossOrigin = typeof crossorigin === \"string\" ? crossorigin : \"anonymous\";\n }\n }\n upload(renderer, baseTexture, glTexture, source) {\n const gl = renderer.gl;\n const width = baseTexture.realWidth;\n const height = baseTexture.realHeight;\n source = source || this.source;\n if (typeof HTMLImageElement !== \"undefined\" && source instanceof HTMLImageElement) {\n if (!source.complete || source.naturalWidth === 0) {\n return false;\n }\n } else if (typeof HTMLVideoElement !== \"undefined\" && source instanceof HTMLVideoElement) {\n if (source.readyState <= 1) {\n return false;\n }\n }\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK);\n if (!this.noSubImage && baseTexture.target === gl.TEXTURE_2D && glTexture.width === width && glTexture.height === height) {\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, baseTexture.format, glTexture.type, source);\n } else {\n glTexture.width = width;\n glTexture.height = height;\n gl.texImage2D(baseTexture.target, 0, glTexture.internalFormat, baseTexture.format, glTexture.type, source);\n }\n return true;\n }\n update() {\n if (this.destroyed) {\n return;\n }\n const source = this.source;\n const width = source.naturalWidth || source.videoWidth || source.width;\n const height = source.naturalHeight || source.videoHeight || source.height;\n this.resize(width, height);\n super.update();\n }\n dispose() {\n this.source = null;\n }\n}\n\nexport { BaseImageResource };\n//# sourceMappingURL=BaseImageResource.mjs.map\n","import { BaseImageResource } from './BaseImageResource.mjs';\n\nclass CanvasResource extends BaseImageResource {\n constructor(source) {\n super(source);\n }\n static test(source) {\n const { OffscreenCanvas } = globalThis;\n if (OffscreenCanvas && source instanceof OffscreenCanvas) {\n return true;\n }\n return globalThis.HTMLCanvasElement && source instanceof HTMLCanvasElement;\n }\n}\n\nexport { CanvasResource };\n//# sourceMappingURL=CanvasResource.mjs.map\n","import { AbstractMultiResource } from './AbstractMultiResource.mjs';\nimport { TARGETS } from '@pixi/constants';\n\nconst _CubeResource = class extends AbstractMultiResource {\n constructor(source, options) {\n const { width, height, autoLoad, linkBaseTexture } = options || {};\n if (source && source.length !== _CubeResource.SIDES) {\n throw new Error(`Invalid length. Got ${source.length}, expected 6`);\n }\n super(6, { width, height });\n for (let i = 0; i < _CubeResource.SIDES; i++) {\n this.items[i].target = TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + i;\n }\n this.linkBaseTexture = linkBaseTexture !== false;\n if (source) {\n this.initFromArray(source, options);\n }\n if (autoLoad !== false) {\n this.load();\n }\n }\n bind(baseTexture) {\n super.bind(baseTexture);\n baseTexture.target = TARGETS.TEXTURE_CUBE_MAP;\n }\n addBaseTextureAt(baseTexture, index, linkBaseTexture) {\n if (linkBaseTexture === void 0) {\n linkBaseTexture = this.linkBaseTexture;\n }\n if (!this.items[index]) {\n throw new Error(`Index ${index} is out of bounds`);\n }\n if (!this.linkBaseTexture || baseTexture.parentTextureArray || Object.keys(baseTexture._glTextures).length > 0) {\n if (baseTexture.resource) {\n this.addResourceAt(baseTexture.resource, index);\n } else {\n throw new Error(`CubeResource does not support copying of renderTexture.`);\n }\n } else {\n baseTexture.target = TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + index;\n baseTexture.parentTextureArray = this.baseTexture;\n this.items[index] = baseTexture;\n }\n if (baseTexture.valid && !this.valid) {\n this.resize(baseTexture.realWidth, baseTexture.realHeight);\n }\n this.items[index] = baseTexture;\n return this;\n }\n upload(renderer, _baseTexture, glTexture) {\n const dirty = this.itemDirtyIds;\n for (let i = 0; i < _CubeResource.SIDES; i++) {\n const side = this.items[i];\n if (dirty[i] < side.dirtyId || glTexture.dirtyId < _baseTexture.dirtyId) {\n if (side.valid && side.resource) {\n side.resource.upload(renderer, side, glTexture);\n dirty[i] = side.dirtyId;\n } else if (dirty[i] < -1) {\n renderer.gl.texImage2D(side.target, 0, glTexture.internalFormat, _baseTexture.realWidth, _baseTexture.realHeight, 0, _baseTexture.format, glTexture.type, null);\n dirty[i] = -1;\n }\n }\n }\n return true;\n }\n static test(source) {\n return Array.isArray(source) && source.length === _CubeResource.SIDES;\n }\n};\nlet CubeResource = _CubeResource;\nCubeResource.SIDES = 6;\n\nexport { CubeResource };\n//# sourceMappingURL=CubeResource.mjs.map\n","import { ALPHA_MODES } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\nimport { BaseImageResource } from './BaseImageResource.mjs';\n\nclass ImageResource extends BaseImageResource {\n constructor(source, options) {\n options = options || {};\n if (typeof source === \"string\") {\n const imageElement = new Image();\n BaseImageResource.crossOrigin(imageElement, source, options.crossorigin);\n imageElement.src = source;\n source = imageElement;\n }\n super(source);\n if (!source.complete && !!this._width && !!this._height) {\n this._width = 0;\n this._height = 0;\n }\n this.url = source.src;\n this._process = null;\n this.preserveBitmap = false;\n this.createBitmap = (options.createBitmap ?? settings.CREATE_IMAGE_BITMAP) && !!globalThis.createImageBitmap;\n this.alphaMode = typeof options.alphaMode === \"number\" ? options.alphaMode : null;\n this.bitmap = null;\n this._load = null;\n if (options.autoLoad !== false) {\n this.load();\n }\n }\n load(createBitmap) {\n if (this._load) {\n return this._load;\n }\n if (createBitmap !== void 0) {\n this.createBitmap = createBitmap;\n }\n this._load = new Promise((resolve, reject) => {\n const source = this.source;\n this.url = source.src;\n const completed = () => {\n if (this.destroyed) {\n return;\n }\n source.onload = null;\n source.onerror = null;\n this.resize(source.width, source.height);\n this._load = null;\n if (this.createBitmap) {\n resolve(this.process());\n } else {\n resolve(this);\n }\n };\n if (source.complete && source.src) {\n completed();\n } else {\n source.onload = completed;\n source.onerror = (event) => {\n reject(event);\n this.onError.emit(event);\n };\n }\n });\n return this._load;\n }\n process() {\n const source = this.source;\n if (this._process !== null) {\n return this._process;\n }\n if (this.bitmap !== null || !globalThis.createImageBitmap) {\n return Promise.resolve(this);\n }\n const createImageBitmap = globalThis.createImageBitmap;\n const cors = !source.crossOrigin || source.crossOrigin === \"anonymous\";\n this._process = fetch(source.src, {\n mode: cors ? \"cors\" : \"no-cors\"\n }).then((r) => r.blob()).then((blob) => createImageBitmap(blob, 0, 0, source.width, source.height, {\n premultiplyAlpha: this.alphaMode === null || this.alphaMode === ALPHA_MODES.UNPACK ? \"premultiply\" : \"none\"\n })).then((bitmap) => {\n if (this.destroyed) {\n return Promise.reject();\n }\n this.bitmap = bitmap;\n this.update();\n this._process = null;\n return Promise.resolve(this);\n });\n return this._process;\n }\n upload(renderer, baseTexture, glTexture) {\n if (typeof this.alphaMode === \"number\") {\n baseTexture.alphaMode = this.alphaMode;\n }\n if (!this.createBitmap) {\n return super.upload(renderer, baseTexture, glTexture);\n }\n if (!this.bitmap) {\n this.process();\n if (!this.bitmap) {\n return false;\n }\n }\n super.upload(renderer, baseTexture, glTexture, this.bitmap);\n if (!this.preserveBitmap) {\n let flag = true;\n const glTextures = baseTexture._glTextures;\n for (const key in glTextures) {\n const otherTex = glTextures[key];\n if (otherTex !== glTexture && otherTex.dirtyId !== baseTexture.dirtyId) {\n flag = false;\n break;\n }\n }\n if (flag) {\n if (this.bitmap.close) {\n this.bitmap.close();\n }\n this.bitmap = null;\n }\n }\n return true;\n }\n dispose() {\n this.source.onload = null;\n this.source.onerror = null;\n super.dispose();\n if (this.bitmap) {\n this.bitmap.close();\n this.bitmap = null;\n }\n this._process = null;\n this._load = null;\n }\n static test(source) {\n return typeof HTMLImageElement !== \"undefined\" && (typeof source === \"string\" || source instanceof HTMLImageElement);\n }\n}\n\nexport { ImageResource };\n//# sourceMappingURL=ImageResource.mjs.map\n","import { uid } from '@pixi/utils';\nimport { BaseImageResource } from './BaseImageResource.mjs';\nimport { settings } from '@pixi/settings';\n\nconst _SVGResource = class extends BaseImageResource {\n constructor(sourceBase64, options) {\n options = options || {};\n super(settings.ADAPTER.createCanvas());\n this._width = 0;\n this._height = 0;\n this.svg = sourceBase64;\n this.scale = options.scale || 1;\n this._overrideWidth = options.width;\n this._overrideHeight = options.height;\n this._resolve = null;\n this._crossorigin = options.crossorigin;\n this._load = null;\n if (options.autoLoad !== false) {\n this.load();\n }\n }\n load() {\n if (this._load) {\n return this._load;\n }\n this._load = new Promise((resolve) => {\n this._resolve = () => {\n this.resize(this.source.width, this.source.height);\n resolve(this);\n };\n if (_SVGResource.SVG_XML.test(this.svg.trim())) {\n if (!btoa) {\n throw new Error(\"Your browser doesn't support base64 conversions.\");\n }\n this.svg = `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`;\n }\n this._loadSvg();\n });\n return this._load;\n }\n _loadSvg() {\n const tempImage = new Image();\n BaseImageResource.crossOrigin(tempImage, this.svg, this._crossorigin);\n tempImage.src = this.svg;\n tempImage.onerror = (event) => {\n if (!this._resolve) {\n return;\n }\n tempImage.onerror = null;\n this.onError.emit(event);\n };\n tempImage.onload = () => {\n if (!this._resolve) {\n return;\n }\n const svgWidth = tempImage.width;\n const svgHeight = tempImage.height;\n if (!svgWidth || !svgHeight) {\n throw new Error(\"The SVG image must have width and height defined (in pixels), canvas API needs them.\");\n }\n let width = svgWidth * this.scale;\n let height = svgHeight * this.scale;\n if (this._overrideWidth || this._overrideHeight) {\n width = this._overrideWidth || this._overrideHeight / svgHeight * svgWidth;\n height = this._overrideHeight || this._overrideWidth / svgWidth * svgHeight;\n }\n width = Math.round(width);\n height = Math.round(height);\n const canvas = this.source;\n canvas.width = width;\n canvas.height = height;\n canvas._pixiId = `canvas_${uid()}`;\n canvas.getContext(\"2d\").drawImage(tempImage, 0, 0, svgWidth, svgHeight, 0, 0, width, height);\n this._resolve();\n this._resolve = null;\n };\n }\n static getSize(svgString) {\n const sizeMatch = _SVGResource.SVG_SIZE.exec(svgString);\n const size = {};\n if (sizeMatch) {\n size[sizeMatch[1]] = Math.round(parseFloat(sizeMatch[3]));\n size[sizeMatch[5]] = Math.round(parseFloat(sizeMatch[7]));\n }\n return size;\n }\n dispose() {\n super.dispose();\n this._resolve = null;\n this._crossorigin = null;\n }\n static test(source, extension) {\n return extension === \"svg\" || typeof source === \"string\" && source.startsWith(\"data:image/svg+xml\") || typeof source === \"string\" && _SVGResource.SVG_XML.test(source);\n }\n};\nlet SVGResource = _SVGResource;\nSVGResource.SVG_XML = /^(<\\?xml[^?]+\\?>)?\\s*()]*-->)?\\s*\\]*(?:\\s(width|height)=('|\")(\\d*(?:\\.\\d+)?)(?:px)?('|\"))[^>]*(?:\\s(width|height)=('|\")(\\d*(?:\\.\\d+)?)(?:px)?('|\"))[^>]*>/i;\n\nexport { SVGResource };\n//# sourceMappingURL=SVGResource.mjs.map\n","import { BaseImageResource } from './BaseImageResource.mjs';\nimport { Ticker } from '@pixi/ticker';\n\nconst _VideoResource = class extends BaseImageResource {\n constructor(source, options) {\n options = options || {};\n if (!(source instanceof HTMLVideoElement)) {\n const videoElement = document.createElement(\"video\");\n videoElement.setAttribute(\"preload\", \"auto\");\n videoElement.setAttribute(\"webkit-playsinline\", \"\");\n videoElement.setAttribute(\"playsinline\", \"\");\n if (typeof source === \"string\") {\n source = [source];\n }\n const firstSrc = source[0].src || source[0];\n BaseImageResource.crossOrigin(videoElement, firstSrc, options.crossorigin);\n for (let i = 0; i < source.length; ++i) {\n const sourceElement = document.createElement(\"source\");\n let { src, mime } = source[i];\n src = src || source[i];\n const baseSrc = src.split(\"?\").shift().toLowerCase();\n const ext = baseSrc.slice(baseSrc.lastIndexOf(\".\") + 1);\n mime = mime || _VideoResource.MIME_TYPES[ext] || `video/${ext}`;\n sourceElement.src = src;\n sourceElement.type = mime;\n videoElement.appendChild(sourceElement);\n }\n source = videoElement;\n }\n super(source);\n this.noSubImage = true;\n this._autoUpdate = true;\n this._isConnectedToTicker = false;\n this._updateFPS = options.updateFPS || 0;\n this._msToNextUpdate = 0;\n this.autoPlay = options.autoPlay !== false;\n this._load = null;\n this._resolve = null;\n this._onCanPlay = this._onCanPlay.bind(this);\n this._onError = this._onError.bind(this);\n if (options.autoLoad !== false) {\n this.load();\n }\n }\n update(_deltaTime = 0) {\n if (!this.destroyed) {\n const elapsedMS = Ticker.shared.elapsedMS * this.source.playbackRate;\n this._msToNextUpdate = Math.floor(this._msToNextUpdate - elapsedMS);\n if (!this._updateFPS || this._msToNextUpdate <= 0) {\n super.update();\n this._msToNextUpdate = this._updateFPS ? Math.floor(1e3 / this._updateFPS) : 0;\n }\n }\n }\n load() {\n if (this._load) {\n return this._load;\n }\n const source = this.source;\n if ((source.readyState === source.HAVE_ENOUGH_DATA || source.readyState === source.HAVE_FUTURE_DATA) && source.width && source.height) {\n source.complete = true;\n }\n source.addEventListener(\"play\", this._onPlayStart.bind(this));\n source.addEventListener(\"pause\", this._onPlayStop.bind(this));\n if (!this._isSourceReady()) {\n source.addEventListener(\"canplay\", this._onCanPlay);\n source.addEventListener(\"canplaythrough\", this._onCanPlay);\n source.addEventListener(\"error\", this._onError, true);\n } else {\n this._onCanPlay();\n }\n this._load = new Promise((resolve) => {\n if (this.valid) {\n resolve(this);\n } else {\n this._resolve = resolve;\n source.load();\n }\n });\n return this._load;\n }\n _onError(event) {\n this.source.removeEventListener(\"error\", this._onError, true);\n this.onError.emit(event);\n }\n _isSourcePlaying() {\n const source = this.source;\n return !source.paused && !source.ended && this._isSourceReady();\n }\n _isSourceReady() {\n const source = this.source;\n return source.readyState > 2;\n }\n _onPlayStart() {\n if (!this.valid) {\n this._onCanPlay();\n }\n if (this.autoUpdate && !this._isConnectedToTicker) {\n Ticker.shared.add(this.update, this);\n this._isConnectedToTicker = true;\n }\n }\n _onPlayStop() {\n if (this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n }\n _onCanPlay() {\n const source = this.source;\n source.removeEventListener(\"canplay\", this._onCanPlay);\n source.removeEventListener(\"canplaythrough\", this._onCanPlay);\n const valid = this.valid;\n this.resize(source.videoWidth, source.videoHeight);\n if (!valid && this._resolve) {\n this._resolve(this);\n this._resolve = null;\n }\n if (this._isSourcePlaying()) {\n this._onPlayStart();\n } else if (this.autoPlay) {\n source.play();\n }\n }\n dispose() {\n if (this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n const source = this.source;\n if (source) {\n source.removeEventListener(\"error\", this._onError, true);\n source.pause();\n source.src = \"\";\n source.load();\n }\n super.dispose();\n }\n get autoUpdate() {\n return this._autoUpdate;\n }\n set autoUpdate(value) {\n if (value !== this._autoUpdate) {\n this._autoUpdate = value;\n if (!this._autoUpdate && this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n } else if (this._autoUpdate && !this._isConnectedToTicker && this._isSourcePlaying()) {\n Ticker.shared.add(this.update, this);\n this._isConnectedToTicker = true;\n }\n }\n }\n get updateFPS() {\n return this._updateFPS;\n }\n set updateFPS(value) {\n if (value !== this._updateFPS) {\n this._updateFPS = value;\n }\n }\n static test(source, extension) {\n return globalThis.HTMLVideoElement && source instanceof HTMLVideoElement || _VideoResource.TYPES.includes(extension);\n }\n};\nlet VideoResource = _VideoResource;\nVideoResource.TYPES = [\"mp4\", \"m4v\", \"webm\", \"ogg\", \"ogv\", \"h264\", \"avi\", \"mov\"];\nVideoResource.MIME_TYPES = {\n ogv: \"video/ogg\",\n mov: \"video/quicktime\",\n m4v: \"video/mp4\"\n};\n\nexport { VideoResource };\n//# sourceMappingURL=VideoResource.mjs.map\n","import { ALPHA_MODES } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\nimport { BaseImageResource } from './BaseImageResource.mjs';\n\nclass ImageBitmapResource extends BaseImageResource {\n constructor(source, options) {\n var __super = (...args) => {\n super(...args);\n };\n options = options || {};\n if (typeof source === \"string\") {\n __super(ImageBitmapResource.EMPTY);\n this.url = source;\n } else {\n __super(source);\n this.url = null;\n }\n this.crossOrigin = options.crossOrigin ?? true;\n this.alphaMode = typeof options.alphaMode === \"number\" ? options.alphaMode : null;\n this._load = null;\n if (options.autoLoad !== false) {\n this.load();\n }\n }\n load() {\n if (this._load) {\n return this._load;\n }\n this._load = new Promise(async (resolve, reject) => {\n if (this.url === null) {\n resolve(this);\n return;\n }\n try {\n const response = await settings.ADAPTER.fetch(this.url, {\n mode: this.crossOrigin ? \"cors\" : \"no-cors\"\n });\n if (this.destroyed)\n return;\n const imageBlob = await response.blob();\n if (this.destroyed)\n return;\n const imageBitmap = await createImageBitmap(imageBlob, {\n premultiplyAlpha: this.alphaMode === null || this.alphaMode === ALPHA_MODES.UNPACK ? \"premultiply\" : \"none\"\n });\n if (this.destroyed)\n return;\n this.source = imageBitmap;\n this.update();\n resolve(this);\n } catch (e) {\n if (this.destroyed)\n return;\n reject(e);\n this.onError.emit(e);\n }\n });\n return this._load;\n }\n upload(renderer, baseTexture, glTexture) {\n if (!(this.source instanceof ImageBitmap)) {\n this.load();\n return false;\n }\n if (typeof this.alphaMode === \"number\") {\n baseTexture.alphaMode = this.alphaMode;\n }\n return super.upload(renderer, baseTexture, glTexture);\n }\n dispose() {\n if (this.source instanceof ImageBitmap) {\n this.source.close();\n }\n super.dispose();\n this._load = null;\n }\n static test(source) {\n return !!globalThis.createImageBitmap && typeof ImageBitmap !== \"undefined\" && (typeof source === \"string\" || source instanceof ImageBitmap);\n }\n static get EMPTY() {\n ImageBitmapResource._EMPTY = ImageBitmapResource._EMPTY ?? settings.ADAPTER.createCanvas(0, 0);\n return ImageBitmapResource._EMPTY;\n }\n}\n\nexport { ImageBitmapResource };\n//# sourceMappingURL=ImageBitmapResource.mjs.map\n","import { INSTALLED } from './autoDetectResource.mjs';\nexport { INSTALLED, autoDetectResource } from './autoDetectResource.mjs';\nimport { ArrayResource } from './ArrayResource.mjs';\nexport { ArrayResource } from './ArrayResource.mjs';\nimport { BufferResource } from './BufferResource.mjs';\nexport { BufferResource } from './BufferResource.mjs';\nimport { CanvasResource } from './CanvasResource.mjs';\nexport { CanvasResource } from './CanvasResource.mjs';\nimport { CubeResource } from './CubeResource.mjs';\nexport { CubeResource } from './CubeResource.mjs';\nimport { ImageResource } from './ImageResource.mjs';\nexport { ImageResource } from './ImageResource.mjs';\nimport { SVGResource } from './SVGResource.mjs';\nexport { SVGResource } from './SVGResource.mjs';\nimport { VideoResource } from './VideoResource.mjs';\nexport { VideoResource } from './VideoResource.mjs';\nimport { ImageBitmapResource } from './ImageBitmapResource.mjs';\nexport { ImageBitmapResource } from './ImageBitmapResource.mjs';\nexport { Resource } from './Resource.mjs';\nexport { BaseImageResource } from './BaseImageResource.mjs';\nexport { AbstractMultiResource } from './AbstractMultiResource.mjs';\n\nINSTALLED.push(ImageBitmapResource, ImageResource, CanvasResource, VideoResource, SVGResource, BufferResource, CubeResource, ArrayResource);\n//# sourceMappingURL=index.mjs.map\n","import { ALPHA_MODES } from '@pixi/constants';\nimport { BufferResource } from './BufferResource.mjs';\n\nclass DepthResource extends BufferResource {\n upload(renderer, baseTexture, glTexture) {\n const gl = renderer.gl;\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK);\n const width = baseTexture.realWidth;\n const height = baseTexture.realHeight;\n if (glTexture.width === width && glTexture.height === height) {\n gl.texSubImage2D(baseTexture.target, 0, 0, 0, width, height, baseTexture.format, glTexture.type, this.data);\n } else {\n glTexture.width = width;\n glTexture.height = height;\n gl.texImage2D(baseTexture.target, 0, glTexture.internalFormat, width, height, 0, baseTexture.format, glTexture.type, this.data);\n }\n return true;\n }\n}\n\nexport { DepthResource };\n//# sourceMappingURL=DepthResource.mjs.map\n","import { Runner } from '@pixi/runner';\nimport { BaseTexture } from '../textures/BaseTexture.mjs';\nimport { DepthResource } from '../textures/resources/DepthResource.mjs';\nimport { MSAA_QUALITY, SCALE_MODES, MIPMAP_MODES, FORMATS, TYPES } from '@pixi/constants';\n\nclass Framebuffer {\n constructor(width, height) {\n this.width = Math.round(width || 100);\n this.height = Math.round(height || 100);\n this.stencil = false;\n this.depth = false;\n this.dirtyId = 0;\n this.dirtyFormat = 0;\n this.dirtySize = 0;\n this.depthTexture = null;\n this.colorTextures = [];\n this.glFramebuffers = {};\n this.disposeRunner = new Runner(\"disposeFramebuffer\");\n this.multisample = MSAA_QUALITY.NONE;\n }\n get colorTexture() {\n return this.colorTextures[0];\n }\n addColorTexture(index = 0, texture) {\n this.colorTextures[index] = texture || new BaseTexture(null, {\n scaleMode: SCALE_MODES.NEAREST,\n resolution: 1,\n mipmap: MIPMAP_MODES.OFF,\n width: this.width,\n height: this.height\n });\n this.dirtyId++;\n this.dirtyFormat++;\n return this;\n }\n addDepthTexture(texture) {\n this.depthTexture = texture || new BaseTexture(new DepthResource(null, { width: this.width, height: this.height }), {\n scaleMode: SCALE_MODES.NEAREST,\n resolution: 1,\n width: this.width,\n height: this.height,\n mipmap: MIPMAP_MODES.OFF,\n format: FORMATS.DEPTH_COMPONENT,\n type: TYPES.UNSIGNED_SHORT\n });\n this.dirtyId++;\n this.dirtyFormat++;\n return this;\n }\n enableDepth() {\n this.depth = true;\n this.dirtyId++;\n this.dirtyFormat++;\n return this;\n }\n enableStencil() {\n this.stencil = true;\n this.dirtyId++;\n this.dirtyFormat++;\n return this;\n }\n resize(width, height) {\n width = Math.round(width);\n height = Math.round(height);\n if (width === this.width && height === this.height)\n return;\n this.width = width;\n this.height = height;\n this.dirtyId++;\n this.dirtySize++;\n for (let i = 0; i < this.colorTextures.length; i++) {\n const texture = this.colorTextures[i];\n const resolution = texture.resolution;\n texture.setSize(width / resolution, height / resolution);\n }\n if (this.depthTexture) {\n const resolution = this.depthTexture.resolution;\n this.depthTexture.setSize(width / resolution, height / resolution);\n }\n }\n dispose() {\n this.disposeRunner.emit(this, false);\n }\n destroyDepthTexture() {\n if (this.depthTexture) {\n this.depthTexture.destroy();\n this.depthTexture = null;\n ++this.dirtyId;\n ++this.dirtyFormat;\n }\n }\n}\n\nexport { Framebuffer };\n//# sourceMappingURL=Framebuffer.mjs.map\n","import { BaseTexture } from '../textures/BaseTexture.mjs';\nimport { Framebuffer } from '../framebuffer/Framebuffer.mjs';\nimport { MSAA_QUALITY, MIPMAP_MODES } from '@pixi/constants';\n\nclass BaseRenderTexture extends BaseTexture {\n constructor(options = {}) {\n if (typeof options === \"number\") {\n const width = arguments[0];\n const height = arguments[1];\n const scaleMode = arguments[2];\n const resolution = arguments[3];\n options = { width, height, scaleMode, resolution };\n }\n options.width = options.width || 100;\n options.height = options.height || 100;\n options.multisample ?? (options.multisample = MSAA_QUALITY.NONE);\n super(null, options);\n this.mipmap = MIPMAP_MODES.OFF;\n this.valid = true;\n this.clearColor = [0, 0, 0, 0];\n this.framebuffer = new Framebuffer(this.realWidth, this.realHeight).addColorTexture(0, this);\n this.framebuffer.multisample = options.multisample;\n this.maskStack = [];\n this.filterStack = [{}];\n }\n resize(desiredWidth, desiredHeight) {\n this.framebuffer.resize(desiredWidth * this.resolution, desiredHeight * this.resolution);\n this.setRealSize(this.framebuffer.width, this.framebuffer.height);\n }\n dispose() {\n this.framebuffer.dispose();\n super.dispose();\n }\n destroy() {\n super.destroy();\n this.framebuffer.destroyDepthTexture();\n this.framebuffer = null;\n }\n}\n\nexport { BaseRenderTexture };\n//# sourceMappingURL=BaseRenderTexture.mjs.map\n","import { groupD8 } from '@pixi/math';\n\nclass TextureUvs {\n constructor() {\n this.x0 = 0;\n this.y0 = 0;\n this.x1 = 1;\n this.y1 = 0;\n this.x2 = 1;\n this.y2 = 1;\n this.x3 = 0;\n this.y3 = 1;\n this.uvsFloat32 = new Float32Array(8);\n }\n set(frame, baseFrame, rotate) {\n const tw = baseFrame.width;\n const th = baseFrame.height;\n if (rotate) {\n const w2 = frame.width / 2 / tw;\n const h2 = frame.height / 2 / th;\n const cX = frame.x / tw + w2;\n const cY = frame.y / th + h2;\n rotate = groupD8.add(rotate, groupD8.NW);\n this.x0 = cX + w2 * groupD8.uX(rotate);\n this.y0 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n this.x1 = cX + w2 * groupD8.uX(rotate);\n this.y1 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n this.x2 = cX + w2 * groupD8.uX(rotate);\n this.y2 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n this.x3 = cX + w2 * groupD8.uX(rotate);\n this.y3 = cY + h2 * groupD8.uY(rotate);\n } else {\n this.x0 = frame.x / tw;\n this.y0 = frame.y / th;\n this.x1 = (frame.x + frame.width) / tw;\n this.y1 = frame.y / th;\n this.x2 = (frame.x + frame.width) / tw;\n this.y2 = (frame.y + frame.height) / th;\n this.x3 = frame.x / tw;\n this.y3 = (frame.y + frame.height) / th;\n }\n this.uvsFloat32[0] = this.x0;\n this.uvsFloat32[1] = this.y0;\n this.uvsFloat32[2] = this.x1;\n this.uvsFloat32[3] = this.y1;\n this.uvsFloat32[4] = this.x2;\n this.uvsFloat32[5] = this.y2;\n this.uvsFloat32[6] = this.x3;\n this.uvsFloat32[7] = this.y3;\n }\n}\n\nexport { TextureUvs };\n//# sourceMappingURL=TextureUvs.mjs.map\n","import { Rectangle, Point } from '@pixi/math';\nimport { settings } from '@pixi/settings';\nimport { EventEmitter, TextureCache, uid, getResolutionOfUrl } from '@pixi/utils';\nimport { ImageResource } from './resources/ImageResource.mjs';\nimport { BaseTexture } from './BaseTexture.mjs';\nimport { TextureUvs } from './TextureUvs.mjs';\n\nconst DEFAULT_UVS = new TextureUvs();\nfunction removeAllHandlers(tex) {\n tex.destroy = function _emptyDestroy() {\n };\n tex.on = function _emptyOn() {\n };\n tex.once = function _emptyOnce() {\n };\n tex.emit = function _emptyEmit() {\n };\n}\nclass Texture extends EventEmitter {\n constructor(baseTexture, frame, orig, trim, rotate, anchor) {\n super();\n this.noFrame = false;\n if (!frame) {\n this.noFrame = true;\n frame = new Rectangle(0, 0, 1, 1);\n }\n if (baseTexture instanceof Texture) {\n baseTexture = baseTexture.baseTexture;\n }\n this.baseTexture = baseTexture;\n this._frame = frame;\n this.trim = trim;\n this.valid = false;\n this._uvs = DEFAULT_UVS;\n this.uvMatrix = null;\n this.orig = orig || frame;\n this._rotate = Number(rotate || 0);\n if (rotate === true) {\n this._rotate = 2;\n } else if (this._rotate % 2 !== 0) {\n throw new Error(\"attempt to use diamond-shaped UVs. If you are sure, set rotation manually\");\n }\n this.defaultAnchor = anchor ? new Point(anchor.x, anchor.y) : new Point(0, 0);\n this._updateID = 0;\n this.textureCacheIds = [];\n if (!baseTexture.valid) {\n baseTexture.once(\"loaded\", this.onBaseTextureUpdated, this);\n } else if (this.noFrame) {\n if (baseTexture.valid) {\n this.onBaseTextureUpdated(baseTexture);\n }\n } else {\n this.frame = frame;\n }\n if (this.noFrame) {\n baseTexture.on(\"update\", this.onBaseTextureUpdated, this);\n }\n }\n update() {\n if (this.baseTexture.resource) {\n this.baseTexture.resource.update();\n }\n }\n onBaseTextureUpdated(baseTexture) {\n if (this.noFrame) {\n if (!this.baseTexture.valid) {\n return;\n }\n this._frame.width = baseTexture.width;\n this._frame.height = baseTexture.height;\n this.valid = true;\n this.updateUvs();\n } else {\n this.frame = this._frame;\n }\n this.emit(\"update\", this);\n }\n destroy(destroyBase) {\n if (this.baseTexture) {\n if (destroyBase) {\n const { resource } = this.baseTexture;\n if (resource?.url && TextureCache[resource.url]) {\n Texture.removeFromCache(resource.url);\n }\n this.baseTexture.destroy();\n }\n this.baseTexture.off(\"loaded\", this.onBaseTextureUpdated, this);\n this.baseTexture.off(\"update\", this.onBaseTextureUpdated, this);\n this.baseTexture = null;\n }\n this._frame = null;\n this._uvs = null;\n this.trim = null;\n this.orig = null;\n this.valid = false;\n Texture.removeFromCache(this);\n this.textureCacheIds = null;\n }\n clone() {\n const clonedFrame = this._frame.clone();\n const clonedOrig = this._frame === this.orig ? clonedFrame : this.orig.clone();\n const clonedTexture = new Texture(this.baseTexture, !this.noFrame && clonedFrame, clonedOrig, this.trim?.clone(), this.rotate, this.defaultAnchor);\n if (this.noFrame) {\n clonedTexture._frame = clonedFrame;\n }\n return clonedTexture;\n }\n updateUvs() {\n if (this._uvs === DEFAULT_UVS) {\n this._uvs = new TextureUvs();\n }\n this._uvs.set(this._frame, this.baseTexture, this.rotate);\n this._updateID++;\n }\n static from(source, options = {}, strict = settings.STRICT_TEXTURE_CACHE) {\n const isFrame = typeof source === \"string\";\n let cacheId = null;\n if (isFrame) {\n cacheId = source;\n } else if (source instanceof BaseTexture) {\n if (!source.cacheId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source.cacheId = `${prefix}-${uid()}`;\n BaseTexture.addToCache(source, source.cacheId);\n }\n cacheId = source.cacheId;\n } else {\n if (!source._pixiId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source._pixiId = `${prefix}_${uid()}`;\n }\n cacheId = source._pixiId;\n }\n let texture = TextureCache[cacheId];\n if (isFrame && strict && !texture) {\n throw new Error(`The cacheId \"${cacheId}\" does not exist in TextureCache.`);\n }\n if (!texture && !(source instanceof BaseTexture)) {\n if (!options.resolution) {\n options.resolution = getResolutionOfUrl(source);\n }\n texture = new Texture(new BaseTexture(source, options));\n texture.baseTexture.cacheId = cacheId;\n BaseTexture.addToCache(texture.baseTexture, cacheId);\n Texture.addToCache(texture, cacheId);\n } else if (!texture && source instanceof BaseTexture) {\n texture = new Texture(source);\n Texture.addToCache(texture, cacheId);\n }\n return texture;\n }\n static fromURL(url, options) {\n const resourceOptions = Object.assign({ autoLoad: false }, options?.resourceOptions);\n const texture = Texture.from(url, Object.assign({ resourceOptions }, options), false);\n const resource = texture.baseTexture.resource;\n if (texture.baseTexture.valid) {\n return Promise.resolve(texture);\n }\n return resource.load().then(() => Promise.resolve(texture));\n }\n static fromBuffer(buffer, width, height, options) {\n return new Texture(BaseTexture.fromBuffer(buffer, width, height, options));\n }\n static fromLoader(source, imageUrl, name, options) {\n const baseTexture = new BaseTexture(source, Object.assign({\n scaleMode: settings.SCALE_MODE,\n resolution: getResolutionOfUrl(imageUrl)\n }, options));\n const { resource } = baseTexture;\n if (resource instanceof ImageResource) {\n resource.url = imageUrl;\n }\n const texture = new Texture(baseTexture);\n if (!name) {\n name = imageUrl;\n }\n BaseTexture.addToCache(texture.baseTexture, name);\n Texture.addToCache(texture, name);\n if (name !== imageUrl) {\n BaseTexture.addToCache(texture.baseTexture, imageUrl);\n Texture.addToCache(texture, imageUrl);\n }\n if (texture.baseTexture.valid) {\n return Promise.resolve(texture);\n }\n return new Promise((resolve) => {\n texture.baseTexture.once(\"loaded\", () => resolve(texture));\n });\n }\n static addToCache(texture, id) {\n if (id) {\n if (!texture.textureCacheIds.includes(id)) {\n texture.textureCacheIds.push(id);\n }\n if (TextureCache[id]) {\n console.warn(`Texture added to the cache with an id [${id}] that already had an entry`);\n }\n TextureCache[id] = texture;\n }\n }\n static removeFromCache(texture) {\n if (typeof texture === \"string\") {\n const textureFromCache = TextureCache[texture];\n if (textureFromCache) {\n const index = textureFromCache.textureCacheIds.indexOf(texture);\n if (index > -1) {\n textureFromCache.textureCacheIds.splice(index, 1);\n }\n delete TextureCache[texture];\n return textureFromCache;\n }\n } else if (texture?.textureCacheIds) {\n for (let i = 0; i < texture.textureCacheIds.length; ++i) {\n if (TextureCache[texture.textureCacheIds[i]] === texture) {\n delete TextureCache[texture.textureCacheIds[i]];\n }\n }\n texture.textureCacheIds.length = 0;\n return texture;\n }\n return null;\n }\n get resolution() {\n return this.baseTexture.resolution;\n }\n get frame() {\n return this._frame;\n }\n set frame(frame) {\n this._frame = frame;\n this.noFrame = false;\n const { x, y, width, height } = frame;\n const xNotFit = x + width > this.baseTexture.width;\n const yNotFit = y + height > this.baseTexture.height;\n if (xNotFit || yNotFit) {\n const relationship = xNotFit && yNotFit ? \"and\" : \"or\";\n const errorX = `X: ${x} + ${width} = ${x + width} > ${this.baseTexture.width}`;\n const errorY = `Y: ${y} + ${height} = ${y + height} > ${this.baseTexture.height}`;\n throw new Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${errorX} ${relationship} ${errorY}`);\n }\n this.valid = width && height && this.baseTexture.valid;\n if (!this.trim && !this.rotate) {\n this.orig = frame;\n }\n if (this.valid) {\n this.updateUvs();\n }\n }\n get rotate() {\n return this._rotate;\n }\n set rotate(rotate) {\n this._rotate = rotate;\n if (this.valid) {\n this.updateUvs();\n }\n }\n get width() {\n return this.orig.width;\n }\n get height() {\n return this.orig.height;\n }\n castToBaseTexture() {\n return this.baseTexture;\n }\n static get EMPTY() {\n if (!Texture._EMPTY) {\n Texture._EMPTY = new Texture(new BaseTexture());\n removeAllHandlers(Texture._EMPTY);\n removeAllHandlers(Texture._EMPTY.baseTexture);\n }\n return Texture._EMPTY;\n }\n static get WHITE() {\n if (!Texture._WHITE) {\n const canvas = settings.ADAPTER.createCanvas(16, 16);\n const context = canvas.getContext(\"2d\");\n canvas.width = 16;\n canvas.height = 16;\n context.fillStyle = \"white\";\n context.fillRect(0, 0, 16, 16);\n Texture._WHITE = new Texture(BaseTexture.from(canvas));\n removeAllHandlers(Texture._WHITE);\n removeAllHandlers(Texture._WHITE.baseTexture);\n }\n return Texture._WHITE;\n }\n}\n\nexport { Texture };\n//# sourceMappingURL=Texture.mjs.map\n","import { BaseRenderTexture } from './BaseRenderTexture.mjs';\nimport { Texture } from '../textures/Texture.mjs';\n\nclass RenderTexture extends Texture {\n constructor(baseRenderTexture, frame) {\n super(baseRenderTexture, frame);\n this.valid = true;\n this.filterFrame = null;\n this.filterPoolKey = null;\n this.updateUvs();\n }\n get framebuffer() {\n return this.baseTexture.framebuffer;\n }\n get multisample() {\n return this.framebuffer.multisample;\n }\n set multisample(value) {\n this.framebuffer.multisample = value;\n }\n resize(desiredWidth, desiredHeight, resizeBaseTexture = true) {\n const resolution = this.baseTexture.resolution;\n const width = Math.round(desiredWidth * resolution) / resolution;\n const height = Math.round(desiredHeight * resolution) / resolution;\n this.valid = width > 0 && height > 0;\n this._frame.width = this.orig.width = width;\n this._frame.height = this.orig.height = height;\n if (resizeBaseTexture) {\n this.baseTexture.resize(width, height);\n }\n this.updateUvs();\n }\n setResolution(resolution) {\n const { baseTexture } = this;\n if (baseTexture.resolution === resolution) {\n return;\n }\n baseTexture.setResolution(resolution);\n this.resize(baseTexture.width, baseTexture.height, false);\n }\n static create(options) {\n return new RenderTexture(new BaseRenderTexture(options));\n }\n}\n\nexport { RenderTexture };\n//# sourceMappingURL=RenderTexture.mjs.map\n","import { RenderTexture } from './RenderTexture.mjs';\nimport { BaseRenderTexture } from './BaseRenderTexture.mjs';\nimport { nextPow2 } from '@pixi/utils';\nimport { MSAA_QUALITY } from '@pixi/constants';\n\nclass RenderTexturePool {\n constructor(textureOptions) {\n this.texturePool = {};\n this.textureOptions = textureOptions || {};\n this.enableFullScreen = false;\n this._pixelsWidth = 0;\n this._pixelsHeight = 0;\n }\n createTexture(realWidth, realHeight, multisample = MSAA_QUALITY.NONE) {\n const baseRenderTexture = new BaseRenderTexture(Object.assign({\n width: realWidth,\n height: realHeight,\n resolution: 1,\n multisample\n }, this.textureOptions));\n return new RenderTexture(baseRenderTexture);\n }\n getOptimalTexture(minWidth, minHeight, resolution = 1, multisample = MSAA_QUALITY.NONE) {\n let key;\n minWidth = Math.ceil(minWidth * resolution - 1e-6);\n minHeight = Math.ceil(minHeight * resolution - 1e-6);\n if (!this.enableFullScreen || minWidth !== this._pixelsWidth || minHeight !== this._pixelsHeight) {\n minWidth = nextPow2(minWidth);\n minHeight = nextPow2(minHeight);\n key = ((minWidth & 65535) << 16 | minHeight & 65535) >>> 0;\n if (multisample > 1) {\n key += multisample * 4294967296;\n }\n } else {\n key = multisample > 1 ? -multisample : -1;\n }\n if (!this.texturePool[key]) {\n this.texturePool[key] = [];\n }\n let renderTexture = this.texturePool[key].pop();\n if (!renderTexture) {\n renderTexture = this.createTexture(minWidth, minHeight, multisample);\n }\n renderTexture.filterPoolKey = key;\n renderTexture.setResolution(resolution);\n return renderTexture;\n }\n getFilterTexture(input, resolution, multisample) {\n const filterTexture = this.getOptimalTexture(input.width, input.height, resolution || input.resolution, multisample || MSAA_QUALITY.NONE);\n filterTexture.filterFrame = input.filterFrame;\n return filterTexture;\n }\n returnTexture(renderTexture) {\n const key = renderTexture.filterPoolKey;\n renderTexture.filterFrame = null;\n this.texturePool[key].push(renderTexture);\n }\n returnFilterTexture(renderTexture) {\n this.returnTexture(renderTexture);\n }\n clear(destroyTextures) {\n destroyTextures = destroyTextures !== false;\n if (destroyTextures) {\n for (const i in this.texturePool) {\n const textures = this.texturePool[i];\n if (textures) {\n for (let j = 0; j < textures.length; j++) {\n textures[j].destroy(true);\n }\n }\n }\n }\n this.texturePool = {};\n }\n setScreenSize(size) {\n if (size.width === this._pixelsWidth && size.height === this._pixelsHeight) {\n return;\n }\n this.enableFullScreen = size.width > 0 && size.height > 0;\n for (const i in this.texturePool) {\n if (!(Number(i) < 0)) {\n continue;\n }\n const textures = this.texturePool[i];\n if (textures) {\n for (let j = 0; j < textures.length; j++) {\n textures[j].destroy(true);\n }\n }\n this.texturePool[i] = [];\n }\n this._pixelsWidth = size.width;\n this._pixelsHeight = size.height;\n }\n}\nRenderTexturePool.SCREEN_KEY = -1;\n\nexport { RenderTexturePool };\n//# sourceMappingURL=RenderTexturePool.mjs.map\n","import { TYPES } from '@pixi/constants';\n\nclass Attribute {\n constructor(buffer, size = 0, normalized = false, type = TYPES.FLOAT, stride, start, instance) {\n this.buffer = buffer;\n this.size = size;\n this.normalized = normalized;\n this.type = type;\n this.stride = stride;\n this.start = start;\n this.instance = instance;\n }\n destroy() {\n this.buffer = null;\n }\n static from(buffer, size, normalized, type, stride) {\n return new Attribute(buffer, size, normalized, type, stride);\n }\n}\n\nexport { Attribute };\n//# sourceMappingURL=Attribute.mjs.map\n","import { BUFFER_TYPE } from '@pixi/constants';\nimport { Runner } from '@pixi/runner';\n\nlet UID = 0;\nclass Buffer {\n constructor(data, _static = true, index = false) {\n this.data = data || new Float32Array(1);\n this._glBuffers = {};\n this._updateID = 0;\n this.index = index;\n this.static = _static;\n this.id = UID++;\n this.disposeRunner = new Runner(\"disposeBuffer\");\n }\n update(data) {\n if (data instanceof Array) {\n data = new Float32Array(data);\n }\n this.data = data || this.data;\n this._updateID++;\n }\n dispose() {\n this.disposeRunner.emit(this, false);\n }\n destroy() {\n this.dispose();\n this.data = null;\n }\n set index(value) {\n this.type = value ? BUFFER_TYPE.ELEMENT_ARRAY_BUFFER : BUFFER_TYPE.ARRAY_BUFFER;\n }\n get index() {\n return this.type === BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n }\n static from(data) {\n if (data instanceof Array) {\n data = new Float32Array(data);\n }\n return new Buffer(data);\n }\n}\n\nexport { Buffer };\n//# sourceMappingURL=Buffer.mjs.map\n","import { getBufferType } from '@pixi/utils';\n\nconst map = {\n Float32Array,\n Uint32Array,\n Int32Array,\n Uint8Array\n};\nfunction interleaveTypedArrays(arrays, sizes) {\n let outSize = 0;\n let stride = 0;\n const views = {};\n for (let i = 0; i < arrays.length; i++) {\n stride += sizes[i];\n outSize += arrays[i].length;\n }\n const buffer = new ArrayBuffer(outSize * 4);\n let out = null;\n let littleOffset = 0;\n for (let i = 0; i < arrays.length; i++) {\n const size = sizes[i];\n const array = arrays[i];\n const type = getBufferType(array);\n if (!views[type]) {\n views[type] = new map[type](buffer);\n }\n out = views[type];\n for (let j = 0; j < array.length; j++) {\n const indexStart = (j / size | 0) * stride + littleOffset;\n const index = j % size;\n out[indexStart + index] = array[j];\n }\n littleOffset += size;\n }\n return new Float32Array(buffer);\n}\n\nexport { interleaveTypedArrays };\n//# sourceMappingURL=interleaveTypedArrays.mjs.map\n","import { Attribute } from './Attribute.mjs';\nimport { Buffer } from './Buffer.mjs';\nimport { interleaveTypedArrays } from './utils/interleaveTypedArrays.mjs';\nimport { getBufferType } from '@pixi/utils';\nimport { Runner } from '@pixi/runner';\nimport { BUFFER_TYPE } from '@pixi/constants';\n\nconst byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 };\nlet UID = 0;\nconst map = {\n Float32Array,\n Uint32Array,\n Int32Array,\n Uint8Array,\n Uint16Array\n};\nclass Geometry {\n constructor(buffers = [], attributes = {}) {\n this.buffers = buffers;\n this.indexBuffer = null;\n this.attributes = attributes;\n this.glVertexArrayObjects = {};\n this.id = UID++;\n this.instanced = false;\n this.instanceCount = 1;\n this.disposeRunner = new Runner(\"disposeGeometry\");\n this.refCount = 0;\n }\n addAttribute(id, buffer, size = 0, normalized = false, type, stride, start, instance = false) {\n if (!buffer) {\n throw new Error(\"You must pass a buffer when creating an attribute\");\n }\n if (!(buffer instanceof Buffer)) {\n if (buffer instanceof Array) {\n buffer = new Float32Array(buffer);\n }\n buffer = new Buffer(buffer);\n }\n const ids = id.split(\"|\");\n if (ids.length > 1) {\n for (let i = 0; i < ids.length; i++) {\n this.addAttribute(ids[i], buffer, size, normalized, type);\n }\n return this;\n }\n let bufferIndex = this.buffers.indexOf(buffer);\n if (bufferIndex === -1) {\n this.buffers.push(buffer);\n bufferIndex = this.buffers.length - 1;\n }\n this.attributes[id] = new Attribute(bufferIndex, size, normalized, type, stride, start, instance);\n this.instanced = this.instanced || instance;\n return this;\n }\n getAttribute(id) {\n return this.attributes[id];\n }\n getBuffer(id) {\n return this.buffers[this.getAttribute(id).buffer];\n }\n addIndex(buffer) {\n if (!(buffer instanceof Buffer)) {\n if (buffer instanceof Array) {\n buffer = new Uint16Array(buffer);\n }\n buffer = new Buffer(buffer);\n }\n buffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n this.indexBuffer = buffer;\n if (!this.buffers.includes(buffer)) {\n this.buffers.push(buffer);\n }\n return this;\n }\n getIndex() {\n return this.indexBuffer;\n }\n interleave() {\n if (this.buffers.length === 1 || this.buffers.length === 2 && this.indexBuffer)\n return this;\n const arrays = [];\n const sizes = [];\n const interleavedBuffer = new Buffer();\n let i;\n for (i in this.attributes) {\n const attribute = this.attributes[i];\n const buffer = this.buffers[attribute.buffer];\n arrays.push(buffer.data);\n sizes.push(attribute.size * byteSizeMap[attribute.type] / 4);\n attribute.buffer = 0;\n }\n interleavedBuffer.data = interleaveTypedArrays(arrays, sizes);\n for (i = 0; i < this.buffers.length; i++) {\n if (this.buffers[i] !== this.indexBuffer) {\n this.buffers[i].destroy();\n }\n }\n this.buffers = [interleavedBuffer];\n if (this.indexBuffer) {\n this.buffers.push(this.indexBuffer);\n }\n return this;\n }\n getSize() {\n for (const i in this.attributes) {\n const attribute = this.attributes[i];\n const buffer = this.buffers[attribute.buffer];\n return buffer.data.length / (attribute.stride / 4 || attribute.size);\n }\n return 0;\n }\n dispose() {\n this.disposeRunner.emit(this, false);\n }\n destroy() {\n this.dispose();\n this.buffers = null;\n this.indexBuffer = null;\n this.attributes = null;\n }\n clone() {\n const geometry = new Geometry();\n for (let i = 0; i < this.buffers.length; i++) {\n geometry.buffers[i] = new Buffer(this.buffers[i].data.slice(0));\n }\n for (const i in this.attributes) {\n const attrib = this.attributes[i];\n geometry.attributes[i] = new Attribute(attrib.buffer, attrib.size, attrib.normalized, attrib.type, attrib.stride, attrib.start, attrib.instance);\n }\n if (this.indexBuffer) {\n geometry.indexBuffer = geometry.buffers[this.buffers.indexOf(this.indexBuffer)];\n geometry.indexBuffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n }\n return geometry;\n }\n static merge(geometries) {\n const geometryOut = new Geometry();\n const arrays = [];\n const sizes = [];\n const offsets = [];\n let geometry;\n for (let i = 0; i < geometries.length; i++) {\n geometry = geometries[i];\n for (let j = 0; j < geometry.buffers.length; j++) {\n sizes[j] = sizes[j] || 0;\n sizes[j] += geometry.buffers[j].data.length;\n offsets[j] = 0;\n }\n }\n for (let i = 0; i < geometry.buffers.length; i++) {\n arrays[i] = new map[getBufferType(geometry.buffers[i].data)](sizes[i]);\n geometryOut.buffers[i] = new Buffer(arrays[i]);\n }\n for (let i = 0; i < geometries.length; i++) {\n geometry = geometries[i];\n for (let j = 0; j < geometry.buffers.length; j++) {\n arrays[j].set(geometry.buffers[j].data, offsets[j]);\n offsets[j] += geometry.buffers[j].data.length;\n }\n }\n geometryOut.attributes = geometry.attributes;\n if (geometry.indexBuffer) {\n geometryOut.indexBuffer = geometryOut.buffers[geometry.buffers.indexOf(geometry.indexBuffer)];\n geometryOut.indexBuffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n let offset = 0;\n let stride = 0;\n let offset2 = 0;\n let bufferIndexToCount = 0;\n for (let i = 0; i < geometry.buffers.length; i++) {\n if (geometry.buffers[i] !== geometry.indexBuffer) {\n bufferIndexToCount = i;\n break;\n }\n }\n for (const i in geometry.attributes) {\n const attribute = geometry.attributes[i];\n if ((attribute.buffer | 0) === bufferIndexToCount) {\n stride += attribute.size * byteSizeMap[attribute.type] / 4;\n }\n }\n for (let i = 0; i < geometries.length; i++) {\n const indexBufferData = geometries[i].indexBuffer.data;\n for (let j = 0; j < indexBufferData.length; j++) {\n geometryOut.indexBuffer.data[j + offset2] += offset;\n }\n offset += geometries[i].buffers[bufferIndexToCount].data.length / stride;\n offset2 += indexBufferData.length;\n }\n }\n return geometryOut;\n }\n}\n\nexport { Geometry };\n//# sourceMappingURL=Geometry.mjs.map\n","import { Geometry } from '../geometry/Geometry.mjs';\n\nclass Quad extends Geometry {\n constructor() {\n super();\n this.addAttribute(\"aVertexPosition\", new Float32Array([\n 0,\n 0,\n 1,\n 0,\n 1,\n 1,\n 0,\n 1\n ])).addIndex([0, 1, 3, 2]);\n }\n}\n\nexport { Quad };\n//# sourceMappingURL=Quad.mjs.map\n","import { Geometry } from '../geometry/Geometry.mjs';\nimport { Buffer } from '../geometry/Buffer.mjs';\n\nclass QuadUv extends Geometry {\n constructor() {\n super();\n this.vertices = new Float32Array([\n -1,\n -1,\n 1,\n -1,\n 1,\n 1,\n -1,\n 1\n ]);\n this.uvs = new Float32Array([\n 0,\n 0,\n 1,\n 0,\n 1,\n 1,\n 0,\n 1\n ]);\n this.vertexBuffer = new Buffer(this.vertices);\n this.uvBuffer = new Buffer(this.uvs);\n this.addAttribute(\"aVertexPosition\", this.vertexBuffer).addAttribute(\"aTextureCoord\", this.uvBuffer).addIndex([0, 1, 2, 0, 2, 3]);\n }\n map(targetTextureFrame, destinationFrame) {\n let x = 0;\n let y = 0;\n this.uvs[0] = x;\n this.uvs[1] = y;\n this.uvs[2] = x + destinationFrame.width / targetTextureFrame.width;\n this.uvs[3] = y;\n this.uvs[4] = x + destinationFrame.width / targetTextureFrame.width;\n this.uvs[5] = y + destinationFrame.height / targetTextureFrame.height;\n this.uvs[6] = x;\n this.uvs[7] = y + destinationFrame.height / targetTextureFrame.height;\n x = destinationFrame.x;\n y = destinationFrame.y;\n this.vertices[0] = x;\n this.vertices[1] = y;\n this.vertices[2] = x + destinationFrame.width;\n this.vertices[3] = y;\n this.vertices[4] = x + destinationFrame.width;\n this.vertices[5] = y + destinationFrame.height;\n this.vertices[6] = x;\n this.vertices[7] = y + destinationFrame.height;\n this.invalidate();\n return this;\n }\n invalidate() {\n this.vertexBuffer._updateID++;\n this.uvBuffer._updateID++;\n return this;\n }\n}\n\nexport { QuadUv };\n//# sourceMappingURL=QuadUv.mjs.map\n","import { BUFFER_TYPE } from '@pixi/constants';\nimport { Buffer } from '../geometry/Buffer.mjs';\n\nlet UID = 0;\nclass UniformGroup {\n constructor(uniforms, isStatic, isUbo) {\n this.group = true;\n this.syncUniforms = {};\n this.dirtyId = 0;\n this.id = UID++;\n this.static = !!isStatic;\n this.ubo = !!isUbo;\n if (uniforms instanceof Buffer) {\n this.buffer = uniforms;\n this.buffer.type = BUFFER_TYPE.UNIFORM_BUFFER;\n this.autoManage = false;\n this.ubo = true;\n } else {\n this.uniforms = uniforms;\n if (this.ubo) {\n this.buffer = new Buffer(new Float32Array(1));\n this.buffer.type = BUFFER_TYPE.UNIFORM_BUFFER;\n this.autoManage = true;\n }\n }\n }\n update() {\n this.dirtyId++;\n if (!this.autoManage && this.buffer) {\n this.buffer.update();\n }\n }\n add(name, uniforms, _static) {\n if (!this.ubo) {\n this.uniforms[name] = new UniformGroup(uniforms, _static);\n } else {\n throw new Error(\"[UniformGroup] uniform groups in ubo mode cannot be modified, or have uniform groups nested in them\");\n }\n }\n static from(uniforms, _static, _ubo) {\n return new UniformGroup(uniforms, _static, _ubo);\n }\n static uboFrom(uniforms, _static) {\n return new UniformGroup(uniforms, _static ?? true, true);\n }\n}\n\nexport { UniformGroup };\n//# sourceMappingURL=UniformGroup.mjs.map\n","import { Rectangle } from '@pixi/math';\nimport { MSAA_QUALITY } from '@pixi/constants';\n\nclass FilterState {\n constructor() {\n this.renderTexture = null;\n this.target = null;\n this.legacy = false;\n this.resolution = 1;\n this.multisample = MSAA_QUALITY.NONE;\n this.sourceFrame = new Rectangle();\n this.destinationFrame = new Rectangle();\n this.bindingSourceFrame = new Rectangle();\n this.bindingDestinationFrame = new Rectangle();\n this.filters = [];\n this.transform = null;\n }\n clear() {\n this.target = null;\n this.filters = null;\n this.renderTexture = null;\n }\n}\n\nexport { FilterState };\n//# sourceMappingURL=FilterState.mjs.map\n","import { RenderTexturePool } from '../renderTexture/RenderTexturePool.mjs';\nimport { Quad } from '../utils/Quad.mjs';\nimport { QuadUv } from '../utils/QuadUv.mjs';\nimport { Point, Matrix, Rectangle } from '@pixi/math';\nimport { UniformGroup } from '../shader/UniformGroup.mjs';\nimport { CLEAR_MODES, DRAW_MODES, MSAA_QUALITY } from '@pixi/constants';\nimport { FilterState } from './FilterState.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nconst tempPoints = [new Point(), new Point(), new Point(), new Point()];\nconst tempMatrix = new Matrix();\nclass FilterSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.defaultFilterStack = [{}];\n this.texturePool = new RenderTexturePool();\n this.statePool = [];\n this.quad = new Quad();\n this.quadUv = new QuadUv();\n this.tempRect = new Rectangle();\n this.activeState = {};\n this.globalUniforms = new UniformGroup({\n outputFrame: new Rectangle(),\n inputSize: new Float32Array(4),\n inputPixel: new Float32Array(4),\n inputClamp: new Float32Array(4),\n resolution: 1,\n filterArea: new Float32Array(4),\n filterClamp: new Float32Array(4)\n }, true);\n this.forceClear = false;\n this.useMaxPadding = false;\n }\n init() {\n this.texturePool.setScreenSize(this.renderer.view);\n }\n push(target, filters) {\n const renderer = this.renderer;\n const filterStack = this.defaultFilterStack;\n const state = this.statePool.pop() || new FilterState();\n const renderTextureSystem = this.renderer.renderTexture;\n let resolution = filters[0].resolution;\n let multisample = filters[0].multisample;\n let padding = filters[0].padding;\n let autoFit = filters[0].autoFit;\n let legacy = filters[0].legacy ?? true;\n for (let i = 1; i < filters.length; i++) {\n const filter = filters[i];\n resolution = Math.min(resolution, filter.resolution);\n multisample = Math.min(multisample, filter.multisample);\n padding = this.useMaxPadding ? Math.max(padding, filter.padding) : padding + filter.padding;\n autoFit = autoFit && filter.autoFit;\n legacy = legacy || (filter.legacy ?? true);\n }\n if (filterStack.length === 1) {\n this.defaultFilterStack[0].renderTexture = renderTextureSystem.current;\n }\n filterStack.push(state);\n state.resolution = resolution;\n state.multisample = multisample;\n state.legacy = legacy;\n state.target = target;\n state.sourceFrame.copyFrom(target.filterArea || target.getBounds(true));\n state.sourceFrame.pad(padding);\n const sourceFrameProjected = this.tempRect.copyFrom(renderTextureSystem.sourceFrame);\n if (renderer.projection.transform) {\n this.transformAABB(tempMatrix.copyFrom(renderer.projection.transform).invert(), sourceFrameProjected);\n }\n if (autoFit) {\n state.sourceFrame.fit(sourceFrameProjected);\n if (state.sourceFrame.width <= 0 || state.sourceFrame.height <= 0) {\n state.sourceFrame.width = 0;\n state.sourceFrame.height = 0;\n }\n } else if (!state.sourceFrame.intersects(sourceFrameProjected)) {\n state.sourceFrame.width = 0;\n state.sourceFrame.height = 0;\n }\n this.roundFrame(state.sourceFrame, renderTextureSystem.current ? renderTextureSystem.current.resolution : renderer.resolution, renderTextureSystem.sourceFrame, renderTextureSystem.destinationFrame, renderer.projection.transform);\n state.renderTexture = this.getOptimalFilterTexture(state.sourceFrame.width, state.sourceFrame.height, resolution, multisample);\n state.filters = filters;\n state.destinationFrame.width = state.renderTexture.width;\n state.destinationFrame.height = state.renderTexture.height;\n const destinationFrame = this.tempRect;\n destinationFrame.x = 0;\n destinationFrame.y = 0;\n destinationFrame.width = state.sourceFrame.width;\n destinationFrame.height = state.sourceFrame.height;\n state.renderTexture.filterFrame = state.sourceFrame;\n state.bindingSourceFrame.copyFrom(renderTextureSystem.sourceFrame);\n state.bindingDestinationFrame.copyFrom(renderTextureSystem.destinationFrame);\n state.transform = renderer.projection.transform;\n renderer.projection.transform = null;\n renderTextureSystem.bind(state.renderTexture, state.sourceFrame, destinationFrame);\n renderer.framebuffer.clear(0, 0, 0, 0);\n }\n pop() {\n const filterStack = this.defaultFilterStack;\n const state = filterStack.pop();\n const filters = state.filters;\n this.activeState = state;\n const globalUniforms = this.globalUniforms.uniforms;\n globalUniforms.outputFrame = state.sourceFrame;\n globalUniforms.resolution = state.resolution;\n const inputSize = globalUniforms.inputSize;\n const inputPixel = globalUniforms.inputPixel;\n const inputClamp = globalUniforms.inputClamp;\n inputSize[0] = state.destinationFrame.width;\n inputSize[1] = state.destinationFrame.height;\n inputSize[2] = 1 / inputSize[0];\n inputSize[3] = 1 / inputSize[1];\n inputPixel[0] = Math.round(inputSize[0] * state.resolution);\n inputPixel[1] = Math.round(inputSize[1] * state.resolution);\n inputPixel[2] = 1 / inputPixel[0];\n inputPixel[3] = 1 / inputPixel[1];\n inputClamp[0] = 0.5 * inputPixel[2];\n inputClamp[1] = 0.5 * inputPixel[3];\n inputClamp[2] = state.sourceFrame.width * inputSize[2] - 0.5 * inputPixel[2];\n inputClamp[3] = state.sourceFrame.height * inputSize[3] - 0.5 * inputPixel[3];\n if (state.legacy) {\n const filterArea = globalUniforms.filterArea;\n filterArea[0] = state.destinationFrame.width;\n filterArea[1] = state.destinationFrame.height;\n filterArea[2] = state.sourceFrame.x;\n filterArea[3] = state.sourceFrame.y;\n globalUniforms.filterClamp = globalUniforms.inputClamp;\n }\n this.globalUniforms.update();\n const lastState = filterStack[filterStack.length - 1];\n this.renderer.framebuffer.blit();\n if (filters.length === 1) {\n filters[0].apply(this, state.renderTexture, lastState.renderTexture, CLEAR_MODES.BLEND, state);\n this.returnFilterTexture(state.renderTexture);\n } else {\n let flip = state.renderTexture;\n let flop = this.getOptimalFilterTexture(flip.width, flip.height, state.resolution);\n flop.filterFrame = flip.filterFrame;\n let i = 0;\n for (i = 0; i < filters.length - 1; ++i) {\n if (i === 1 && state.multisample > 1) {\n flop = this.getOptimalFilterTexture(flip.width, flip.height, state.resolution);\n flop.filterFrame = flip.filterFrame;\n }\n filters[i].apply(this, flip, flop, CLEAR_MODES.CLEAR, state);\n const t = flip;\n flip = flop;\n flop = t;\n }\n filters[i].apply(this, flip, lastState.renderTexture, CLEAR_MODES.BLEND, state);\n if (i > 1 && state.multisample > 1) {\n this.returnFilterTexture(state.renderTexture);\n }\n this.returnFilterTexture(flip);\n this.returnFilterTexture(flop);\n }\n state.clear();\n this.statePool.push(state);\n }\n bindAndClear(filterTexture, clearMode = CLEAR_MODES.CLEAR) {\n const {\n renderTexture: renderTextureSystem,\n state: stateSystem\n } = this.renderer;\n if (filterTexture === this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture) {\n this.renderer.projection.transform = this.activeState.transform;\n } else {\n this.renderer.projection.transform = null;\n }\n if (filterTexture?.filterFrame) {\n const destinationFrame = this.tempRect;\n destinationFrame.x = 0;\n destinationFrame.y = 0;\n destinationFrame.width = filterTexture.filterFrame.width;\n destinationFrame.height = filterTexture.filterFrame.height;\n renderTextureSystem.bind(filterTexture, filterTexture.filterFrame, destinationFrame);\n } else if (filterTexture !== this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture) {\n renderTextureSystem.bind(filterTexture);\n } else {\n this.renderer.renderTexture.bind(filterTexture, this.activeState.bindingSourceFrame, this.activeState.bindingDestinationFrame);\n }\n const autoClear = stateSystem.stateId & 1 || this.forceClear;\n if (clearMode === CLEAR_MODES.CLEAR || clearMode === CLEAR_MODES.BLIT && autoClear) {\n this.renderer.framebuffer.clear(0, 0, 0, 0);\n }\n }\n applyFilter(filter, input, output, clearMode) {\n const renderer = this.renderer;\n renderer.state.set(filter.state);\n this.bindAndClear(output, clearMode);\n filter.uniforms.uSampler = input;\n filter.uniforms.filterGlobals = this.globalUniforms;\n renderer.shader.bind(filter);\n filter.legacy = !!filter.program.attributeData.aTextureCoord;\n if (filter.legacy) {\n this.quadUv.map(input._frame, input.filterFrame);\n renderer.geometry.bind(this.quadUv);\n renderer.geometry.draw(DRAW_MODES.TRIANGLES);\n } else {\n renderer.geometry.bind(this.quad);\n renderer.geometry.draw(DRAW_MODES.TRIANGLE_STRIP);\n }\n }\n calculateSpriteMatrix(outputMatrix, sprite) {\n const { sourceFrame, destinationFrame } = this.activeState;\n const { orig } = sprite._texture;\n const mappedMatrix = outputMatrix.set(destinationFrame.width, 0, 0, destinationFrame.height, sourceFrame.x, sourceFrame.y);\n const worldTransform = sprite.worldTransform.copyTo(Matrix.TEMP_MATRIX);\n worldTransform.invert();\n mappedMatrix.prepend(worldTransform);\n mappedMatrix.scale(1 / orig.width, 1 / orig.height);\n mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y);\n return mappedMatrix;\n }\n destroy() {\n this.renderer = null;\n this.texturePool.clear(false);\n }\n getOptimalFilterTexture(minWidth, minHeight, resolution = 1, multisample = MSAA_QUALITY.NONE) {\n return this.texturePool.getOptimalTexture(minWidth, minHeight, resolution, multisample);\n }\n getFilterTexture(input, resolution, multisample) {\n if (typeof input === \"number\") {\n const swap = input;\n input = resolution;\n resolution = swap;\n }\n input = input || this.activeState.renderTexture;\n const filterTexture = this.texturePool.getOptimalTexture(input.width, input.height, resolution || input.resolution, multisample || MSAA_QUALITY.NONE);\n filterTexture.filterFrame = input.filterFrame;\n return filterTexture;\n }\n returnFilterTexture(renderTexture) {\n this.texturePool.returnTexture(renderTexture);\n }\n emptyPool() {\n this.texturePool.clear(true);\n }\n resize() {\n this.texturePool.setScreenSize(this.renderer.view);\n }\n transformAABB(matrix, rect) {\n const lt = tempPoints[0];\n const lb = tempPoints[1];\n const rt = tempPoints[2];\n const rb = tempPoints[3];\n lt.set(rect.left, rect.top);\n lb.set(rect.left, rect.bottom);\n rt.set(rect.right, rect.top);\n rb.set(rect.right, rect.bottom);\n matrix.apply(lt, lt);\n matrix.apply(lb, lb);\n matrix.apply(rt, rt);\n matrix.apply(rb, rb);\n const x0 = Math.min(lt.x, lb.x, rt.x, rb.x);\n const y0 = Math.min(lt.y, lb.y, rt.y, rb.y);\n const x1 = Math.max(lt.x, lb.x, rt.x, rb.x);\n const y1 = Math.max(lt.y, lb.y, rt.y, rb.y);\n rect.x = x0;\n rect.y = y0;\n rect.width = x1 - x0;\n rect.height = y1 - y0;\n }\n roundFrame(frame, resolution, bindingSourceFrame, bindingDestinationFrame, transform) {\n if (frame.width <= 0 || frame.height <= 0 || bindingSourceFrame.width <= 0 || bindingSourceFrame.height <= 0) {\n return;\n }\n if (transform) {\n const { a, b, c, d } = transform;\n if ((Math.abs(b) > 1e-4 || Math.abs(c) > 1e-4) && (Math.abs(a) > 1e-4 || Math.abs(d) > 1e-4)) {\n return;\n }\n }\n transform = transform ? tempMatrix.copyFrom(transform) : tempMatrix.identity();\n transform.translate(-bindingSourceFrame.x, -bindingSourceFrame.y).scale(bindingDestinationFrame.width / bindingSourceFrame.width, bindingDestinationFrame.height / bindingSourceFrame.height).translate(bindingDestinationFrame.x, bindingDestinationFrame.y);\n this.transformAABB(transform, frame);\n frame.ceil(resolution);\n this.transformAABB(transform.invert(), frame);\n }\n}\nFilterSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"filter\"\n};\nextensions.add(FilterSystem);\n\nexport { FilterSystem };\n//# sourceMappingURL=FilterSystem.mjs.map\n","class ObjectRenderer {\n constructor(renderer) {\n this.renderer = renderer;\n }\n flush() {\n }\n destroy() {\n this.renderer = null;\n }\n start() {\n }\n stop() {\n this.flush();\n }\n render(_object) {\n }\n}\n\nexport { ObjectRenderer };\n//# sourceMappingURL=ObjectRenderer.mjs.map\n","import { ObjectRenderer } from './ObjectRenderer.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass BatchSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.emptyRenderer = new ObjectRenderer(renderer);\n this.currentRenderer = this.emptyRenderer;\n }\n setObjectRenderer(objectRenderer) {\n if (this.currentRenderer === objectRenderer) {\n return;\n }\n this.currentRenderer.stop();\n this.currentRenderer = objectRenderer;\n this.currentRenderer.start();\n }\n flush() {\n this.setObjectRenderer(this.emptyRenderer);\n }\n reset() {\n this.setObjectRenderer(this.emptyRenderer);\n }\n copyBoundTextures(arr, maxTextures) {\n const { boundTextures } = this.renderer.texture;\n for (let i = maxTextures - 1; i >= 0; --i) {\n arr[i] = boundTextures[i] || null;\n if (arr[i]) {\n arr[i]._batchLocation = i;\n }\n }\n }\n boundArray(texArray, boundTextures, batchId, maxTextures) {\n const { elements, ids, count } = texArray;\n let j = 0;\n for (let i = 0; i < count; i++) {\n const tex = elements[i];\n const loc = tex._batchLocation;\n if (loc >= 0 && loc < maxTextures && boundTextures[loc] === tex) {\n ids[i] = loc;\n continue;\n }\n while (j < maxTextures) {\n const bound = boundTextures[j];\n if (bound && bound._batchEnabled === batchId && bound._batchLocation === j) {\n j++;\n continue;\n }\n ids[i] = j;\n tex._batchLocation = j;\n boundTextures[j] = tex;\n break;\n }\n }\n }\n destroy() {\n this.renderer = null;\n }\n}\nBatchSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"batch\"\n};\nextensions.add(BatchSystem);\n\nexport { BatchSystem };\n//# sourceMappingURL=BatchSystem.mjs.map\n","import { ENV } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport '../settings.mjs';\nimport { settings } from '@pixi/settings';\n\nlet CONTEXT_UID_COUNTER = 0;\nclass ContextSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.webGLVersion = 1;\n this.extensions = {};\n this.supports = {\n uint32Indices: false\n };\n this.handleContextLost = this.handleContextLost.bind(this);\n this.handleContextRestored = this.handleContextRestored.bind(this);\n }\n get isLost() {\n return !this.gl || this.gl.isContextLost();\n }\n contextChange(gl) {\n this.gl = gl;\n this.renderer.gl = gl;\n this.renderer.CONTEXT_UID = CONTEXT_UID_COUNTER++;\n if (gl.isContextLost() && gl.getExtension(\"WEBGL_lose_context\")) {\n gl.getExtension(\"WEBGL_lose_context\").restoreContext();\n }\n }\n init(options) {\n if (options.context) {\n this.initFromContext(options.context);\n } else {\n const alpha = this.renderer.background.alpha < 1;\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n this.preserveDrawingBuffer = options.preserveDrawingBuffer;\n this.useContextAlpha = options.useContextAlpha;\n this.powerPreference = options.powerPreference;\n this.initFromOptions({\n alpha,\n premultipliedAlpha,\n antialias: options.antialias,\n stencil: true,\n preserveDrawingBuffer: options.preserveDrawingBuffer,\n powerPreference: options.powerPreference\n });\n }\n }\n initFromContext(gl) {\n this.gl = gl;\n this.validateContext(gl);\n this.renderer.gl = gl;\n this.renderer.CONTEXT_UID = CONTEXT_UID_COUNTER++;\n this.renderer.runners.contextChange.emit(gl);\n const view = this.renderer.view;\n if (view.addEventListener !== void 0) {\n view.addEventListener(\"webglcontextlost\", this.handleContextLost, false);\n view.addEventListener(\"webglcontextrestored\", this.handleContextRestored, false);\n }\n }\n initFromOptions(options) {\n const gl = this.createContext(this.renderer.view, options);\n this.initFromContext(gl);\n }\n createContext(canvas, options) {\n let gl;\n if (settings.PREFER_ENV >= ENV.WEBGL2) {\n gl = canvas.getContext(\"webgl2\", options);\n }\n if (gl) {\n this.webGLVersion = 2;\n } else {\n this.webGLVersion = 1;\n gl = canvas.getContext(\"webgl\", options) || canvas.getContext(\"experimental-webgl\", options);\n if (!gl) {\n throw new Error(\"This browser does not support WebGL. Try using the canvas renderer\");\n }\n }\n this.gl = gl;\n this.getExtensions();\n return this.gl;\n }\n getExtensions() {\n const { gl } = this;\n const common = {\n anisotropicFiltering: gl.getExtension(\"EXT_texture_filter_anisotropic\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n s3tc: gl.getExtension(\"WEBGL_compressed_texture_s3tc\"),\n s3tc_sRGB: gl.getExtension(\"WEBGL_compressed_texture_s3tc_srgb\"),\n etc: gl.getExtension(\"WEBGL_compressed_texture_etc\"),\n etc1: gl.getExtension(\"WEBGL_compressed_texture_etc1\"),\n pvrtc: gl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\"),\n atc: gl.getExtension(\"WEBGL_compressed_texture_atc\"),\n astc: gl.getExtension(\"WEBGL_compressed_texture_astc\")\n };\n if (this.webGLVersion === 1) {\n Object.assign(this.extensions, common, {\n drawBuffers: gl.getExtension(\"WEBGL_draw_buffers\"),\n depthTexture: gl.getExtension(\"WEBGL_depth_texture\"),\n loseContext: gl.getExtension(\"WEBGL_lose_context\"),\n vertexArrayObject: gl.getExtension(\"OES_vertex_array_object\") || gl.getExtension(\"MOZ_OES_vertex_array_object\") || gl.getExtension(\"WEBKIT_OES_vertex_array_object\"),\n uint32ElementIndex: gl.getExtension(\"OES_element_index_uint\"),\n floatTexture: gl.getExtension(\"OES_texture_float\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n textureHalfFloat: gl.getExtension(\"OES_texture_half_float\"),\n textureHalfFloatLinear: gl.getExtension(\"OES_texture_half_float_linear\")\n });\n } else if (this.webGLVersion === 2) {\n Object.assign(this.extensions, common, {\n colorBufferFloat: gl.getExtension(\"EXT_color_buffer_float\")\n });\n }\n }\n handleContextLost(event) {\n event.preventDefault();\n }\n handleContextRestored() {\n this.renderer.runners.contextChange.emit(this.gl);\n }\n destroy() {\n const view = this.renderer.view;\n this.renderer = null;\n if (view.removeEventListener !== void 0) {\n view.removeEventListener(\"webglcontextlost\", this.handleContextLost);\n view.removeEventListener(\"webglcontextrestored\", this.handleContextRestored);\n }\n this.gl.useProgram(null);\n if (this.extensions.loseContext) {\n this.extensions.loseContext.loseContext();\n }\n }\n postrender() {\n if (this.renderer.objectRenderer.renderingToScreen) {\n this.gl.flush();\n }\n }\n validateContext(gl) {\n const attributes = gl.getContextAttributes();\n const isWebGl2 = \"WebGL2RenderingContext\" in globalThis && gl instanceof globalThis.WebGL2RenderingContext;\n if (isWebGl2) {\n this.webGLVersion = 2;\n }\n if (attributes && !attributes.stencil) {\n console.warn(\"Provided WebGL context does not have a stencil buffer, masks may not render correctly\");\n }\n const hasuint32 = isWebGl2 || !!gl.getExtension(\"OES_element_index_uint\");\n this.supports.uint32Indices = hasuint32;\n if (!hasuint32) {\n console.warn(\"Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly\");\n }\n }\n}\nContextSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"context\"\n};\nextensions.add(ContextSystem);\n\nexport { ContextSystem };\n//# sourceMappingURL=ContextSystem.mjs.map\n","import { MSAA_QUALITY } from '@pixi/constants';\n\nclass GLFramebuffer {\n constructor(framebuffer) {\n this.framebuffer = framebuffer;\n this.stencil = null;\n this.dirtyId = -1;\n this.dirtyFormat = -1;\n this.dirtySize = -1;\n this.multisample = MSAA_QUALITY.NONE;\n this.msaaBuffer = null;\n this.blitFramebuffer = null;\n this.mipLevel = 0;\n }\n}\n\nexport { GLFramebuffer };\n//# sourceMappingURL=GLFramebuffer.mjs.map\n","import { Rectangle } from '@pixi/math';\nimport { ENV, BUFFER_BITS, MSAA_QUALITY } from '@pixi/constants';\nimport '../settings.mjs';\nimport { Framebuffer } from './Framebuffer.mjs';\nimport { GLFramebuffer } from './GLFramebuffer.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { settings } from '@pixi/settings';\n\nconst tempRectangle = new Rectangle();\nclass FramebufferSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.managedFramebuffers = [];\n this.unknownFramebuffer = new Framebuffer(10, 10);\n this.msaaSamples = null;\n }\n contextChange() {\n const gl = this.gl = this.renderer.gl;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n this.current = this.unknownFramebuffer;\n this.viewport = new Rectangle();\n this.hasMRT = true;\n this.writeDepthTexture = true;\n this.disposeAll(true);\n if (this.renderer.context.webGLVersion === 1) {\n let nativeDrawBuffersExtension = this.renderer.context.extensions.drawBuffers;\n let nativeDepthTextureExtension = this.renderer.context.extensions.depthTexture;\n if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) {\n nativeDrawBuffersExtension = null;\n nativeDepthTextureExtension = null;\n }\n if (nativeDrawBuffersExtension) {\n gl.drawBuffers = (activeTextures) => nativeDrawBuffersExtension.drawBuffersWEBGL(activeTextures);\n } else {\n this.hasMRT = false;\n gl.drawBuffers = () => {\n };\n }\n if (!nativeDepthTextureExtension) {\n this.writeDepthTexture = false;\n }\n } else {\n this.msaaSamples = gl.getInternalformatParameter(gl.RENDERBUFFER, gl.RGBA8, gl.SAMPLES);\n }\n }\n bind(framebuffer, frame, mipLevel = 0) {\n const { gl } = this;\n if (framebuffer) {\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID] || this.initFramebuffer(framebuffer);\n if (this.current !== framebuffer) {\n this.current = framebuffer;\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo.framebuffer);\n }\n if (fbo.mipLevel !== mipLevel) {\n framebuffer.dirtyId++;\n framebuffer.dirtyFormat++;\n fbo.mipLevel = mipLevel;\n }\n if (fbo.dirtyId !== framebuffer.dirtyId) {\n fbo.dirtyId = framebuffer.dirtyId;\n if (fbo.dirtyFormat !== framebuffer.dirtyFormat) {\n fbo.dirtyFormat = framebuffer.dirtyFormat;\n fbo.dirtySize = framebuffer.dirtySize;\n this.updateFramebuffer(framebuffer, mipLevel);\n } else if (fbo.dirtySize !== framebuffer.dirtySize) {\n fbo.dirtySize = framebuffer.dirtySize;\n this.resizeFramebuffer(framebuffer);\n }\n }\n for (let i = 0; i < framebuffer.colorTextures.length; i++) {\n const tex = framebuffer.colorTextures[i];\n this.renderer.texture.unbind(tex.parentTextureArray || tex);\n }\n if (framebuffer.depthTexture) {\n this.renderer.texture.unbind(framebuffer.depthTexture);\n }\n if (frame) {\n const mipWidth = frame.width >> mipLevel;\n const mipHeight = frame.height >> mipLevel;\n const scale = mipWidth / frame.width;\n this.setViewport(frame.x * scale, frame.y * scale, mipWidth, mipHeight);\n } else {\n const mipWidth = framebuffer.width >> mipLevel;\n const mipHeight = framebuffer.height >> mipLevel;\n this.setViewport(0, 0, mipWidth, mipHeight);\n }\n } else {\n if (this.current) {\n this.current = null;\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n }\n if (frame) {\n this.setViewport(frame.x, frame.y, frame.width, frame.height);\n } else {\n this.setViewport(0, 0, this.renderer.width, this.renderer.height);\n }\n }\n }\n setViewport(x, y, width, height) {\n const v = this.viewport;\n x = Math.round(x);\n y = Math.round(y);\n width = Math.round(width);\n height = Math.round(height);\n if (v.width !== width || v.height !== height || v.x !== x || v.y !== y) {\n v.x = x;\n v.y = y;\n v.width = width;\n v.height = height;\n this.gl.viewport(x, y, width, height);\n }\n }\n get size() {\n if (this.current) {\n return { x: 0, y: 0, width: this.current.width, height: this.current.height };\n }\n return { x: 0, y: 0, width: this.renderer.width, height: this.renderer.height };\n }\n clear(r, g, b, a, mask = BUFFER_BITS.COLOR | BUFFER_BITS.DEPTH) {\n const { gl } = this;\n gl.clearColor(r, g, b, a);\n gl.clear(mask);\n }\n initFramebuffer(framebuffer) {\n const { gl } = this;\n const fbo = new GLFramebuffer(gl.createFramebuffer());\n fbo.multisample = this.detectSamples(framebuffer.multisample);\n framebuffer.glFramebuffers[this.CONTEXT_UID] = fbo;\n this.managedFramebuffers.push(framebuffer);\n framebuffer.disposeRunner.add(this);\n return fbo;\n }\n resizeFramebuffer(framebuffer) {\n const { gl } = this;\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n if (fbo.stencil) {\n gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.stencil);\n if (fbo.msaaBuffer) {\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, gl.DEPTH24_STENCIL8, framebuffer.width, framebuffer.height);\n } else {\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, framebuffer.width, framebuffer.height);\n }\n }\n const colorTextures = framebuffer.colorTextures;\n let count = colorTextures.length;\n if (!gl.drawBuffers) {\n count = Math.min(count, 1);\n }\n for (let i = 0; i < count; i++) {\n const texture = colorTextures[i];\n const parentTexture = texture.parentTextureArray || texture;\n this.renderer.texture.bind(parentTexture, 0);\n if (i === 0 && fbo.msaaBuffer) {\n gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.msaaBuffer);\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, parentTexture._glTextures[this.CONTEXT_UID].internalFormat, framebuffer.width, framebuffer.height);\n }\n }\n if (framebuffer.depthTexture && this.writeDepthTexture) {\n this.renderer.texture.bind(framebuffer.depthTexture, 0);\n }\n }\n updateFramebuffer(framebuffer, mipLevel) {\n const { gl } = this;\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n const colorTextures = framebuffer.colorTextures;\n let count = colorTextures.length;\n if (!gl.drawBuffers) {\n count = Math.min(count, 1);\n }\n if (fbo.multisample > 1 && this.canMultisampleFramebuffer(framebuffer)) {\n fbo.msaaBuffer = fbo.msaaBuffer || gl.createRenderbuffer();\n } else if (fbo.msaaBuffer) {\n gl.deleteRenderbuffer(fbo.msaaBuffer);\n fbo.msaaBuffer = null;\n if (fbo.blitFramebuffer) {\n fbo.blitFramebuffer.dispose();\n fbo.blitFramebuffer = null;\n }\n }\n const activeTextures = [];\n for (let i = 0; i < count; i++) {\n const texture = colorTextures[i];\n const parentTexture = texture.parentTextureArray || texture;\n this.renderer.texture.bind(parentTexture, 0);\n if (i === 0 && fbo.msaaBuffer) {\n gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.msaaBuffer);\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, parentTexture._glTextures[this.CONTEXT_UID].internalFormat, framebuffer.width, framebuffer.height);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, fbo.msaaBuffer);\n } else {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + i, texture.target, parentTexture._glTextures[this.CONTEXT_UID].texture, mipLevel);\n activeTextures.push(gl.COLOR_ATTACHMENT0 + i);\n }\n }\n if (activeTextures.length > 1) {\n gl.drawBuffers(activeTextures);\n }\n if (framebuffer.depthTexture) {\n const writeDepthTexture = this.writeDepthTexture;\n if (writeDepthTexture) {\n const depthTexture = framebuffer.depthTexture;\n this.renderer.texture.bind(depthTexture, 0);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, depthTexture._glTextures[this.CONTEXT_UID].texture, mipLevel);\n }\n }\n if ((framebuffer.stencil || framebuffer.depth) && !(framebuffer.depthTexture && this.writeDepthTexture)) {\n fbo.stencil = fbo.stencil || gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.stencil);\n if (fbo.msaaBuffer) {\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, gl.DEPTH24_STENCIL8, framebuffer.width, framebuffer.height);\n } else {\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, framebuffer.width, framebuffer.height);\n }\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, fbo.stencil);\n } else if (fbo.stencil) {\n gl.deleteRenderbuffer(fbo.stencil);\n fbo.stencil = null;\n }\n }\n canMultisampleFramebuffer(framebuffer) {\n return this.renderer.context.webGLVersion !== 1 && framebuffer.colorTextures.length <= 1 && !framebuffer.depthTexture;\n }\n detectSamples(samples) {\n const { msaaSamples } = this;\n let res = MSAA_QUALITY.NONE;\n if (samples <= 1 || msaaSamples === null) {\n return res;\n }\n for (let i = 0; i < msaaSamples.length; i++) {\n if (msaaSamples[i] <= samples) {\n res = msaaSamples[i];\n break;\n }\n }\n if (res === 1) {\n res = MSAA_QUALITY.NONE;\n }\n return res;\n }\n blit(framebuffer, sourcePixels, destPixels) {\n const { current, renderer, gl, CONTEXT_UID } = this;\n if (renderer.context.webGLVersion !== 2) {\n return;\n }\n if (!current) {\n return;\n }\n const fbo = current.glFramebuffers[CONTEXT_UID];\n if (!fbo) {\n return;\n }\n if (!framebuffer) {\n if (!fbo.msaaBuffer) {\n return;\n }\n const colorTexture = current.colorTextures[0];\n if (!colorTexture) {\n return;\n }\n if (!fbo.blitFramebuffer) {\n fbo.blitFramebuffer = new Framebuffer(current.width, current.height);\n fbo.blitFramebuffer.addColorTexture(0, colorTexture);\n }\n framebuffer = fbo.blitFramebuffer;\n if (framebuffer.colorTextures[0] !== colorTexture) {\n framebuffer.colorTextures[0] = colorTexture;\n framebuffer.dirtyId++;\n framebuffer.dirtyFormat++;\n }\n if (framebuffer.width !== current.width || framebuffer.height !== current.height) {\n framebuffer.width = current.width;\n framebuffer.height = current.height;\n framebuffer.dirtyId++;\n framebuffer.dirtySize++;\n }\n }\n if (!sourcePixels) {\n sourcePixels = tempRectangle;\n sourcePixels.width = current.width;\n sourcePixels.height = current.height;\n }\n if (!destPixels) {\n destPixels = sourcePixels;\n }\n const sameSize = sourcePixels.width === destPixels.width && sourcePixels.height === destPixels.height;\n this.bind(framebuffer);\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbo.framebuffer);\n gl.blitFramebuffer(sourcePixels.left, sourcePixels.top, sourcePixels.right, sourcePixels.bottom, destPixels.left, destPixels.top, destPixels.right, destPixels.bottom, gl.COLOR_BUFFER_BIT, sameSize ? gl.NEAREST : gl.LINEAR);\n }\n disposeFramebuffer(framebuffer, contextLost) {\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n const gl = this.gl;\n if (!fbo) {\n return;\n }\n delete framebuffer.glFramebuffers[this.CONTEXT_UID];\n const index = this.managedFramebuffers.indexOf(framebuffer);\n if (index >= 0) {\n this.managedFramebuffers.splice(index, 1);\n }\n framebuffer.disposeRunner.remove(this);\n if (!contextLost) {\n gl.deleteFramebuffer(fbo.framebuffer);\n if (fbo.msaaBuffer) {\n gl.deleteRenderbuffer(fbo.msaaBuffer);\n }\n if (fbo.stencil) {\n gl.deleteRenderbuffer(fbo.stencil);\n }\n }\n if (fbo.blitFramebuffer) {\n fbo.blitFramebuffer.dispose();\n }\n }\n disposeAll(contextLost) {\n const list = this.managedFramebuffers;\n this.managedFramebuffers = [];\n for (let i = 0; i < list.length; i++) {\n this.disposeFramebuffer(list[i], contextLost);\n }\n }\n forceStencil() {\n const framebuffer = this.current;\n if (!framebuffer) {\n return;\n }\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n if (!fbo || fbo.stencil) {\n return;\n }\n framebuffer.stencil = true;\n const w = framebuffer.width;\n const h = framebuffer.height;\n const gl = this.gl;\n const stencil = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, stencil);\n if (fbo.msaaBuffer) {\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, gl.DEPTH24_STENCIL8, w, h);\n } else {\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, w, h);\n }\n fbo.stencil = stencil;\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, stencil);\n }\n reset() {\n this.current = this.unknownFramebuffer;\n this.viewport = new Rectangle();\n }\n destroy() {\n this.renderer = null;\n }\n}\nFramebufferSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"framebuffer\"\n};\nextensions.add(FramebufferSystem);\n\nexport { FramebufferSystem };\n//# sourceMappingURL=FramebufferSystem.mjs.map\n","import { ENV, BUFFER_TYPE } from '@pixi/constants';\nimport '../settings.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { settings } from '@pixi/settings';\n\nconst byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 };\nclass GeometrySystem {\n constructor(renderer) {\n this.renderer = renderer;\n this._activeGeometry = null;\n this._activeVao = null;\n this.hasVao = true;\n this.hasInstance = true;\n this.canUseUInt32ElementIndex = false;\n this.managedGeometries = {};\n }\n contextChange() {\n this.disposeAll(true);\n const gl = this.gl = this.renderer.gl;\n const context = this.renderer.context;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n if (context.webGLVersion !== 2) {\n let nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject;\n if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) {\n nativeVaoExtension = null;\n }\n if (nativeVaoExtension) {\n gl.createVertexArray = () => nativeVaoExtension.createVertexArrayOES();\n gl.bindVertexArray = (vao) => nativeVaoExtension.bindVertexArrayOES(vao);\n gl.deleteVertexArray = (vao) => nativeVaoExtension.deleteVertexArrayOES(vao);\n } else {\n this.hasVao = false;\n gl.createVertexArray = () => null;\n gl.bindVertexArray = () => null;\n gl.deleteVertexArray = () => null;\n }\n }\n if (context.webGLVersion !== 2) {\n const instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n if (instanceExt) {\n gl.vertexAttribDivisor = (a, b) => instanceExt.vertexAttribDivisorANGLE(a, b);\n gl.drawElementsInstanced = (a, b, c, d, e) => instanceExt.drawElementsInstancedANGLE(a, b, c, d, e);\n gl.drawArraysInstanced = (a, b, c, d) => instanceExt.drawArraysInstancedANGLE(a, b, c, d);\n } else {\n this.hasInstance = false;\n }\n }\n this.canUseUInt32ElementIndex = context.webGLVersion === 2 || !!context.extensions.uint32ElementIndex;\n }\n bind(geometry, shader) {\n shader = shader || this.renderer.shader.shader;\n const { gl } = this;\n let vaos = geometry.glVertexArrayObjects[this.CONTEXT_UID];\n let incRefCount = false;\n if (!vaos) {\n this.managedGeometries[geometry.id] = geometry;\n geometry.disposeRunner.add(this);\n geometry.glVertexArrayObjects[this.CONTEXT_UID] = vaos = {};\n incRefCount = true;\n }\n const vao = vaos[shader.program.id] || this.initGeometryVao(geometry, shader, incRefCount);\n this._activeGeometry = geometry;\n if (this._activeVao !== vao) {\n this._activeVao = vao;\n if (this.hasVao) {\n gl.bindVertexArray(vao);\n } else {\n this.activateVao(geometry, shader.program);\n }\n }\n this.updateBuffers();\n }\n reset() {\n this.unbind();\n }\n updateBuffers() {\n const geometry = this._activeGeometry;\n const bufferSystem = this.renderer.buffer;\n for (let i = 0; i < geometry.buffers.length; i++) {\n const buffer = geometry.buffers[i];\n bufferSystem.update(buffer);\n }\n }\n checkCompatibility(geometry, program) {\n const geometryAttributes = geometry.attributes;\n const shaderAttributes = program.attributeData;\n for (const j in shaderAttributes) {\n if (!geometryAttributes[j]) {\n throw new Error(`shader and geometry incompatible, geometry missing the \"${j}\" attribute`);\n }\n }\n }\n getSignature(geometry, program) {\n const attribs = geometry.attributes;\n const shaderAttributes = program.attributeData;\n const strings = [\"g\", geometry.id];\n for (const i in attribs) {\n if (shaderAttributes[i]) {\n strings.push(i, shaderAttributes[i].location);\n }\n }\n return strings.join(\"-\");\n }\n initGeometryVao(geometry, shader, incRefCount = true) {\n const gl = this.gl;\n const CONTEXT_UID = this.CONTEXT_UID;\n const bufferSystem = this.renderer.buffer;\n const program = shader.program;\n if (!program.glPrograms[CONTEXT_UID]) {\n this.renderer.shader.generateProgram(shader);\n }\n this.checkCompatibility(geometry, program);\n const signature = this.getSignature(geometry, program);\n const vaoObjectHash = geometry.glVertexArrayObjects[this.CONTEXT_UID];\n let vao = vaoObjectHash[signature];\n if (vao) {\n vaoObjectHash[program.id] = vao;\n return vao;\n }\n const buffers = geometry.buffers;\n const attributes = geometry.attributes;\n const tempStride = {};\n const tempStart = {};\n for (const j in buffers) {\n tempStride[j] = 0;\n tempStart[j] = 0;\n }\n for (const j in attributes) {\n if (!attributes[j].size && program.attributeData[j]) {\n attributes[j].size = program.attributeData[j].size;\n } else if (!attributes[j].size) {\n console.warn(`PIXI Geometry attribute '${j}' size cannot be determined (likely the bound shader does not have the attribute)`);\n }\n tempStride[attributes[j].buffer] += attributes[j].size * byteSizeMap[attributes[j].type];\n }\n for (const j in attributes) {\n const attribute = attributes[j];\n const attribSize = attribute.size;\n if (attribute.stride === void 0) {\n if (tempStride[attribute.buffer] === attribSize * byteSizeMap[attribute.type]) {\n attribute.stride = 0;\n } else {\n attribute.stride = tempStride[attribute.buffer];\n }\n }\n if (attribute.start === void 0) {\n attribute.start = tempStart[attribute.buffer];\n tempStart[attribute.buffer] += attribSize * byteSizeMap[attribute.type];\n }\n }\n vao = gl.createVertexArray();\n gl.bindVertexArray(vao);\n for (let i = 0; i < buffers.length; i++) {\n const buffer = buffers[i];\n bufferSystem.bind(buffer);\n if (incRefCount) {\n buffer._glBuffers[CONTEXT_UID].refCount++;\n }\n }\n this.activateVao(geometry, program);\n vaoObjectHash[program.id] = vao;\n vaoObjectHash[signature] = vao;\n gl.bindVertexArray(null);\n bufferSystem.unbind(BUFFER_TYPE.ARRAY_BUFFER);\n return vao;\n }\n disposeGeometry(geometry, contextLost) {\n if (!this.managedGeometries[geometry.id]) {\n return;\n }\n delete this.managedGeometries[geometry.id];\n const vaos = geometry.glVertexArrayObjects[this.CONTEXT_UID];\n const gl = this.gl;\n const buffers = geometry.buffers;\n const bufferSystem = this.renderer?.buffer;\n geometry.disposeRunner.remove(this);\n if (!vaos) {\n return;\n }\n if (bufferSystem) {\n for (let i = 0; i < buffers.length; i++) {\n const buf = buffers[i]._glBuffers[this.CONTEXT_UID];\n if (buf) {\n buf.refCount--;\n if (buf.refCount === 0 && !contextLost) {\n bufferSystem.dispose(buffers[i], contextLost);\n }\n }\n }\n }\n if (!contextLost) {\n for (const vaoId in vaos) {\n if (vaoId[0] === \"g\") {\n const vao = vaos[vaoId];\n if (this._activeVao === vao) {\n this.unbind();\n }\n gl.deleteVertexArray(vao);\n }\n }\n }\n delete geometry.glVertexArrayObjects[this.CONTEXT_UID];\n }\n disposeAll(contextLost) {\n const all = Object.keys(this.managedGeometries);\n for (let i = 0; i < all.length; i++) {\n this.disposeGeometry(this.managedGeometries[all[i]], contextLost);\n }\n }\n activateVao(geometry, program) {\n const gl = this.gl;\n const CONTEXT_UID = this.CONTEXT_UID;\n const bufferSystem = this.renderer.buffer;\n const buffers = geometry.buffers;\n const attributes = geometry.attributes;\n if (geometry.indexBuffer) {\n bufferSystem.bind(geometry.indexBuffer);\n }\n let lastBuffer = null;\n for (const j in attributes) {\n const attribute = attributes[j];\n const buffer = buffers[attribute.buffer];\n const glBuffer = buffer._glBuffers[CONTEXT_UID];\n if (program.attributeData[j]) {\n if (lastBuffer !== glBuffer) {\n bufferSystem.bind(buffer);\n lastBuffer = glBuffer;\n }\n const location = program.attributeData[j].location;\n gl.enableVertexAttribArray(location);\n gl.vertexAttribPointer(location, attribute.size, attribute.type || gl.FLOAT, attribute.normalized, attribute.stride, attribute.start);\n if (attribute.instance) {\n if (this.hasInstance) {\n gl.vertexAttribDivisor(location, 1);\n } else {\n throw new Error(\"geometry error, GPU Instancing is not supported on this device\");\n }\n }\n }\n }\n }\n draw(type, size, start, instanceCount) {\n const { gl } = this;\n const geometry = this._activeGeometry;\n if (geometry.indexBuffer) {\n const byteSize = geometry.indexBuffer.data.BYTES_PER_ELEMENT;\n const glType = byteSize === 2 ? gl.UNSIGNED_SHORT : gl.UNSIGNED_INT;\n if (byteSize === 2 || byteSize === 4 && this.canUseUInt32ElementIndex) {\n if (geometry.instanced) {\n gl.drawElementsInstanced(type, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize, instanceCount || 1);\n } else {\n gl.drawElements(type, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize);\n }\n } else {\n console.warn(\"unsupported index buffer type: uint32\");\n }\n } else if (geometry.instanced) {\n gl.drawArraysInstanced(type, start, size || geometry.getSize(), instanceCount || 1);\n } else {\n gl.drawArrays(type, start, size || geometry.getSize());\n }\n return this;\n }\n unbind() {\n this.gl.bindVertexArray(null);\n this._activeVao = null;\n this._activeGeometry = null;\n }\n destroy() {\n this.renderer = null;\n }\n}\nGeometrySystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"geometry\"\n};\nextensions.add(GeometrySystem);\n\nexport { GeometrySystem };\n//# sourceMappingURL=GeometrySystem.mjs.map\n","import { MASK_TYPES } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\n\nclass MaskData {\n constructor(maskObject = null) {\n this.type = MASK_TYPES.NONE;\n this.autoDetect = true;\n this.maskObject = maskObject || null;\n this.pooled = false;\n this.isMaskData = true;\n this.resolution = null;\n this.multisample = settings.FILTER_MULTISAMPLE;\n this.enabled = true;\n this.colorMask = 15;\n this._filters = null;\n this._stencilCounter = 0;\n this._scissorCounter = 0;\n this._scissorRect = null;\n this._scissorRectLocal = null;\n this._colorMask = 15;\n this._target = null;\n }\n get filter() {\n return this._filters ? this._filters[0] : null;\n }\n set filter(value) {\n if (value) {\n if (this._filters) {\n this._filters[0] = value;\n } else {\n this._filters = [value];\n }\n } else {\n this._filters = null;\n }\n }\n reset() {\n if (this.pooled) {\n this.maskObject = null;\n this.type = MASK_TYPES.NONE;\n this.autoDetect = true;\n }\n this._target = null;\n this._scissorRectLocal = null;\n }\n copyCountersOrReset(maskAbove) {\n if (maskAbove) {\n this._stencilCounter = maskAbove._stencilCounter;\n this._scissorCounter = maskAbove._scissorCounter;\n this._scissorRect = maskAbove._scissorRect;\n } else {\n this._stencilCounter = 0;\n this._scissorCounter = 0;\n this._scissorRect = null;\n }\n }\n}\n\nexport { MaskData };\n//# sourceMappingURL=MaskData.mjs.map\n","function compileShader(gl, type, src) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, src);\n gl.compileShader(shader);\n return shader;\n}\n\nexport { compileShader };\n//# sourceMappingURL=compileShader.mjs.map\n","function logPrettyShaderError(gl, shader) {\n const shaderSrc = gl.getShaderSource(shader).split(\"\\n\").map((line, index) => `${index}: ${line}`);\n const shaderLog = gl.getShaderInfoLog(shader);\n const splitShader = shaderLog.split(\"\\n\");\n const dedupe = {};\n const lineNumbers = splitShader.map((line) => parseFloat(line.replace(/^ERROR\\: 0\\:([\\d]+)\\:.*$/, \"$1\"))).filter((n) => {\n if (n && !dedupe[n]) {\n dedupe[n] = true;\n return true;\n }\n return false;\n });\n const logArgs = [\"\"];\n lineNumbers.forEach((number) => {\n shaderSrc[number - 1] = `%c${shaderSrc[number - 1]}%c`;\n logArgs.push(\"background: #FF0000; color:#FFFFFF; font-size: 10px\", \"font-size: 10px\");\n });\n const fragmentSourceToLog = shaderSrc.join(\"\\n\");\n logArgs[0] = fragmentSourceToLog;\n console.error(shaderLog);\n console.groupCollapsed(\"click to view full shader code\");\n console.warn(...logArgs);\n console.groupEnd();\n}\nfunction logProgramError(gl, program, vertexShader, fragmentShader) {\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n logPrettyShaderError(gl, vertexShader);\n }\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n logPrettyShaderError(gl, fragmentShader);\n }\n console.error(\"PixiJS Error: Could not initialize shader.\");\n if (gl.getProgramInfoLog(program) !== \"\") {\n console.warn(\"PixiJS Warning: gl.getProgramInfoLog()\", gl.getProgramInfoLog(program));\n }\n }\n}\n\nexport { logProgramError };\n//# sourceMappingURL=logProgramError.mjs.map\n","function booleanArray(size) {\n const array = new Array(size);\n for (let i = 0; i < array.length; i++) {\n array[i] = false;\n }\n return array;\n}\nfunction defaultValue(type, size) {\n switch (type) {\n case \"float\":\n return 0;\n case \"vec2\":\n return new Float32Array(2 * size);\n case \"vec3\":\n return new Float32Array(3 * size);\n case \"vec4\":\n return new Float32Array(4 * size);\n case \"int\":\n case \"uint\":\n case \"sampler2D\":\n case \"sampler2DArray\":\n return 0;\n case \"ivec2\":\n return new Int32Array(2 * size);\n case \"ivec3\":\n return new Int32Array(3 * size);\n case \"ivec4\":\n return new Int32Array(4 * size);\n case \"uvec2\":\n return new Uint32Array(2 * size);\n case \"uvec3\":\n return new Uint32Array(3 * size);\n case \"uvec4\":\n return new Uint32Array(4 * size);\n case \"bool\":\n return false;\n case \"bvec2\":\n return booleanArray(2 * size);\n case \"bvec3\":\n return booleanArray(3 * size);\n case \"bvec4\":\n return booleanArray(4 * size);\n case \"mat2\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 1\n ]);\n case \"mat3\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ]);\n case \"mat4\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n }\n return null;\n}\n\nexport { defaultValue };\n//# sourceMappingURL=defaultValue.mjs.map\n","import '../../settings.mjs';\nimport { ENV } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\n\nconst unknownContext = {};\nlet context = unknownContext;\nfunction getTestContext() {\n if (context === unknownContext || context?.isContextLost()) {\n const canvas = settings.ADAPTER.createCanvas();\n let gl;\n if (settings.PREFER_ENV >= ENV.WEBGL2) {\n gl = canvas.getContext(\"webgl2\", {});\n }\n if (!gl) {\n gl = canvas.getContext(\"webgl\", {}) || canvas.getContext(\"experimental-webgl\", {});\n if (!gl) {\n gl = null;\n } else {\n gl.getExtension(\"WEBGL_draw_buffers\");\n }\n }\n context = gl;\n }\n return context;\n}\n\nexport { getTestContext };\n//# sourceMappingURL=getTestContext.mjs.map\n","import { getTestContext } from './getTestContext.mjs';\nimport { PRECISION } from '@pixi/constants';\n\nlet maxFragmentPrecision;\nfunction getMaxFragmentPrecision() {\n if (!maxFragmentPrecision) {\n maxFragmentPrecision = PRECISION.MEDIUM;\n const gl = getTestContext();\n if (gl) {\n if (gl.getShaderPrecisionFormat) {\n const shaderFragment = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n maxFragmentPrecision = shaderFragment.precision ? PRECISION.HIGH : PRECISION.MEDIUM;\n }\n }\n }\n return maxFragmentPrecision;\n}\n\nexport { getMaxFragmentPrecision };\n//# sourceMappingURL=getMaxFragmentPrecision.mjs.map\n","import { PRECISION } from '@pixi/constants';\n\nfunction setPrecision(src, requestedPrecision, maxSupportedPrecision) {\n if (src.substring(0, 9) !== \"precision\") {\n let precision = requestedPrecision;\n if (requestedPrecision === PRECISION.HIGH && maxSupportedPrecision !== PRECISION.HIGH) {\n precision = PRECISION.MEDIUM;\n }\n return `precision ${precision} float;\n${src}`;\n } else if (maxSupportedPrecision !== PRECISION.HIGH && src.substring(0, 15) === \"precision highp\") {\n return src.replace(\"precision highp\", \"precision mediump\");\n }\n return src;\n}\n\nexport { setPrecision };\n//# sourceMappingURL=setPrecision.mjs.map\n","const GLSL_TO_SIZE = {\n float: 1,\n vec2: 2,\n vec3: 3,\n vec4: 4,\n int: 1,\n ivec2: 2,\n ivec3: 3,\n ivec4: 4,\n uint: 1,\n uvec2: 2,\n uvec3: 3,\n uvec4: 4,\n bool: 1,\n bvec2: 2,\n bvec3: 3,\n bvec4: 4,\n mat2: 4,\n mat3: 9,\n mat4: 16,\n sampler2D: 1\n};\nfunction mapSize(type) {\n return GLSL_TO_SIZE[type];\n}\n\nexport { mapSize };\n//# sourceMappingURL=mapSize.mjs.map\n","let GL_TABLE = null;\nconst GL_TO_GLSL_TYPES = {\n FLOAT: \"float\",\n FLOAT_VEC2: \"vec2\",\n FLOAT_VEC3: \"vec3\",\n FLOAT_VEC4: \"vec4\",\n INT: \"int\",\n INT_VEC2: \"ivec2\",\n INT_VEC3: \"ivec3\",\n INT_VEC4: \"ivec4\",\n UNSIGNED_INT: \"uint\",\n UNSIGNED_INT_VEC2: \"uvec2\",\n UNSIGNED_INT_VEC3: \"uvec3\",\n UNSIGNED_INT_VEC4: \"uvec4\",\n BOOL: \"bool\",\n BOOL_VEC2: \"bvec2\",\n BOOL_VEC3: \"bvec3\",\n BOOL_VEC4: \"bvec4\",\n FLOAT_MAT2: \"mat2\",\n FLOAT_MAT3: \"mat3\",\n FLOAT_MAT4: \"mat4\",\n SAMPLER_2D: \"sampler2D\",\n INT_SAMPLER_2D: \"sampler2D\",\n UNSIGNED_INT_SAMPLER_2D: \"sampler2D\",\n SAMPLER_CUBE: \"samplerCube\",\n INT_SAMPLER_CUBE: \"samplerCube\",\n UNSIGNED_INT_SAMPLER_CUBE: \"samplerCube\",\n SAMPLER_2D_ARRAY: \"sampler2DArray\",\n INT_SAMPLER_2D_ARRAY: \"sampler2DArray\",\n UNSIGNED_INT_SAMPLER_2D_ARRAY: \"sampler2DArray\"\n};\nfunction mapType(gl, type) {\n if (!GL_TABLE) {\n const typeNames = Object.keys(GL_TO_GLSL_TYPES);\n GL_TABLE = {};\n for (let i = 0; i < typeNames.length; ++i) {\n const tn = typeNames[i];\n GL_TABLE[gl[tn]] = GL_TO_GLSL_TYPES[tn];\n }\n }\n return GL_TABLE[type];\n}\n\nexport { mapType };\n//# sourceMappingURL=mapType.mjs.map\n","const uniformParsers = [\n {\n test: (data) => data.type === \"float\" && data.size === 1 && !data.isArray,\n code: (name) => `\n if(uv[\"${name}\"] !== ud[\"${name}\"].value)\n {\n ud[\"${name}\"].value = uv[\"${name}\"]\n gl.uniform1f(ud[\"${name}\"].location, uv[\"${name}\"])\n }\n `\n },\n {\n test: (data, uniform) => (data.type === \"sampler2D\" || data.type === \"samplerCube\" || data.type === \"sampler2DArray\") && data.size === 1 && !data.isArray && (uniform == null || uniform.castToBaseTexture !== void 0),\n code: (name) => `t = syncData.textureCount++;\n\n renderer.texture.bind(uv[\"${name}\"], t);\n\n if(ud[\"${name}\"].value !== t)\n {\n ud[\"${name}\"].value = t;\n gl.uniform1i(ud[\"${name}\"].location, t);\n; // eslint-disable-line max-len\n }`\n },\n {\n test: (data, uniform) => data.type === \"mat3\" && data.size === 1 && !data.isArray && uniform.a !== void 0,\n code: (name) => `\n gl.uniformMatrix3fv(ud[\"${name}\"].location, false, uv[\"${name}\"].toArray(true));\n `,\n codeUbo: (name) => `\n var ${name}_matrix = uv.${name}.toArray(true);\n\n data[offset] = ${name}_matrix[0];\n data[offset+1] = ${name}_matrix[1];\n data[offset+2] = ${name}_matrix[2];\n \n data[offset + 4] = ${name}_matrix[3];\n data[offset + 5] = ${name}_matrix[4];\n data[offset + 6] = ${name}_matrix[5];\n \n data[offset + 8] = ${name}_matrix[6];\n data[offset + 9] = ${name}_matrix[7];\n data[offset + 10] = ${name}_matrix[8];\n `\n },\n {\n test: (data, uniform) => data.type === \"vec2\" && data.size === 1 && !data.isArray && uniform.x !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.x || cv[1] !== v.y)\n {\n cv[0] = v.x;\n cv[1] = v.y;\n gl.uniform2f(ud[\"${name}\"].location, v.x, v.y);\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n `\n },\n {\n test: (data) => data.type === \"vec2\" && data.size === 1 && !data.isArray,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2f(ud[\"${name}\"].location, v[0], v[1]);\n }\n `\n },\n {\n test: (data, uniform) => data.type === \"vec4\" && data.size === 1 && !data.isArray && uniform.width !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height)\n {\n cv[0] = v.x;\n cv[1] = v.y;\n cv[2] = v.width;\n cv[3] = v.height;\n gl.uniform4f(ud[\"${name}\"].location, v.x, v.y, v.width, v.height)\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n data[offset+2] = v.width;\n data[offset+3] = v.height;\n `\n },\n {\n test: (data) => data.type === \"vec4\" && data.size === 1 && !data.isArray,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4f(ud[\"${name}\"].location, v[0], v[1], v[2], v[3])\n }`\n }\n];\n\nexport { uniformParsers };\n//# sourceMappingURL=uniformParsers.mjs.map\n","import { uniformParsers } from './uniformParsers.mjs';\n\nconst GLSL_TO_SINGLE_SETTERS_CACHED = {\n float: `\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1f(location, v);\n }`,\n vec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2f(location, v[0], v[1])\n }`,\n vec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3f(location, v[0], v[1], v[2])\n }`,\n vec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4f(location, v[0], v[1], v[2], v[3]);\n }`,\n int: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n ivec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2i(location, v[0], v[1]);\n }`,\n ivec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n ivec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n uint: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1ui(location, v);\n }`,\n uvec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2ui(location, v[0], v[1]);\n }`,\n uvec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3ui(location, v[0], v[1], v[2]);\n }`,\n uvec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4ui(location, v[0], v[1], v[2], v[3]);\n }`,\n bool: `\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n bvec2: `\n if (cv[0] != v[0] || cv[1] != v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2i(location, v[0], v[1]);\n }`,\n bvec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n bvec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n mat2: \"gl.uniformMatrix2fv(location, false, v)\",\n mat3: \"gl.uniformMatrix3fv(location, false, v)\",\n mat4: \"gl.uniformMatrix4fv(location, false, v)\",\n sampler2D: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n samplerCube: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n sampler2DArray: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`\n};\nconst GLSL_TO_ARRAY_SETTERS = {\n float: `gl.uniform1fv(location, v)`,\n vec2: `gl.uniform2fv(location, v)`,\n vec3: `gl.uniform3fv(location, v)`,\n vec4: \"gl.uniform4fv(location, v)\",\n mat4: \"gl.uniformMatrix4fv(location, false, v)\",\n mat3: \"gl.uniformMatrix3fv(location, false, v)\",\n mat2: \"gl.uniformMatrix2fv(location, false, v)\",\n int: \"gl.uniform1iv(location, v)\",\n ivec2: \"gl.uniform2iv(location, v)\",\n ivec3: \"gl.uniform3iv(location, v)\",\n ivec4: \"gl.uniform4iv(location, v)\",\n uint: \"gl.uniform1uiv(location, v)\",\n uvec2: \"gl.uniform2uiv(location, v)\",\n uvec3: \"gl.uniform3uiv(location, v)\",\n uvec4: \"gl.uniform4uiv(location, v)\",\n bool: \"gl.uniform1iv(location, v)\",\n bvec2: \"gl.uniform2iv(location, v)\",\n bvec3: \"gl.uniform3iv(location, v)\",\n bvec4: \"gl.uniform4iv(location, v)\",\n sampler2D: \"gl.uniform1iv(location, v)\",\n samplerCube: \"gl.uniform1iv(location, v)\",\n sampler2DArray: \"gl.uniform1iv(location, v)\"\n};\nfunction generateUniformsSync(group, uniformData) {\n const funcFragments = [`\n var v = null;\n var cv = null;\n var cu = null;\n var t = 0;\n var gl = renderer.gl;\n `];\n for (const i in group.uniforms) {\n const data = uniformData[i];\n if (!data) {\n if (group.uniforms[i]?.group) {\n if (group.uniforms[i].ubo) {\n funcFragments.push(`\n renderer.shader.syncUniformBufferGroup(uv.${i}, '${i}');\n `);\n } else {\n funcFragments.push(`\n renderer.shader.syncUniformGroup(uv.${i}, syncData);\n `);\n }\n }\n continue;\n }\n const uniform = group.uniforms[i];\n let parsed = false;\n for (let j = 0; j < uniformParsers.length; j++) {\n if (uniformParsers[j].test(data, uniform)) {\n funcFragments.push(uniformParsers[j].code(i, uniform));\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n const templateType = data.size === 1 && !data.isArray ? GLSL_TO_SINGLE_SETTERS_CACHED : GLSL_TO_ARRAY_SETTERS;\n const template = templateType[data.type].replace(\"location\", `ud[\"${i}\"].location`);\n funcFragments.push(`\n cu = ud[\"${i}\"];\n cv = cu.value;\n v = uv[\"${i}\"];\n ${template};`);\n }\n }\n return new Function(\"ud\", \"uv\", \"renderer\", \"syncData\", funcFragments.join(\"\\n\"));\n}\n\nexport { generateUniformsSync };\n//# sourceMappingURL=generateUniformsSync.mjs.map\n","const fragTemplate = [\n \"precision mediump float;\",\n \"void main(void){\",\n \"float test = 0.1;\",\n \"%forloop%\",\n \"gl_FragColor = vec4(0.0);\",\n \"}\"\n].join(\"\\n\");\nfunction generateIfTestSrc(maxIfs) {\n let src = \"\";\n for (let i = 0; i < maxIfs; ++i) {\n if (i > 0) {\n src += \"\\nelse \";\n }\n if (i < maxIfs - 1) {\n src += `if(test == ${i}.0){}`;\n }\n }\n return src;\n}\nfunction checkMaxIfStatementsInShader(maxIfs, gl) {\n if (maxIfs === 0) {\n throw new Error(\"Invalid value of `0` passed to `checkMaxIfStatementsInShader`\");\n }\n const shader = gl.createShader(gl.FRAGMENT_SHADER);\n while (true) {\n const fragmentSrc = fragTemplate.replace(/%forloop%/gi, generateIfTestSrc(maxIfs));\n gl.shaderSource(shader, fragmentSrc);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n maxIfs = maxIfs / 2 | 0;\n } else {\n break;\n }\n }\n return maxIfs;\n}\n\nexport { checkMaxIfStatementsInShader };\n//# sourceMappingURL=checkMaxIfStatementsInShader.mjs.map\n","let unsafeEval;\nfunction unsafeEvalSupported() {\n if (typeof unsafeEval === \"boolean\") {\n return unsafeEval;\n }\n try {\n const func = new Function(\"param1\", \"param2\", \"param3\", \"return param1[param2] === param3;\");\n unsafeEval = func({ a: \"b\" }, \"a\", \"b\") === true;\n } catch (e) {\n unsafeEval = false;\n }\n return unsafeEval;\n}\n\nexport { unsafeEvalSupported };\n//# sourceMappingURL=unsafeEvalSupported.mjs.map\n","var defaultFragment = \"varying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void){\\n gl_FragColor *= texture2D(uSampler, vTextureCoord);\\n}\";\n\nexport { defaultFragment as default };\n//# sourceMappingURL=defaultProgram.mjs.map\n","var defaultVertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void){\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n}\\n\";\n\nexport { defaultVertex as default };\n//# sourceMappingURL=defaultProgram2.mjs.map\n","import './utils/index.mjs';\nimport { ProgramCache } from '@pixi/utils';\nimport defaultFragment from './defaultProgram.mjs';\nimport defaultVertex from './defaultProgram2.mjs';\nimport { settings } from '@pixi/settings';\nimport { PRECISION } from '@pixi/constants';\nimport { setPrecision } from './utils/setPrecision.mjs';\nimport { getMaxFragmentPrecision } from './utils/getMaxFragmentPrecision.mjs';\n\nlet UID = 0;\nconst nameCache = {};\nclass Program {\n constructor(vertexSrc, fragmentSrc, name = \"pixi-shader\", extra = {}) {\n this.extra = {};\n this.id = UID++;\n this.vertexSrc = vertexSrc || Program.defaultVertexSrc;\n this.fragmentSrc = fragmentSrc || Program.defaultFragmentSrc;\n this.vertexSrc = this.vertexSrc.trim();\n this.fragmentSrc = this.fragmentSrc.trim();\n this.extra = extra;\n if (this.vertexSrc.substring(0, 8) !== \"#version\") {\n name = name.replace(/\\s+/g, \"-\");\n if (nameCache[name]) {\n nameCache[name]++;\n name += `-${nameCache[name]}`;\n } else {\n nameCache[name] = 1;\n }\n this.vertexSrc = `#define SHADER_NAME ${name}\n${this.vertexSrc}`;\n this.fragmentSrc = `#define SHADER_NAME ${name}\n${this.fragmentSrc}`;\n this.vertexSrc = setPrecision(this.vertexSrc, settings.PRECISION_VERTEX, PRECISION.HIGH);\n this.fragmentSrc = setPrecision(this.fragmentSrc, settings.PRECISION_FRAGMENT, getMaxFragmentPrecision());\n }\n this.glPrograms = {};\n this.syncUniforms = null;\n }\n static get defaultVertexSrc() {\n return defaultVertex;\n }\n static get defaultFragmentSrc() {\n return defaultFragment;\n }\n static from(vertexSrc, fragmentSrc, name) {\n const key = vertexSrc + fragmentSrc;\n let program = ProgramCache[key];\n if (!program) {\n ProgramCache[key] = program = new Program(vertexSrc, fragmentSrc, name);\n }\n return program;\n }\n}\n\nexport { Program };\n//# sourceMappingURL=Program.mjs.map\n","import { Program } from './Program.mjs';\nimport { UniformGroup } from './UniformGroup.mjs';\nimport { Runner } from '@pixi/runner';\n\nclass Shader {\n constructor(program, uniforms) {\n this.uniformBindCount = 0;\n this.program = program;\n if (uniforms) {\n if (uniforms instanceof UniformGroup) {\n this.uniformGroup = uniforms;\n } else {\n this.uniformGroup = new UniformGroup(uniforms);\n }\n } else {\n this.uniformGroup = new UniformGroup({});\n }\n this.disposeRunner = new Runner(\"disposeShader\");\n }\n checkUniformExists(name, group) {\n if (group.uniforms[name]) {\n return true;\n }\n for (const i in group.uniforms) {\n const uniform = group.uniforms[i];\n if (uniform.group) {\n if (this.checkUniformExists(name, uniform)) {\n return true;\n }\n }\n }\n return false;\n }\n destroy() {\n this.uniformGroup = null;\n this.disposeRunner.emit(this);\n this.disposeRunner.destroy();\n }\n get uniforms() {\n return this.uniformGroup.uniforms;\n }\n static from(vertexSrc, fragmentSrc, uniforms) {\n const program = Program.from(vertexSrc, fragmentSrc);\n return new Shader(program, uniforms);\n }\n}\n\nexport { Shader };\n//# sourceMappingURL=Shader.mjs.map\n","import { BLEND_MODES } from '@pixi/constants';\n\nconst BLEND = 0;\nconst OFFSET = 1;\nconst CULLING = 2;\nconst DEPTH_TEST = 3;\nconst WINDING = 4;\nconst DEPTH_MASK = 5;\nclass State {\n constructor() {\n this.data = 0;\n this.blendMode = BLEND_MODES.NORMAL;\n this.polygonOffset = 0;\n this.blend = true;\n this.depthMask = true;\n }\n get blend() {\n return !!(this.data & 1 << BLEND);\n }\n set blend(value) {\n if (!!(this.data & 1 << BLEND) !== value) {\n this.data ^= 1 << BLEND;\n }\n }\n get offsets() {\n return !!(this.data & 1 << OFFSET);\n }\n set offsets(value) {\n if (!!(this.data & 1 << OFFSET) !== value) {\n this.data ^= 1 << OFFSET;\n }\n }\n get culling() {\n return !!(this.data & 1 << CULLING);\n }\n set culling(value) {\n if (!!(this.data & 1 << CULLING) !== value) {\n this.data ^= 1 << CULLING;\n }\n }\n get depthTest() {\n return !!(this.data & 1 << DEPTH_TEST);\n }\n set depthTest(value) {\n if (!!(this.data & 1 << DEPTH_TEST) !== value) {\n this.data ^= 1 << DEPTH_TEST;\n }\n }\n get depthMask() {\n return !!(this.data & 1 << DEPTH_MASK);\n }\n set depthMask(value) {\n if (!!(this.data & 1 << DEPTH_MASK) !== value) {\n this.data ^= 1 << DEPTH_MASK;\n }\n }\n get clockwiseFrontFace() {\n return !!(this.data & 1 << WINDING);\n }\n set clockwiseFrontFace(value) {\n if (!!(this.data & 1 << WINDING) !== value) {\n this.data ^= 1 << WINDING;\n }\n }\n get blendMode() {\n return this._blendMode;\n }\n set blendMode(value) {\n this.blend = value !== BLEND_MODES.NONE;\n this._blendMode = value;\n }\n get polygonOffset() {\n return this._polygonOffset;\n }\n set polygonOffset(value) {\n this.offsets = !!value;\n this._polygonOffset = value;\n }\n static for2d() {\n const state = new State();\n state.depthTest = false;\n state.blend = true;\n return state;\n }\n}\n\nexport { State };\n//# sourceMappingURL=State.mjs.map\n","var defaultFragment = \"varying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void){\\n gl_FragColor = texture2D(uSampler, vTextureCoord);\\n}\\n\";\n\nexport { defaultFragment as default };\n//# sourceMappingURL=defaultFilter.mjs.map\n","var defaultVertex = \"attribute vec2 aVertexPosition;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform vec4 inputSize;\\nuniform vec4 outputFrame;\\n\\nvec4 filterVertexPosition( void )\\n{\\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\\n\\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\\n}\\n\\nvec2 filterTextureCoord( void )\\n{\\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\\n}\\n\\nvoid main(void)\\n{\\n gl_Position = filterVertexPosition();\\n vTextureCoord = filterTextureCoord();\\n}\\n\";\n\nexport { defaultVertex as default };\n//# sourceMappingURL=defaultFilter2.mjs.map\n","import { settings } from '@pixi/settings';\nimport { Program } from '../shader/Program.mjs';\nimport { Shader } from '../shader/Shader.mjs';\nimport { State } from '../state/State.mjs';\nimport defaultFragment from './defaultFilter.mjs';\nimport defaultVertex from './defaultFilter2.mjs';\n\nclass Filter extends Shader {\n constructor(vertexSrc, fragmentSrc, uniforms) {\n const program = Program.from(vertexSrc || Filter.defaultVertexSrc, fragmentSrc || Filter.defaultFragmentSrc);\n super(program, uniforms);\n this.padding = 0;\n this.resolution = settings.FILTER_RESOLUTION;\n this.multisample = settings.FILTER_MULTISAMPLE;\n this.enabled = true;\n this.autoFit = true;\n this.state = new State();\n }\n apply(filterManager, input, output, clearMode, _currentState) {\n filterManager.applyFilter(this, input, output, clearMode);\n }\n get blendMode() {\n return this.state.blendMode;\n }\n set blendMode(value) {\n this.state.blendMode = value;\n }\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._resolution = value;\n }\n static get defaultVertexSrc() {\n return defaultVertex;\n }\n static get defaultFragmentSrc() {\n return defaultFragment;\n }\n}\n\nexport { Filter };\n//# sourceMappingURL=Filter.mjs.map\n","var vertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 otherMatrix;\\n\\nvarying vec2 vMaskCoord;\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = aTextureCoord;\\n vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=spriteMaskFilter2.mjs.map\n","var fragment = \"varying vec2 vMaskCoord;\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform sampler2D mask;\\nuniform float alpha;\\nuniform float npmAlpha;\\nuniform vec4 maskClamp;\\n\\nvoid main(void)\\n{\\n float clip = step(3.5,\\n step(maskClamp.x, vMaskCoord.x) +\\n step(maskClamp.y, vMaskCoord.y) +\\n step(vMaskCoord.x, maskClamp.z) +\\n step(vMaskCoord.y, maskClamp.w));\\n\\n vec4 original = texture2D(uSampler, vTextureCoord);\\n vec4 masky = texture2D(mask, vMaskCoord);\\n float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);\\n\\n original *= (alphaMul * masky.r * alpha * clip);\\n\\n gl_FragColor = original;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=spriteMaskFilter3.mjs.map\n","import { Matrix } from '@pixi/math';\n\nconst tempMat = new Matrix();\nclass TextureMatrix {\n constructor(texture, clampMargin) {\n this._texture = texture;\n this.mapCoord = new Matrix();\n this.uClampFrame = new Float32Array(4);\n this.uClampOffset = new Float32Array(2);\n this._textureID = -1;\n this._updateID = 0;\n this.clampOffset = 0;\n this.clampMargin = typeof clampMargin === \"undefined\" ? 0.5 : clampMargin;\n this.isSimple = false;\n }\n get texture() {\n return this._texture;\n }\n set texture(value) {\n this._texture = value;\n this._textureID = -1;\n }\n multiplyUvs(uvs, out) {\n if (out === void 0) {\n out = uvs;\n }\n const mat = this.mapCoord;\n for (let i = 0; i < uvs.length; i += 2) {\n const x = uvs[i];\n const y = uvs[i + 1];\n out[i] = x * mat.a + y * mat.c + mat.tx;\n out[i + 1] = x * mat.b + y * mat.d + mat.ty;\n }\n return out;\n }\n update(forceUpdate) {\n const tex = this._texture;\n if (!tex || !tex.valid) {\n return false;\n }\n if (!forceUpdate && this._textureID === tex._updateID) {\n return false;\n }\n this._textureID = tex._updateID;\n this._updateID++;\n const uvs = tex._uvs;\n this.mapCoord.set(uvs.x1 - uvs.x0, uvs.y1 - uvs.y0, uvs.x3 - uvs.x0, uvs.y3 - uvs.y0, uvs.x0, uvs.y0);\n const orig = tex.orig;\n const trim = tex.trim;\n if (trim) {\n tempMat.set(orig.width / trim.width, 0, 0, orig.height / trim.height, -trim.x / trim.width, -trim.y / trim.height);\n this.mapCoord.append(tempMat);\n }\n const texBase = tex.baseTexture;\n const frame = this.uClampFrame;\n const margin = this.clampMargin / texBase.resolution;\n const offset = this.clampOffset;\n frame[0] = (tex._frame.x + margin + offset) / texBase.width;\n frame[1] = (tex._frame.y + margin + offset) / texBase.height;\n frame[2] = (tex._frame.x + tex._frame.width - margin + offset) / texBase.width;\n frame[3] = (tex._frame.y + tex._frame.height - margin + offset) / texBase.height;\n this.uClampOffset[0] = offset / texBase.realWidth;\n this.uClampOffset[1] = offset / texBase.realHeight;\n this.isSimple = tex._frame.width === texBase.width && tex._frame.height === texBase.height && tex.rotate === 0;\n return true;\n }\n}\n\nexport { TextureMatrix };\n//# sourceMappingURL=TextureMatrix.mjs.map\n","import { Filter } from '../Filter.mjs';\nimport { Matrix } from '@pixi/math';\nimport vertex from './spriteMaskFilter2.mjs';\nimport fragment from './spriteMaskFilter3.mjs';\nimport { TextureMatrix } from '../../textures/TextureMatrix.mjs';\n\nclass SpriteMaskFilter extends Filter {\n constructor(vertexSrc, fragmentSrc, uniforms) {\n let sprite = null;\n if (typeof vertexSrc !== \"string\" && fragmentSrc === void 0 && uniforms === void 0) {\n sprite = vertexSrc;\n vertexSrc = void 0;\n fragmentSrc = void 0;\n uniforms = void 0;\n }\n super(vertexSrc || vertex, fragmentSrc || fragment, uniforms);\n this.maskSprite = sprite;\n this.maskMatrix = new Matrix();\n }\n get maskSprite() {\n return this._maskSprite;\n }\n set maskSprite(value) {\n this._maskSprite = value;\n if (this._maskSprite) {\n this._maskSprite.renderable = false;\n }\n }\n apply(filterManager, input, output, clearMode) {\n const maskSprite = this._maskSprite;\n const tex = maskSprite._texture;\n if (!tex.valid) {\n return;\n }\n if (!tex.uvMatrix) {\n tex.uvMatrix = new TextureMatrix(tex, 0);\n }\n tex.uvMatrix.update();\n this.uniforms.npmAlpha = tex.baseTexture.alphaMode ? 0 : 1;\n this.uniforms.mask = tex;\n this.uniforms.otherMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, maskSprite).prepend(tex.uvMatrix.mapCoord);\n this.uniforms.alpha = maskSprite.worldAlpha;\n this.uniforms.maskClamp = tex.uvMatrix.uClampFrame;\n filterManager.applyFilter(this, input, output, clearMode);\n }\n}\n\nexport { SpriteMaskFilter };\n//# sourceMappingURL=SpriteMaskFilter.mjs.map\n","import { MaskData } from './MaskData.mjs';\nimport { SpriteMaskFilter } from '../filters/spriteMask/SpriteMaskFilter.mjs';\nimport { MASK_TYPES } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass MaskSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.enableScissor = true;\n this.alphaMaskPool = [];\n this.maskDataPool = [];\n this.maskStack = [];\n this.alphaMaskIndex = 0;\n }\n setMaskStack(maskStack) {\n this.maskStack = maskStack;\n this.renderer.scissor.setMaskStack(maskStack);\n this.renderer.stencil.setMaskStack(maskStack);\n }\n push(target, maskDataOrTarget) {\n let maskData = maskDataOrTarget;\n if (!maskData.isMaskData) {\n const d = this.maskDataPool.pop() || new MaskData();\n d.pooled = true;\n d.maskObject = maskDataOrTarget;\n maskData = d;\n }\n const maskAbove = this.maskStack.length !== 0 ? this.maskStack[this.maskStack.length - 1] : null;\n maskData.copyCountersOrReset(maskAbove);\n maskData._colorMask = maskAbove ? maskAbove._colorMask : 15;\n if (maskData.autoDetect) {\n this.detect(maskData);\n }\n maskData._target = target;\n if (maskData.type !== MASK_TYPES.SPRITE) {\n this.maskStack.push(maskData);\n }\n if (maskData.enabled) {\n switch (maskData.type) {\n case MASK_TYPES.SCISSOR:\n this.renderer.scissor.push(maskData);\n break;\n case MASK_TYPES.STENCIL:\n this.renderer.stencil.push(maskData);\n break;\n case MASK_TYPES.SPRITE:\n maskData.copyCountersOrReset(null);\n this.pushSpriteMask(maskData);\n break;\n case MASK_TYPES.COLOR:\n this.pushColorMask(maskData);\n break;\n default:\n break;\n }\n }\n if (maskData.type === MASK_TYPES.SPRITE) {\n this.maskStack.push(maskData);\n }\n }\n pop(target) {\n const maskData = this.maskStack.pop();\n if (!maskData || maskData._target !== target) {\n return;\n }\n if (maskData.enabled) {\n switch (maskData.type) {\n case MASK_TYPES.SCISSOR:\n this.renderer.scissor.pop(maskData);\n break;\n case MASK_TYPES.STENCIL:\n this.renderer.stencil.pop(maskData.maskObject);\n break;\n case MASK_TYPES.SPRITE:\n this.popSpriteMask(maskData);\n break;\n case MASK_TYPES.COLOR:\n this.popColorMask(maskData);\n break;\n default:\n break;\n }\n }\n maskData.reset();\n if (maskData.pooled) {\n this.maskDataPool.push(maskData);\n }\n if (this.maskStack.length !== 0) {\n const maskCurrent = this.maskStack[this.maskStack.length - 1];\n if (maskCurrent.type === MASK_TYPES.SPRITE && maskCurrent._filters) {\n maskCurrent._filters[0].maskSprite = maskCurrent.maskObject;\n }\n }\n }\n detect(maskData) {\n const maskObject = maskData.maskObject;\n if (!maskObject) {\n maskData.type = MASK_TYPES.COLOR;\n } else if (maskObject.isSprite) {\n maskData.type = MASK_TYPES.SPRITE;\n } else if (this.enableScissor && this.renderer.scissor.testScissor(maskData)) {\n maskData.type = MASK_TYPES.SCISSOR;\n } else {\n maskData.type = MASK_TYPES.STENCIL;\n }\n }\n pushSpriteMask(maskData) {\n const { maskObject } = maskData;\n const target = maskData._target;\n let alphaMaskFilter = maskData._filters;\n if (!alphaMaskFilter) {\n alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex];\n if (!alphaMaskFilter) {\n alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex] = [new SpriteMaskFilter()];\n }\n }\n const renderer = this.renderer;\n const renderTextureSystem = renderer.renderTexture;\n let resolution;\n let multisample;\n if (renderTextureSystem.current) {\n const renderTexture = renderTextureSystem.current;\n resolution = maskData.resolution || renderTexture.resolution;\n multisample = maskData.multisample ?? renderTexture.multisample;\n } else {\n resolution = maskData.resolution || renderer.resolution;\n multisample = maskData.multisample ?? renderer.multisample;\n }\n alphaMaskFilter[0].resolution = resolution;\n alphaMaskFilter[0].multisample = multisample;\n alphaMaskFilter[0].maskSprite = maskObject;\n const stashFilterArea = target.filterArea;\n target.filterArea = maskObject.getBounds(true);\n renderer.filter.push(target, alphaMaskFilter);\n target.filterArea = stashFilterArea;\n if (!maskData._filters) {\n this.alphaMaskIndex++;\n }\n }\n popSpriteMask(maskData) {\n this.renderer.filter.pop();\n if (maskData._filters) {\n maskData._filters[0].maskSprite = null;\n } else {\n this.alphaMaskIndex--;\n this.alphaMaskPool[this.alphaMaskIndex][0].maskSprite = null;\n }\n }\n pushColorMask(maskData) {\n const currColorMask = maskData._colorMask;\n const nextColorMask = maskData._colorMask = currColorMask & maskData.colorMask;\n if (nextColorMask !== currColorMask) {\n this.renderer.gl.colorMask((nextColorMask & 1) !== 0, (nextColorMask & 2) !== 0, (nextColorMask & 4) !== 0, (nextColorMask & 8) !== 0);\n }\n }\n popColorMask(maskData) {\n const currColorMask = maskData._colorMask;\n const nextColorMask = this.maskStack.length > 0 ? this.maskStack[this.maskStack.length - 1]._colorMask : 15;\n if (nextColorMask !== currColorMask) {\n this.renderer.gl.colorMask((nextColorMask & 1) !== 0, (nextColorMask & 2) !== 0, (nextColorMask & 4) !== 0, (nextColorMask & 8) !== 0);\n }\n }\n destroy() {\n this.renderer = null;\n }\n}\nMaskSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"mask\"\n};\nextensions.add(MaskSystem);\n\nexport { MaskSystem };\n//# sourceMappingURL=MaskSystem.mjs.map\n","class AbstractMaskSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.maskStack = [];\n this.glConst = 0;\n }\n getStackLength() {\n return this.maskStack.length;\n }\n setMaskStack(maskStack) {\n const { gl } = this.renderer;\n const curStackLen = this.getStackLength();\n this.maskStack = maskStack;\n const newStackLen = this.getStackLength();\n if (newStackLen !== curStackLen) {\n if (newStackLen === 0) {\n gl.disable(this.glConst);\n } else {\n gl.enable(this.glConst);\n this._useCurrent();\n }\n }\n }\n _useCurrent() {\n }\n destroy() {\n this.renderer = null;\n this.maskStack = null;\n }\n}\n\nexport { AbstractMaskSystem };\n//# sourceMappingURL=AbstractMaskSystem.mjs.map\n","import { AbstractMaskSystem } from './AbstractMaskSystem.mjs';\nimport { Matrix, Rectangle } from '@pixi/math';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { settings } from '@pixi/settings';\n\nconst tempMatrix = new Matrix();\nconst rectPool = [];\nconst _ScissorSystem = class extends AbstractMaskSystem {\n constructor(renderer) {\n super(renderer);\n this.glConst = settings.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST;\n }\n getStackLength() {\n const maskData = this.maskStack[this.maskStack.length - 1];\n if (maskData) {\n return maskData._scissorCounter;\n }\n return 0;\n }\n calcScissorRect(maskData) {\n if (maskData._scissorRectLocal) {\n return;\n }\n const prevData = maskData._scissorRect;\n const { maskObject } = maskData;\n const { renderer } = this;\n const renderTextureSystem = renderer.renderTexture;\n const rect = maskObject.getBounds(true, rectPool.pop() ?? new Rectangle());\n this.roundFrameToPixels(rect, renderTextureSystem.current ? renderTextureSystem.current.resolution : renderer.resolution, renderTextureSystem.sourceFrame, renderTextureSystem.destinationFrame, renderer.projection.transform);\n if (prevData) {\n rect.fit(prevData);\n }\n maskData._scissorRectLocal = rect;\n }\n static isMatrixRotated(matrix) {\n if (!matrix) {\n return false;\n }\n const { a, b, c, d } = matrix;\n return (Math.abs(b) > 1e-4 || Math.abs(c) > 1e-4) && (Math.abs(a) > 1e-4 || Math.abs(d) > 1e-4);\n }\n testScissor(maskData) {\n const { maskObject } = maskData;\n if (!maskObject.isFastRect || !maskObject.isFastRect()) {\n return false;\n }\n if (_ScissorSystem.isMatrixRotated(maskObject.worldTransform)) {\n return false;\n }\n if (_ScissorSystem.isMatrixRotated(this.renderer.projection.transform)) {\n return false;\n }\n this.calcScissorRect(maskData);\n const rect = maskData._scissorRectLocal;\n return rect.width > 0 && rect.height > 0;\n }\n roundFrameToPixels(frame, resolution, bindingSourceFrame, bindingDestinationFrame, transform) {\n if (_ScissorSystem.isMatrixRotated(transform)) {\n return;\n }\n transform = transform ? tempMatrix.copyFrom(transform) : tempMatrix.identity();\n transform.translate(-bindingSourceFrame.x, -bindingSourceFrame.y).scale(bindingDestinationFrame.width / bindingSourceFrame.width, bindingDestinationFrame.height / bindingSourceFrame.height).translate(bindingDestinationFrame.x, bindingDestinationFrame.y);\n this.renderer.filter.transformAABB(transform, frame);\n frame.fit(bindingDestinationFrame);\n frame.x = Math.round(frame.x * resolution);\n frame.y = Math.round(frame.y * resolution);\n frame.width = Math.round(frame.width * resolution);\n frame.height = Math.round(frame.height * resolution);\n }\n push(maskData) {\n if (!maskData._scissorRectLocal) {\n this.calcScissorRect(maskData);\n }\n const { gl } = this.renderer;\n if (!maskData._scissorRect) {\n gl.enable(gl.SCISSOR_TEST);\n }\n maskData._scissorCounter++;\n maskData._scissorRect = maskData._scissorRectLocal;\n this._useCurrent();\n }\n pop(maskData) {\n const { gl } = this.renderer;\n if (maskData) {\n rectPool.push(maskData._scissorRectLocal);\n }\n if (this.getStackLength() > 0) {\n this._useCurrent();\n } else {\n gl.disable(gl.SCISSOR_TEST);\n }\n }\n _useCurrent() {\n const rect = this.maskStack[this.maskStack.length - 1]._scissorRect;\n let y;\n if (this.renderer.renderTexture.current) {\n y = rect.y;\n } else {\n y = this.renderer.height - rect.height - rect.y;\n }\n this.renderer.gl.scissor(rect.x, y, rect.width, rect.height);\n }\n};\nlet ScissorSystem = _ScissorSystem;\nScissorSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"scissor\"\n};\nextensions.add(ScissorSystem);\n\nexport { ScissorSystem };\n//# sourceMappingURL=ScissorSystem.mjs.map\n","import { AbstractMaskSystem } from './AbstractMaskSystem.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { settings } from '@pixi/settings';\n\nclass StencilSystem extends AbstractMaskSystem {\n constructor(renderer) {\n super(renderer);\n this.glConst = settings.ADAPTER.getWebGLRenderingContext().STENCIL_TEST;\n }\n getStackLength() {\n const maskData = this.maskStack[this.maskStack.length - 1];\n if (maskData) {\n return maskData._stencilCounter;\n }\n return 0;\n }\n push(maskData) {\n const maskObject = maskData.maskObject;\n const { gl } = this.renderer;\n const prevMaskCount = maskData._stencilCounter;\n if (prevMaskCount === 0) {\n this.renderer.framebuffer.forceStencil();\n gl.clearStencil(0);\n gl.clear(gl.STENCIL_BUFFER_BIT);\n gl.enable(gl.STENCIL_TEST);\n }\n maskData._stencilCounter++;\n const colorMask = maskData._colorMask;\n if (colorMask !== 0) {\n maskData._colorMask = 0;\n gl.colorMask(false, false, false, false);\n }\n gl.stencilFunc(gl.EQUAL, prevMaskCount, 4294967295);\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.INCR);\n maskObject.renderable = true;\n maskObject.render(this.renderer);\n this.renderer.batch.flush();\n maskObject.renderable = false;\n if (colorMask !== 0) {\n maskData._colorMask = colorMask;\n gl.colorMask((colorMask & 1) !== 0, (colorMask & 2) !== 0, (colorMask & 4) !== 0, (colorMask & 8) !== 0);\n }\n this._useCurrent();\n }\n pop(maskObject) {\n const gl = this.renderer.gl;\n if (this.getStackLength() === 0) {\n gl.disable(gl.STENCIL_TEST);\n } else {\n const maskData = this.maskStack.length !== 0 ? this.maskStack[this.maskStack.length - 1] : null;\n const colorMask = maskData ? maskData._colorMask : 15;\n if (colorMask !== 0) {\n maskData._colorMask = 0;\n gl.colorMask(false, false, false, false);\n }\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR);\n maskObject.renderable = true;\n maskObject.render(this.renderer);\n this.renderer.batch.flush();\n maskObject.renderable = false;\n if (colorMask !== 0) {\n maskData._colorMask = colorMask;\n gl.colorMask((colorMask & 1) !== 0, (colorMask & 2) !== 0, (colorMask & 4) !== 0, (colorMask & 8) !== 0);\n }\n this._useCurrent();\n }\n }\n _useCurrent() {\n const gl = this.renderer.gl;\n gl.stencilFunc(gl.EQUAL, this.getStackLength(), 4294967295);\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);\n }\n}\nStencilSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"stencil\"\n};\nextensions.add(StencilSystem);\n\nexport { StencilSystem };\n//# sourceMappingURL=StencilSystem.mjs.map\n","import { Matrix } from '@pixi/math';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass ProjectionSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.destinationFrame = null;\n this.sourceFrame = null;\n this.defaultFrame = null;\n this.projectionMatrix = new Matrix();\n this.transform = null;\n }\n update(destinationFrame, sourceFrame, resolution, root) {\n this.destinationFrame = destinationFrame || this.destinationFrame || this.defaultFrame;\n this.sourceFrame = sourceFrame || this.sourceFrame || destinationFrame;\n this.calculateProjection(this.destinationFrame, this.sourceFrame, resolution, root);\n if (this.transform) {\n this.projectionMatrix.append(this.transform);\n }\n const renderer = this.renderer;\n renderer.globalUniforms.uniforms.projectionMatrix = this.projectionMatrix;\n renderer.globalUniforms.update();\n if (renderer.shader.shader) {\n renderer.shader.syncUniformGroup(renderer.shader.shader.uniforms.globals);\n }\n }\n calculateProjection(_destinationFrame, sourceFrame, _resolution, root) {\n const pm = this.projectionMatrix;\n const sign = !root ? 1 : -1;\n pm.identity();\n pm.a = 1 / sourceFrame.width * 2;\n pm.d = sign * (1 / sourceFrame.height * 2);\n pm.tx = -1 - sourceFrame.x * pm.a;\n pm.ty = -sign - sourceFrame.y * pm.d;\n }\n setTransform(_matrix) {\n }\n destroy() {\n this.renderer = null;\n }\n}\nProjectionSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"projection\"\n};\nextensions.add(ProjectionSystem);\n\nexport { ProjectionSystem };\n//# sourceMappingURL=ProjectionSystem.mjs.map\n","import { Rectangle } from '@pixi/math';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nconst tempRect = new Rectangle();\nconst tempRect2 = new Rectangle();\nclass RenderTextureSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.defaultMaskStack = [];\n this.current = null;\n this.sourceFrame = new Rectangle();\n this.destinationFrame = new Rectangle();\n this.viewportFrame = new Rectangle();\n }\n bind(renderTexture = null, sourceFrame, destinationFrame) {\n const renderer = this.renderer;\n this.current = renderTexture;\n let baseTexture;\n let framebuffer;\n let resolution;\n if (renderTexture) {\n baseTexture = renderTexture.baseTexture;\n resolution = baseTexture.resolution;\n if (!sourceFrame) {\n tempRect.width = renderTexture.frame.width;\n tempRect.height = renderTexture.frame.height;\n sourceFrame = tempRect;\n }\n if (!destinationFrame) {\n tempRect2.x = renderTexture.frame.x;\n tempRect2.y = renderTexture.frame.y;\n tempRect2.width = sourceFrame.width;\n tempRect2.height = sourceFrame.height;\n destinationFrame = tempRect2;\n }\n framebuffer = baseTexture.framebuffer;\n } else {\n resolution = renderer.resolution;\n if (!sourceFrame) {\n tempRect.width = renderer._view.screen.width;\n tempRect.height = renderer._view.screen.height;\n sourceFrame = tempRect;\n }\n if (!destinationFrame) {\n destinationFrame = tempRect;\n destinationFrame.width = sourceFrame.width;\n destinationFrame.height = sourceFrame.height;\n }\n }\n const viewportFrame = this.viewportFrame;\n viewportFrame.x = destinationFrame.x * resolution;\n viewportFrame.y = destinationFrame.y * resolution;\n viewportFrame.width = destinationFrame.width * resolution;\n viewportFrame.height = destinationFrame.height * resolution;\n if (!renderTexture) {\n viewportFrame.y = renderer.view.height - (viewportFrame.y + viewportFrame.height);\n }\n viewportFrame.ceil();\n this.renderer.framebuffer.bind(framebuffer, viewportFrame);\n this.renderer.projection.update(destinationFrame, sourceFrame, resolution, !framebuffer);\n if (renderTexture) {\n this.renderer.mask.setMaskStack(baseTexture.maskStack);\n } else {\n this.renderer.mask.setMaskStack(this.defaultMaskStack);\n }\n this.sourceFrame.copyFrom(sourceFrame);\n this.destinationFrame.copyFrom(destinationFrame);\n }\n clear(clearColor, mask) {\n if (this.current) {\n clearColor = clearColor || this.current.baseTexture.clearColor;\n } else {\n clearColor = clearColor || this.renderer.background.colorRgba;\n }\n const destinationFrame = this.destinationFrame;\n const baseFrame = this.current ? this.current.baseTexture : this.renderer._view.screen;\n const clearMask = destinationFrame.width !== baseFrame.width || destinationFrame.height !== baseFrame.height;\n if (clearMask) {\n let { x, y, width, height } = this.viewportFrame;\n x = Math.round(x);\n y = Math.round(y);\n width = Math.round(width);\n height = Math.round(height);\n this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST);\n this.renderer.gl.scissor(x, y, width, height);\n }\n this.renderer.framebuffer.clear(clearColor[0], clearColor[1], clearColor[2], clearColor[3], mask);\n if (clearMask) {\n this.renderer.scissor.pop();\n }\n }\n resize() {\n this.bind(null);\n }\n reset() {\n this.bind(null);\n }\n destroy() {\n this.renderer = null;\n }\n}\nRenderTextureSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"renderTexture\"\n};\nextensions.add(RenderTextureSystem);\n\nexport { RenderTextureSystem };\n//# sourceMappingURL=RenderTextureSystem.mjs.map\n","import './index.mjs';\nimport { uniformParsers } from './uniformParsers.mjs';\nimport { mapSize } from './mapSize.mjs';\n\nfunction uboUpdate(_ud, _uv, _renderer, _syncData, buffer) {\n _renderer.buffer.update(buffer);\n}\nconst UBO_TO_SINGLE_SETTERS = {\n float: `\n data[offset] = v;\n `,\n vec2: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n `,\n vec3: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n\n `,\n vec4: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n data[offset+3] = v[3];\n `,\n mat2: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n\n data[offset+4] = v[2];\n data[offset+5] = v[3];\n `,\n mat3: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n\n data[offset + 4] = v[3];\n data[offset + 5] = v[4];\n data[offset + 6] = v[5];\n\n data[offset + 8] = v[6];\n data[offset + 9] = v[7];\n data[offset + 10] = v[8];\n `,\n mat4: `\n for(var i = 0; i < 16; i++)\n {\n data[offset + i] = v[i];\n }\n `\n};\nconst GLSL_TO_STD40_SIZE = {\n float: 4,\n vec2: 8,\n vec3: 12,\n vec4: 16,\n int: 4,\n ivec2: 8,\n ivec3: 12,\n ivec4: 16,\n uint: 4,\n uvec2: 8,\n uvec3: 12,\n uvec4: 16,\n bool: 4,\n bvec2: 8,\n bvec3: 12,\n bvec4: 16,\n mat2: 16 * 2,\n mat3: 16 * 3,\n mat4: 16 * 4\n};\nfunction createUBOElements(uniformData) {\n const uboElements = uniformData.map((data) => ({\n data,\n offset: 0,\n dataLen: 0,\n dirty: 0\n }));\n let size = 0;\n let chunkSize = 0;\n let offset = 0;\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n size = GLSL_TO_STD40_SIZE[uboElement.data.type];\n if (uboElement.data.size > 1) {\n size = Math.max(size, 16) * uboElement.data.size;\n }\n uboElement.dataLen = size;\n if (chunkSize % size !== 0 && chunkSize < 16) {\n const lineUpValue = chunkSize % size % 16;\n chunkSize += lineUpValue;\n offset += lineUpValue;\n }\n if (chunkSize + size > 16) {\n offset = Math.ceil(offset / 16) * 16;\n uboElement.offset = offset;\n offset += size;\n chunkSize = size;\n } else {\n uboElement.offset = offset;\n chunkSize += size;\n offset += size;\n }\n }\n offset = Math.ceil(offset / 16) * 16;\n return { uboElements, size: offset };\n}\nfunction getUBOData(uniforms, uniformData) {\n const usedUniformDatas = [];\n for (const i in uniforms) {\n if (uniformData[i]) {\n usedUniformDatas.push(uniformData[i]);\n }\n }\n usedUniformDatas.sort((a, b) => a.index - b.index);\n return usedUniformDatas;\n}\nfunction generateUniformBufferSync(group, uniformData) {\n if (!group.autoManage) {\n return { size: 0, syncFunc: uboUpdate };\n }\n const usedUniformDatas = getUBOData(group.uniforms, uniformData);\n const { uboElements, size } = createUBOElements(usedUniformDatas);\n const funcFragments = [`\n var v = null;\n var v2 = null;\n var cv = null;\n var t = 0;\n var gl = renderer.gl\n var index = 0;\n var data = buffer.data;\n `];\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n const uniform = group.uniforms[uboElement.data.name];\n const name = uboElement.data.name;\n let parsed = false;\n for (let j = 0; j < uniformParsers.length; j++) {\n const uniformParser = uniformParsers[j];\n if (uniformParser.codeUbo && uniformParser.test(uboElement.data, uniform)) {\n funcFragments.push(`offset = ${uboElement.offset / 4};`, uniformParsers[j].codeUbo(uboElement.data.name, uniform));\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n if (uboElement.data.size > 1) {\n const size2 = mapSize(uboElement.data.type);\n const rowSize = Math.max(GLSL_TO_STD40_SIZE[uboElement.data.type] / 16, 1);\n const elementSize = size2 / rowSize;\n const remainder = (4 - elementSize % 4) % 4;\n funcFragments.push(`\n cv = ud.${name}.value;\n v = uv.${name};\n offset = ${uboElement.offset / 4};\n\n t = 0;\n\n for(var i=0; i < ${uboElement.data.size * rowSize}; i++)\n {\n for(var j = 0; j < ${elementSize}; j++)\n {\n data[offset++] = v[t++];\n }\n offset += ${remainder};\n }\n\n `);\n } else {\n const template = UBO_TO_SINGLE_SETTERS[uboElement.data.type];\n funcFragments.push(`\n cv = ud.${name}.value;\n v = uv.${name};\n offset = ${uboElement.offset / 4};\n ${template};\n `);\n }\n }\n }\n funcFragments.push(`\n renderer.buffer.update(buffer);\n `);\n return {\n size,\n syncFunc: new Function(\"ud\", \"uv\", \"renderer\", \"syncData\", \"buffer\", funcFragments.join(\"\\n\"))\n };\n}\n\nexport { createUBOElements, generateUniformBufferSync, getUBOData };\n//# sourceMappingURL=generateUniformBufferSync.mjs.map\n","class IGLUniformData {\n}\nclass GLProgram {\n constructor(program, uniformData) {\n this.program = program;\n this.uniformData = uniformData;\n this.uniformGroups = {};\n this.uniformDirtyGroups = {};\n this.uniformBufferBindings = {};\n }\n destroy() {\n this.uniformData = null;\n this.uniformGroups = null;\n this.uniformDirtyGroups = null;\n this.uniformBufferBindings = null;\n this.program = null;\n }\n}\n\nexport { GLProgram, IGLUniformData };\n//# sourceMappingURL=GLProgram.mjs.map\n","import { mapSize } from './mapSize.mjs';\nimport { mapType } from './mapType.mjs';\n\nfunction getAttributeData(program, gl) {\n const attributes = {};\n const totalAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n for (let i = 0; i < totalAttributes; i++) {\n const attribData = gl.getActiveAttrib(program, i);\n if (attribData.name.startsWith(\"gl_\")) {\n continue;\n }\n const type = mapType(gl, attribData.type);\n const data = {\n type,\n name: attribData.name,\n size: mapSize(type),\n location: gl.getAttribLocation(program, attribData.name)\n };\n attributes[attribData.name] = data;\n }\n return attributes;\n}\n\nexport { getAttributeData };\n//# sourceMappingURL=getAttributeData.mjs.map\n","import { defaultValue } from './defaultValue.mjs';\nimport { mapType } from './mapType.mjs';\n\nfunction getUniformData(program, gl) {\n const uniforms = {};\n const totalUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n for (let i = 0; i < totalUniforms; i++) {\n const uniformData = gl.getActiveUniform(program, i);\n const name = uniformData.name.replace(/\\[.*?\\]$/, \"\");\n const isArray = !!uniformData.name.match(/\\[.*?\\]$/);\n const type = mapType(gl, uniformData.type);\n uniforms[name] = {\n name,\n index: i,\n type,\n size: uniformData.size,\n isArray,\n value: defaultValue(type, uniformData.size)\n };\n }\n return uniforms;\n}\n\nexport { getUniformData };\n//# sourceMappingURL=getUniformData.mjs.map\n","import { GLProgram } from '../GLProgram.mjs';\nimport { compileShader } from './compileShader.mjs';\nimport { defaultValue } from './defaultValue.mjs';\nimport { getAttributeData } from './getAttributeData.mjs';\nimport { getUniformData } from './getUniformData.mjs';\nimport { logProgramError } from './logProgramError.mjs';\n\nfunction generateProgram(gl, program) {\n const glVertShader = compileShader(gl, gl.VERTEX_SHADER, program.vertexSrc);\n const glFragShader = compileShader(gl, gl.FRAGMENT_SHADER, program.fragmentSrc);\n const webGLProgram = gl.createProgram();\n gl.attachShader(webGLProgram, glVertShader);\n gl.attachShader(webGLProgram, glFragShader);\n const transformFeedbackVaryings = program.extra?.transformFeedbackVaryings;\n if (transformFeedbackVaryings) {\n if (typeof gl.transformFeedbackVaryings !== \"function\") {\n } else {\n gl.transformFeedbackVaryings(webGLProgram, transformFeedbackVaryings.names, transformFeedbackVaryings.bufferMode === \"separate\" ? gl.SEPARATE_ATTRIBS : gl.INTERLEAVED_ATTRIBS);\n }\n }\n gl.linkProgram(webGLProgram);\n if (!gl.getProgramParameter(webGLProgram, gl.LINK_STATUS)) {\n logProgramError(gl, webGLProgram, glVertShader, glFragShader);\n }\n program.attributeData = getAttributeData(webGLProgram, gl);\n program.uniformData = getUniformData(webGLProgram, gl);\n if (!/^[ \\t]*#[ \\t]*version[ \\t]+300[ \\t]+es[ \\t]*$/m.test(program.vertexSrc)) {\n const keys = Object.keys(program.attributeData);\n keys.sort((a, b) => a > b ? 1 : -1);\n for (let i = 0; i < keys.length; i++) {\n program.attributeData[keys[i]].location = i;\n gl.bindAttribLocation(webGLProgram, i, keys[i]);\n }\n gl.linkProgram(webGLProgram);\n }\n gl.deleteShader(glVertShader);\n gl.deleteShader(glFragShader);\n const uniformData = {};\n for (const i in program.uniformData) {\n const data = program.uniformData[i];\n uniformData[i] = {\n location: gl.getUniformLocation(webGLProgram, i),\n value: defaultValue(data.type, data.size)\n };\n }\n const glProgram = new GLProgram(webGLProgram, uniformData);\n return glProgram;\n}\n\nexport { generateProgram };\n//# sourceMappingURL=generateProgram.mjs.map\n","import './utils/index.mjs';\nimport { generateUniformBufferSync } from './utils/generateUniformBufferSync.mjs';\nimport { generateProgram } from './utils/generateProgram.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { unsafeEvalSupported } from './utils/unsafeEvalSupported.mjs';\nimport { generateUniformsSync } from './utils/generateUniformsSync.mjs';\n\nlet UID = 0;\nconst defaultSyncData = { textureCount: 0, uboCount: 0 };\nclass ShaderSystem {\n constructor(renderer) {\n this.destroyed = false;\n this.renderer = renderer;\n this.systemCheck();\n this.gl = null;\n this.shader = null;\n this.program = null;\n this.cache = {};\n this._uboCache = {};\n this.id = UID++;\n }\n systemCheck() {\n if (!unsafeEvalSupported()) {\n throw new Error(\"Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.\");\n }\n }\n contextChange(gl) {\n this.gl = gl;\n this.reset();\n }\n bind(shader, dontSync) {\n shader.disposeRunner.add(this);\n shader.uniforms.globals = this.renderer.globalUniforms;\n const program = shader.program;\n const glProgram = program.glPrograms[this.renderer.CONTEXT_UID] || this.generateProgram(shader);\n this.shader = shader;\n if (this.program !== program) {\n this.program = program;\n this.gl.useProgram(glProgram.program);\n }\n if (!dontSync) {\n defaultSyncData.textureCount = 0;\n defaultSyncData.uboCount = 0;\n this.syncUniformGroup(shader.uniformGroup, defaultSyncData);\n }\n return glProgram;\n }\n setUniforms(uniforms) {\n const shader = this.shader.program;\n const glProgram = shader.glPrograms[this.renderer.CONTEXT_UID];\n shader.syncUniforms(glProgram.uniformData, uniforms, this.renderer);\n }\n syncUniformGroup(group, syncData) {\n const glProgram = this.getGlProgram();\n if (!group.static || group.dirtyId !== glProgram.uniformDirtyGroups[group.id]) {\n glProgram.uniformDirtyGroups[group.id] = group.dirtyId;\n this.syncUniforms(group, glProgram, syncData);\n }\n }\n syncUniforms(group, glProgram, syncData) {\n const syncFunc = group.syncUniforms[this.shader.program.id] || this.createSyncGroups(group);\n syncFunc(glProgram.uniformData, group.uniforms, this.renderer, syncData);\n }\n createSyncGroups(group) {\n const id = this.getSignature(group, this.shader.program.uniformData, \"u\");\n if (!this.cache[id]) {\n this.cache[id] = generateUniformsSync(group, this.shader.program.uniformData);\n }\n group.syncUniforms[this.shader.program.id] = this.cache[id];\n return group.syncUniforms[this.shader.program.id];\n }\n syncUniformBufferGroup(group, name) {\n const glProgram = this.getGlProgram();\n if (!group.static || group.dirtyId !== 0 || !glProgram.uniformGroups[group.id]) {\n group.dirtyId = 0;\n const syncFunc = glProgram.uniformGroups[group.id] || this.createSyncBufferGroup(group, glProgram, name);\n group.buffer.update();\n syncFunc(glProgram.uniformData, group.uniforms, this.renderer, defaultSyncData, group.buffer);\n }\n this.renderer.buffer.bindBufferBase(group.buffer, glProgram.uniformBufferBindings[name]);\n }\n createSyncBufferGroup(group, glProgram, name) {\n const { gl } = this.renderer;\n this.renderer.buffer.bind(group.buffer);\n const uniformBlockIndex = this.gl.getUniformBlockIndex(glProgram.program, name);\n glProgram.uniformBufferBindings[name] = this.shader.uniformBindCount;\n gl.uniformBlockBinding(glProgram.program, uniformBlockIndex, this.shader.uniformBindCount);\n this.shader.uniformBindCount++;\n const id = this.getSignature(group, this.shader.program.uniformData, \"ubo\");\n let uboData = this._uboCache[id];\n if (!uboData) {\n uboData = this._uboCache[id] = generateUniformBufferSync(group, this.shader.program.uniformData);\n }\n if (group.autoManage) {\n const data = new Float32Array(uboData.size / 4);\n group.buffer.update(data);\n }\n glProgram.uniformGroups[group.id] = uboData.syncFunc;\n return glProgram.uniformGroups[group.id];\n }\n getSignature(group, uniformData, preFix) {\n const uniforms = group.uniforms;\n const strings = [`${preFix}-`];\n for (const i in uniforms) {\n strings.push(i);\n if (uniformData[i]) {\n strings.push(uniformData[i].type);\n }\n }\n return strings.join(\"-\");\n }\n getGlProgram() {\n if (this.shader) {\n return this.shader.program.glPrograms[this.renderer.CONTEXT_UID];\n }\n return null;\n }\n generateProgram(shader) {\n const gl = this.gl;\n const program = shader.program;\n const glProgram = generateProgram(gl, program);\n program.glPrograms[this.renderer.CONTEXT_UID] = glProgram;\n return glProgram;\n }\n reset() {\n this.program = null;\n this.shader = null;\n }\n disposeShader(shader) {\n if (this.shader === shader) {\n this.shader = null;\n }\n }\n destroy() {\n this.renderer = null;\n this.destroyed = true;\n }\n}\nShaderSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"shader\"\n};\nextensions.add(ShaderSystem);\n\nexport { ShaderSystem };\n//# sourceMappingURL=ShaderSystem.mjs.map\n","import { BLEND_MODES } from '@pixi/constants';\n\nfunction mapWebGLBlendModesToPixi(gl, array = []) {\n array[BLEND_MODES.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.ADD] = [gl.ONE, gl.ONE];\n array[BLEND_MODES.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SCREEN] = [gl.ONE, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.NONE] = [0, 0];\n array[BLEND_MODES.NORMAL_NPM] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.ADD_NPM] = [gl.SRC_ALPHA, gl.ONE, gl.ONE, gl.ONE];\n array[BLEND_MODES.SCREEN_NPM] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SRC_IN] = [gl.DST_ALPHA, gl.ZERO];\n array[BLEND_MODES.SRC_OUT] = [gl.ONE_MINUS_DST_ALPHA, gl.ZERO];\n array[BLEND_MODES.SRC_ATOP] = [gl.DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.DST_OVER] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE];\n array[BLEND_MODES.DST_IN] = [gl.ZERO, gl.SRC_ALPHA];\n array[BLEND_MODES.DST_OUT] = [gl.ZERO, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.DST_ATOP] = [gl.ONE_MINUS_DST_ALPHA, gl.SRC_ALPHA];\n array[BLEND_MODES.XOR] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SUBTRACT] = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.FUNC_REVERSE_SUBTRACT, gl.FUNC_ADD];\n return array;\n}\n\nexport { mapWebGLBlendModesToPixi };\n//# sourceMappingURL=mapWebGLBlendModesToPixi.mjs.map\n","import { mapWebGLBlendModesToPixi } from './utils/mapWebGLBlendModesToPixi.mjs';\nimport { State } from './State.mjs';\nimport { BLEND_MODES } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nconst BLEND = 0;\nconst OFFSET = 1;\nconst CULLING = 2;\nconst DEPTH_TEST = 3;\nconst WINDING = 4;\nconst DEPTH_MASK = 5;\nconst _StateSystem = class {\n constructor() {\n this.gl = null;\n this.stateId = 0;\n this.polygonOffset = 0;\n this.blendMode = BLEND_MODES.NONE;\n this._blendEq = false;\n this.map = [];\n this.map[BLEND] = this.setBlend;\n this.map[OFFSET] = this.setOffset;\n this.map[CULLING] = this.setCullFace;\n this.map[DEPTH_TEST] = this.setDepthTest;\n this.map[WINDING] = this.setFrontFace;\n this.map[DEPTH_MASK] = this.setDepthMask;\n this.checks = [];\n this.defaultState = new State();\n this.defaultState.blend = true;\n }\n contextChange(gl) {\n this.gl = gl;\n this.blendModes = mapWebGLBlendModesToPixi(gl);\n this.set(this.defaultState);\n this.reset();\n }\n set(state) {\n state = state || this.defaultState;\n if (this.stateId !== state.data) {\n let diff = this.stateId ^ state.data;\n let i = 0;\n while (diff) {\n if (diff & 1) {\n this.map[i].call(this, !!(state.data & 1 << i));\n }\n diff = diff >> 1;\n i++;\n }\n this.stateId = state.data;\n }\n for (let i = 0; i < this.checks.length; i++) {\n this.checks[i](this, state);\n }\n }\n forceState(state) {\n state = state || this.defaultState;\n for (let i = 0; i < this.map.length; i++) {\n this.map[i].call(this, !!(state.data & 1 << i));\n }\n for (let i = 0; i < this.checks.length; i++) {\n this.checks[i](this, state);\n }\n this.stateId = state.data;\n }\n setBlend(value) {\n this.updateCheck(_StateSystem.checkBlendMode, value);\n this.gl[value ? \"enable\" : \"disable\"](this.gl.BLEND);\n }\n setOffset(value) {\n this.updateCheck(_StateSystem.checkPolygonOffset, value);\n this.gl[value ? \"enable\" : \"disable\"](this.gl.POLYGON_OFFSET_FILL);\n }\n setDepthTest(value) {\n this.gl[value ? \"enable\" : \"disable\"](this.gl.DEPTH_TEST);\n }\n setDepthMask(value) {\n this.gl.depthMask(value);\n }\n setCullFace(value) {\n this.gl[value ? \"enable\" : \"disable\"](this.gl.CULL_FACE);\n }\n setFrontFace(value) {\n this.gl.frontFace(this.gl[value ? \"CW\" : \"CCW\"]);\n }\n setBlendMode(value) {\n if (value === this.blendMode) {\n return;\n }\n this.blendMode = value;\n const mode = this.blendModes[value];\n const gl = this.gl;\n if (mode.length === 2) {\n gl.blendFunc(mode[0], mode[1]);\n } else {\n gl.blendFuncSeparate(mode[0], mode[1], mode[2], mode[3]);\n }\n if (mode.length === 6) {\n this._blendEq = true;\n gl.blendEquationSeparate(mode[4], mode[5]);\n } else if (this._blendEq) {\n this._blendEq = false;\n gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD);\n }\n }\n setPolygonOffset(value, scale) {\n this.gl.polygonOffset(value, scale);\n }\n reset() {\n this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, false);\n this.forceState(this.defaultState);\n this._blendEq = true;\n this.blendMode = -1;\n this.setBlendMode(0);\n }\n updateCheck(func, value) {\n const index = this.checks.indexOf(func);\n if (value && index === -1) {\n this.checks.push(func);\n } else if (!value && index !== -1) {\n this.checks.splice(index, 1);\n }\n }\n static checkBlendMode(system, state) {\n system.setBlendMode(state.blendMode);\n }\n static checkPolygonOffset(system, state) {\n system.setPolygonOffset(1, state.polygonOffset);\n }\n destroy() {\n this.gl = null;\n }\n};\nlet StateSystem = _StateSystem;\nStateSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"state\"\n};\nextensions.add(StateSystem);\n\nexport { StateSystem };\n//# sourceMappingURL=StateSystem.mjs.map\n","import { GC_MODES } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass TextureGCSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.count = 0;\n this.checkCount = 0;\n this.maxIdle = settings.GC_MAX_IDLE;\n this.checkCountMax = settings.GC_MAX_CHECK_COUNT;\n this.mode = settings.GC_MODE;\n }\n postrender() {\n if (!this.renderer.objectRenderer.renderingToScreen) {\n return;\n }\n this.count++;\n if (this.mode === GC_MODES.MANUAL) {\n return;\n }\n this.checkCount++;\n if (this.checkCount > this.checkCountMax) {\n this.checkCount = 0;\n this.run();\n }\n }\n run() {\n const tm = this.renderer.texture;\n const managedTextures = tm.managedTextures;\n let wasRemoved = false;\n for (let i = 0; i < managedTextures.length; i++) {\n const texture = managedTextures[i];\n if (!texture.framebuffer && this.count - texture.touched > this.maxIdle) {\n tm.destroyTexture(texture, true);\n managedTextures[i] = null;\n wasRemoved = true;\n }\n }\n if (wasRemoved) {\n let j = 0;\n for (let i = 0; i < managedTextures.length; i++) {\n if (managedTextures[i] !== null) {\n managedTextures[j++] = managedTextures[i];\n }\n }\n managedTextures.length = j;\n }\n }\n unload(displayObject) {\n const tm = this.renderer.texture;\n const texture = displayObject._texture;\n if (texture && !texture.framebuffer) {\n tm.destroyTexture(texture);\n }\n for (let i = displayObject.children.length - 1; i >= 0; i--) {\n this.unload(displayObject.children[i]);\n }\n }\n destroy() {\n this.renderer = null;\n }\n}\nTextureGCSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"textureGC\"\n};\nextensions.add(TextureGCSystem);\n\nexport { TextureGCSystem };\n//# sourceMappingURL=TextureGCSystem.mjs.map\n","import { TYPES, FORMATS } from '@pixi/constants';\n\nfunction mapTypeAndFormatToInternalFormat(gl) {\n let table;\n if (\"WebGL2RenderingContext\" in globalThis && gl instanceof globalThis.WebGL2RenderingContext) {\n table = {\n [TYPES.UNSIGNED_BYTE]: {\n [FORMATS.RGBA]: gl.RGBA8,\n [FORMATS.RGB]: gl.RGB8,\n [FORMATS.RG]: gl.RG8,\n [FORMATS.RED]: gl.R8,\n [FORMATS.RGBA_INTEGER]: gl.RGBA8UI,\n [FORMATS.RGB_INTEGER]: gl.RGB8UI,\n [FORMATS.RG_INTEGER]: gl.RG8UI,\n [FORMATS.RED_INTEGER]: gl.R8UI,\n [FORMATS.ALPHA]: gl.ALPHA,\n [FORMATS.LUMINANCE]: gl.LUMINANCE,\n [FORMATS.LUMINANCE_ALPHA]: gl.LUMINANCE_ALPHA\n },\n [TYPES.BYTE]: {\n [FORMATS.RGBA]: gl.RGBA8_SNORM,\n [FORMATS.RGB]: gl.RGB8_SNORM,\n [FORMATS.RG]: gl.RG8_SNORM,\n [FORMATS.RED]: gl.R8_SNORM,\n [FORMATS.RGBA_INTEGER]: gl.RGBA8I,\n [FORMATS.RGB_INTEGER]: gl.RGB8I,\n [FORMATS.RG_INTEGER]: gl.RG8I,\n [FORMATS.RED_INTEGER]: gl.R8I\n },\n [TYPES.UNSIGNED_SHORT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA16UI,\n [FORMATS.RGB_INTEGER]: gl.RGB16UI,\n [FORMATS.RG_INTEGER]: gl.RG16UI,\n [FORMATS.RED_INTEGER]: gl.R16UI,\n [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT16\n },\n [TYPES.SHORT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA16I,\n [FORMATS.RGB_INTEGER]: gl.RGB16I,\n [FORMATS.RG_INTEGER]: gl.RG16I,\n [FORMATS.RED_INTEGER]: gl.R16I\n },\n [TYPES.UNSIGNED_INT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA32UI,\n [FORMATS.RGB_INTEGER]: gl.RGB32UI,\n [FORMATS.RG_INTEGER]: gl.RG32UI,\n [FORMATS.RED_INTEGER]: gl.R32UI,\n [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT24\n },\n [TYPES.INT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA32I,\n [FORMATS.RGB_INTEGER]: gl.RGB32I,\n [FORMATS.RG_INTEGER]: gl.RG32I,\n [FORMATS.RED_INTEGER]: gl.R32I\n },\n [TYPES.FLOAT]: {\n [FORMATS.RGBA]: gl.RGBA32F,\n [FORMATS.RGB]: gl.RGB32F,\n [FORMATS.RG]: gl.RG32F,\n [FORMATS.RED]: gl.R32F,\n [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT32F\n },\n [TYPES.HALF_FLOAT]: {\n [FORMATS.RGBA]: gl.RGBA16F,\n [FORMATS.RGB]: gl.RGB16F,\n [FORMATS.RG]: gl.RG16F,\n [FORMATS.RED]: gl.R16F\n },\n [TYPES.UNSIGNED_SHORT_5_6_5]: {\n [FORMATS.RGB]: gl.RGB565\n },\n [TYPES.UNSIGNED_SHORT_4_4_4_4]: {\n [FORMATS.RGBA]: gl.RGBA4\n },\n [TYPES.UNSIGNED_SHORT_5_5_5_1]: {\n [FORMATS.RGBA]: gl.RGB5_A1\n },\n [TYPES.UNSIGNED_INT_2_10_10_10_REV]: {\n [FORMATS.RGBA]: gl.RGB10_A2,\n [FORMATS.RGBA_INTEGER]: gl.RGB10_A2UI\n },\n [TYPES.UNSIGNED_INT_10F_11F_11F_REV]: {\n [FORMATS.RGB]: gl.R11F_G11F_B10F\n },\n [TYPES.UNSIGNED_INT_5_9_9_9_REV]: {\n [FORMATS.RGB]: gl.RGB9_E5\n },\n [TYPES.UNSIGNED_INT_24_8]: {\n [FORMATS.DEPTH_STENCIL]: gl.DEPTH24_STENCIL8\n },\n [TYPES.FLOAT_32_UNSIGNED_INT_24_8_REV]: {\n [FORMATS.DEPTH_STENCIL]: gl.DEPTH32F_STENCIL8\n }\n };\n } else {\n table = {\n [TYPES.UNSIGNED_BYTE]: {\n [FORMATS.RGBA]: gl.RGBA,\n [FORMATS.RGB]: gl.RGB,\n [FORMATS.ALPHA]: gl.ALPHA,\n [FORMATS.LUMINANCE]: gl.LUMINANCE,\n [FORMATS.LUMINANCE_ALPHA]: gl.LUMINANCE_ALPHA\n },\n [TYPES.UNSIGNED_SHORT_5_6_5]: {\n [FORMATS.RGB]: gl.RGB\n },\n [TYPES.UNSIGNED_SHORT_4_4_4_4]: {\n [FORMATS.RGBA]: gl.RGBA\n },\n [TYPES.UNSIGNED_SHORT_5_5_5_1]: {\n [FORMATS.RGBA]: gl.RGBA\n }\n };\n }\n return table;\n}\n\nexport { mapTypeAndFormatToInternalFormat };\n//# sourceMappingURL=mapTypeAndFormatToInternalFormat.mjs.map\n","import { TYPES, FORMATS } from '@pixi/constants';\n\nclass GLTexture {\n constructor(texture) {\n this.texture = texture;\n this.width = -1;\n this.height = -1;\n this.dirtyId = -1;\n this.dirtyStyleId = -1;\n this.mipmap = false;\n this.wrapMode = 33071;\n this.type = TYPES.UNSIGNED_BYTE;\n this.internalFormat = FORMATS.RGBA;\n this.samplerType = 0;\n }\n}\n\nexport { GLTexture };\n//# sourceMappingURL=GLTexture.mjs.map\n","import { mapTypeAndFormatToInternalFormat } from './utils/mapTypeAndFormatToInternalFormat.mjs';\nimport { BaseTexture } from './BaseTexture.mjs';\nimport { GLTexture } from './GLTexture.mjs';\nimport { removeItems } from '@pixi/utils';\nimport { SAMPLER_TYPES, TYPES, MIPMAP_MODES, WRAP_MODES, SCALE_MODES } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass TextureSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.boundTextures = [];\n this.currentLocation = -1;\n this.managedTextures = [];\n this._unknownBoundTextures = false;\n this.unknownTexture = new BaseTexture();\n this.hasIntegerTextures = false;\n }\n contextChange() {\n const gl = this.gl = this.renderer.gl;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n this.webGLVersion = this.renderer.context.webGLVersion;\n this.internalFormats = mapTypeAndFormatToInternalFormat(gl);\n const maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n this.boundTextures.length = maxTextures;\n for (let i = 0; i < maxTextures; i++) {\n this.boundTextures[i] = null;\n }\n this.emptyTextures = {};\n const emptyTexture2D = new GLTexture(gl.createTexture());\n gl.bindTexture(gl.TEXTURE_2D, emptyTexture2D.texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array(4));\n this.emptyTextures[gl.TEXTURE_2D] = emptyTexture2D;\n this.emptyTextures[gl.TEXTURE_CUBE_MAP] = new GLTexture(gl.createTexture());\n gl.bindTexture(gl.TEXTURE_CUBE_MAP, this.emptyTextures[gl.TEXTURE_CUBE_MAP].texture);\n for (let i = 0; i < 6; i++) {\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n }\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n for (let i = 0; i < this.boundTextures.length; i++) {\n this.bind(null, i);\n }\n }\n bind(texture, location = 0) {\n const { gl } = this;\n texture = texture?.castToBaseTexture();\n if (texture?.valid && !texture.parentTextureArray) {\n texture.touched = this.renderer.textureGC.count;\n const glTexture = texture._glTextures[this.CONTEXT_UID] || this.initTexture(texture);\n if (this.boundTextures[location] !== texture) {\n if (this.currentLocation !== location) {\n this.currentLocation = location;\n gl.activeTexture(gl.TEXTURE0 + location);\n }\n gl.bindTexture(texture.target, glTexture.texture);\n }\n if (glTexture.dirtyId !== texture.dirtyId) {\n if (this.currentLocation !== location) {\n this.currentLocation = location;\n gl.activeTexture(gl.TEXTURE0 + location);\n }\n this.updateTexture(texture);\n } else if (glTexture.dirtyStyleId !== texture.dirtyStyleId) {\n this.updateTextureStyle(texture);\n }\n this.boundTextures[location] = texture;\n } else {\n if (this.currentLocation !== location) {\n this.currentLocation = location;\n gl.activeTexture(gl.TEXTURE0 + location);\n }\n gl.bindTexture(gl.TEXTURE_2D, this.emptyTextures[gl.TEXTURE_2D].texture);\n this.boundTextures[location] = null;\n }\n }\n reset() {\n this._unknownBoundTextures = true;\n this.hasIntegerTextures = false;\n this.currentLocation = -1;\n for (let i = 0; i < this.boundTextures.length; i++) {\n this.boundTextures[i] = this.unknownTexture;\n }\n }\n unbind(texture) {\n const { gl, boundTextures } = this;\n if (this._unknownBoundTextures) {\n this._unknownBoundTextures = false;\n for (let i = 0; i < boundTextures.length; i++) {\n if (boundTextures[i] === this.unknownTexture) {\n this.bind(null, i);\n }\n }\n }\n for (let i = 0; i < boundTextures.length; i++) {\n if (boundTextures[i] === texture) {\n if (this.currentLocation !== i) {\n gl.activeTexture(gl.TEXTURE0 + i);\n this.currentLocation = i;\n }\n gl.bindTexture(texture.target, this.emptyTextures[texture.target].texture);\n boundTextures[i] = null;\n }\n }\n }\n ensureSamplerType(maxTextures) {\n const { boundTextures, hasIntegerTextures, CONTEXT_UID } = this;\n if (!hasIntegerTextures) {\n return;\n }\n for (let i = maxTextures - 1; i >= 0; --i) {\n const tex = boundTextures[i];\n if (tex) {\n const glTexture = tex._glTextures[CONTEXT_UID];\n if (glTexture.samplerType !== SAMPLER_TYPES.FLOAT) {\n this.renderer.texture.unbind(tex);\n }\n }\n }\n }\n initTexture(texture) {\n const glTexture = new GLTexture(this.gl.createTexture());\n glTexture.dirtyId = -1;\n texture._glTextures[this.CONTEXT_UID] = glTexture;\n this.managedTextures.push(texture);\n texture.on(\"dispose\", this.destroyTexture, this);\n return glTexture;\n }\n initTextureType(texture, glTexture) {\n glTexture.internalFormat = this.internalFormats[texture.type]?.[texture.format] ?? texture.format;\n if (this.webGLVersion === 2 && texture.type === TYPES.HALF_FLOAT) {\n glTexture.type = this.gl.HALF_FLOAT;\n } else {\n glTexture.type = texture.type;\n }\n }\n updateTexture(texture) {\n const glTexture = texture._glTextures[this.CONTEXT_UID];\n if (!glTexture) {\n return;\n }\n const renderer = this.renderer;\n this.initTextureType(texture, glTexture);\n if (texture.resource?.upload(renderer, texture, glTexture)) {\n if (glTexture.samplerType !== SAMPLER_TYPES.FLOAT) {\n this.hasIntegerTextures = true;\n }\n } else {\n const width = texture.realWidth;\n const height = texture.realHeight;\n const gl = renderer.gl;\n if (glTexture.width !== width || glTexture.height !== height || glTexture.dirtyId < 0) {\n glTexture.width = width;\n glTexture.height = height;\n gl.texImage2D(texture.target, 0, glTexture.internalFormat, width, height, 0, texture.format, glTexture.type, null);\n }\n }\n if (texture.dirtyStyleId !== glTexture.dirtyStyleId) {\n this.updateTextureStyle(texture);\n }\n glTexture.dirtyId = texture.dirtyId;\n }\n destroyTexture(texture, skipRemove) {\n const { gl } = this;\n texture = texture.castToBaseTexture();\n if (texture._glTextures[this.CONTEXT_UID]) {\n this.unbind(texture);\n gl.deleteTexture(texture._glTextures[this.CONTEXT_UID].texture);\n texture.off(\"dispose\", this.destroyTexture, this);\n delete texture._glTextures[this.CONTEXT_UID];\n if (!skipRemove) {\n const i = this.managedTextures.indexOf(texture);\n if (i !== -1) {\n removeItems(this.managedTextures, i, 1);\n }\n }\n }\n }\n updateTextureStyle(texture) {\n const glTexture = texture._glTextures[this.CONTEXT_UID];\n if (!glTexture) {\n return;\n }\n if ((texture.mipmap === MIPMAP_MODES.POW2 || this.webGLVersion !== 2) && !texture.isPowerOfTwo) {\n glTexture.mipmap = false;\n } else {\n glTexture.mipmap = texture.mipmap >= 1;\n }\n if (this.webGLVersion !== 2 && !texture.isPowerOfTwo) {\n glTexture.wrapMode = WRAP_MODES.CLAMP;\n } else {\n glTexture.wrapMode = texture.wrapMode;\n }\n if (texture.resource?.style(this.renderer, texture, glTexture)) {\n } else {\n this.setStyle(texture, glTexture);\n }\n glTexture.dirtyStyleId = texture.dirtyStyleId;\n }\n setStyle(texture, glTexture) {\n const gl = this.gl;\n if (glTexture.mipmap && texture.mipmap !== MIPMAP_MODES.ON_MANUAL) {\n gl.generateMipmap(texture.target);\n }\n gl.texParameteri(texture.target, gl.TEXTURE_WRAP_S, glTexture.wrapMode);\n gl.texParameteri(texture.target, gl.TEXTURE_WRAP_T, glTexture.wrapMode);\n if (glTexture.mipmap) {\n gl.texParameteri(texture.target, gl.TEXTURE_MIN_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR_MIPMAP_LINEAR : gl.NEAREST_MIPMAP_NEAREST);\n const anisotropicExt = this.renderer.context.extensions.anisotropicFiltering;\n if (anisotropicExt && texture.anisotropicLevel > 0 && texture.scaleMode === SCALE_MODES.LINEAR) {\n const level = Math.min(texture.anisotropicLevel, gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT));\n gl.texParameterf(texture.target, anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT, level);\n }\n } else {\n gl.texParameteri(texture.target, gl.TEXTURE_MIN_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR : gl.NEAREST);\n }\n gl.texParameteri(texture.target, gl.TEXTURE_MAG_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR : gl.NEAREST);\n }\n destroy() {\n this.renderer = null;\n }\n}\nTextureSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"texture\"\n};\nextensions.add(TextureSystem);\n\nexport { TextureSystem };\n//# sourceMappingURL=TextureSystem.mjs.map\n","import { Transform, Matrix } from '@pixi/math';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { RenderTexture } from './RenderTexture.mjs';\n\nconst tempTransform = new Transform();\nclass GenerateTextureSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this._tempMatrix = new Matrix();\n }\n generateTexture(displayObject, options) {\n const { region: manualRegion, ...textureOptions } = options || {};\n const region = manualRegion || displayObject.getLocalBounds(null, true);\n if (region.width === 0)\n region.width = 1;\n if (region.height === 0)\n region.height = 1;\n const renderTexture = RenderTexture.create({\n width: region.width,\n height: region.height,\n ...textureOptions\n });\n this._tempMatrix.tx = -region.x;\n this._tempMatrix.ty = -region.y;\n const transform = displayObject.transform;\n displayObject.transform = tempTransform;\n this.renderer.render(displayObject, {\n renderTexture,\n transform: this._tempMatrix,\n skipUpdateTransform: !!displayObject.parent,\n blit: true\n });\n displayObject.transform = transform;\n return renderTexture;\n }\n destroy() {\n }\n}\nGenerateTextureSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"textureGenerator\"\n};\nextensions.add(GenerateTextureSystem);\n\nexport { GenerateTextureSystem };\n//# sourceMappingURL=GenerateTextureSystem.mjs.map\n","import { string2hex, hex2string, hex2rgb } from '@pixi/utils';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass BackgroundSystem {\n constructor() {\n this.clearBeforeRender = true;\n this._backgroundColor = 0;\n this._backgroundColorRgba = [0, 0, 0, 1];\n this._backgroundColorString = \"#000000\";\n this.color = this._backgroundColor;\n this.alpha = 1;\n }\n init(options) {\n this.clearBeforeRender = options.clearBeforeRender;\n if (options.color) {\n this.color = typeof options.color === \"string\" ? string2hex(options.color) : options.color;\n }\n this.alpha = options.alpha;\n }\n get color() {\n return this._backgroundColor;\n }\n set color(value) {\n this._backgroundColor = value;\n this._backgroundColorString = hex2string(value);\n hex2rgb(value, this._backgroundColorRgba);\n }\n get alpha() {\n return this._backgroundColorRgba[3];\n }\n set alpha(value) {\n this._backgroundColorRgba[3] = value;\n }\n get colorRgba() {\n return this._backgroundColorRgba;\n }\n get colorString() {\n return this._backgroundColorString;\n }\n destroy() {\n }\n}\nBackgroundSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"background\"\n};\nextensions.add(BackgroundSystem);\n\nexport { BackgroundSystem };\n//# sourceMappingURL=BackgroundSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\nimport { Rectangle } from '@pixi/math';\nimport { settings } from '@pixi/settings';\n\nclass ViewSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n init(options) {\n this.screen = new Rectangle(0, 0, options.width, options.height);\n this.element = options.view || settings.ADAPTER.createCanvas();\n this.resolution = options.resolution || settings.RESOLUTION;\n this.autoDensity = !!options.autoDensity;\n }\n resizeView(desiredScreenWidth, desiredScreenHeight) {\n this.element.width = Math.round(desiredScreenWidth * this.resolution);\n this.element.height = Math.round(desiredScreenHeight * this.resolution);\n const screenWidth = this.element.width / this.resolution;\n const screenHeight = this.element.height / this.resolution;\n this.screen.width = screenWidth;\n this.screen.height = screenHeight;\n if (this.autoDensity) {\n this.element.style.width = `${screenWidth}px`;\n this.element.style.height = `${screenHeight}px`;\n }\n this.renderer.emit(\"resize\", screenWidth, screenHeight);\n this.renderer.runners.resize.emit(this.screen.width, this.screen.height);\n }\n destroy(removeView) {\n if (removeView) {\n this.element.parentNode?.removeChild(this.element);\n }\n this.renderer = null;\n this.element = null;\n this.screen = null;\n }\n}\nViewSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"_view\"\n};\nextensions.add(ViewSystem);\n\nexport { ViewSystem };\n//# sourceMappingURL=ViewSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\n\nclass PluginSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.plugins = {};\n }\n init(staticMap) {\n for (const o in staticMap) {\n this.plugins[o] = new staticMap[o](this.renderer);\n }\n }\n destroy() {\n for (const o in this.plugins) {\n this.plugins[o].destroy();\n this.plugins[o] = null;\n }\n }\n}\nPluginSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"_plugin\"\n};\nextensions.add(PluginSystem);\n\nexport { PluginSystem };\n//# sourceMappingURL=PluginSystem.mjs.map\n","import { Runner } from '@pixi/runner';\nimport { EventEmitter } from '@pixi/utils';\n\nclass SystemManager extends EventEmitter {\n constructor() {\n super(...arguments);\n this.runners = {};\n this._systemsHash = {};\n }\n setup(config) {\n this.addRunners(...config.runners);\n const priority = (config.priority ?? []).filter((key) => config.systems[key]);\n const orderByPriority = [\n ...priority,\n ...Object.keys(config.systems).filter((key) => !priority.includes(key))\n ];\n for (const i of orderByPriority) {\n this.addSystem(config.systems[i], i);\n }\n }\n addRunners(...runnerIds) {\n runnerIds.forEach((runnerId) => {\n this.runners[runnerId] = new Runner(runnerId);\n });\n }\n addSystem(ClassRef, name) {\n const system = new ClassRef(this);\n if (this[name]) {\n throw new Error(`Whoops! The name \"${name}\" is already in use`);\n }\n this[name] = system;\n this._systemsHash[name] = system;\n for (const i in this.runners) {\n this.runners[i].add(system);\n }\n return this;\n }\n emitWithCustomOptions(runner, options) {\n const systemHashKeys = Object.keys(this._systemsHash);\n runner.items.forEach((system) => {\n const systemName = systemHashKeys.find((systemId) => this._systemsHash[systemId] === system);\n system[runner.name](options[systemName]);\n });\n }\n destroy() {\n Object.values(this.runners).forEach((runner) => {\n runner.destroy();\n });\n this._systemsHash = {};\n }\n}\n\nexport { SystemManager };\n//# sourceMappingURL=SystemManager.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\n\nclass StartupSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n run(options) {\n const renderer = this.renderer;\n renderer.emitWithCustomOptions(renderer.runners.init, options);\n if (options.hello) {\n console.log(`PixiJS ${\"7.0.2\"} - ${renderer.rendererLogId} - https://pixijs.com`);\n }\n renderer.resize(this.renderer.screen.width, this.renderer.screen.height);\n }\n destroy() {\n }\n}\nStartupSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"startup\"\n};\nextensions.add(StartupSystem);\n\nexport { StartupSystem };\n//# sourceMappingURL=StartupSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\n\nclass TransformFeedbackSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n contextChange() {\n this.gl = this.renderer.gl;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n }\n bind(transformFeedback) {\n const { gl, CONTEXT_UID } = this;\n const glTransformFeedback = transformFeedback._glTransformFeedbacks[CONTEXT_UID] || this.createGLTransformFeedback(transformFeedback);\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, glTransformFeedback);\n }\n unbind() {\n const { gl } = this;\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);\n }\n beginTransformFeedback(drawMode, shader) {\n const { gl, renderer } = this;\n if (shader) {\n renderer.shader.bind(shader);\n }\n gl.beginTransformFeedback(drawMode);\n }\n endTransformFeedback() {\n const { gl } = this;\n gl.endTransformFeedback();\n }\n createGLTransformFeedback(tf) {\n const { gl, renderer, CONTEXT_UID } = this;\n const glTransformFeedback = gl.createTransformFeedback();\n tf._glTransformFeedbacks[CONTEXT_UID] = glTransformFeedback;\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, glTransformFeedback);\n for (let i = 0; i < tf.buffers.length; i++) {\n const buffer = tf.buffers[i];\n if (!buffer)\n continue;\n renderer.buffer.update(buffer);\n buffer._glBuffers[CONTEXT_UID].refCount++;\n gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, i, buffer._glBuffers[CONTEXT_UID].buffer || null);\n }\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);\n tf.disposeRunner.add(this);\n return glTransformFeedback;\n }\n disposeTransformFeedback(tf, contextLost) {\n const glTF = tf._glTransformFeedbacks[this.CONTEXT_UID];\n const gl = this.gl;\n tf.disposeRunner.remove(this);\n const bufferSystem = this.renderer.buffer;\n if (bufferSystem) {\n for (let i = 0; i < tf.buffers.length; i++) {\n const buffer = tf.buffers[i];\n if (!buffer)\n continue;\n const buf = buffer._glBuffers[this.CONTEXT_UID];\n if (buf) {\n buf.refCount--;\n if (buf.refCount === 0 && !contextLost) {\n bufferSystem.dispose(buffer, contextLost);\n }\n }\n }\n }\n if (!glTF) {\n return;\n }\n if (!contextLost) {\n gl.deleteTransformFeedback(glTF);\n }\n delete tf._glTransformFeedbacks[this.CONTEXT_UID];\n }\n destroy() {\n this.renderer = null;\n }\n}\nTransformFeedbackSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"transformFeedback\"\n};\nextensions.add(TransformFeedbackSystem);\n\nexport { TransformFeedbackSystem };\n//# sourceMappingURL=TransformFeedbackSystem.mjs.map\n","import { extensions, ExtensionType } from '@pixi/extensions';\n\nconst renderers = [];\nextensions.handleByList(ExtensionType.Renderer, renderers);\nfunction autoDetectRenderer(options) {\n for (const RendererType of renderers) {\n if (RendererType.test(options)) {\n return new RendererType(options);\n }\n }\n throw new Error(\"Unable to auto-detect a suitable renderer.\");\n}\n\nexport { autoDetectRenderer };\n//# sourceMappingURL=autoDetectRenderer.mjs.map\n","var $defaultVertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n}\";\n\nexport { $defaultVertex as default };\n//# sourceMappingURL=default.mjs.map\n","var $defaultFilterVertex = \"attribute vec2 aVertexPosition;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform vec4 inputSize;\\nuniform vec4 outputFrame;\\n\\nvec4 filterVertexPosition( void )\\n{\\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\\n\\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\\n}\\n\\nvec2 filterTextureCoord( void )\\n{\\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\\n}\\n\\nvoid main(void)\\n{\\n gl_Position = filterVertexPosition();\\n vTextureCoord = filterTextureCoord();\\n}\\n\";\n\nexport { $defaultFilterVertex as default };\n//# sourceMappingURL=defaultFilter.mjs.map\n","import $defaultVertex from './default.mjs';\nimport $defaultFilterVertex from './defaultFilter.mjs';\n\nconst defaultVertex = $defaultVertex;\nconst defaultFilterVertex = $defaultFilterVertex;\n\nexport { defaultFilterVertex, defaultVertex };\n//# sourceMappingURL=index.mjs.map\n","import { isWebGLSupported } from '@pixi/utils';\nimport { UniformGroup } from './shader/UniformGroup.mjs';\nimport { Matrix } from '@pixi/math';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { settings } from '@pixi/settings';\nimport { SystemManager } from './system/SystemManager.mjs';\n\nconst _Renderer = class extends SystemManager {\n constructor(options) {\n super();\n options = Object.assign({}, settings.RENDER_OPTIONS, options);\n this.gl = null;\n this.CONTEXT_UID = 0;\n this.globalUniforms = new UniformGroup({\n projectionMatrix: new Matrix()\n }, true);\n const systemConfig = {\n runners: [\"init\", \"destroy\", \"contextChange\", \"reset\", \"update\", \"postrender\", \"prerender\", \"resize\"],\n systems: _Renderer.__systems,\n priority: [\n \"_view\",\n \"textureGenerator\",\n \"background\",\n \"_plugin\",\n \"startup\",\n \"context\",\n \"state\",\n \"texture\",\n \"buffer\",\n \"geometry\",\n \"framebuffer\",\n \"transformFeedback\",\n \"mask\",\n \"scissor\",\n \"stencil\",\n \"projection\",\n \"textureGC\",\n \"filter\",\n \"renderTexture\",\n \"batch\",\n \"objectRenderer\",\n \"_multisample\"\n ]\n };\n this.setup(systemConfig);\n const startupOptions = {\n hello: options.hello,\n _plugin: _Renderer.__plugins,\n background: {\n alpha: options.backgroundAlpha,\n color: options.background ?? options.backgroundColor,\n clearBeforeRender: options.clearBeforeRender\n },\n _view: {\n height: options.height,\n width: options.width,\n autoDensity: options.autoDensity,\n resolution: options.resolution,\n view: options.view\n },\n context: {\n antialias: options.antialias,\n context: options.context,\n powerPreference: options.powerPreference,\n premultipliedAlpha: options.premultipliedAlpha ?? (options.useContextAlpha && options.useContextAlpha !== \"notMultiplied\"),\n preserveDrawingBuffer: options.preserveDrawingBuffer\n }\n };\n this.startup.run(startupOptions);\n }\n static test(options) {\n if (options?.forceCanvas) {\n return false;\n }\n return isWebGLSupported();\n }\n render(displayObject, options) {\n this.objectRenderer.render(displayObject, options);\n }\n resize(desiredScreenWidth, desiredScreenHeight) {\n this._view.resizeView(desiredScreenWidth, desiredScreenHeight);\n }\n reset() {\n this.runners.reset.emit();\n return this;\n }\n clear() {\n this.renderTexture.bind();\n this.renderTexture.clear();\n }\n destroy(removeView = false) {\n this.runners.destroy.items.reverse();\n this.emitWithCustomOptions(this.runners.destroy, {\n _view: removeView\n });\n super.destroy();\n }\n get plugins() {\n return this._plugin.plugins;\n }\n get multisample() {\n return this._multisample.multisample;\n }\n get width() {\n return this._view.element.width;\n }\n get height() {\n return this._view.element.height;\n }\n get resolution() {\n return this._view.resolution;\n }\n get autoDensity() {\n return this._view.autoDensity;\n }\n get view() {\n return this._view.element;\n }\n get screen() {\n return this._view.screen;\n }\n get lastObjectRendered() {\n return this.objectRenderer.lastObjectRendered;\n }\n get renderingToScreen() {\n return this.objectRenderer.renderingToScreen;\n }\n get rendererLogId() {\n return `WebGL ${this.context.webGLVersion}`;\n }\n get clearBeforeRender() {\n return this.background.clearBeforeRender;\n }\n get useContextAlpha() {\n return this.context.useContextAlpha;\n }\n get preserveDrawingBuffer() {\n return this.context.preserveDrawingBuffer;\n }\n get backgroundColor() {\n return this.background.color;\n }\n set backgroundColor(value) {\n this.background.color = value;\n }\n get backgroundAlpha() {\n return this.background.color;\n }\n set backgroundAlpha(value) {\n this.background.alpha = value;\n }\n get powerPreference() {\n return this.context.powerPreference;\n }\n generateTexture(displayObject, options) {\n return this.textureGenerator.generateTexture(displayObject, options);\n }\n};\nlet Renderer = _Renderer;\nRenderer.extension = {\n type: ExtensionType.Renderer,\n priority: 1\n};\nRenderer.__plugins = {};\nRenderer.__systems = {};\nextensions.handleByMap(ExtensionType.RendererPlugin, Renderer.__plugins);\nextensions.handleByMap(ExtensionType.RendererSystem, Renderer.__systems);\nextensions.add(Renderer);\n\nexport { Renderer };\n//# sourceMappingURL=Renderer.mjs.map\n","import { DRAW_MODES } from '@pixi/constants';\n\nclass BatchDrawCall {\n constructor() {\n this.texArray = null;\n this.blend = 0;\n this.type = DRAW_MODES.TRIANGLES;\n this.start = 0;\n this.size = 0;\n this.data = null;\n }\n}\n\nexport { BatchDrawCall };\n//# sourceMappingURL=BatchDrawCall.mjs.map\n","class BatchTextureArray {\n constructor() {\n this.elements = [];\n this.ids = [];\n this.count = 0;\n }\n clear() {\n for (let i = 0; i < this.count; i++) {\n this.elements[i] = null;\n }\n this.count = 0;\n }\n}\n\nexport { BatchTextureArray };\n//# sourceMappingURL=BatchTextureArray.mjs.map\n","class ViewableBuffer {\n constructor(sizeOrBuffer) {\n if (typeof sizeOrBuffer === \"number\") {\n this.rawBinaryData = new ArrayBuffer(sizeOrBuffer);\n } else if (sizeOrBuffer instanceof Uint8Array) {\n this.rawBinaryData = sizeOrBuffer.buffer;\n } else {\n this.rawBinaryData = sizeOrBuffer;\n }\n this.uint32View = new Uint32Array(this.rawBinaryData);\n this.float32View = new Float32Array(this.rawBinaryData);\n }\n get int8View() {\n if (!this._int8View) {\n this._int8View = new Int8Array(this.rawBinaryData);\n }\n return this._int8View;\n }\n get uint8View() {\n if (!this._uint8View) {\n this._uint8View = new Uint8Array(this.rawBinaryData);\n }\n return this._uint8View;\n }\n get int16View() {\n if (!this._int16View) {\n this._int16View = new Int16Array(this.rawBinaryData);\n }\n return this._int16View;\n }\n get uint16View() {\n if (!this._uint16View) {\n this._uint16View = new Uint16Array(this.rawBinaryData);\n }\n return this._uint16View;\n }\n get int32View() {\n if (!this._int32View) {\n this._int32View = new Int32Array(this.rawBinaryData);\n }\n return this._int32View;\n }\n view(type) {\n return this[`${type}View`];\n }\n destroy() {\n this.rawBinaryData = null;\n this._int8View = null;\n this._uint8View = null;\n this._int16View = null;\n this._uint16View = null;\n this._int32View = null;\n this.uint32View = null;\n this.float32View = null;\n }\n static sizeOf(type) {\n switch (type) {\n case \"int8\":\n case \"uint8\":\n return 1;\n case \"int16\":\n case \"uint16\":\n return 2;\n case \"int32\":\n case \"uint32\":\n case \"float32\":\n return 4;\n default:\n throw new Error(`${type} isn't a valid view type`);\n }\n }\n}\n\nexport { ViewableBuffer };\n//# sourceMappingURL=ViewableBuffer.mjs.map\n","import { Shader } from '../shader/Shader.mjs';\nimport { Program } from '../shader/Program.mjs';\nimport { UniformGroup } from '../shader/UniformGroup.mjs';\nimport { Matrix } from '@pixi/math';\n\nclass BatchShaderGenerator {\n constructor(vertexSrc, fragTemplate) {\n this.vertexSrc = vertexSrc;\n this.fragTemplate = fragTemplate;\n this.programCache = {};\n this.defaultGroupCache = {};\n if (!fragTemplate.includes(\"%count%\")) {\n throw new Error('Fragment template must contain \"%count%\".');\n }\n if (!fragTemplate.includes(\"%forloop%\")) {\n throw new Error('Fragment template must contain \"%forloop%\".');\n }\n }\n generateShader(maxTextures) {\n if (!this.programCache[maxTextures]) {\n const sampleValues = new Int32Array(maxTextures);\n for (let i = 0; i < maxTextures; i++) {\n sampleValues[i] = i;\n }\n this.defaultGroupCache[maxTextures] = UniformGroup.from({ uSamplers: sampleValues }, true);\n let fragmentSrc = this.fragTemplate;\n fragmentSrc = fragmentSrc.replace(/%count%/gi, `${maxTextures}`);\n fragmentSrc = fragmentSrc.replace(/%forloop%/gi, this.generateSampleSrc(maxTextures));\n this.programCache[maxTextures] = new Program(this.vertexSrc, fragmentSrc);\n }\n const uniforms = {\n tint: new Float32Array([1, 1, 1, 1]),\n translationMatrix: new Matrix(),\n default: this.defaultGroupCache[maxTextures]\n };\n return new Shader(this.programCache[maxTextures], uniforms);\n }\n generateSampleSrc(maxTextures) {\n let src = \"\";\n src += \"\\n\";\n src += \"\\n\";\n for (let i = 0; i < maxTextures; i++) {\n if (i > 0) {\n src += \"\\nelse \";\n }\n if (i < maxTextures - 1) {\n src += `if(vTextureId < ${i}.5)`;\n }\n src += \"\\n{\";\n src += `\n\tcolor = texture2D(uSamplers[${i}], vTextureCoord);`;\n src += \"\\n}\";\n }\n src += \"\\n\";\n src += \"\\n\";\n return src;\n }\n}\n\nexport { BatchShaderGenerator };\n//# sourceMappingURL=BatchShaderGenerator.mjs.map\n","import { TYPES } from '@pixi/constants';\nimport { Geometry } from '../geometry/Geometry.mjs';\nimport { Buffer } from '../geometry/Buffer.mjs';\n\nclass BatchGeometry extends Geometry {\n constructor(_static = false) {\n super();\n this._buffer = new Buffer(null, _static, false);\n this._indexBuffer = new Buffer(null, _static, true);\n this.addAttribute(\"aVertexPosition\", this._buffer, 2, false, TYPES.FLOAT).addAttribute(\"aTextureCoord\", this._buffer, 2, false, TYPES.FLOAT).addAttribute(\"aColor\", this._buffer, 4, true, TYPES.UNSIGNED_BYTE).addAttribute(\"aTextureId\", this._buffer, 1, true, TYPES.FLOAT).addIndex(this._indexBuffer);\n }\n}\n\nexport { BatchGeometry };\n//# sourceMappingURL=BatchGeometry.mjs.map\n","var defaultVertex = \"precision highp float;\\nattribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\nattribute float aTextureId;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 translationMatrix;\\nuniform vec4 tint;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying float vTextureId;\\n\\nvoid main(void){\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = aTextureCoord;\\n vTextureId = aTextureId;\\n vColor = aColor * tint;\\n}\\n\";\n\nexport { defaultVertex as default };\n//# sourceMappingURL=texture.mjs.map\n","var defaultFragment = \"varying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying float vTextureId;\\nuniform sampler2D uSamplers[%count%];\\n\\nvoid main(void){\\n vec4 color;\\n %forloop%\\n gl_FragColor = color * vColor;\\n}\\n\";\n\nexport { defaultFragment as default };\n//# sourceMappingURL=texture2.mjs.map\n","import { BatchDrawCall } from './BatchDrawCall.mjs';\nimport { BatchTextureArray } from './BatchTextureArray.mjs';\nimport { BaseTexture } from '../textures/BaseTexture.mjs';\nimport { ObjectRenderer } from './ObjectRenderer.mjs';\nimport { State } from '../state/State.mjs';\nimport { ViewableBuffer } from '../geometry/ViewableBuffer.mjs';\nimport { BatchShaderGenerator } from './BatchShaderGenerator.mjs';\nimport { checkMaxIfStatementsInShader } from '../shader/utils/checkMaxIfStatementsInShader.mjs';\nimport { settings } from '@pixi/settings';\nimport { premultiplyBlendMode, nextPow2, log2, premultiplyTint } from '@pixi/utils';\nimport { ENV } from '@pixi/constants';\nimport { BatchGeometry } from './BatchGeometry.mjs';\nimport defaultVertex from './texture.mjs';\nimport defaultFragment from './texture2.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nconst _BatchRenderer = class extends ObjectRenderer {\n constructor(renderer) {\n super(renderer);\n this.setShaderGenerator();\n this.geometryClass = BatchGeometry;\n this.vertexSize = 6;\n this.state = State.for2d();\n this.size = settings.SPRITE_BATCH_SIZE * 4;\n this._vertexCount = 0;\n this._indexCount = 0;\n this._bufferedElements = [];\n this._bufferedTextures = [];\n this._bufferSize = 0;\n this._shader = null;\n this._packedGeometries = [];\n this._packedGeometryPoolSize = 2;\n this._flushId = 0;\n this._aBuffers = {};\n this._iBuffers = {};\n this.MAX_TEXTURES = 1;\n this.renderer.on(\"prerender\", this.onPrerender, this);\n renderer.runners.contextChange.add(this);\n this._dcIndex = 0;\n this._aIndex = 0;\n this._iIndex = 0;\n this._attributeBuffer = null;\n this._indexBuffer = null;\n this._tempBoundTextures = [];\n }\n static get defaultVertexSrc() {\n return defaultVertex;\n }\n static get defaultFragmentTemplate() {\n return defaultFragment;\n }\n setShaderGenerator({\n vertex = _BatchRenderer.defaultVertexSrc,\n fragment = _BatchRenderer.defaultFragmentTemplate\n } = {}) {\n this.shaderGenerator = new BatchShaderGenerator(vertex, fragment);\n }\n contextChange() {\n const gl = this.renderer.gl;\n if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) {\n this.MAX_TEXTURES = 1;\n } else {\n this.MAX_TEXTURES = Math.min(gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS), settings.SPRITE_MAX_TEXTURES);\n this.MAX_TEXTURES = checkMaxIfStatementsInShader(this.MAX_TEXTURES, gl);\n }\n this._shader = this.shaderGenerator.generateShader(this.MAX_TEXTURES);\n for (let i = 0; i < this._packedGeometryPoolSize; i++) {\n this._packedGeometries[i] = new this.geometryClass();\n }\n this.initFlushBuffers();\n }\n initFlushBuffers() {\n const {\n _drawCallPool,\n _textureArrayPool\n } = _BatchRenderer;\n const MAX_SPRITES = this.size / 4;\n const MAX_TA = Math.floor(MAX_SPRITES / this.MAX_TEXTURES) + 1;\n while (_drawCallPool.length < MAX_SPRITES) {\n _drawCallPool.push(new BatchDrawCall());\n }\n while (_textureArrayPool.length < MAX_TA) {\n _textureArrayPool.push(new BatchTextureArray());\n }\n for (let i = 0; i < this.MAX_TEXTURES; i++) {\n this._tempBoundTextures[i] = null;\n }\n }\n onPrerender() {\n this._flushId = 0;\n }\n render(element) {\n if (!element._texture.valid) {\n return;\n }\n if (this._vertexCount + element.vertexData.length / 2 > this.size) {\n this.flush();\n }\n this._vertexCount += element.vertexData.length / 2;\n this._indexCount += element.indices.length;\n this._bufferedTextures[this._bufferSize] = element._texture.baseTexture;\n this._bufferedElements[this._bufferSize++] = element;\n }\n buildTexturesAndDrawCalls() {\n const {\n _bufferedTextures: textures,\n MAX_TEXTURES\n } = this;\n const textureArrays = _BatchRenderer._textureArrayPool;\n const batch = this.renderer.batch;\n const boundTextures = this._tempBoundTextures;\n const touch = this.renderer.textureGC.count;\n let TICK = ++BaseTexture._globalBatch;\n let countTexArrays = 0;\n let texArray = textureArrays[0];\n let start = 0;\n batch.copyBoundTextures(boundTextures, MAX_TEXTURES);\n for (let i = 0; i < this._bufferSize; ++i) {\n const tex = textures[i];\n textures[i] = null;\n if (tex._batchEnabled === TICK) {\n continue;\n }\n if (texArray.count >= MAX_TEXTURES) {\n batch.boundArray(texArray, boundTextures, TICK, MAX_TEXTURES);\n this.buildDrawCalls(texArray, start, i);\n start = i;\n texArray = textureArrays[++countTexArrays];\n ++TICK;\n }\n tex._batchEnabled = TICK;\n tex.touched = touch;\n texArray.elements[texArray.count++] = tex;\n }\n if (texArray.count > 0) {\n batch.boundArray(texArray, boundTextures, TICK, MAX_TEXTURES);\n this.buildDrawCalls(texArray, start, this._bufferSize);\n ++countTexArrays;\n ++TICK;\n }\n for (let i = 0; i < boundTextures.length; i++) {\n boundTextures[i] = null;\n }\n BaseTexture._globalBatch = TICK;\n }\n buildDrawCalls(texArray, start, finish) {\n const {\n _bufferedElements: elements,\n _attributeBuffer,\n _indexBuffer,\n vertexSize\n } = this;\n const drawCalls = _BatchRenderer._drawCallPool;\n let dcIndex = this._dcIndex;\n let aIndex = this._aIndex;\n let iIndex = this._iIndex;\n let drawCall = drawCalls[dcIndex];\n drawCall.start = this._iIndex;\n drawCall.texArray = texArray;\n for (let i = start; i < finish; ++i) {\n const sprite = elements[i];\n const tex = sprite._texture.baseTexture;\n const spriteBlendMode = premultiplyBlendMode[tex.alphaMode ? 1 : 0][sprite.blendMode];\n elements[i] = null;\n if (start < i && drawCall.blend !== spriteBlendMode) {\n drawCall.size = iIndex - drawCall.start;\n start = i;\n drawCall = drawCalls[++dcIndex];\n drawCall.texArray = texArray;\n drawCall.start = iIndex;\n }\n this.packInterleavedGeometry(sprite, _attributeBuffer, _indexBuffer, aIndex, iIndex);\n aIndex += sprite.vertexData.length / 2 * vertexSize;\n iIndex += sprite.indices.length;\n drawCall.blend = spriteBlendMode;\n }\n if (start < finish) {\n drawCall.size = iIndex - drawCall.start;\n ++dcIndex;\n }\n this._dcIndex = dcIndex;\n this._aIndex = aIndex;\n this._iIndex = iIndex;\n }\n bindAndClearTexArray(texArray) {\n const textureSystem = this.renderer.texture;\n for (let j = 0; j < texArray.count; j++) {\n textureSystem.bind(texArray.elements[j], texArray.ids[j]);\n texArray.elements[j] = null;\n }\n texArray.count = 0;\n }\n updateGeometry() {\n const {\n _packedGeometries: packedGeometries,\n _attributeBuffer: attributeBuffer,\n _indexBuffer: indexBuffer\n } = this;\n if (!settings.CAN_UPLOAD_SAME_BUFFER) {\n if (this._packedGeometryPoolSize <= this._flushId) {\n this._packedGeometryPoolSize++;\n packedGeometries[this._flushId] = new this.geometryClass();\n }\n packedGeometries[this._flushId]._buffer.update(attributeBuffer.rawBinaryData);\n packedGeometries[this._flushId]._indexBuffer.update(indexBuffer);\n this.renderer.geometry.bind(packedGeometries[this._flushId]);\n this.renderer.geometry.updateBuffers();\n this._flushId++;\n } else {\n packedGeometries[this._flushId]._buffer.update(attributeBuffer.rawBinaryData);\n packedGeometries[this._flushId]._indexBuffer.update(indexBuffer);\n this.renderer.geometry.updateBuffers();\n }\n }\n drawBatches() {\n const dcCount = this._dcIndex;\n const { gl, state: stateSystem } = this.renderer;\n const drawCalls = _BatchRenderer._drawCallPool;\n let curTexArray = null;\n for (let i = 0; i < dcCount; i++) {\n const { texArray, type, size, start, blend } = drawCalls[i];\n if (curTexArray !== texArray) {\n curTexArray = texArray;\n this.bindAndClearTexArray(texArray);\n }\n this.state.blendMode = blend;\n stateSystem.set(this.state);\n gl.drawElements(type, size, gl.UNSIGNED_SHORT, start * 2);\n }\n }\n flush() {\n if (this._vertexCount === 0) {\n return;\n }\n this._attributeBuffer = this.getAttributeBuffer(this._vertexCount);\n this._indexBuffer = this.getIndexBuffer(this._indexCount);\n this._aIndex = 0;\n this._iIndex = 0;\n this._dcIndex = 0;\n this.buildTexturesAndDrawCalls();\n this.updateGeometry();\n this.drawBatches();\n this._bufferSize = 0;\n this._vertexCount = 0;\n this._indexCount = 0;\n }\n start() {\n this.renderer.state.set(this.state);\n this.renderer.texture.ensureSamplerType(this.MAX_TEXTURES);\n this.renderer.shader.bind(this._shader);\n if (settings.CAN_UPLOAD_SAME_BUFFER) {\n this.renderer.geometry.bind(this._packedGeometries[this._flushId]);\n }\n }\n stop() {\n this.flush();\n }\n destroy() {\n for (let i = 0; i < this._packedGeometryPoolSize; i++) {\n if (this._packedGeometries[i]) {\n this._packedGeometries[i].destroy();\n }\n }\n this.renderer.off(\"prerender\", this.onPrerender, this);\n this._aBuffers = null;\n this._iBuffers = null;\n this._packedGeometries = null;\n this._attributeBuffer = null;\n this._indexBuffer = null;\n if (this._shader) {\n this._shader.destroy();\n this._shader = null;\n }\n super.destroy();\n }\n getAttributeBuffer(size) {\n const roundedP2 = nextPow2(Math.ceil(size / 8));\n const roundedSizeIndex = log2(roundedP2);\n const roundedSize = roundedP2 * 8;\n if (this._aBuffers.length <= roundedSizeIndex) {\n this._iBuffers.length = roundedSizeIndex + 1;\n }\n let buffer = this._aBuffers[roundedSize];\n if (!buffer) {\n this._aBuffers[roundedSize] = buffer = new ViewableBuffer(roundedSize * this.vertexSize * 4);\n }\n return buffer;\n }\n getIndexBuffer(size) {\n const roundedP2 = nextPow2(Math.ceil(size / 12));\n const roundedSizeIndex = log2(roundedP2);\n const roundedSize = roundedP2 * 12;\n if (this._iBuffers.length <= roundedSizeIndex) {\n this._iBuffers.length = roundedSizeIndex + 1;\n }\n let buffer = this._iBuffers[roundedSizeIndex];\n if (!buffer) {\n this._iBuffers[roundedSizeIndex] = buffer = new Uint16Array(roundedSize);\n }\n return buffer;\n }\n packInterleavedGeometry(element, attributeBuffer, indexBuffer, aIndex, iIndex) {\n const {\n uint32View,\n float32View\n } = attributeBuffer;\n const packedVertices = aIndex / this.vertexSize;\n const uvs = element.uvs;\n const indicies = element.indices;\n const vertexData = element.vertexData;\n const textureId = element._texture.baseTexture._batchLocation;\n const alpha = Math.min(element.worldAlpha, 1);\n const argb = alpha < 1 && element._texture.baseTexture.alphaMode ? premultiplyTint(element._tintRGB, alpha) : element._tintRGB + (alpha * 255 << 24);\n for (let i = 0; i < vertexData.length; i += 2) {\n float32View[aIndex++] = vertexData[i];\n float32View[aIndex++] = vertexData[i + 1];\n float32View[aIndex++] = uvs[i];\n float32View[aIndex++] = uvs[i + 1];\n uint32View[aIndex++] = argb;\n float32View[aIndex++] = textureId;\n }\n for (let i = 0; i < indicies.length; i++) {\n indexBuffer[iIndex++] = packedVertices + indicies[i];\n }\n }\n};\nlet BatchRenderer = _BatchRenderer;\nBatchRenderer.extension = {\n name: \"batch\",\n type: ExtensionType.RendererPlugin\n};\nBatchRenderer._drawCallPool = [];\nBatchRenderer._textureArrayPool = [];\nextensions.add(BatchRenderer);\n\nexport { BatchRenderer };\n//# sourceMappingURL=BatchRenderer.mjs.map\n","import { Runner } from '@pixi/runner';\n\nclass TransformFeedback {\n constructor() {\n this._glTransformFeedbacks = {};\n this.buffers = [];\n this.disposeRunner = new Runner(\"disposeTransformFeedback\");\n }\n bindBuffer(index, buffer) {\n this.buffers[index] = buffer;\n }\n destroy() {\n this.disposeRunner.emit(this, false);\n }\n}\n\nexport { TransformFeedback };\n//# sourceMappingURL=TransformFeedback.mjs.map\n","class GLBuffer {\n constructor(buffer) {\n this.buffer = buffer || null;\n this.updateID = -1;\n this.byteLength = -1;\n this.refCount = 0;\n }\n}\n\nexport { GLBuffer };\n//# sourceMappingURL=GLBuffer.mjs.map\n","import { GLBuffer } from './GLBuffer.mjs';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass BufferSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.managedBuffers = {};\n this.boundBufferBases = {};\n }\n destroy() {\n this.renderer = null;\n }\n contextChange() {\n this.disposeAll(true);\n this.gl = this.renderer.gl;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n }\n bind(buffer) {\n const { gl, CONTEXT_UID } = this;\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n gl.bindBuffer(buffer.type, glBuffer.buffer);\n }\n unbind(type) {\n const { gl } = this;\n gl.bindBuffer(type, null);\n }\n bindBufferBase(buffer, index) {\n const { gl, CONTEXT_UID } = this;\n if (this.boundBufferBases[index] !== buffer) {\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n this.boundBufferBases[index] = buffer;\n gl.bindBufferBase(gl.UNIFORM_BUFFER, index, glBuffer.buffer);\n }\n }\n bindBufferRange(buffer, index, offset) {\n const { gl, CONTEXT_UID } = this;\n offset = offset || 0;\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n gl.bindBufferRange(gl.UNIFORM_BUFFER, index || 0, glBuffer.buffer, offset * 256, 256);\n }\n update(buffer) {\n const { gl, CONTEXT_UID } = this;\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n if (buffer._updateID === glBuffer.updateID) {\n return;\n }\n glBuffer.updateID = buffer._updateID;\n gl.bindBuffer(buffer.type, glBuffer.buffer);\n if (glBuffer.byteLength >= buffer.data.byteLength) {\n gl.bufferSubData(buffer.type, 0, buffer.data);\n } else {\n const drawType = buffer.static ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW;\n glBuffer.byteLength = buffer.data.byteLength;\n gl.bufferData(buffer.type, buffer.data, drawType);\n }\n }\n dispose(buffer, contextLost) {\n if (!this.managedBuffers[buffer.id]) {\n return;\n }\n delete this.managedBuffers[buffer.id];\n const glBuffer = buffer._glBuffers[this.CONTEXT_UID];\n const gl = this.gl;\n buffer.disposeRunner.remove(this);\n if (!glBuffer) {\n return;\n }\n if (!contextLost) {\n gl.deleteBuffer(glBuffer.buffer);\n }\n delete buffer._glBuffers[this.CONTEXT_UID];\n }\n disposeAll(contextLost) {\n const all = Object.keys(this.managedBuffers);\n for (let i = 0; i < all.length; i++) {\n this.dispose(this.managedBuffers[all[i]], contextLost);\n }\n }\n createGLBuffer(buffer) {\n const { CONTEXT_UID, gl } = this;\n buffer._glBuffers[CONTEXT_UID] = new GLBuffer(gl.createBuffer());\n this.managedBuffers[buffer.id] = buffer;\n buffer.disposeRunner.add(this);\n return buffer._glBuffers[CONTEXT_UID];\n }\n}\nBufferSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"buffer\"\n};\nextensions.add(BufferSystem);\n\nexport { BufferSystem };\n//# sourceMappingURL=BufferSystem.mjs.map\n","import { MSAA_QUALITY } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass MultisampleSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n contextChange(gl) {\n let samples;\n if (this.renderer.context.webGLVersion === 1) {\n const framebuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n samples = gl.getParameter(gl.SAMPLES);\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n } else {\n const framebuffer = gl.getParameter(gl.DRAW_FRAMEBUFFER_BINDING);\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\n samples = gl.getParameter(gl.SAMPLES);\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, framebuffer);\n }\n if (samples >= MSAA_QUALITY.HIGH) {\n this.multisample = MSAA_QUALITY.HIGH;\n } else if (samples >= MSAA_QUALITY.MEDIUM) {\n this.multisample = MSAA_QUALITY.MEDIUM;\n } else if (samples >= MSAA_QUALITY.LOW) {\n this.multisample = MSAA_QUALITY.LOW;\n } else {\n this.multisample = MSAA_QUALITY.NONE;\n }\n }\n destroy() {\n }\n}\nMultisampleSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"_multisample\"\n};\nextensions.add(MultisampleSystem);\n\nexport { MultisampleSystem };\n//# sourceMappingURL=MultisampleSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\n\nclass ObjectRendererSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n render(displayObject, options) {\n const renderer = this.renderer;\n let renderTexture;\n let clear;\n let transform;\n let skipUpdateTransform;\n if (options) {\n renderTexture = options.renderTexture;\n clear = options.clear;\n transform = options.transform;\n skipUpdateTransform = options.skipUpdateTransform;\n }\n this.renderingToScreen = !renderTexture;\n renderer.runners.prerender.emit();\n renderer.emit(\"prerender\");\n renderer.projection.transform = transform;\n if (renderer.context.isLost) {\n return;\n }\n if (!renderTexture) {\n this.lastObjectRendered = displayObject;\n }\n if (!skipUpdateTransform) {\n const cacheParent = displayObject.enableTempParent();\n displayObject.updateTransform();\n displayObject.disableTempParent(cacheParent);\n }\n renderer.renderTexture.bind(renderTexture);\n renderer.batch.currentRenderer.start();\n if (clear ?? renderer.background.clearBeforeRender) {\n renderer.renderTexture.clear();\n }\n displayObject.render(renderer);\n renderer.batch.currentRenderer.flush();\n if (renderTexture) {\n if (options.blit) {\n renderer.framebuffer.blit();\n }\n renderTexture.baseTexture.update();\n }\n renderer.runners.postrender.emit();\n renderer.projection.transform = null;\n renderer.emit(\"postrender\");\n }\n destroy() {\n this.renderer = null;\n this.lastObjectRendered = null;\n }\n}\nObjectRendererSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"objectRenderer\"\n};\nextensions.add(ObjectRendererSystem);\n\nexport { ObjectRendererSystem };\n//# sourceMappingURL=ObjectRendererSystem.mjs.map\n","import './settings.mjs';\nexport * from '@pixi/constants';\nexport * from '@pixi/extensions';\nexport * from '@pixi/math';\nexport * from '@pixi/runner';\nexport * from '@pixi/settings';\nexport * from '@pixi/ticker';\nimport * as utils from '@pixi/utils';\nexport { utils };\nimport './textures/resources/index.mjs';\nimport './systems.mjs';\nimport './IRenderer.mjs';\nexport { autoDetectRenderer } from './autoDetectRenderer.mjs';\nexport { defaultFilterVertex, defaultVertex } from './fragments/index.mjs';\nimport './system/ISystem.mjs';\nexport { PluginSystem } from './plugin/PluginSystem.mjs';\nexport { Renderer } from './Renderer.mjs';\nexport { Framebuffer } from './framebuffer/Framebuffer.mjs';\nexport { GLFramebuffer } from './framebuffer/GLFramebuffer.mjs';\nexport { Texture } from './textures/Texture.mjs';\nexport { BaseTexture } from './textures/BaseTexture.mjs';\nexport { GLTexture } from './textures/GLTexture.mjs';\nexport { TextureMatrix } from './textures/TextureMatrix.mjs';\nexport { RenderTexture } from './renderTexture/RenderTexture.mjs';\nexport { RenderTexturePool } from './renderTexture/RenderTexturePool.mjs';\nexport { BaseRenderTexture } from './renderTexture/BaseRenderTexture.mjs';\nexport { TextureUvs } from './textures/TextureUvs.mjs';\nexport { State } from './state/State.mjs';\nexport { ObjectRenderer } from './batch/ObjectRenderer.mjs';\nexport { BatchRenderer } from './batch/BatchRenderer.mjs';\nexport { BatchShaderGenerator } from './batch/BatchShaderGenerator.mjs';\nexport { BatchGeometry } from './batch/BatchGeometry.mjs';\nexport { BatchDrawCall } from './batch/BatchDrawCall.mjs';\nexport { BatchTextureArray } from './batch/BatchTextureArray.mjs';\nexport { Quad } from './utils/Quad.mjs';\nexport { QuadUv } from './utils/QuadUv.mjs';\nexport { checkMaxIfStatementsInShader } from './shader/utils/checkMaxIfStatementsInShader.mjs';\nexport { uniformParsers } from './shader/utils/uniformParsers.mjs';\nexport { createUBOElements, generateUniformBufferSync, getUBOData } from './shader/utils/generateUniformBufferSync.mjs';\nexport { getTestContext } from './shader/utils/getTestContext.mjs';\nexport { generateProgram } from './shader/utils/generateProgram.mjs';\nexport { Shader } from './shader/Shader.mjs';\nexport { Program } from './shader/Program.mjs';\nexport { GLProgram, IGLUniformData } from './shader/GLProgram.mjs';\nexport { UniformGroup } from './shader/UniformGroup.mjs';\nexport { MaskData } from './mask/MaskData.mjs';\nexport { SpriteMaskFilter } from './filters/spriteMask/SpriteMaskFilter.mjs';\nexport { Filter } from './filters/Filter.mjs';\nexport { FilterState } from './filters/FilterState.mjs';\nimport './filters/IFilterTarget.mjs';\nexport { Attribute } from './geometry/Attribute.mjs';\nexport { Buffer } from './geometry/Buffer.mjs';\nexport { Geometry } from './geometry/Geometry.mjs';\nexport { ViewableBuffer } from './geometry/ViewableBuffer.mjs';\nexport { TransformFeedback } from './transformFeedback/TransformFeedback.mjs';\nexport { MaskSystem } from './mask/MaskSystem.mjs';\nexport { StencilSystem } from './mask/StencilSystem.mjs';\nexport { ScissorSystem } from './mask/ScissorSystem.mjs';\nexport { FilterSystem } from './filters/FilterSystem.mjs';\nexport { FramebufferSystem } from './framebuffer/FramebufferSystem.mjs';\nexport { RenderTextureSystem } from './renderTexture/RenderTextureSystem.mjs';\nexport { TextureSystem } from './textures/TextureSystem.mjs';\nexport { ProjectionSystem } from './projection/ProjectionSystem.mjs';\nexport { StateSystem } from './state/StateSystem.mjs';\nexport { GeometrySystem } from './geometry/GeometrySystem.mjs';\nexport { ShaderSystem } from './shader/ShaderSystem.mjs';\nexport { ContextSystem } from './context/ContextSystem.mjs';\nexport { BatchSystem } from './batch/BatchSystem.mjs';\nexport { TextureGCSystem } from './textures/TextureGCSystem.mjs';\nexport { BufferSystem } from './geometry/BufferSystem.mjs';\nexport { MultisampleSystem } from './framebuffer/MultisampleSystem.mjs';\nexport { GenerateTextureSystem } from './renderTexture/GenerateTextureSystem.mjs';\nexport { BackgroundSystem } from './background/BackgroundSystem.mjs';\nexport { ViewSystem } from './view/ViewSystem.mjs';\nexport { ObjectRendererSystem } from './render/ObjectRendererSystem.mjs';\nexport { StartupSystem } from './startup/StartupSystem.mjs';\nexport { TransformFeedbackSystem } from './transformFeedback/TransformFeedbackSystem.mjs';\nexport { Resource } from './textures/resources/Resource.mjs';\nexport { BaseImageResource } from './textures/resources/BaseImageResource.mjs';\nexport { INSTALLED, autoDetectResource } from './textures/resources/autoDetectResource.mjs';\nexport { AbstractMultiResource } from './textures/resources/AbstractMultiResource.mjs';\nexport { ArrayResource } from './textures/resources/ArrayResource.mjs';\nexport { BufferResource } from './textures/resources/BufferResource.mjs';\nexport { CanvasResource } from './textures/resources/CanvasResource.mjs';\nexport { CubeResource } from './textures/resources/CubeResource.mjs';\nexport { ImageResource } from './textures/resources/ImageResource.mjs';\nexport { SVGResource } from './textures/resources/SVGResource.mjs';\nexport { VideoResource } from './textures/resources/VideoResource.mjs';\nexport { ImageBitmapResource } from './textures/resources/ImageBitmapResource.mjs';\nexport { SystemManager } from './system/SystemManager.mjs';\n\nconst VERSION = \"7.0.2\";\n\nexport { VERSION };\n//# sourceMappingURL=index.mjs.map\n","var fragment = \"varying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform float uAlpha;\\n\\nvoid main(void)\\n{\\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uAlpha;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=alpha.mjs.map\n","import { Filter, defaultVertex } from '@pixi/core';\nimport fragment from './alpha.mjs';\n\nclass AlphaFilter extends Filter {\n constructor(alpha = 1) {\n super(defaultVertex, fragment, { uAlpha: 1 });\n this.alpha = alpha;\n }\n get alpha() {\n return this.uniforms.uAlpha;\n }\n set alpha(value) {\n this.uniforms.uAlpha = value;\n }\n}\n\nexport { AlphaFilter };\n//# sourceMappingURL=AlphaFilter.mjs.map\n","const vertTemplate = `\n attribute vec2 aVertexPosition;\n\n uniform mat3 projectionMatrix;\n\n uniform float strength;\n\n varying vec2 vBlurTexCoords[%size%];\n\n uniform vec4 inputSize;\n uniform vec4 outputFrame;\n\n vec4 filterVertexPosition( void )\n {\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n }\n\n vec2 filterTextureCoord( void )\n {\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n }\n\n void main(void)\n {\n gl_Position = filterVertexPosition();\n\n vec2 textureCoord = filterTextureCoord();\n %blur%\n }`;\nfunction generateBlurVertSource(kernelSize, x) {\n const halfLength = Math.ceil(kernelSize / 2);\n let vertSource = vertTemplate;\n let blurLoop = \"\";\n let template;\n if (x) {\n template = \"vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * strength, 0.0);\";\n } else {\n template = \"vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * strength);\";\n }\n for (let i = 0; i < kernelSize; i++) {\n let blur = template.replace(\"%index%\", i.toString());\n blur = blur.replace(\"%sampleIndex%\", `${i - (halfLength - 1)}.0`);\n blurLoop += blur;\n blurLoop += \"\\n\";\n }\n vertSource = vertSource.replace(\"%blur%\", blurLoop);\n vertSource = vertSource.replace(\"%size%\", kernelSize.toString());\n return vertSource;\n}\n\nexport { generateBlurVertSource };\n//# sourceMappingURL=generateBlurVertSource.mjs.map\n","const GAUSSIAN_VALUES = {\n 5: [0.153388, 0.221461, 0.250301],\n 7: [0.071303, 0.131514, 0.189879, 0.214607],\n 9: [0.028532, 0.067234, 0.124009, 0.179044, 0.20236],\n 11: [93e-4, 0.028002, 0.065984, 0.121703, 0.175713, 0.198596],\n 13: [2406e-6, 9255e-6, 0.027867, 0.065666, 0.121117, 0.174868, 0.197641],\n 15: [489e-6, 2403e-6, 9246e-6, 0.02784, 0.065602, 0.120999, 0.174697, 0.197448]\n};\nconst fragTemplate = [\n \"varying vec2 vBlurTexCoords[%size%];\",\n \"uniform sampler2D uSampler;\",\n \"void main(void)\",\n \"{\",\n \" gl_FragColor = vec4(0.0);\",\n \" %blur%\",\n \"}\"\n].join(\"\\n\");\nfunction generateBlurFragSource(kernelSize) {\n const kernel = GAUSSIAN_VALUES[kernelSize];\n const halfLength = kernel.length;\n let fragSource = fragTemplate;\n let blurLoop = \"\";\n const template = \"gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;\";\n let value;\n for (let i = 0; i < kernelSize; i++) {\n let blur = template.replace(\"%index%\", i.toString());\n value = i;\n if (i >= halfLength) {\n value = kernelSize - i - 1;\n }\n blur = blur.replace(\"%value%\", kernel[value].toString());\n blurLoop += blur;\n blurLoop += \"\\n\";\n }\n fragSource = fragSource.replace(\"%blur%\", blurLoop);\n fragSource = fragSource.replace(\"%size%\", kernelSize.toString());\n return fragSource;\n}\n\nexport { generateBlurFragSource };\n//# sourceMappingURL=generateBlurFragSource.mjs.map\n","import { Filter, settings, CLEAR_MODES } from '@pixi/core';\nimport { generateBlurVertSource } from './generateBlurVertSource.mjs';\nimport { generateBlurFragSource } from './generateBlurFragSource.mjs';\n\nclass BlurFilterPass extends Filter {\n constructor(horizontal, strength = 8, quality = 4, resolution = settings.FILTER_RESOLUTION, kernelSize = 5) {\n const vertSrc = generateBlurVertSource(kernelSize, horizontal);\n const fragSrc = generateBlurFragSource(kernelSize);\n super(vertSrc, fragSrc);\n this.horizontal = horizontal;\n this.resolution = resolution;\n this._quality = 0;\n this.quality = quality;\n this.blur = strength;\n }\n apply(filterManager, input, output, clearMode) {\n if (output) {\n if (this.horizontal) {\n this.uniforms.strength = 1 / output.width * (output.width / input.width);\n } else {\n this.uniforms.strength = 1 / output.height * (output.height / input.height);\n }\n } else {\n if (this.horizontal) {\n this.uniforms.strength = 1 / filterManager.renderer.width * (filterManager.renderer.width / input.width);\n } else {\n this.uniforms.strength = 1 / filterManager.renderer.height * (filterManager.renderer.height / input.height);\n }\n }\n this.uniforms.strength *= this.strength;\n this.uniforms.strength /= this.passes;\n if (this.passes === 1) {\n filterManager.applyFilter(this, input, output, clearMode);\n } else {\n const renderTarget = filterManager.getFilterTexture();\n const renderer = filterManager.renderer;\n let flip = input;\n let flop = renderTarget;\n this.state.blend = false;\n filterManager.applyFilter(this, flip, flop, CLEAR_MODES.CLEAR);\n for (let i = 1; i < this.passes - 1; i++) {\n filterManager.bindAndClear(flip, CLEAR_MODES.BLIT);\n this.uniforms.uSampler = flop;\n const temp = flop;\n flop = flip;\n flip = temp;\n renderer.shader.bind(this);\n renderer.geometry.draw(5);\n }\n this.state.blend = true;\n filterManager.applyFilter(this, flop, output, clearMode);\n filterManager.returnFilterTexture(renderTarget);\n }\n }\n get blur() {\n return this.strength;\n }\n set blur(value) {\n this.padding = 1 + Math.abs(value) * 2;\n this.strength = value;\n }\n get quality() {\n return this._quality;\n }\n set quality(value) {\n this._quality = value;\n this.passes = value;\n }\n}\n\nexport { BlurFilterPass };\n//# sourceMappingURL=BlurFilterPass.mjs.map\n","import { Filter, settings, CLEAR_MODES } from '@pixi/core';\nimport { BlurFilterPass } from './BlurFilterPass.mjs';\n\nclass BlurFilter extends Filter {\n constructor(strength = 8, quality = 4, resolution = settings.FILTER_RESOLUTION, kernelSize = 5) {\n super();\n this.blurXFilter = new BlurFilterPass(true, strength, quality, resolution, kernelSize);\n this.blurYFilter = new BlurFilterPass(false, strength, quality, resolution, kernelSize);\n this.resolution = resolution;\n this.quality = quality;\n this.blur = strength;\n this.repeatEdgePixels = false;\n }\n apply(filterManager, input, output, clearMode) {\n const xStrength = Math.abs(this.blurXFilter.strength);\n const yStrength = Math.abs(this.blurYFilter.strength);\n if (xStrength && yStrength) {\n const renderTarget = filterManager.getFilterTexture();\n this.blurXFilter.apply(filterManager, input, renderTarget, CLEAR_MODES.CLEAR);\n this.blurYFilter.apply(filterManager, renderTarget, output, clearMode);\n filterManager.returnFilterTexture(renderTarget);\n } else if (yStrength) {\n this.blurYFilter.apply(filterManager, input, output, clearMode);\n } else {\n this.blurXFilter.apply(filterManager, input, output, clearMode);\n }\n }\n updatePadding() {\n if (this._repeatEdgePixels) {\n this.padding = 0;\n } else {\n this.padding = Math.max(Math.abs(this.blurXFilter.strength), Math.abs(this.blurYFilter.strength)) * 2;\n }\n }\n get blur() {\n return this.blurXFilter.blur;\n }\n set blur(value) {\n this.blurXFilter.blur = this.blurYFilter.blur = value;\n this.updatePadding();\n }\n get quality() {\n return this.blurXFilter.quality;\n }\n set quality(value) {\n this.blurXFilter.quality = this.blurYFilter.quality = value;\n }\n get blurX() {\n return this.blurXFilter.blur;\n }\n set blurX(value) {\n this.blurXFilter.blur = value;\n this.updatePadding();\n }\n get blurY() {\n return this.blurYFilter.blur;\n }\n set blurY(value) {\n this.blurYFilter.blur = value;\n this.updatePadding();\n }\n get blendMode() {\n return this.blurYFilter.blendMode;\n }\n set blendMode(value) {\n this.blurYFilter.blendMode = value;\n }\n get repeatEdgePixels() {\n return this._repeatEdgePixels;\n }\n set repeatEdgePixels(value) {\n this._repeatEdgePixels = value;\n this.updatePadding();\n }\n}\n\nexport { BlurFilter };\n//# sourceMappingURL=BlurFilter.mjs.map\n","var fragment = \"varying vec2 vTextureCoord;\\nuniform sampler2D uSampler;\\nuniform float m[20];\\nuniform float uAlpha;\\n\\nvoid main(void)\\n{\\n vec4 c = texture2D(uSampler, vTextureCoord);\\n\\n if (uAlpha == 0.0) {\\n gl_FragColor = c;\\n return;\\n }\\n\\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\\n if (c.a > 0.0) {\\n c.rgb /= c.a;\\n }\\n\\n vec4 result;\\n\\n result.r = (m[0] * c.r);\\n result.r += (m[1] * c.g);\\n result.r += (m[2] * c.b);\\n result.r += (m[3] * c.a);\\n result.r += m[4];\\n\\n result.g = (m[5] * c.r);\\n result.g += (m[6] * c.g);\\n result.g += (m[7] * c.b);\\n result.g += (m[8] * c.a);\\n result.g += m[9];\\n\\n result.b = (m[10] * c.r);\\n result.b += (m[11] * c.g);\\n result.b += (m[12] * c.b);\\n result.b += (m[13] * c.a);\\n result.b += m[14];\\n\\n result.a = (m[15] * c.r);\\n result.a += (m[16] * c.g);\\n result.a += (m[17] * c.b);\\n result.a += (m[18] * c.a);\\n result.a += m[19];\\n\\n vec3 rgb = mix(c.rgb, result.rgb, uAlpha);\\n\\n // Premultiply alpha again.\\n rgb *= result.a;\\n\\n gl_FragColor = vec4(rgb, result.a);\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=colorMatrix.mjs.map\n","import { Filter, defaultFilterVertex } from '@pixi/core';\nimport fragment from './colorMatrix.mjs';\n\nclass ColorMatrixFilter extends Filter {\n constructor() {\n const uniforms = {\n m: new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ]),\n uAlpha: 1\n };\n super(defaultFilterVertex, fragment, uniforms);\n this.alpha = 1;\n }\n _loadMatrix(matrix, multiply = false) {\n let newMatrix = matrix;\n if (multiply) {\n this._multiply(newMatrix, this.uniforms.m, matrix);\n newMatrix = this._colorMatrix(newMatrix);\n }\n this.uniforms.m = newMatrix;\n }\n _multiply(out, a, b) {\n out[0] = a[0] * b[0] + a[1] * b[5] + a[2] * b[10] + a[3] * b[15];\n out[1] = a[0] * b[1] + a[1] * b[6] + a[2] * b[11] + a[3] * b[16];\n out[2] = a[0] * b[2] + a[1] * b[7] + a[2] * b[12] + a[3] * b[17];\n out[3] = a[0] * b[3] + a[1] * b[8] + a[2] * b[13] + a[3] * b[18];\n out[4] = a[0] * b[4] + a[1] * b[9] + a[2] * b[14] + a[3] * b[19] + a[4];\n out[5] = a[5] * b[0] + a[6] * b[5] + a[7] * b[10] + a[8] * b[15];\n out[6] = a[5] * b[1] + a[6] * b[6] + a[7] * b[11] + a[8] * b[16];\n out[7] = a[5] * b[2] + a[6] * b[7] + a[7] * b[12] + a[8] * b[17];\n out[8] = a[5] * b[3] + a[6] * b[8] + a[7] * b[13] + a[8] * b[18];\n out[9] = a[5] * b[4] + a[6] * b[9] + a[7] * b[14] + a[8] * b[19] + a[9];\n out[10] = a[10] * b[0] + a[11] * b[5] + a[12] * b[10] + a[13] * b[15];\n out[11] = a[10] * b[1] + a[11] * b[6] + a[12] * b[11] + a[13] * b[16];\n out[12] = a[10] * b[2] + a[11] * b[7] + a[12] * b[12] + a[13] * b[17];\n out[13] = a[10] * b[3] + a[11] * b[8] + a[12] * b[13] + a[13] * b[18];\n out[14] = a[10] * b[4] + a[11] * b[9] + a[12] * b[14] + a[13] * b[19] + a[14];\n out[15] = a[15] * b[0] + a[16] * b[5] + a[17] * b[10] + a[18] * b[15];\n out[16] = a[15] * b[1] + a[16] * b[6] + a[17] * b[11] + a[18] * b[16];\n out[17] = a[15] * b[2] + a[16] * b[7] + a[17] * b[12] + a[18] * b[17];\n out[18] = a[15] * b[3] + a[16] * b[8] + a[17] * b[13] + a[18] * b[18];\n out[19] = a[15] * b[4] + a[16] * b[9] + a[17] * b[14] + a[18] * b[19] + a[19];\n return out;\n }\n _colorMatrix(matrix) {\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n return m;\n }\n brightness(b, multiply) {\n const matrix = [\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n tint(color, multiply) {\n const r = color >> 16 & 255;\n const g = color >> 8 & 255;\n const b = color & 255;\n const matrix = [\n r / 255,\n 0,\n 0,\n 0,\n 0,\n 0,\n g / 255,\n 0,\n 0,\n 0,\n 0,\n 0,\n b / 255,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n greyscale(scale, multiply) {\n const matrix = [\n scale,\n scale,\n scale,\n 0,\n 0,\n scale,\n scale,\n scale,\n 0,\n 0,\n scale,\n scale,\n scale,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n blackAndWhite(multiply) {\n const matrix = [\n 0.3,\n 0.6,\n 0.1,\n 0,\n 0,\n 0.3,\n 0.6,\n 0.1,\n 0,\n 0,\n 0.3,\n 0.6,\n 0.1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n hue(rotation, multiply) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cosR = Math.cos(rotation);\n const sinR = Math.sin(rotation);\n const sqrt = Math.sqrt;\n const w = 1 / 3;\n const sqrW = sqrt(w);\n const a00 = cosR + (1 - cosR) * w;\n const a01 = w * (1 - cosR) - sqrW * sinR;\n const a02 = w * (1 - cosR) + sqrW * sinR;\n const a10 = w * (1 - cosR) + sqrW * sinR;\n const a11 = cosR + w * (1 - cosR);\n const a12 = w * (1 - cosR) - sqrW * sinR;\n const a20 = w * (1 - cosR) - sqrW * sinR;\n const a21 = w * (1 - cosR) + sqrW * sinR;\n const a22 = cosR + w * (1 - cosR);\n const matrix = [\n a00,\n a01,\n a02,\n 0,\n 0,\n a10,\n a11,\n a12,\n 0,\n 0,\n a20,\n a21,\n a22,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n contrast(amount, multiply) {\n const v = (amount || 0) + 1;\n const o = -0.5 * (v - 1);\n const matrix = [\n v,\n 0,\n 0,\n 0,\n o,\n 0,\n v,\n 0,\n 0,\n o,\n 0,\n 0,\n v,\n 0,\n o,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n saturate(amount = 0, multiply) {\n const x = amount * 2 / 3 + 1;\n const y = (x - 1) * -0.5;\n const matrix = [\n x,\n y,\n y,\n 0,\n 0,\n y,\n x,\n y,\n 0,\n 0,\n y,\n y,\n x,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n desaturate() {\n this.saturate(-1);\n }\n negative(multiply) {\n const matrix = [\n -1,\n 0,\n 0,\n 1,\n 0,\n 0,\n -1,\n 0,\n 1,\n 0,\n 0,\n 0,\n -1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n sepia(multiply) {\n const matrix = [\n 0.393,\n 0.7689999,\n 0.18899999,\n 0,\n 0,\n 0.349,\n 0.6859999,\n 0.16799999,\n 0,\n 0,\n 0.272,\n 0.5339999,\n 0.13099999,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n technicolor(multiply) {\n const matrix = [\n 1.9125277891456083,\n -0.8545344976951645,\n -0.09155508482755585,\n 0,\n 11.793603434377337,\n -0.3087833385928097,\n 1.7658908555458428,\n -0.10601743074722245,\n 0,\n -70.35205161461398,\n -0.231103377548616,\n -0.7501899197440212,\n 1.847597816108189,\n 0,\n 30.950940869491138,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n polaroid(multiply) {\n const matrix = [\n 1.438,\n -0.062,\n -0.062,\n 0,\n 0,\n -0.122,\n 1.378,\n -0.122,\n 0,\n 0,\n -0.016,\n -0.016,\n 1.483,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n toBGR(multiply) {\n const matrix = [\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n kodachrome(multiply) {\n const matrix = [\n 1.1285582396593525,\n -0.3967382283601348,\n -0.03992559172921793,\n 0,\n 63.72958762196502,\n -0.16404339962244616,\n 1.0835251566291304,\n -0.05498805115633132,\n 0,\n 24.732407896706203,\n -0.16786010706155763,\n -0.5603416277695248,\n 1.6014850761964943,\n 0,\n 35.62982807460946,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n browni(multiply) {\n const matrix = [\n 0.5997023498159715,\n 0.34553243048391263,\n -0.2708298674538042,\n 0,\n 47.43192855600873,\n -0.037703249837783157,\n 0.8609577587992641,\n 0.15059552388459913,\n 0,\n -36.96841498319127,\n 0.24113635128153335,\n -0.07441037908422492,\n 0.44972182064877153,\n 0,\n -7.562075277591283,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n vintage(multiply) {\n const matrix = [\n 0.6279345635605994,\n 0.3202183420819367,\n -0.03965408211312453,\n 0,\n 9.651285835294123,\n 0.02578397704808868,\n 0.6441188644374771,\n 0.03259127616149294,\n 0,\n 7.462829176470591,\n 0.0466055556782719,\n -0.0851232987247891,\n 0.5241648018700465,\n 0,\n 5.159190588235296,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n colorTone(desaturation, toned, lightColor, darkColor, multiply) {\n desaturation = desaturation || 0.2;\n toned = toned || 0.15;\n lightColor = lightColor || 16770432;\n darkColor = darkColor || 3375104;\n const lR = (lightColor >> 16 & 255) / 255;\n const lG = (lightColor >> 8 & 255) / 255;\n const lB = (lightColor & 255) / 255;\n const dR = (darkColor >> 16 & 255) / 255;\n const dG = (darkColor >> 8 & 255) / 255;\n const dB = (darkColor & 255) / 255;\n const matrix = [\n 0.3,\n 0.59,\n 0.11,\n 0,\n 0,\n lR,\n lG,\n lB,\n desaturation,\n 0,\n dR,\n dG,\n dB,\n toned,\n 0,\n lR - dR,\n lG - dG,\n lB - dB,\n 0,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n night(intensity, multiply) {\n intensity = intensity || 0.1;\n const matrix = [\n intensity * -2,\n -intensity,\n 0,\n 0,\n 0,\n -intensity,\n 0,\n intensity,\n 0,\n 0,\n 0,\n intensity,\n intensity * 2,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n predator(amount, multiply) {\n const matrix = [\n 11.224130630493164 * amount,\n -4.794486999511719 * amount,\n -2.8746118545532227 * amount,\n 0 * amount,\n 0.40342438220977783 * amount,\n -3.6330697536468506 * amount,\n 9.193157196044922 * amount,\n -2.951810836791992 * amount,\n 0 * amount,\n -1.316135048866272 * amount,\n -3.2184197902679443 * amount,\n -4.2375030517578125 * amount,\n 7.476448059082031 * amount,\n 0 * amount,\n 0.8044459223747253 * amount,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n lsd(multiply) {\n const matrix = [\n 2,\n -0.4,\n 0.5,\n 0,\n 0,\n -0.5,\n 2,\n -0.4,\n 0,\n 0,\n -0.4,\n -0.5,\n 3,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n reset() {\n const matrix = [\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, false);\n }\n get matrix() {\n return this.uniforms.m;\n }\n set matrix(value) {\n this.uniforms.m = value;\n }\n get alpha() {\n return this.uniforms.uAlpha;\n }\n set alpha(value) {\n this.uniforms.uAlpha = value;\n }\n}\nColorMatrixFilter.prototype.grayscale = ColorMatrixFilter.prototype.greyscale;\n\nexport { ColorMatrixFilter };\n//# sourceMappingURL=ColorMatrixFilter.mjs.map\n","var fragment = \"varying vec2 vFilterCoord;\\nvarying vec2 vTextureCoord;\\n\\nuniform vec2 scale;\\nuniform mat2 rotation;\\nuniform sampler2D uSampler;\\nuniform sampler2D mapSampler;\\n\\nuniform highp vec4 inputSize;\\nuniform vec4 inputClamp;\\n\\nvoid main(void)\\n{\\n vec4 map = texture2D(mapSampler, vFilterCoord);\\n\\n map -= 0.5;\\n map.xy = scale * inputSize.zw * (rotation * map.xy);\\n\\n gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw));\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=displacement.mjs.map\n","var vertex = \"attribute vec2 aVertexPosition;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 filterMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vFilterCoord;\\n\\nuniform vec4 inputSize;\\nuniform vec4 outputFrame;\\n\\nvec4 filterVertexPosition( void )\\n{\\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\\n\\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\\n}\\n\\nvec2 filterTextureCoord( void )\\n{\\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\\n}\\n\\nvoid main(void)\\n{\\n\\tgl_Position = filterVertexPosition();\\n\\tvTextureCoord = filterTextureCoord();\\n\\tvFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0) ).xy;\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=displacement2.mjs.map\n","import { Filter, Matrix, Point } from '@pixi/core';\nimport fragment from './displacement.mjs';\nimport vertex from './displacement2.mjs';\n\nclass DisplacementFilter extends Filter {\n constructor(sprite, scale) {\n const maskMatrix = new Matrix();\n sprite.renderable = false;\n super(vertex, fragment, {\n mapSampler: sprite._texture,\n filterMatrix: maskMatrix,\n scale: { x: 1, y: 1 },\n rotation: new Float32Array([1, 0, 0, 1])\n });\n this.maskSprite = sprite;\n this.maskMatrix = maskMatrix;\n if (scale === null || scale === void 0) {\n scale = 20;\n }\n this.scale = new Point(scale, scale);\n }\n apply(filterManager, input, output, clearMode) {\n this.uniforms.filterMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, this.maskSprite);\n this.uniforms.scale.x = this.scale.x;\n this.uniforms.scale.y = this.scale.y;\n const wt = this.maskSprite.worldTransform;\n const lenX = Math.sqrt(wt.a * wt.a + wt.b * wt.b);\n const lenY = Math.sqrt(wt.c * wt.c + wt.d * wt.d);\n if (lenX !== 0 && lenY !== 0) {\n this.uniforms.rotation[0] = wt.a / lenX;\n this.uniforms.rotation[1] = wt.b / lenX;\n this.uniforms.rotation[2] = wt.c / lenY;\n this.uniforms.rotation[3] = wt.d / lenY;\n }\n filterManager.applyFilter(this, input, output, clearMode);\n }\n get map() {\n return this.uniforms.mapSampler;\n }\n set map(value) {\n this.uniforms.mapSampler = value;\n }\n}\n\nexport { DisplacementFilter };\n//# sourceMappingURL=DisplacementFilter.mjs.map\n","var vertex = \"\\nattribute vec2 aVertexPosition;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 v_rgbNW;\\nvarying vec2 v_rgbNE;\\nvarying vec2 v_rgbSW;\\nvarying vec2 v_rgbSE;\\nvarying vec2 v_rgbM;\\n\\nvarying vec2 vFragCoord;\\n\\nuniform vec4 inputSize;\\nuniform vec4 outputFrame;\\n\\nvec4 filterVertexPosition( void )\\n{\\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\\n\\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\\n}\\n\\nvoid texcoords(vec2 fragCoord, vec2 inverseVP,\\n out vec2 v_rgbNW, out vec2 v_rgbNE,\\n out vec2 v_rgbSW, out vec2 v_rgbSE,\\n out vec2 v_rgbM) {\\n v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\\n v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\\n v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\\n v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\\n v_rgbM = vec2(fragCoord * inverseVP);\\n}\\n\\nvoid main(void) {\\n\\n gl_Position = filterVertexPosition();\\n\\n vFragCoord = aVertexPosition * outputFrame.zw;\\n\\n texcoords(vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=fxaa.mjs.map\n","var fragment = \"varying vec2 v_rgbNW;\\nvarying vec2 v_rgbNE;\\nvarying vec2 v_rgbSW;\\nvarying vec2 v_rgbSE;\\nvarying vec2 v_rgbM;\\n\\nvarying vec2 vFragCoord;\\nuniform sampler2D uSampler;\\nuniform highp vec4 inputSize;\\n\\n\\n/**\\n Basic FXAA implementation based on the code on geeks3d.com with the\\n modification that the texture2DLod stuff was removed since it's\\n unsupported by WebGL.\\n\\n --\\n\\n From:\\n https://github.com/mitsuhiko/webgl-meincraft\\n\\n Copyright (c) 2011 by Armin Ronacher.\\n\\n Some rights reserved.\\n\\n Redistribution and use in source and binary forms, with or without\\n modification, are permitted provided that the following conditions are\\n met:\\n\\n * Redistributions of source code must retain the above copyright\\n notice, this list of conditions and the following disclaimer.\\n\\n * Redistributions in binary form must reproduce the above\\n copyright notice, this list of conditions and the following\\n disclaimer in the documentation and/or other materials provided\\n with the distribution.\\n\\n * The names of the contributors may not be used to endorse or\\n promote products derived from this software without specific\\n prior written permission.\\n\\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\\n \\\"AS IS\\\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n#ifndef FXAA_REDUCE_MIN\\n#define FXAA_REDUCE_MIN (1.0/ 128.0)\\n#endif\\n#ifndef FXAA_REDUCE_MUL\\n#define FXAA_REDUCE_MUL (1.0 / 8.0)\\n#endif\\n#ifndef FXAA_SPAN_MAX\\n#define FXAA_SPAN_MAX 8.0\\n#endif\\n\\n//optimized version for mobile, where dependent\\n//texture reads can be a bottleneck\\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 inverseVP,\\n vec2 v_rgbNW, vec2 v_rgbNE,\\n vec2 v_rgbSW, vec2 v_rgbSE,\\n vec2 v_rgbM) {\\n vec4 color;\\n vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\\n vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\\n vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\\n vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\\n vec4 texColor = texture2D(tex, v_rgbM);\\n vec3 rgbM = texColor.xyz;\\n vec3 luma = vec3(0.299, 0.587, 0.114);\\n float lumaNW = dot(rgbNW, luma);\\n float lumaNE = dot(rgbNE, luma);\\n float lumaSW = dot(rgbSW, luma);\\n float lumaSE = dot(rgbSE, luma);\\n float lumaM = dot(rgbM, luma);\\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\\n\\n mediump vec2 dir;\\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\\n\\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\\n\\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\\n dir * rcpDirMin)) * inverseVP;\\n\\n vec3 rgbA = 0.5 * (\\n texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\\n texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\\n texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\\n texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\\n\\n float lumaB = dot(rgbB, luma);\\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\\n color = vec4(rgbA, texColor.a);\\n else\\n color = vec4(rgbB, texColor.a);\\n return color;\\n}\\n\\nvoid main() {\\n\\n vec4 color;\\n\\n color = fxaa(uSampler, vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\\n\\n gl_FragColor = color;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=fxaa2.mjs.map\n","import { Filter } from '@pixi/core';\nimport vertex from './fxaa.mjs';\nimport fragment from './fxaa2.mjs';\n\nclass FXAAFilter extends Filter {\n constructor() {\n super(vertex, fragment);\n }\n}\n\nexport { FXAAFilter };\n//# sourceMappingURL=FXAAFilter.mjs.map\n","var fragment = \"precision highp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nuniform float uNoise;\\nuniform float uSeed;\\nuniform sampler2D uSampler;\\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 = texture2D(uSampler, 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 gl_FragColor = color;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=noise.mjs.map\n","import { Filter, defaultFilterVertex } from '@pixi/core';\nimport fragment from './noise.mjs';\n\nclass NoiseFilter extends Filter {\n constructor(noise = 0.5, seed = Math.random()) {\n super(defaultFilterVertex, fragment, {\n uNoise: 0,\n uSeed: 0\n });\n this.noise = noise;\n this.seed = seed;\n }\n get noise() {\n return this.uniforms.uNoise;\n }\n set noise(value) {\n this.uniforms.uNoise = value;\n }\n get seed() {\n return this.uniforms.uSeed;\n }\n set seed(value) {\n this.uniforms.uSeed = value;\n }\n}\n\nexport { NoiseFilter };\n//# sourceMappingURL=NoiseFilter.mjs.map\n","import { settings } from '@pixi/core';\nexport { settings } from '@pixi/core';\n\nsettings.SORTABLE_CHILDREN = false;\n//# sourceMappingURL=settings.mjs.map\n","import { Rectangle } from '@pixi/core';\n\nclass Bounds {\n constructor() {\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = -Infinity;\n this.maxY = -Infinity;\n this.rect = null;\n this.updateID = -1;\n }\n isEmpty() {\n return this.minX > this.maxX || this.minY > this.maxY;\n }\n clear() {\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = -Infinity;\n this.maxY = -Infinity;\n }\n getRectangle(rect) {\n if (this.minX > this.maxX || this.minY > this.maxY) {\n return Rectangle.EMPTY;\n }\n rect = rect || new Rectangle(0, 0, 1, 1);\n rect.x = this.minX;\n rect.y = this.minY;\n rect.width = this.maxX - this.minX;\n rect.height = this.maxY - this.minY;\n return rect;\n }\n addPoint(point) {\n this.minX = Math.min(this.minX, point.x);\n this.maxX = Math.max(this.maxX, point.x);\n this.minY = Math.min(this.minY, point.y);\n this.maxY = Math.max(this.maxY, point.y);\n }\n addPointMatrix(matrix, point) {\n const { a, b, c, d, tx, ty } = matrix;\n const x = a * point.x + c * point.y + tx;\n const y = b * point.x + d * point.y + ty;\n this.minX = Math.min(this.minX, x);\n this.maxX = Math.max(this.maxX, x);\n this.minY = Math.min(this.minY, y);\n this.maxY = Math.max(this.maxY, y);\n }\n addQuad(vertices) {\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n let x = vertices[0];\n let y = vertices[1];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = vertices[2];\n y = vertices[3];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = vertices[4];\n y = vertices[5];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = vertices[6];\n y = vertices[7];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n addFrame(transform, x0, y0, x1, y1) {\n this.addFrameMatrix(transform.worldTransform, x0, y0, x1, y1);\n }\n addFrameMatrix(matrix, x0, y0, x1, y1) {\n const a = matrix.a;\n const b = matrix.b;\n const c = matrix.c;\n const d = matrix.d;\n const tx = matrix.tx;\n const ty = matrix.ty;\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n let x = a * x0 + c * y0 + tx;\n let y = b * x0 + d * y0 + ty;\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = a * x1 + c * y0 + tx;\n y = b * x1 + d * y0 + ty;\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = a * x0 + c * y1 + tx;\n y = b * x0 + d * y1 + ty;\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = a * x1 + c * y1 + tx;\n y = b * x1 + d * y1 + ty;\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n addVertexData(vertexData, beginOffset, endOffset) {\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n for (let i = beginOffset; i < endOffset; i += 2) {\n const x = vertexData[i];\n const y = vertexData[i + 1];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n }\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n addVertices(transform, vertices, beginOffset, endOffset) {\n this.addVerticesMatrix(transform.worldTransform, vertices, beginOffset, endOffset);\n }\n addVerticesMatrix(matrix, vertices, beginOffset, endOffset, padX = 0, padY = padX) {\n const a = matrix.a;\n const b = matrix.b;\n const c = matrix.c;\n const d = matrix.d;\n const tx = matrix.tx;\n const ty = matrix.ty;\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n for (let i = beginOffset; i < endOffset; i += 2) {\n const rawX = vertices[i];\n const rawY = vertices[i + 1];\n const x = a * rawX + c * rawY + tx;\n const y = d * rawY + b * rawX + ty;\n minX = Math.min(minX, x - padX);\n maxX = Math.max(maxX, x + padX);\n minY = Math.min(minY, y - padY);\n maxY = Math.max(maxY, y + padY);\n }\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n addBounds(bounds) {\n const minX = this.minX;\n const minY = this.minY;\n const maxX = this.maxX;\n const maxY = this.maxY;\n this.minX = bounds.minX < minX ? bounds.minX : minX;\n this.minY = bounds.minY < minY ? bounds.minY : minY;\n this.maxX = bounds.maxX > maxX ? bounds.maxX : maxX;\n this.maxY = bounds.maxY > maxY ? bounds.maxY : maxY;\n }\n addBoundsMask(bounds, mask) {\n const _minX = bounds.minX > mask.minX ? bounds.minX : mask.minX;\n const _minY = bounds.minY > mask.minY ? bounds.minY : mask.minY;\n const _maxX = bounds.maxX < mask.maxX ? bounds.maxX : mask.maxX;\n const _maxY = bounds.maxY < mask.maxY ? bounds.maxY : mask.maxY;\n if (_minX <= _maxX && _minY <= _maxY) {\n const minX = this.minX;\n const minY = this.minY;\n const maxX = this.maxX;\n const maxY = this.maxY;\n this.minX = _minX < minX ? _minX : minX;\n this.minY = _minY < minY ? _minY : minY;\n this.maxX = _maxX > maxX ? _maxX : maxX;\n this.maxY = _maxY > maxY ? _maxY : maxY;\n }\n }\n addBoundsMatrix(bounds, matrix) {\n this.addFrameMatrix(matrix, bounds.minX, bounds.minY, bounds.maxX, bounds.maxY);\n }\n addBoundsArea(bounds, area) {\n const _minX = bounds.minX > area.x ? bounds.minX : area.x;\n const _minY = bounds.minY > area.y ? bounds.minY : area.y;\n const _maxX = bounds.maxX < area.x + area.width ? bounds.maxX : area.x + area.width;\n const _maxY = bounds.maxY < area.y + area.height ? bounds.maxY : area.y + area.height;\n if (_minX <= _maxX && _minY <= _maxY) {\n const minX = this.minX;\n const minY = this.minY;\n const maxX = this.maxX;\n const maxY = this.maxY;\n this.minX = _minX < minX ? _minX : minX;\n this.minY = _minY < minY ? _minY : minY;\n this.maxX = _maxX > maxX ? _maxX : maxX;\n this.maxY = _maxY > maxY ? _maxY : maxY;\n }\n }\n pad(paddingX = 0, paddingY = paddingX) {\n if (!this.isEmpty()) {\n this.minX -= paddingX;\n this.maxX += paddingX;\n this.minY -= paddingY;\n this.maxY += paddingY;\n }\n }\n addFramePad(x0, y0, x1, y1, padX, padY) {\n x0 -= padX;\n y0 -= padY;\n x1 += padX;\n y1 += padY;\n this.minX = this.minX < x0 ? this.minX : x0;\n this.maxX = this.maxX > x1 ? this.maxX : x1;\n this.minY = this.minY < y0 ? this.minY : y0;\n this.maxY = this.maxY > y1 ? this.maxY : y1;\n }\n}\n\nexport { Bounds };\n//# sourceMappingURL=Bounds.mjs.map\n","import { utils, Transform, Rectangle, RAD_TO_DEG, DEG_TO_RAD } from '@pixi/core';\nimport { Bounds } from './Bounds.mjs';\n\nclass DisplayObject extends utils.EventEmitter {\n constructor() {\n super();\n this.tempDisplayObjectParent = null;\n this.transform = new Transform();\n this.alpha = 1;\n this.visible = true;\n this.renderable = true;\n this.cullable = false;\n this.cullArea = null;\n this.parent = null;\n this.worldAlpha = 1;\n this._lastSortedIndex = 0;\n this._zIndex = 0;\n this.filterArea = null;\n this.filters = null;\n this._enabledFilters = null;\n this._bounds = new Bounds();\n this._localBounds = null;\n this._boundsID = 0;\n this._boundsRect = null;\n this._localBoundsRect = null;\n this._mask = null;\n this._maskRefCount = 0;\n this._destroyed = false;\n this.isSprite = false;\n this.isMask = false;\n }\n static mixin(source) {\n const keys = Object.keys(source);\n for (let i = 0; i < keys.length; ++i) {\n const propertyName = keys[i];\n Object.defineProperty(DisplayObject.prototype, propertyName, Object.getOwnPropertyDescriptor(source, propertyName));\n }\n }\n get destroyed() {\n return this._destroyed;\n }\n _recursivePostUpdateTransform() {\n if (this.parent) {\n this.parent._recursivePostUpdateTransform();\n this.transform.updateTransform(this.parent.transform);\n } else {\n this.transform.updateTransform(this._tempDisplayObjectParent.transform);\n }\n }\n updateTransform() {\n this._boundsID++;\n this.transform.updateTransform(this.parent.transform);\n this.worldAlpha = this.alpha * this.parent.worldAlpha;\n }\n getBounds(skipUpdate, rect) {\n if (!skipUpdate) {\n if (!this.parent) {\n this.parent = this._tempDisplayObjectParent;\n this.updateTransform();\n this.parent = null;\n } else {\n this._recursivePostUpdateTransform();\n this.updateTransform();\n }\n }\n if (this._bounds.updateID !== this._boundsID) {\n this.calculateBounds();\n this._bounds.updateID = this._boundsID;\n }\n if (!rect) {\n if (!this._boundsRect) {\n this._boundsRect = new Rectangle();\n }\n rect = this._boundsRect;\n }\n return this._bounds.getRectangle(rect);\n }\n getLocalBounds(rect) {\n if (!rect) {\n if (!this._localBoundsRect) {\n this._localBoundsRect = new Rectangle();\n }\n rect = this._localBoundsRect;\n }\n if (!this._localBounds) {\n this._localBounds = new Bounds();\n }\n const transformRef = this.transform;\n const parentRef = this.parent;\n this.parent = null;\n this.transform = this._tempDisplayObjectParent.transform;\n const worldBounds = this._bounds;\n const worldBoundsID = this._boundsID;\n this._bounds = this._localBounds;\n const bounds = this.getBounds(false, rect);\n this.parent = parentRef;\n this.transform = transformRef;\n this._bounds = worldBounds;\n this._bounds.updateID += this._boundsID - worldBoundsID;\n return bounds;\n }\n toGlobal(position, point, skipUpdate = false) {\n if (!skipUpdate) {\n this._recursivePostUpdateTransform();\n if (!this.parent) {\n this.parent = this._tempDisplayObjectParent;\n this.displayObjectUpdateTransform();\n this.parent = null;\n } else {\n this.displayObjectUpdateTransform();\n }\n }\n return this.worldTransform.apply(position, point);\n }\n toLocal(position, from, point, skipUpdate) {\n if (from) {\n position = from.toGlobal(position, point, skipUpdate);\n }\n if (!skipUpdate) {\n this._recursivePostUpdateTransform();\n if (!this.parent) {\n this.parent = this._tempDisplayObjectParent;\n this.displayObjectUpdateTransform();\n this.parent = null;\n } else {\n this.displayObjectUpdateTransform();\n }\n }\n return this.worldTransform.applyInverse(position, point);\n }\n setParent(container) {\n if (!container || !container.addChild) {\n throw new Error(\"setParent: Argument must be a Container\");\n }\n container.addChild(this);\n return container;\n }\n removeFromParent() {\n this.parent?.removeChild(this);\n }\n setTransform(x = 0, y = 0, scaleX = 1, scaleY = 1, rotation = 0, skewX = 0, skewY = 0, pivotX = 0, pivotY = 0) {\n this.position.x = x;\n this.position.y = y;\n this.scale.x = !scaleX ? 1 : scaleX;\n this.scale.y = !scaleY ? 1 : scaleY;\n this.rotation = rotation;\n this.skew.x = skewX;\n this.skew.y = skewY;\n this.pivot.x = pivotX;\n this.pivot.y = pivotY;\n return this;\n }\n destroy(_options) {\n this.removeFromParent();\n this._destroyed = true;\n this.transform = null;\n this.parent = null;\n this._bounds = null;\n this.mask = null;\n this.cullArea = null;\n this.filters = null;\n this.filterArea = null;\n this.hitArea = null;\n this.interactive = false;\n this.interactiveChildren = false;\n this.emit(\"destroyed\");\n this.removeAllListeners();\n }\n get _tempDisplayObjectParent() {\n if (this.tempDisplayObjectParent === null) {\n this.tempDisplayObjectParent = new TemporaryDisplayObject();\n }\n return this.tempDisplayObjectParent;\n }\n enableTempParent() {\n const myParent = this.parent;\n this.parent = this._tempDisplayObjectParent;\n return myParent;\n }\n disableTempParent(cacheParent) {\n this.parent = cacheParent;\n }\n get x() {\n return this.position.x;\n }\n set x(value) {\n this.transform.position.x = value;\n }\n get y() {\n return this.position.y;\n }\n set y(value) {\n this.transform.position.y = value;\n }\n get worldTransform() {\n return this.transform.worldTransform;\n }\n get localTransform() {\n return this.transform.localTransform;\n }\n get position() {\n return this.transform.position;\n }\n set position(value) {\n this.transform.position.copyFrom(value);\n }\n get scale() {\n return this.transform.scale;\n }\n set scale(value) {\n this.transform.scale.copyFrom(value);\n }\n get pivot() {\n return this.transform.pivot;\n }\n set pivot(value) {\n this.transform.pivot.copyFrom(value);\n }\n get skew() {\n return this.transform.skew;\n }\n set skew(value) {\n this.transform.skew.copyFrom(value);\n }\n get rotation() {\n return this.transform.rotation;\n }\n set rotation(value) {\n this.transform.rotation = value;\n }\n get angle() {\n return this.transform.rotation * RAD_TO_DEG;\n }\n set angle(value) {\n this.transform.rotation = value * DEG_TO_RAD;\n }\n get zIndex() {\n return this._zIndex;\n }\n set zIndex(value) {\n this._zIndex = value;\n if (this.parent) {\n this.parent.sortDirty = true;\n }\n }\n get worldVisible() {\n let item = this;\n do {\n if (!item.visible) {\n return false;\n }\n item = item.parent;\n } while (item);\n return true;\n }\n get mask() {\n return this._mask;\n }\n set mask(value) {\n if (this._mask === value) {\n return;\n }\n if (this._mask) {\n const maskObject = this._mask.isMaskData ? this._mask.maskObject : this._mask;\n if (maskObject) {\n maskObject._maskRefCount--;\n if (maskObject._maskRefCount === 0) {\n maskObject.renderable = true;\n maskObject.isMask = false;\n }\n }\n }\n this._mask = value;\n if (this._mask) {\n const maskObject = this._mask.isMaskData ? this._mask.maskObject : this._mask;\n if (maskObject) {\n if (maskObject._maskRefCount === 0) {\n maskObject.renderable = false;\n maskObject.isMask = true;\n }\n maskObject._maskRefCount++;\n }\n }\n }\n}\nclass TemporaryDisplayObject extends DisplayObject {\n constructor() {\n super(...arguments);\n this.sortDirty = null;\n }\n}\nDisplayObject.prototype.displayObjectUpdateTransform = DisplayObject.prototype.updateTransform;\n\nexport { DisplayObject, TemporaryDisplayObject };\n//# sourceMappingURL=DisplayObject.mjs.map\n","import { settings, utils, MASK_TYPES } from '@pixi/core';\nimport { DisplayObject } from './DisplayObject.mjs';\n\nfunction sortChildren(a, b) {\n if (a.zIndex === b.zIndex) {\n return a._lastSortedIndex - b._lastSortedIndex;\n }\n return a.zIndex - b.zIndex;\n}\nclass Container extends DisplayObject {\n constructor() {\n super();\n this.children = [];\n this.sortableChildren = settings.SORTABLE_CHILDREN;\n this.sortDirty = false;\n }\n onChildrenChange(_length) {\n }\n addChild(...children) {\n if (children.length > 1) {\n for (let i = 0; i < children.length; i++) {\n this.addChild(children[i]);\n }\n } else {\n const child = children[0];\n if (child.parent) {\n child.parent.removeChild(child);\n }\n child.parent = this;\n this.sortDirty = true;\n child.transform._parentID = -1;\n this.children.push(child);\n this._boundsID++;\n this.onChildrenChange(this.children.length - 1);\n this.emit(\"childAdded\", child, this, this.children.length - 1);\n child.emit(\"added\", this);\n }\n return children[0];\n }\n addChildAt(child, index) {\n if (index < 0 || index > this.children.length) {\n throw new Error(`${child}addChildAt: The index ${index} supplied is out of bounds ${this.children.length}`);\n }\n if (child.parent) {\n child.parent.removeChild(child);\n }\n child.parent = this;\n this.sortDirty = true;\n child.transform._parentID = -1;\n this.children.splice(index, 0, child);\n this._boundsID++;\n this.onChildrenChange(index);\n child.emit(\"added\", this);\n this.emit(\"childAdded\", child, this, index);\n return child;\n }\n swapChildren(child, child2) {\n if (child === child2) {\n return;\n }\n const index1 = this.getChildIndex(child);\n const index2 = this.getChildIndex(child2);\n this.children[index1] = child2;\n this.children[index2] = child;\n this.onChildrenChange(index1 < index2 ? index1 : index2);\n }\n getChildIndex(child) {\n const index = this.children.indexOf(child);\n if (index === -1) {\n throw new Error(\"The supplied DisplayObject must be a child of the caller\");\n }\n return index;\n }\n setChildIndex(child, index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error(`The index ${index} supplied is out of bounds ${this.children.length}`);\n }\n const currentIndex = this.getChildIndex(child);\n utils.removeItems(this.children, currentIndex, 1);\n this.children.splice(index, 0, child);\n this.onChildrenChange(index);\n }\n getChildAt(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error(`getChildAt: Index (${index}) does not exist.`);\n }\n return this.children[index];\n }\n removeChild(...children) {\n if (children.length > 1) {\n for (let i = 0; i < children.length; i++) {\n this.removeChild(children[i]);\n }\n } else {\n const child = children[0];\n const index = this.children.indexOf(child);\n if (index === -1)\n return null;\n child.parent = null;\n child.transform._parentID = -1;\n utils.removeItems(this.children, index, 1);\n this._boundsID++;\n this.onChildrenChange(index);\n child.emit(\"removed\", this);\n this.emit(\"childRemoved\", child, this, index);\n }\n return children[0];\n }\n removeChildAt(index) {\n const child = this.getChildAt(index);\n child.parent = null;\n child.transform._parentID = -1;\n utils.removeItems(this.children, index, 1);\n this._boundsID++;\n this.onChildrenChange(index);\n child.emit(\"removed\", this);\n this.emit(\"childRemoved\", child, this, index);\n return child;\n }\n removeChildren(beginIndex = 0, endIndex = this.children.length) {\n const begin = beginIndex;\n const end = endIndex;\n const range = end - begin;\n let removed;\n if (range > 0 && range <= end) {\n removed = this.children.splice(begin, range);\n for (let i = 0; i < removed.length; ++i) {\n removed[i].parent = null;\n if (removed[i].transform) {\n removed[i].transform._parentID = -1;\n }\n }\n this._boundsID++;\n this.onChildrenChange(beginIndex);\n for (let i = 0; i < removed.length; ++i) {\n removed[i].emit(\"removed\", this);\n this.emit(\"childRemoved\", removed[i], this, i);\n }\n return removed;\n } else if (range === 0 && this.children.length === 0) {\n return [];\n }\n throw new RangeError(\"removeChildren: numeric values are outside the acceptable range.\");\n }\n sortChildren() {\n let sortRequired = false;\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n child._lastSortedIndex = i;\n if (!sortRequired && child.zIndex !== 0) {\n sortRequired = true;\n }\n }\n if (sortRequired && this.children.length > 1) {\n this.children.sort(sortChildren);\n }\n this.sortDirty = false;\n }\n updateTransform() {\n if (this.sortableChildren && this.sortDirty) {\n this.sortChildren();\n }\n this._boundsID++;\n this.transform.updateTransform(this.parent.transform);\n this.worldAlpha = this.alpha * this.parent.worldAlpha;\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n if (child.visible) {\n child.updateTransform();\n }\n }\n }\n calculateBounds() {\n this._bounds.clear();\n this._calculateBounds();\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n if (!child.visible || !child.renderable) {\n continue;\n }\n child.calculateBounds();\n if (child._mask) {\n const maskObject = child._mask.isMaskData ? child._mask.maskObject : child._mask;\n if (maskObject) {\n maskObject.calculateBounds();\n this._bounds.addBoundsMask(child._bounds, maskObject._bounds);\n } else {\n this._bounds.addBounds(child._bounds);\n }\n } else if (child.filterArea) {\n this._bounds.addBoundsArea(child._bounds, child.filterArea);\n } else {\n this._bounds.addBounds(child._bounds);\n }\n }\n this._bounds.updateID = this._boundsID;\n }\n getLocalBounds(rect, skipChildrenUpdate = false) {\n const result = super.getLocalBounds(rect);\n if (!skipChildrenUpdate) {\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n if (child.visible) {\n child.updateTransform();\n }\n }\n }\n return result;\n }\n _calculateBounds() {\n }\n _renderWithCulling(renderer) {\n const sourceFrame = renderer.renderTexture.sourceFrame;\n if (!(sourceFrame.width > 0 && sourceFrame.height > 0)) {\n return;\n }\n let bounds;\n let transform;\n if (this.cullArea) {\n bounds = this.cullArea;\n transform = this.worldTransform;\n } else if (this._render !== Container.prototype._render) {\n bounds = this.getBounds(true);\n }\n if (bounds && sourceFrame.intersects(bounds, transform)) {\n this._render(renderer);\n } else if (this.cullArea) {\n return;\n }\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n const childCullable = child.cullable;\n child.cullable = childCullable || !this.cullArea;\n child.render(renderer);\n child.cullable = childCullable;\n }\n }\n render(renderer) {\n if (!this.visible || this.worldAlpha <= 0 || !this.renderable) {\n return;\n }\n if (this._mask || this.filters?.length) {\n this.renderAdvanced(renderer);\n } else if (this.cullable) {\n this._renderWithCulling(renderer);\n } else {\n this._render(renderer);\n for (let i = 0, j = this.children.length; i < j; ++i) {\n this.children[i].render(renderer);\n }\n }\n }\n renderAdvanced(renderer) {\n const filters = this.filters;\n const mask = this._mask;\n if (filters) {\n if (!this._enabledFilters) {\n this._enabledFilters = [];\n }\n this._enabledFilters.length = 0;\n for (let i = 0; i < filters.length; i++) {\n if (filters[i].enabled) {\n this._enabledFilters.push(filters[i]);\n }\n }\n }\n const flush = filters && this._enabledFilters?.length || mask && (!mask.isMaskData || mask.enabled && (mask.autoDetect || mask.type !== MASK_TYPES.NONE));\n if (flush) {\n renderer.batch.flush();\n }\n if (filters && this._enabledFilters?.length) {\n renderer.filter.push(this, this._enabledFilters);\n }\n if (mask) {\n renderer.mask.push(this, this._mask);\n }\n if (this.cullable) {\n this._renderWithCulling(renderer);\n } else {\n this._render(renderer);\n for (let i = 0, j = this.children.length; i < j; ++i) {\n this.children[i].render(renderer);\n }\n }\n if (flush) {\n renderer.batch.flush();\n }\n if (mask) {\n renderer.mask.pop(this);\n }\n if (filters && this._enabledFilters?.length) {\n renderer.filter.pop();\n }\n }\n _render(_renderer) {\n }\n destroy(options) {\n super.destroy();\n this.sortDirty = false;\n const destroyChildren = typeof options === \"boolean\" ? options : options?.children;\n const oldChildren = this.removeChildren(0, this.children.length);\n if (destroyChildren) {\n for (let i = 0; i < oldChildren.length; ++i) {\n oldChildren[i].destroy(options);\n }\n }\n }\n get width() {\n return this.scale.x * this.getLocalBounds().width;\n }\n set width(value) {\n const width = this.getLocalBounds().width;\n if (width !== 0) {\n this.scale.x = value / width;\n } else {\n this.scale.x = 1;\n }\n this._width = value;\n }\n get height() {\n return this.scale.y * this.getLocalBounds().height;\n }\n set height(value) {\n const height = this.getLocalBounds().height;\n if (height !== 0) {\n this.scale.y = value / height;\n } else {\n this.scale.y = 1;\n }\n this._height = value;\n }\n}\nContainer.prototype.containerUpdateTransform = Container.prototype.updateTransform;\n\nexport { Container };\n//# sourceMappingURL=Container.mjs.map\n","import { Point, ObservablePoint, BLEND_MODES, Texture, settings, utils, Rectangle } from '@pixi/core';\nimport { Container, Bounds } from '@pixi/display';\n\nconst tempPoint = new Point();\nconst indices = new Uint16Array([0, 1, 2, 0, 2, 3]);\nclass Sprite extends Container {\n constructor(texture) {\n super();\n this._anchor = new ObservablePoint(this._onAnchorUpdate, this, texture ? texture.defaultAnchor.x : 0, texture ? texture.defaultAnchor.y : 0);\n this._texture = null;\n this._width = 0;\n this._height = 0;\n this._tint = null;\n this._tintRGB = null;\n this.tint = 16777215;\n this.blendMode = BLEND_MODES.NORMAL;\n this._cachedTint = 16777215;\n this.uvs = null;\n this.texture = texture || Texture.EMPTY;\n this.vertexData = new Float32Array(8);\n this.vertexTrimmedData = null;\n this._transformID = -1;\n this._textureID = -1;\n this._transformTrimmedID = -1;\n this._textureTrimmedID = -1;\n this.indices = indices;\n this.pluginName = \"batch\";\n this.isSprite = true;\n this._roundPixels = settings.ROUND_PIXELS;\n }\n _onTextureUpdate() {\n this._textureID = -1;\n this._textureTrimmedID = -1;\n this._cachedTint = 16777215;\n if (this._width) {\n this.scale.x = utils.sign(this.scale.x) * this._width / this._texture.orig.width;\n }\n if (this._height) {\n this.scale.y = utils.sign(this.scale.y) * this._height / this._texture.orig.height;\n }\n }\n _onAnchorUpdate() {\n this._transformID = -1;\n this._transformTrimmedID = -1;\n }\n calculateVertices() {\n const texture = this._texture;\n if (this._transformID === this.transform._worldID && this._textureID === texture._updateID) {\n return;\n }\n if (this._textureID !== texture._updateID) {\n this.uvs = this._texture._uvs.uvsFloat32;\n }\n this._transformID = this.transform._worldID;\n this._textureID = texture._updateID;\n const wt = this.transform.worldTransform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const vertexData = this.vertexData;\n const trim = texture.trim;\n const orig = texture.orig;\n const anchor = this._anchor;\n let w0 = 0;\n let w1 = 0;\n let h0 = 0;\n let h1 = 0;\n if (trim) {\n w1 = trim.x - anchor._x * orig.width;\n w0 = w1 + trim.width;\n h1 = trim.y - anchor._y * orig.height;\n h0 = h1 + trim.height;\n } else {\n w1 = -anchor._x * orig.width;\n w0 = w1 + orig.width;\n h1 = -anchor._y * orig.height;\n h0 = h1 + orig.height;\n }\n vertexData[0] = a * w1 + c * h1 + tx;\n vertexData[1] = d * h1 + b * w1 + ty;\n vertexData[2] = a * w0 + c * h1 + tx;\n vertexData[3] = d * h1 + b * w0 + ty;\n vertexData[4] = a * w0 + c * h0 + tx;\n vertexData[5] = d * h0 + b * w0 + ty;\n vertexData[6] = a * w1 + c * h0 + tx;\n vertexData[7] = d * h0 + b * w1 + ty;\n if (this._roundPixels) {\n const resolution = settings.RESOLUTION;\n for (let i = 0; i < vertexData.length; ++i) {\n vertexData[i] = Math.round((vertexData[i] * resolution | 0) / resolution);\n }\n }\n }\n calculateTrimmedVertices() {\n if (!this.vertexTrimmedData) {\n this.vertexTrimmedData = new Float32Array(8);\n } else if (this._transformTrimmedID === this.transform._worldID && this._textureTrimmedID === this._texture._updateID) {\n return;\n }\n this._transformTrimmedID = this.transform._worldID;\n this._textureTrimmedID = this._texture._updateID;\n const texture = this._texture;\n const vertexData = this.vertexTrimmedData;\n const orig = texture.orig;\n const anchor = this._anchor;\n const wt = this.transform.worldTransform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const w1 = -anchor._x * orig.width;\n const w0 = w1 + orig.width;\n const h1 = -anchor._y * orig.height;\n const h0 = h1 + orig.height;\n vertexData[0] = a * w1 + c * h1 + tx;\n vertexData[1] = d * h1 + b * w1 + ty;\n vertexData[2] = a * w0 + c * h1 + tx;\n vertexData[3] = d * h1 + b * w0 + ty;\n vertexData[4] = a * w0 + c * h0 + tx;\n vertexData[5] = d * h0 + b * w0 + ty;\n vertexData[6] = a * w1 + c * h0 + tx;\n vertexData[7] = d * h0 + b * w1 + ty;\n }\n _render(renderer) {\n this.calculateVertices();\n renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]);\n renderer.plugins[this.pluginName].render(this);\n }\n _calculateBounds() {\n const trim = this._texture.trim;\n const orig = this._texture.orig;\n if (!trim || trim.width === orig.width && trim.height === orig.height) {\n this.calculateVertices();\n this._bounds.addQuad(this.vertexData);\n } else {\n this.calculateTrimmedVertices();\n this._bounds.addQuad(this.vertexTrimmedData);\n }\n }\n getLocalBounds(rect) {\n if (this.children.length === 0) {\n if (!this._localBounds) {\n this._localBounds = new Bounds();\n }\n this._localBounds.minX = this._texture.orig.width * -this._anchor._x;\n this._localBounds.minY = this._texture.orig.height * -this._anchor._y;\n this._localBounds.maxX = this._texture.orig.width * (1 - this._anchor._x);\n this._localBounds.maxY = this._texture.orig.height * (1 - this._anchor._y);\n if (!rect) {\n if (!this._localBoundsRect) {\n this._localBoundsRect = new Rectangle();\n }\n rect = this._localBoundsRect;\n }\n return this._localBounds.getRectangle(rect);\n }\n return super.getLocalBounds.call(this, rect);\n }\n containsPoint(point) {\n this.worldTransform.applyInverse(point, tempPoint);\n const width = this._texture.orig.width;\n const height = this._texture.orig.height;\n const x1 = -width * this.anchor.x;\n let y1 = 0;\n if (tempPoint.x >= x1 && tempPoint.x < x1 + width) {\n y1 = -height * this.anchor.y;\n if (tempPoint.y >= y1 && tempPoint.y < y1 + height) {\n return true;\n }\n }\n return false;\n }\n destroy(options) {\n super.destroy(options);\n this._texture.off(\"update\", this._onTextureUpdate, this);\n this._anchor = null;\n const destroyTexture = typeof options === \"boolean\" ? options : options?.texture;\n if (destroyTexture) {\n const destroyBaseTexture = typeof options === \"boolean\" ? options : options?.baseTexture;\n this._texture.destroy(!!destroyBaseTexture);\n }\n this._texture = null;\n }\n static from(source, options) {\n const texture = source instanceof Texture ? source : Texture.from(source, options);\n return new Sprite(texture);\n }\n set roundPixels(value) {\n if (this._roundPixels !== value) {\n this._transformID = -1;\n }\n this._roundPixels = value;\n }\n get roundPixels() {\n return this._roundPixels;\n }\n get width() {\n return Math.abs(this.scale.x) * this._texture.orig.width;\n }\n set width(value) {\n const s = utils.sign(this.scale.x) || 1;\n this.scale.x = s * value / this._texture.orig.width;\n this._width = value;\n }\n get height() {\n return Math.abs(this.scale.y) * this._texture.orig.height;\n }\n set height(value) {\n const s = utils.sign(this.scale.y) || 1;\n this.scale.y = s * value / this._texture.orig.height;\n this._height = value;\n }\n get anchor() {\n return this._anchor;\n }\n set anchor(value) {\n this._anchor.copyFrom(value);\n }\n get tint() {\n return this._tint;\n }\n set tint(value) {\n this._tint = value;\n this._tintRGB = (value >> 16) + (value & 65280) + ((value & 255) << 16);\n }\n get texture() {\n return this._texture;\n }\n set texture(value) {\n if (this._texture === value) {\n return;\n }\n if (this._texture) {\n this._texture.off(\"update\", this._onTextureUpdate, this);\n }\n this._texture = value || Texture.EMPTY;\n this._cachedTint = 16777215;\n this._textureID = -1;\n this._textureTrimmedID = -1;\n if (value) {\n if (value.baseTexture.valid) {\n this._onTextureUpdate();\n } else {\n value.once(\"update\", this._onTextureUpdate, this);\n }\n }\n }\n}\n\nexport { Sprite };\n//# sourceMappingURL=Sprite.mjs.map\n","import { Matrix, settings, RenderTexture, utils, BaseTexture, Texture } from '@pixi/core';\nimport { Sprite } from '@pixi/sprite';\nimport { DisplayObject } from '@pixi/display';\n\nconst _tempMatrix = new Matrix();\nDisplayObject.prototype._cacheAsBitmap = false;\nDisplayObject.prototype._cacheData = null;\nDisplayObject.prototype._cacheAsBitmapResolution = null;\nDisplayObject.prototype._cacheAsBitmapMultisample = null;\nclass CacheData {\n constructor() {\n this.textureCacheId = null;\n this.originalRender = null;\n this.originalRenderCanvas = null;\n this.originalCalculateBounds = null;\n this.originalGetLocalBounds = null;\n this.originalUpdateTransform = null;\n this.originalDestroy = null;\n this.originalMask = null;\n this.originalFilterArea = null;\n this.originalContainsPoint = null;\n this.sprite = null;\n }\n}\nObject.defineProperties(DisplayObject.prototype, {\n cacheAsBitmapResolution: {\n get() {\n return this._cacheAsBitmapResolution;\n },\n set(resolution) {\n if (resolution === this._cacheAsBitmapResolution) {\n return;\n }\n this._cacheAsBitmapResolution = resolution;\n if (this.cacheAsBitmap) {\n this.cacheAsBitmap = false;\n this.cacheAsBitmap = true;\n }\n }\n },\n cacheAsBitmapMultisample: {\n get() {\n return this._cacheAsBitmapMultisample;\n },\n set(multisample) {\n if (multisample === this._cacheAsBitmapMultisample) {\n return;\n }\n this._cacheAsBitmapMultisample = multisample;\n if (this.cacheAsBitmap) {\n this.cacheAsBitmap = false;\n this.cacheAsBitmap = true;\n }\n }\n },\n cacheAsBitmap: {\n get() {\n return this._cacheAsBitmap;\n },\n set(value) {\n if (this._cacheAsBitmap === value) {\n return;\n }\n this._cacheAsBitmap = value;\n let data;\n if (value) {\n if (!this._cacheData) {\n this._cacheData = new CacheData();\n }\n data = this._cacheData;\n data.originalRender = this.render;\n data.originalRenderCanvas = this.renderCanvas;\n data.originalUpdateTransform = this.updateTransform;\n data.originalCalculateBounds = this.calculateBounds;\n data.originalGetLocalBounds = this.getLocalBounds;\n data.originalDestroy = this.destroy;\n data.originalContainsPoint = this.containsPoint;\n data.originalMask = this._mask;\n data.originalFilterArea = this.filterArea;\n this.render = this._renderCached;\n this.renderCanvas = this._renderCachedCanvas;\n this.destroy = this._cacheAsBitmapDestroy;\n } else {\n data = this._cacheData;\n if (data.sprite) {\n this._destroyCachedDisplayObject();\n }\n this.render = data.originalRender;\n this.renderCanvas = data.originalRenderCanvas;\n this.calculateBounds = data.originalCalculateBounds;\n this.getLocalBounds = data.originalGetLocalBounds;\n this.destroy = data.originalDestroy;\n this.updateTransform = data.originalUpdateTransform;\n this.containsPoint = data.originalContainsPoint;\n this._mask = data.originalMask;\n this.filterArea = data.originalFilterArea;\n }\n }\n }\n});\nDisplayObject.prototype._renderCached = function _renderCached(renderer) {\n if (!this.visible || this.worldAlpha <= 0 || !this.renderable) {\n return;\n }\n this._initCachedDisplayObject(renderer);\n this._cacheData.sprite.transform._worldID = this.transform._worldID;\n this._cacheData.sprite.worldAlpha = this.worldAlpha;\n this._cacheData.sprite._render(renderer);\n};\nDisplayObject.prototype._initCachedDisplayObject = function _initCachedDisplayObject(renderer) {\n if (this._cacheData?.sprite) {\n return;\n }\n const cacheAlpha = this.alpha;\n this.alpha = 1;\n renderer.batch.flush();\n const bounds = this.getLocalBounds(null, true).clone();\n if (this.filters?.length) {\n const padding = this.filters[0].padding;\n bounds.pad(padding);\n }\n bounds.ceil(settings.RESOLUTION);\n const cachedRenderTexture = renderer.renderTexture.current;\n const cachedSourceFrame = renderer.renderTexture.sourceFrame.clone();\n const cachedDestinationFrame = renderer.renderTexture.destinationFrame.clone();\n const cachedProjectionTransform = renderer.projection.transform;\n const renderTexture = RenderTexture.create({\n width: bounds.width,\n height: bounds.height,\n resolution: this.cacheAsBitmapResolution || renderer.resolution,\n multisample: this.cacheAsBitmapMultisample ?? renderer.multisample\n });\n const textureCacheId = `cacheAsBitmap_${utils.uid()}`;\n this._cacheData.textureCacheId = textureCacheId;\n BaseTexture.addToCache(renderTexture.baseTexture, textureCacheId);\n Texture.addToCache(renderTexture, textureCacheId);\n const m = this.transform.localTransform.copyTo(_tempMatrix).invert().translate(-bounds.x, -bounds.y);\n this.render = this._cacheData.originalRender;\n renderer.render(this, { renderTexture, clear: true, transform: m, skipUpdateTransform: false });\n renderer.framebuffer.blit();\n renderer.projection.transform = cachedProjectionTransform;\n renderer.renderTexture.bind(cachedRenderTexture, cachedSourceFrame, cachedDestinationFrame);\n this.render = this._renderCached;\n this.updateTransform = this.displayObjectUpdateTransform;\n this.calculateBounds = this._calculateCachedBounds;\n this.getLocalBounds = this._getCachedLocalBounds;\n this._mask = null;\n this.filterArea = null;\n this.alpha = cacheAlpha;\n const cachedSprite = new Sprite(renderTexture);\n cachedSprite.transform.worldTransform = this.transform.worldTransform;\n cachedSprite.anchor.x = -(bounds.x / bounds.width);\n cachedSprite.anchor.y = -(bounds.y / bounds.height);\n cachedSprite.alpha = cacheAlpha;\n cachedSprite._bounds = this._bounds;\n this._cacheData.sprite = cachedSprite;\n this.transform._parentID = -1;\n if (!this.parent) {\n this.enableTempParent();\n this.updateTransform();\n this.disableTempParent(null);\n } else {\n this.updateTransform();\n }\n this.containsPoint = cachedSprite.containsPoint.bind(cachedSprite);\n};\nDisplayObject.prototype._renderCachedCanvas = function _renderCachedCanvas(renderer) {\n if (!this.visible || this.worldAlpha <= 0 || !this.renderable) {\n return;\n }\n this._initCachedDisplayObjectCanvas(renderer);\n this._cacheData.sprite.worldAlpha = this.worldAlpha;\n this._cacheData.sprite._renderCanvas(renderer);\n};\nDisplayObject.prototype._initCachedDisplayObjectCanvas = function _initCachedDisplayObjectCanvas(renderer) {\n if (this._cacheData?.sprite) {\n return;\n }\n const bounds = this.getLocalBounds(null, true);\n const cacheAlpha = this.alpha;\n this.alpha = 1;\n const cachedRenderTarget = renderer.canvasContext.activeContext;\n const cachedProjectionTransform = renderer._projTransform;\n bounds.ceil(settings.RESOLUTION);\n const renderTexture = RenderTexture.create({ width: bounds.width, height: bounds.height });\n const textureCacheId = `cacheAsBitmap_${utils.uid()}`;\n this._cacheData.textureCacheId = textureCacheId;\n BaseTexture.addToCache(renderTexture.baseTexture, textureCacheId);\n Texture.addToCache(renderTexture, textureCacheId);\n const m = _tempMatrix;\n this.transform.localTransform.copyTo(m);\n m.invert();\n m.tx -= bounds.x;\n m.ty -= bounds.y;\n this.renderCanvas = this._cacheData.originalRenderCanvas;\n renderer.render(this, { renderTexture, clear: true, transform: m, skipUpdateTransform: false });\n renderer.canvasContext.activeContext = cachedRenderTarget;\n renderer._projTransform = cachedProjectionTransform;\n this.renderCanvas = this._renderCachedCanvas;\n this.updateTransform = this.displayObjectUpdateTransform;\n this.calculateBounds = this._calculateCachedBounds;\n this.getLocalBounds = this._getCachedLocalBounds;\n this._mask = null;\n this.filterArea = null;\n this.alpha = cacheAlpha;\n const cachedSprite = new Sprite(renderTexture);\n cachedSprite.transform.worldTransform = this.transform.worldTransform;\n cachedSprite.anchor.x = -(bounds.x / bounds.width);\n cachedSprite.anchor.y = -(bounds.y / bounds.height);\n cachedSprite.alpha = cacheAlpha;\n cachedSprite._bounds = this._bounds;\n this._cacheData.sprite = cachedSprite;\n this.transform._parentID = -1;\n if (!this.parent) {\n this.parent = renderer._tempDisplayObjectParent;\n this.updateTransform();\n this.parent = null;\n } else {\n this.updateTransform();\n }\n this.containsPoint = cachedSprite.containsPoint.bind(cachedSprite);\n};\nDisplayObject.prototype._calculateCachedBounds = function _calculateCachedBounds() {\n this._bounds.clear();\n this._cacheData.sprite.transform._worldID = this.transform._worldID;\n this._cacheData.sprite._calculateBounds();\n this._bounds.updateID = this._boundsID;\n};\nDisplayObject.prototype._getCachedLocalBounds = function _getCachedLocalBounds() {\n return this._cacheData.sprite.getLocalBounds(null);\n};\nDisplayObject.prototype._destroyCachedDisplayObject = function _destroyCachedDisplayObject() {\n this._cacheData.sprite._texture.destroy(true);\n this._cacheData.sprite = null;\n BaseTexture.removeFromCache(this._cacheData.textureCacheId);\n Texture.removeFromCache(this._cacheData.textureCacheId);\n this._cacheData.textureCacheId = null;\n};\nDisplayObject.prototype._cacheAsBitmapDestroy = function _cacheAsBitmapDestroy(options) {\n this.cacheAsBitmap = false;\n this.destroy(options);\n};\n\nexport { CacheData };\n//# sourceMappingURL=index.mjs.map\n","import { DisplayObject, Container } from '@pixi/display';\n\nDisplayObject.prototype.name = null;\nContainer.prototype.getChildByName = function getChildByName(name, deep) {\n for (let i = 0, j = this.children.length; i < j; i++) {\n if (this.children[i].name === name) {\n return this.children[i];\n }\n }\n if (deep) {\n for (let i = 0, j = this.children.length; i < j; i++) {\n const child = this.children[i];\n if (!child.getChildByName) {\n continue;\n }\n const target = child.getChildByName(name, true);\n if (target) {\n return target;\n }\n }\n }\n return null;\n};\n//# sourceMappingURL=index.mjs.map\n","import { DisplayObject } from '@pixi/display';\nimport { Point } from '@pixi/core';\n\nDisplayObject.prototype.getGlobalPosition = function getGlobalPosition(point = new Point(), skipUpdate = false) {\n if (this.parent) {\n this.parent.toGlobal(this.position, point, skipUpdate);\n } else {\n point.x = this.position.x;\n point.y = this.position.y;\n }\n return point;\n};\n//# sourceMappingURL=index.mjs.map\n","const accessibleTarget = {\n accessible: false,\n accessibleTitle: null,\n accessibleHint: null,\n tabIndex: 0,\n _accessibleActive: false,\n _accessibleDiv: null,\n accessibleType: \"button\",\n accessiblePointerEvents: \"auto\",\n accessibleChildren: true,\n renderId: -1\n};\n\nexport { accessibleTarget };\n//# sourceMappingURL=accessibleTarget.mjs.map\n","import { Point } from '@pixi/core';\n\nclass FederatedEvent {\n constructor(manager) {\n this.bubbles = true;\n this.cancelBubble = true;\n this.cancelable = false;\n this.composed = false;\n this.defaultPrevented = false;\n this.eventPhase = FederatedEvent.prototype.NONE;\n this.propagationStopped = false;\n this.propagationImmediatelyStopped = false;\n this.layer = new Point();\n this.page = new Point();\n this.AT_TARGET = 1;\n this.BUBBLING_PHASE = 2;\n this.CAPTURING_PHASE = 3;\n this.NONE = 0;\n this.manager = manager;\n }\n get layerX() {\n return this.layer.x;\n }\n get layerY() {\n return this.layer.y;\n }\n get pageX() {\n return this.page.x;\n }\n get pageY() {\n return this.page.y;\n }\n get data() {\n return this;\n }\n composedPath() {\n if (this.manager && (!this.path || this.path[this.path.length - 1] !== this.target)) {\n this.path = this.target ? this.manager.propagationPath(this.target) : [];\n }\n return this.path;\n }\n initEvent(_type, _bubbles, _cancelable) {\n throw new Error(\"initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.\");\n }\n initUIEvent(_typeArg, _bubblesArg, _cancelableArg, _viewArg, _detailArg) {\n throw new Error(\"initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.\");\n }\n preventDefault() {\n if (this.nativeEvent instanceof Event && this.nativeEvent.cancelable) {\n this.nativeEvent.preventDefault();\n }\n this.defaultPrevented = true;\n }\n stopImmediatePropagation() {\n this.propagationImmediatelyStopped = true;\n }\n stopPropagation() {\n this.propagationStopped = true;\n }\n}\n\nexport { FederatedEvent };\n//# sourceMappingURL=FederatedEvent.mjs.map\n","import { FederatedEvent } from './FederatedEvent.mjs';\nimport { Point } from '@pixi/core';\n\nclass FederatedMouseEvent extends FederatedEvent {\n constructor() {\n super(...arguments);\n this.client = new Point();\n this.movement = new Point();\n this.offset = new Point();\n this.global = new Point();\n this.screen = new Point();\n }\n get clientX() {\n return this.client.x;\n }\n get clientY() {\n return this.client.y;\n }\n get x() {\n return this.clientX;\n }\n get y() {\n return this.clientY;\n }\n get movementX() {\n return this.movement.x;\n }\n get movementY() {\n return this.movement.y;\n }\n get offsetX() {\n return this.offset.x;\n }\n get offsetY() {\n return this.offset.y;\n }\n get globalX() {\n return this.global.x;\n }\n get globalY() {\n return this.global.y;\n }\n get screenX() {\n return this.screen.x;\n }\n get screenY() {\n return this.screen.y;\n }\n getModifierState(key) {\n return \"getModifierState\" in this.nativeEvent && this.nativeEvent.getModifierState(key);\n }\n initMouseEvent(_typeArg, _canBubbleArg, _cancelableArg, _viewArg, _detailArg, _screenXArg, _screenYArg, _clientXArg, _clientYArg, _ctrlKeyArg, _altKeyArg, _shiftKeyArg, _metaKeyArg, _buttonArg, _relatedTargetArg) {\n throw new Error(\"Method not implemented.\");\n }\n}\n\nexport { FederatedMouseEvent };\n//# sourceMappingURL=FederatedMouseEvent.mjs.map\n","import { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\n\nclass FederatedPointerEvent extends FederatedMouseEvent {\n constructor() {\n super(...arguments);\n this.width = 0;\n this.height = 0;\n this.isPrimary = false;\n }\n getCoalescedEvents() {\n if (this.type === \"pointermove\" || this.type === \"mousemove\" || this.type === \"touchmove\") {\n return [this];\n }\n return [];\n }\n getPredictedEvents() {\n throw new Error(\"getPredictedEvents is not supported!\");\n }\n}\n\nexport { FederatedPointerEvent };\n//# sourceMappingURL=FederatedPointerEvent.mjs.map\n","import { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\n\nclass FederatedWheelEvent extends FederatedMouseEvent {\n constructor() {\n super(...arguments);\n this.DOM_DELTA_LINE = 0;\n this.DOM_DELTA_PAGE = 1;\n this.DOM_DELTA_PIXEL = 2;\n }\n}\n\nexport { FederatedWheelEvent };\n//# sourceMappingURL=FederatedWheelEvent.mjs.map\n","import { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\nimport { FederatedPointerEvent } from './FederatedPointerEvent.mjs';\nimport { FederatedWheelEvent } from './FederatedWheelEvent.mjs';\nimport { Point, utils } from '@pixi/core';\n\nconst PROPAGATION_LIMIT = 2048;\nconst tempHitLocation = new Point();\nconst tempLocalMapping = new Point();\nclass EventBoundary {\n constructor(rootTarget) {\n this.dispatch = new utils.EventEmitter();\n this.moveOnAll = false;\n this.mappingState = {\n trackingData: {}\n };\n this.eventPool = /* @__PURE__ */ new Map();\n this.rootTarget = rootTarget;\n this.hitPruneFn = this.hitPruneFn.bind(this);\n this.hitTestFn = this.hitTestFn.bind(this);\n this.mapPointerDown = this.mapPointerDown.bind(this);\n this.mapPointerMove = this.mapPointerMove.bind(this);\n this.mapPointerOut = this.mapPointerOut.bind(this);\n this.mapPointerOver = this.mapPointerOver.bind(this);\n this.mapPointerUp = this.mapPointerUp.bind(this);\n this.mapPointerUpOutside = this.mapPointerUpOutside.bind(this);\n this.mapWheel = this.mapWheel.bind(this);\n this.mappingTable = {};\n this.addEventMapping(\"pointerdown\", this.mapPointerDown);\n this.addEventMapping(\"pointermove\", this.mapPointerMove);\n this.addEventMapping(\"pointerout\", this.mapPointerOut);\n this.addEventMapping(\"pointerleave\", this.mapPointerOut);\n this.addEventMapping(\"pointerover\", this.mapPointerOver);\n this.addEventMapping(\"pointerup\", this.mapPointerUp);\n this.addEventMapping(\"pointerupoutside\", this.mapPointerUpOutside);\n this.addEventMapping(\"wheel\", this.mapWheel);\n }\n addEventMapping(type, fn) {\n if (!this.mappingTable[type]) {\n this.mappingTable[type] = [];\n }\n this.mappingTable[type].push({\n fn,\n priority: 0\n });\n this.mappingTable[type].sort((a, b) => a.priority - b.priority);\n }\n dispatchEvent(e, type) {\n e.propagationStopped = false;\n e.propagationImmediatelyStopped = false;\n this.propagate(e, type);\n this.dispatch.emit(type || e.type, e);\n }\n mapEvent(e) {\n if (!this.rootTarget) {\n return;\n }\n const mappers = this.mappingTable[e.type];\n if (mappers) {\n for (let i = 0, j = mappers.length; i < j; i++) {\n mappers[i].fn(e);\n }\n } else {\n console.warn(`[EventBoundary]: Event mapping not defined for ${e.type}`);\n }\n }\n hitTest(x, y) {\n const invertedPath = this.hitTestRecursive(this.rootTarget, this.rootTarget.interactive, tempHitLocation.set(x, y), this.hitTestFn, this.hitPruneFn);\n return invertedPath && invertedPath[0];\n }\n propagate(e, type) {\n if (!e.target) {\n return;\n }\n const composedPath = e.composedPath();\n e.eventPhase = e.CAPTURING_PHASE;\n for (let i = 0, j = composedPath.length - 1; i < j; i++) {\n e.currentTarget = composedPath[i];\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n }\n e.eventPhase = e.AT_TARGET;\n e.currentTarget = e.target;\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n e.eventPhase = e.BUBBLING_PHASE;\n for (let i = composedPath.length - 2; i >= 0; i--) {\n e.currentTarget = composedPath[i];\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n }\n }\n all(e, type, target = this.rootTarget) {\n e.eventPhase = e.BUBBLING_PHASE;\n const children = target.children;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n this.all(e, type, children[i]);\n }\n }\n e.currentTarget = target;\n this.notifyTarget(e, type);\n }\n propagationPath(target) {\n const propagationPath = [target];\n for (let i = 0; i < PROPAGATION_LIMIT && target !== this.rootTarget; i++) {\n if (!target.parent) {\n throw new Error(\"Cannot find propagation path to disconnected target\");\n }\n propagationPath.push(target.parent);\n target = target.parent;\n }\n propagationPath.reverse();\n return propagationPath;\n }\n hitTestRecursive(currentTarget, interactive, location, testFn, pruneFn) {\n if (!currentTarget || !currentTarget.visible) {\n return null;\n }\n if (pruneFn(currentTarget, location)) {\n return null;\n }\n if (currentTarget.interactiveChildren && currentTarget.children) {\n const children = currentTarget.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n const nestedHit = this.hitTestRecursive(child, interactive || child.interactive, location, testFn, pruneFn);\n if (nestedHit) {\n if (nestedHit.length > 0 && !nestedHit[nestedHit.length - 1].parent) {\n continue;\n }\n if (nestedHit.length > 0 || currentTarget.interactive) {\n nestedHit.push(currentTarget);\n }\n return nestedHit;\n }\n }\n }\n if (interactive && testFn(currentTarget, location)) {\n return currentTarget.interactive ? [currentTarget] : [];\n }\n return null;\n }\n hitPruneFn(displayObject, location) {\n if (displayObject.hitArea) {\n displayObject.worldTransform.applyInverse(location, tempLocalMapping);\n if (!displayObject.hitArea.contains(tempLocalMapping.x, tempLocalMapping.y)) {\n return true;\n }\n }\n if (displayObject._mask) {\n const maskObject = displayObject._mask.isMaskData ? displayObject._mask.maskObject : displayObject._mask;\n if (maskObject && !maskObject.containsPoint?.(location)) {\n return true;\n }\n }\n return false;\n }\n hitTestFn(displayObject, location) {\n if (displayObject.hitArea) {\n return true;\n }\n if (displayObject.containsPoint) {\n return displayObject.containsPoint(location);\n }\n return false;\n }\n notifyTarget(e, type) {\n type = type ?? e.type;\n const key = e.eventPhase === e.CAPTURING_PHASE || e.eventPhase === e.AT_TARGET ? `${type}capture` : type;\n this.notifyListeners(e, key);\n if (e.eventPhase === e.AT_TARGET) {\n this.notifyListeners(e, type);\n }\n }\n mapPointerDown(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const e = this.createPointerEvent(from);\n this.dispatchEvent(e, \"pointerdown\");\n if (e.pointerType === \"touch\") {\n this.dispatchEvent(e, \"touchstart\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.dispatchEvent(e, isRightButton ? \"rightdown\" : \"mousedown\");\n }\n const trackingData = this.trackingData(from.pointerId);\n trackingData.pressTargetsByButton[from.button] = e.composedPath();\n this.freeEvent(e);\n }\n mapPointerMove(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const e = this.createPointerEvent(from);\n const isMouse = e.pointerType === \"mouse\" || e.pointerType === \"pen\";\n const trackingData = this.trackingData(from.pointerId);\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n if (trackingData.overTargets && outTarget !== e.target) {\n const outType = from.type === \"mousemove\" ? \"mouseout\" : \"pointerout\";\n const outEvent = this.createPointerEvent(from, outType, outTarget);\n this.dispatchEvent(outEvent, \"pointerout\");\n if (isMouse)\n this.dispatchEvent(outEvent, \"mouseout\");\n if (!e.composedPath().includes(outTarget)) {\n const leaveEvent = this.createPointerEvent(from, \"pointerleave\", outTarget);\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n while (leaveEvent.target && !e.composedPath().includes(leaveEvent.target)) {\n leaveEvent.currentTarget = leaveEvent.target;\n this.notifyTarget(leaveEvent);\n if (isMouse)\n this.notifyTarget(leaveEvent, \"mouseleave\");\n leaveEvent.target = leaveEvent.target.parent;\n }\n this.freeEvent(leaveEvent);\n }\n this.freeEvent(outEvent);\n }\n if (outTarget !== e.target) {\n const overType = from.type === \"mousemove\" ? \"mouseover\" : \"pointerover\";\n const overEvent = this.clonePointerEvent(e, overType);\n this.dispatchEvent(overEvent, \"pointerover\");\n if (isMouse)\n this.dispatchEvent(overEvent, \"mouseover\");\n let overTargetAncestor = outTarget?.parent;\n while (overTargetAncestor && overTargetAncestor !== this.rootTarget.parent) {\n if (overTargetAncestor === e.target)\n break;\n overTargetAncestor = overTargetAncestor.parent;\n }\n const didPointerEnter = !overTargetAncestor || overTargetAncestor === this.rootTarget.parent;\n if (didPointerEnter) {\n const enterEvent = this.clonePointerEvent(e, \"pointerenter\");\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n while (enterEvent.target && enterEvent.target !== outTarget && enterEvent.target !== this.rootTarget.parent) {\n enterEvent.currentTarget = enterEvent.target;\n this.notifyTarget(enterEvent);\n if (isMouse)\n this.notifyTarget(enterEvent, \"mouseenter\");\n enterEvent.target = enterEvent.target.parent;\n }\n this.freeEvent(enterEvent);\n }\n this.freeEvent(overEvent);\n }\n const propagationMethod = this.moveOnAll ? \"all\" : \"dispatchEvent\";\n this[propagationMethod](e, \"pointermove\");\n if (e.pointerType === \"touch\")\n this[propagationMethod](e, \"touchmove\");\n if (isMouse) {\n this[propagationMethod](e, \"mousemove\");\n this.cursor = e.target?.cursor;\n }\n trackingData.overTargets = e.composedPath();\n this.freeEvent(e);\n }\n mapPointerOver(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n const e = this.createPointerEvent(from);\n const isMouse = e.pointerType === \"mouse\" || e.pointerType === \"pen\";\n this.dispatchEvent(e, \"pointerover\");\n if (isMouse)\n this.dispatchEvent(e, \"mouseover\");\n if (e.pointerType === \"mouse\")\n this.cursor = e.target?.cursor;\n const enterEvent = this.clonePointerEvent(e, \"pointerenter\");\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n while (enterEvent.target && enterEvent.target !== this.rootTarget.parent) {\n enterEvent.currentTarget = enterEvent.target;\n this.notifyTarget(enterEvent);\n if (isMouse)\n this.notifyTarget(enterEvent, \"mouseenter\");\n enterEvent.target = enterEvent.target.parent;\n }\n trackingData.overTargets = e.composedPath();\n this.freeEvent(e);\n this.freeEvent(enterEvent);\n }\n mapPointerOut(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n if (trackingData.overTargets) {\n const isMouse = from.pointerType === \"mouse\" || from.pointerType === \"pen\";\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n const outEvent = this.createPointerEvent(from, \"pointerout\", outTarget);\n this.dispatchEvent(outEvent);\n if (isMouse)\n this.dispatchEvent(outEvent, \"mouseout\");\n const leaveEvent = this.createPointerEvent(from, \"pointerleave\", outTarget);\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n while (leaveEvent.target && leaveEvent.target !== this.rootTarget.parent) {\n leaveEvent.currentTarget = leaveEvent.target;\n this.notifyTarget(leaveEvent);\n if (isMouse)\n this.notifyTarget(leaveEvent, \"mouseleave\");\n leaveEvent.target = leaveEvent.target.parent;\n }\n trackingData.overTargets = null;\n this.freeEvent(outEvent);\n this.freeEvent(leaveEvent);\n }\n this.cursor = null;\n }\n mapPointerUp(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const now = performance.now();\n const e = this.createPointerEvent(from);\n this.dispatchEvent(e, \"pointerup\");\n if (e.pointerType === \"touch\") {\n this.dispatchEvent(e, \"touchend\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.dispatchEvent(e, isRightButton ? \"rightup\" : \"mouseup\");\n }\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n let clickTarget = pressTarget;\n if (pressTarget && !e.composedPath().includes(pressTarget)) {\n let currentTarget = pressTarget;\n while (currentTarget && !e.composedPath().includes(currentTarget)) {\n e.currentTarget = currentTarget;\n this.notifyTarget(e, \"pointerupoutside\");\n if (e.pointerType === \"touch\") {\n this.notifyTarget(e, \"touchendoutside\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.notifyTarget(e, isRightButton ? \"rightupoutside\" : \"mouseupoutside\");\n }\n currentTarget = currentTarget.parent;\n }\n delete trackingData.pressTargetsByButton[from.button];\n clickTarget = currentTarget;\n }\n if (clickTarget) {\n const clickEvent = this.clonePointerEvent(e, \"click\");\n clickEvent.target = clickTarget;\n clickEvent.path = null;\n if (!trackingData.clicksByButton[from.button]) {\n trackingData.clicksByButton[from.button] = {\n clickCount: 0,\n target: clickEvent.target,\n timeStamp: now\n };\n }\n const clickHistory = trackingData.clicksByButton[from.button];\n if (clickHistory.target === clickEvent.target && now - clickHistory.timeStamp < 200) {\n ++clickHistory.clickCount;\n } else {\n clickHistory.clickCount = 1;\n }\n clickHistory.target = clickEvent.target;\n clickHistory.timeStamp = now;\n clickEvent.detail = clickHistory.clickCount;\n if (clickEvent.pointerType === \"mouse\") {\n this.dispatchEvent(clickEvent, \"click\");\n } else if (clickEvent.pointerType === \"touch\") {\n this.dispatchEvent(clickEvent, \"tap\");\n }\n this.dispatchEvent(clickEvent, \"pointertap\");\n this.freeEvent(clickEvent);\n }\n this.freeEvent(e);\n }\n mapPointerUpOutside(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n const e = this.createPointerEvent(from);\n if (pressTarget) {\n let currentTarget = pressTarget;\n while (currentTarget) {\n e.currentTarget = currentTarget;\n this.notifyTarget(e, \"pointerupoutside\");\n if (e.pointerType === \"touch\") {\n this.notifyTarget(e, \"touchendoutside\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n this.notifyTarget(e, e.button === 2 ? \"rightupoutside\" : \"mouseupoutside\");\n }\n currentTarget = currentTarget.parent;\n }\n delete trackingData.pressTargetsByButton[from.button];\n }\n this.freeEvent(e);\n }\n mapWheel(from) {\n if (!(from instanceof FederatedWheelEvent)) {\n console.warn(\"EventBoundary cannot map a non-wheel event as a wheel event\");\n return;\n }\n const wheelEvent = this.createWheelEvent(from);\n this.dispatchEvent(wheelEvent);\n this.freeEvent(wheelEvent);\n }\n findMountedTarget(propagationPath) {\n if (!propagationPath) {\n return null;\n }\n let currentTarget = propagationPath[0];\n for (let i = 1; i < propagationPath.length; i++) {\n if (propagationPath[i].parent === currentTarget) {\n currentTarget = propagationPath[i];\n } else {\n break;\n }\n }\n return currentTarget;\n }\n createPointerEvent(from, type, target) {\n const event = this.allocateEvent(FederatedPointerEvent);\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n event.target = target ?? this.hitTest(event.global.x, event.global.y);\n if (typeof type === \"string\") {\n event.type = type;\n }\n return event;\n }\n createWheelEvent(from) {\n const event = this.allocateEvent(FederatedWheelEvent);\n this.copyWheelData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n event.target = this.hitTest(event.global.x, event.global.y);\n return event;\n }\n clonePointerEvent(from, type) {\n const event = this.allocateEvent(FederatedPointerEvent);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from.originalEvent;\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.target = from.target;\n event.path = from.composedPath().slice();\n event.type = type ?? event.type;\n return event;\n }\n copyWheelData(from, to) {\n to.deltaMode = from.deltaMode;\n to.deltaX = from.deltaX;\n to.deltaY = from.deltaY;\n to.deltaZ = from.deltaZ;\n }\n copyPointerData(from, to) {\n if (!(from instanceof FederatedPointerEvent && to instanceof FederatedPointerEvent))\n return;\n to.pointerId = from.pointerId;\n to.width = from.width;\n to.height = from.height;\n to.isPrimary = from.isPrimary;\n to.pointerType = from.pointerType;\n to.pressure = from.pressure;\n to.tangentialPressure = from.tangentialPressure;\n to.tiltX = from.tiltX;\n to.tiltY = from.tiltY;\n to.twist = from.twist;\n }\n copyMouseData(from, to) {\n if (!(from instanceof FederatedMouseEvent && to instanceof FederatedMouseEvent))\n return;\n to.altKey = from.altKey;\n to.button = from.button;\n to.buttons = from.buttons;\n to.client.copyFrom(from.client);\n to.ctrlKey = from.ctrlKey;\n to.metaKey = from.metaKey;\n to.movement.copyFrom(from.movement);\n to.screen.copyFrom(from.screen);\n to.global.copyFrom(from.global);\n }\n copyData(from, to) {\n to.isTrusted = from.isTrusted;\n to.srcElement = from.srcElement;\n to.timeStamp = performance.now();\n to.type = from.type;\n to.detail = from.detail;\n to.view = from.view;\n to.which = from.which;\n to.layer.copyFrom(from.layer);\n to.page.copyFrom(from.page);\n }\n trackingData(id) {\n if (!this.mappingState.trackingData[id]) {\n this.mappingState.trackingData[id] = {\n pressTargetsByButton: {},\n clicksByButton: {},\n overTarget: null\n };\n }\n return this.mappingState.trackingData[id];\n }\n allocateEvent(constructor) {\n if (!this.eventPool.has(constructor)) {\n this.eventPool.set(constructor, []);\n }\n const event = this.eventPool.get(constructor).pop() || new constructor(this);\n event.eventPhase = event.NONE;\n event.currentTarget = null;\n event.path = null;\n event.target = null;\n return event;\n }\n freeEvent(event) {\n if (event.manager !== this)\n throw new Error(\"It is illegal to free an event not managed by this EventBoundary!\");\n const constructor = event.constructor;\n if (!this.eventPool.has(constructor)) {\n this.eventPool.set(constructor, []);\n }\n this.eventPool.get(constructor).push(event);\n }\n notifyListeners(e, type) {\n const listeners = e.currentTarget._events[type];\n if (!listeners)\n return;\n if (\"fn\" in listeners) {\n listeners.fn.call(listeners.context, e);\n } else {\n for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++) {\n listeners[i].fn.call(listeners[i].context, e);\n }\n }\n }\n}\n\nexport { EventBoundary };\n//# sourceMappingURL=EventBoundary.mjs.map\n","import { EventBoundary } from './EventBoundary.mjs';\nimport { FederatedPointerEvent } from './FederatedPointerEvent.mjs';\nimport { FederatedWheelEvent } from './FederatedWheelEvent.mjs';\nimport { ExtensionType, extensions } from '@pixi/core';\n\nconst MOUSE_POINTER_ID = 1;\nconst TOUCH_TO_POINTER = {\n touchstart: \"pointerdown\",\n touchend: \"pointerup\",\n touchendoutside: \"pointerupoutside\",\n touchmove: \"pointermove\",\n touchcancel: \"pointercancel\"\n};\nclass EventSystem {\n constructor(renderer) {\n this.supportsTouchEvents = \"ontouchstart\" in globalThis;\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.domElement = null;\n this.resolution = 1;\n this.renderer = renderer;\n this.rootBoundary = new EventBoundary(null);\n this.autoPreventDefault = true;\n this.eventsAdded = false;\n this.rootPointerEvent = new FederatedPointerEvent(null);\n this.rootWheelEvent = new FederatedWheelEvent(null);\n this.cursorStyles = {\n default: \"inherit\",\n pointer: \"pointer\"\n };\n this.onPointerDown = this.onPointerDown.bind(this);\n this.onPointerMove = this.onPointerMove.bind(this);\n this.onPointerUp = this.onPointerUp.bind(this);\n this.onPointerOverOut = this.onPointerOverOut.bind(this);\n this.onWheel = this.onWheel.bind(this);\n }\n init() {\n const { view, resolution } = this.renderer;\n this.setTargetElement(view);\n this.resolution = resolution;\n }\n destroy() {\n this.setTargetElement(null);\n this.renderer = null;\n }\n setCursor(mode) {\n mode = mode || \"default\";\n let applyStyles = true;\n if (globalThis.OffscreenCanvas && this.domElement instanceof OffscreenCanvas) {\n applyStyles = false;\n }\n if (this.currentCursor === mode) {\n return;\n }\n this.currentCursor = mode;\n const style = this.cursorStyles[mode];\n if (style) {\n switch (typeof style) {\n case \"string\":\n if (applyStyles) {\n this.domElement.style.cursor = style;\n }\n break;\n case \"function\":\n style(mode);\n break;\n case \"object\":\n if (applyStyles) {\n Object.assign(this.domElement.style, style);\n }\n break;\n }\n } else if (applyStyles && typeof mode === \"string\" && !Object.prototype.hasOwnProperty.call(this.cursorStyles, mode)) {\n this.domElement.style.cursor = mode;\n }\n }\n onPointerDown(nativeEvent) {\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n if (this.supportsTouchEvents && nativeEvent.pointerType === \"touch\")\n return;\n const events = this.normalizeToPointerData(nativeEvent);\n if (this.autoPreventDefault && events[0].isNormalized) {\n const cancelable = nativeEvent.cancelable || !(\"cancelable\" in nativeEvent);\n if (cancelable) {\n nativeEvent.preventDefault();\n }\n }\n for (let i = 0, j = events.length; i < j; i++) {\n const nativeEvent2 = events[i];\n const federatedEvent = this.bootstrapEvent(this.rootPointerEvent, nativeEvent2);\n this.rootBoundary.mapEvent(federatedEvent);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n onPointerMove(nativeEvent) {\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n if (this.supportsTouchEvents && nativeEvent.pointerType === \"touch\")\n return;\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n onPointerUp(nativeEvent) {\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n if (this.supportsTouchEvents && nativeEvent.pointerType === \"touch\")\n return;\n let target = nativeEvent.target;\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) {\n target = nativeEvent.composedPath()[0];\n }\n const outside = target !== this.domElement ? \"outside\" : \"\";\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n event.type += outside;\n this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n onPointerOverOut(nativeEvent) {\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n if (this.supportsTouchEvents && nativeEvent.pointerType === \"touch\")\n return;\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n onWheel(nativeEvent) {\n const wheelEvent = this.normalizeWheelEvent(nativeEvent);\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n this.rootBoundary.mapEvent(wheelEvent);\n }\n setTargetElement(element) {\n this.removeEvents();\n this.domElement = element;\n this.addEvents();\n }\n addEvents() {\n if (this.eventsAdded || !this.domElement) {\n return;\n }\n const style = this.domElement.style;\n if (style) {\n if (globalThis.navigator.msPointerEnabled) {\n style.msContentZooming = \"none\";\n style.msTouchAction = \"none\";\n } else if (this.supportsPointerEvents) {\n style.touchAction = \"none\";\n }\n }\n if (this.supportsPointerEvents) {\n globalThis.document.addEventListener(\"pointermove\", this.onPointerMove, true);\n this.domElement.addEventListener(\"pointerdown\", this.onPointerDown, true);\n this.domElement.addEventListener(\"pointerleave\", this.onPointerOverOut, true);\n this.domElement.addEventListener(\"pointerover\", this.onPointerOverOut, true);\n globalThis.addEventListener(\"pointerup\", this.onPointerUp, true);\n } else {\n globalThis.document.addEventListener(\"mousemove\", this.onPointerMove, true);\n this.domElement.addEventListener(\"mousedown\", this.onPointerDown, true);\n this.domElement.addEventListener(\"mouseout\", this.onPointerOverOut, true);\n this.domElement.addEventListener(\"mouseover\", this.onPointerOverOut, true);\n globalThis.addEventListener(\"mouseup\", this.onPointerUp, true);\n }\n if (this.supportsTouchEvents) {\n this.domElement.addEventListener(\"touchstart\", this.onPointerDown, true);\n this.domElement.addEventListener(\"touchend\", this.onPointerUp, true);\n this.domElement.addEventListener(\"touchmove\", this.onPointerMove, true);\n }\n this.domElement.addEventListener(\"wheel\", this.onWheel, {\n passive: true,\n capture: true\n });\n this.eventsAdded = true;\n }\n removeEvents() {\n if (!this.eventsAdded || !this.domElement) {\n return;\n }\n const style = this.domElement.style;\n if (globalThis.navigator.msPointerEnabled) {\n style.msContentZooming = \"\";\n style.msTouchAction = \"\";\n } else if (this.supportsPointerEvents) {\n style.touchAction = \"\";\n }\n if (this.supportsPointerEvents) {\n globalThis.document.removeEventListener(\"pointermove\", this.onPointerMove, true);\n this.domElement.removeEventListener(\"pointerdown\", this.onPointerDown, true);\n this.domElement.removeEventListener(\"pointerleave\", this.onPointerOverOut, true);\n this.domElement.removeEventListener(\"pointerover\", this.onPointerOverOut, true);\n globalThis.removeEventListener(\"pointerup\", this.onPointerUp, true);\n } else {\n globalThis.document.removeEventListener(\"mousemove\", this.onPointerMove, true);\n this.domElement.removeEventListener(\"mousedown\", this.onPointerDown, true);\n this.domElement.removeEventListener(\"mouseout\", this.onPointerOverOut, true);\n this.domElement.removeEventListener(\"mouseover\", this.onPointerOverOut, true);\n globalThis.removeEventListener(\"mouseup\", this.onPointerUp, true);\n }\n if (this.supportsTouchEvents) {\n this.domElement.removeEventListener(\"touchstart\", this.onPointerDown, true);\n this.domElement.removeEventListener(\"touchend\", this.onPointerUp, true);\n this.domElement.removeEventListener(\"touchmove\", this.onPointerMove, true);\n }\n this.domElement.removeEventListener(\"wheel\", this.onWheel, true);\n this.domElement = null;\n this.eventsAdded = false;\n }\n mapPositionToPoint(point, x, y) {\n let rect;\n if (!this.domElement.parentElement) {\n rect = {\n x: 0,\n y: 0,\n width: this.domElement.width,\n height: this.domElement.height,\n left: 0,\n top: 0\n };\n } else {\n rect = this.domElement.getBoundingClientRect();\n }\n const resolutionMultiplier = 1 / this.resolution;\n point.x = (x - rect.left) * (this.domElement.width / rect.width) * resolutionMultiplier;\n point.y = (y - rect.top) * (this.domElement.height / rect.height) * resolutionMultiplier;\n }\n normalizeToPointerData(event) {\n const normalizedEvents = [];\n if (this.supportsTouchEvents && event instanceof TouchEvent) {\n for (let i = 0, li = event.changedTouches.length; i < li; i++) {\n const touch = event.changedTouches[i];\n if (typeof touch.button === \"undefined\")\n touch.button = 0;\n if (typeof touch.buttons === \"undefined\")\n touch.buttons = 1;\n if (typeof touch.isPrimary === \"undefined\") {\n touch.isPrimary = event.touches.length === 1 && event.type === \"touchstart\";\n }\n if (typeof touch.width === \"undefined\")\n touch.width = touch.radiusX || 1;\n if (typeof touch.height === \"undefined\")\n touch.height = touch.radiusY || 1;\n if (typeof touch.tiltX === \"undefined\")\n touch.tiltX = 0;\n if (typeof touch.tiltY === \"undefined\")\n touch.tiltY = 0;\n if (typeof touch.pointerType === \"undefined\")\n touch.pointerType = \"touch\";\n if (typeof touch.pointerId === \"undefined\")\n touch.pointerId = touch.identifier || 0;\n if (typeof touch.pressure === \"undefined\")\n touch.pressure = touch.force || 0.5;\n if (typeof touch.twist === \"undefined\")\n touch.twist = 0;\n if (typeof touch.tangentialPressure === \"undefined\")\n touch.tangentialPressure = 0;\n if (typeof touch.layerX === \"undefined\")\n touch.layerX = touch.offsetX = touch.clientX;\n if (typeof touch.layerY === \"undefined\")\n touch.layerY = touch.offsetY = touch.clientY;\n touch.isNormalized = true;\n touch.type = event.type;\n normalizedEvents.push(touch);\n }\n } else if (!globalThis.MouseEvent || event instanceof MouseEvent && (!this.supportsPointerEvents || !(event instanceof globalThis.PointerEvent))) {\n const tempEvent = event;\n if (typeof tempEvent.isPrimary === \"undefined\")\n tempEvent.isPrimary = true;\n if (typeof tempEvent.width === \"undefined\")\n tempEvent.width = 1;\n if (typeof tempEvent.height === \"undefined\")\n tempEvent.height = 1;\n if (typeof tempEvent.tiltX === \"undefined\")\n tempEvent.tiltX = 0;\n if (typeof tempEvent.tiltY === \"undefined\")\n tempEvent.tiltY = 0;\n if (typeof tempEvent.pointerType === \"undefined\")\n tempEvent.pointerType = \"mouse\";\n if (typeof tempEvent.pointerId === \"undefined\")\n tempEvent.pointerId = MOUSE_POINTER_ID;\n if (typeof tempEvent.pressure === \"undefined\")\n tempEvent.pressure = 0.5;\n if (typeof tempEvent.twist === \"undefined\")\n tempEvent.twist = 0;\n if (typeof tempEvent.tangentialPressure === \"undefined\")\n tempEvent.tangentialPressure = 0;\n tempEvent.isNormalized = true;\n normalizedEvents.push(tempEvent);\n } else {\n normalizedEvents.push(event);\n }\n return normalizedEvents;\n }\n normalizeWheelEvent(nativeEvent) {\n const event = this.rootWheelEvent;\n this.transferMouseData(event, nativeEvent);\n event.deltaMode = nativeEvent.deltaMode;\n event.deltaX = nativeEvent.deltaX;\n event.deltaY = nativeEvent.deltaY;\n event.deltaZ = nativeEvent.deltaZ;\n this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY);\n event.global.copyFrom(event.screen);\n event.offset.copyFrom(event.screen);\n event.nativeEvent = nativeEvent;\n event.type = nativeEvent.type;\n return event;\n }\n bootstrapEvent(event, nativeEvent) {\n event.originalEvent = null;\n event.nativeEvent = nativeEvent;\n event.pointerId = nativeEvent.pointerId;\n event.width = nativeEvent.width;\n event.height = nativeEvent.height;\n event.isPrimary = nativeEvent.isPrimary;\n event.pointerType = nativeEvent.pointerType;\n event.pressure = nativeEvent.pressure;\n event.tangentialPressure = nativeEvent.tangentialPressure;\n event.tiltX = nativeEvent.tiltX;\n event.tiltY = nativeEvent.tiltY;\n event.twist = nativeEvent.twist;\n this.transferMouseData(event, nativeEvent);\n this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY);\n event.global.copyFrom(event.screen);\n event.offset.copyFrom(event.screen);\n event.isTrusted = nativeEvent.isTrusted;\n if (event.type === \"pointerleave\") {\n event.type = \"pointerout\";\n }\n if (event.type.startsWith(\"mouse\")) {\n event.type = event.type.replace(\"mouse\", \"pointer\");\n }\n if (event.type.startsWith(\"touch\")) {\n event.type = TOUCH_TO_POINTER[event.type] || event.type;\n }\n return event;\n }\n transferMouseData(event, nativeEvent) {\n event.isTrusted = nativeEvent.isTrusted;\n event.srcElement = nativeEvent.srcElement;\n event.timeStamp = performance.now();\n event.type = nativeEvent.type;\n event.altKey = nativeEvent.altKey;\n event.button = nativeEvent.button;\n event.buttons = nativeEvent.buttons;\n event.client.x = nativeEvent.clientX;\n event.client.y = nativeEvent.clientY;\n event.ctrlKey = nativeEvent.ctrlKey;\n event.metaKey = nativeEvent.metaKey;\n event.movement.x = nativeEvent.movementX;\n event.movement.y = nativeEvent.movementY;\n event.page.x = nativeEvent.pageX;\n event.page.y = nativeEvent.pageY;\n event.relatedTarget = null;\n event.shiftKey = nativeEvent.shiftKey;\n }\n}\nEventSystem.extension = {\n name: \"events\",\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ]\n};\nextensions.add(EventSystem);\n\nexport { EventSystem };\n//# sourceMappingURL=EventSystem.mjs.map\n","import { DisplayObject } from '@pixi/display';\nimport { FederatedEvent } from './FederatedEvent.mjs';\n\nconst FederatedDisplayObject = {\n interactive: false,\n interactiveChildren: true,\n hitArea: null,\n addEventListener(type, listener, options) {\n const capture = typeof options === \"boolean\" && options || typeof options === \"object\" && options.capture;\n const context = typeof listener === \"function\" ? void 0 : listener;\n type = capture ? `${type}capture` : type;\n listener = typeof listener === \"function\" ? listener : listener.handleEvent;\n this.on(type, listener, context);\n },\n removeEventListener(type, listener, options) {\n const capture = typeof options === \"boolean\" && options || typeof options === \"object\" && options.capture;\n const context = typeof listener === \"function\" ? void 0 : listener;\n type = capture ? `${type}capture` : type;\n listener = typeof listener === \"function\" ? listener : listener.handleEvent;\n this.off(type, listener, context);\n },\n dispatchEvent(e) {\n if (!(e instanceof FederatedEvent)) {\n throw new Error(\"DisplayObject cannot propagate events outside of the Federated Events API\");\n }\n e.defaultPrevented = false;\n e.path = null;\n e.target = this;\n e.manager.dispatchEvent(e);\n return !e.defaultPrevented;\n }\n};\nDisplayObject.mixin(FederatedDisplayObject);\n\nexport { FederatedDisplayObject };\n//# sourceMappingURL=FederatedEventTarget.mjs.map\n","import { utils, ExtensionType, extensions } from '@pixi/core';\nimport { DisplayObject } from '@pixi/display';\nimport { FederatedEvent } from '@pixi/events';\nimport { accessibleTarget } from './accessibleTarget.mjs';\n\nDisplayObject.mixin(accessibleTarget);\nconst KEY_CODE_TAB = 9;\nconst DIV_TOUCH_SIZE = 100;\nconst DIV_TOUCH_POS_X = 0;\nconst DIV_TOUCH_POS_Y = 0;\nconst DIV_TOUCH_ZINDEX = 2;\nconst DIV_HOOK_SIZE = 1;\nconst DIV_HOOK_POS_X = -1e3;\nconst DIV_HOOK_POS_Y = -1e3;\nconst DIV_HOOK_ZINDEX = 2;\nclass AccessibilityManager {\n constructor(renderer) {\n this.debug = false;\n this._isActive = false;\n this._isMobileAccessibility = false;\n this.pool = [];\n this.renderId = 0;\n this.children = [];\n this.androidUpdateCount = 0;\n this.androidUpdateFrequency = 500;\n this._hookDiv = null;\n if (utils.isMobile.tablet || utils.isMobile.phone) {\n this.createTouchHook();\n }\n const div = document.createElement(\"div\");\n div.style.width = `${DIV_TOUCH_SIZE}px`;\n div.style.height = `${DIV_TOUCH_SIZE}px`;\n div.style.position = \"absolute\";\n div.style.top = `${DIV_TOUCH_POS_X}px`;\n div.style.left = `${DIV_TOUCH_POS_Y}px`;\n div.style.zIndex = DIV_TOUCH_ZINDEX.toString();\n this.div = div;\n this.renderer = renderer;\n this._onKeyDown = this._onKeyDown.bind(this);\n this._onMouseMove = this._onMouseMove.bind(this);\n globalThis.addEventListener(\"keydown\", this._onKeyDown, false);\n }\n get isActive() {\n return this._isActive;\n }\n get isMobileAccessibility() {\n return this._isMobileAccessibility;\n }\n createTouchHook() {\n const hookDiv = document.createElement(\"button\");\n hookDiv.style.width = `${DIV_HOOK_SIZE}px`;\n hookDiv.style.height = `${DIV_HOOK_SIZE}px`;\n hookDiv.style.position = \"absolute\";\n hookDiv.style.top = `${DIV_HOOK_POS_X}px`;\n hookDiv.style.left = `${DIV_HOOK_POS_Y}px`;\n hookDiv.style.zIndex = DIV_HOOK_ZINDEX.toString();\n hookDiv.style.backgroundColor = \"#FF0000\";\n hookDiv.title = \"select to enable accessibility for this content\";\n hookDiv.addEventListener(\"focus\", () => {\n this._isMobileAccessibility = true;\n this.activate();\n this.destroyTouchHook();\n });\n document.body.appendChild(hookDiv);\n this._hookDiv = hookDiv;\n }\n destroyTouchHook() {\n if (!this._hookDiv) {\n return;\n }\n document.body.removeChild(this._hookDiv);\n this._hookDiv = null;\n }\n activate() {\n if (this._isActive) {\n return;\n }\n this._isActive = true;\n globalThis.document.addEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.removeEventListener(\"keydown\", this._onKeyDown, false);\n this.renderer.on(\"postrender\", this.update, this);\n this.renderer.view.parentNode?.appendChild(this.div);\n }\n deactivate() {\n if (!this._isActive || this._isMobileAccessibility) {\n return;\n }\n this._isActive = false;\n globalThis.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.addEventListener(\"keydown\", this._onKeyDown, false);\n this.renderer.off(\"postrender\", this.update);\n this.div.parentNode?.removeChild(this.div);\n }\n updateAccessibleObjects(displayObject) {\n if (!displayObject.visible || !displayObject.accessibleChildren) {\n return;\n }\n if (displayObject.accessible && displayObject.interactive) {\n if (!displayObject._accessibleActive) {\n this.addChild(displayObject);\n }\n displayObject.renderId = this.renderId;\n }\n const children = displayObject.children;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n this.updateAccessibleObjects(children[i]);\n }\n }\n }\n update() {\n const now = performance.now();\n if (utils.isMobile.android.device && now < this.androidUpdateCount) {\n return;\n }\n this.androidUpdateCount = now + this.androidUpdateFrequency;\n if (!this.renderer.renderingToScreen) {\n return;\n }\n if (this.renderer.lastObjectRendered) {\n this.updateAccessibleObjects(this.renderer.lastObjectRendered);\n }\n const { x, y, width, height } = this.renderer.view.getBoundingClientRect();\n const { width: viewWidth, height: viewHeight, resolution } = this.renderer;\n const sx = width / viewWidth * resolution;\n const sy = height / viewHeight * resolution;\n let div = this.div;\n div.style.left = `${x}px`;\n div.style.top = `${y}px`;\n div.style.width = `${viewWidth}px`;\n div.style.height = `${viewHeight}px`;\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n if (child.renderId !== this.renderId) {\n child._accessibleActive = false;\n utils.removeItems(this.children, i, 1);\n this.div.removeChild(child._accessibleDiv);\n this.pool.push(child._accessibleDiv);\n child._accessibleDiv = null;\n i--;\n } else {\n div = child._accessibleDiv;\n let hitArea = child.hitArea;\n const wt = child.worldTransform;\n if (child.hitArea) {\n div.style.left = `${(wt.tx + hitArea.x * wt.a) * sx}px`;\n div.style.top = `${(wt.ty + hitArea.y * wt.d) * sy}px`;\n div.style.width = `${hitArea.width * wt.a * sx}px`;\n div.style.height = `${hitArea.height * wt.d * sy}px`;\n } else {\n hitArea = child.getBounds();\n this.capHitArea(hitArea);\n div.style.left = `${hitArea.x * sx}px`;\n div.style.top = `${hitArea.y * sy}px`;\n div.style.width = `${hitArea.width * sx}px`;\n div.style.height = `${hitArea.height * sy}px`;\n if (div.title !== child.accessibleTitle && child.accessibleTitle !== null) {\n div.title = child.accessibleTitle;\n }\n if (div.getAttribute(\"aria-label\") !== child.accessibleHint && child.accessibleHint !== null) {\n div.setAttribute(\"aria-label\", child.accessibleHint);\n }\n }\n if (child.accessibleTitle !== div.title || child.tabIndex !== div.tabIndex) {\n div.title = child.accessibleTitle;\n div.tabIndex = child.tabIndex;\n if (this.debug)\n this.updateDebugHTML(div);\n }\n }\n }\n this.renderId++;\n }\n updateDebugHTML(div) {\n div.innerHTML = `type: ${div.type}
title : ${div.title}
tabIndex: ${div.tabIndex}`;\n }\n capHitArea(hitArea) {\n if (hitArea.x < 0) {\n hitArea.width += hitArea.x;\n hitArea.x = 0;\n }\n if (hitArea.y < 0) {\n hitArea.height += hitArea.y;\n hitArea.y = 0;\n }\n const { width: viewWidth, height: viewHeight } = this.renderer;\n if (hitArea.x + hitArea.width > viewWidth) {\n hitArea.width = viewWidth - hitArea.x;\n }\n if (hitArea.y + hitArea.height > viewHeight) {\n hitArea.height = viewHeight - hitArea.y;\n }\n }\n addChild(displayObject) {\n let div = this.pool.pop();\n if (!div) {\n div = document.createElement(\"button\");\n div.style.width = `${DIV_TOUCH_SIZE}px`;\n div.style.height = `${DIV_TOUCH_SIZE}px`;\n div.style.backgroundColor = this.debug ? \"rgba(255,255,255,0.5)\" : \"transparent\";\n div.style.position = \"absolute\";\n div.style.zIndex = DIV_TOUCH_ZINDEX.toString();\n div.style.borderStyle = \"none\";\n if (navigator.userAgent.toLowerCase().includes(\"chrome\")) {\n div.setAttribute(\"aria-live\", \"off\");\n } else {\n div.setAttribute(\"aria-live\", \"polite\");\n }\n if (navigator.userAgent.match(/rv:.*Gecko\\//)) {\n div.setAttribute(\"aria-relevant\", \"additions\");\n } else {\n div.setAttribute(\"aria-relevant\", \"text\");\n }\n div.addEventListener(\"click\", this._onClick.bind(this));\n div.addEventListener(\"focus\", this._onFocus.bind(this));\n div.addEventListener(\"focusout\", this._onFocusOut.bind(this));\n }\n div.style.pointerEvents = displayObject.accessiblePointerEvents;\n div.type = displayObject.accessibleType;\n if (displayObject.accessibleTitle && displayObject.accessibleTitle !== null) {\n div.title = displayObject.accessibleTitle;\n } else if (!displayObject.accessibleHint || displayObject.accessibleHint === null) {\n div.title = `displayObject ${displayObject.tabIndex}`;\n }\n if (displayObject.accessibleHint && displayObject.accessibleHint !== null) {\n div.setAttribute(\"aria-label\", displayObject.accessibleHint);\n }\n if (this.debug)\n this.updateDebugHTML(div);\n displayObject._accessibleActive = true;\n displayObject._accessibleDiv = div;\n div.displayObject = displayObject;\n this.children.push(displayObject);\n this.div.appendChild(displayObject._accessibleDiv);\n displayObject._accessibleDiv.tabIndex = displayObject.tabIndex;\n }\n _dispatchEvent(e, type) {\n const { displayObject: target } = e.target;\n const boundry = this.renderer.events.rootBoundary;\n const event = Object.assign(new FederatedEvent(boundry), { target });\n boundry.rootTarget = this.renderer.lastObjectRendered;\n type.forEach((type2) => boundry.dispatchEvent(event, type2));\n }\n _onClick(e) {\n this._dispatchEvent(e, [\"click\", \"pointertap\", \"tap\"]);\n }\n _onFocus(e) {\n if (!e.target.getAttribute(\"aria-live\")) {\n e.target.setAttribute(\"aria-live\", \"assertive\");\n }\n this._dispatchEvent(e, [\"mouseover\"]);\n }\n _onFocusOut(e) {\n if (!e.target.getAttribute(\"aria-live\")) {\n e.target.setAttribute(\"aria-live\", \"polite\");\n }\n this._dispatchEvent(e, [\"mouseout\"]);\n }\n _onKeyDown(e) {\n if (e.keyCode !== KEY_CODE_TAB) {\n return;\n }\n this.activate();\n }\n _onMouseMove(e) {\n if (e.movementX === 0 && e.movementY === 0) {\n return;\n }\n this.deactivate();\n }\n destroy() {\n this.destroyTouchHook();\n this.div = null;\n globalThis.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.removeEventListener(\"keydown\", this._onKeyDown);\n this.pool = null;\n this.children = null;\n this.renderer = null;\n }\n}\nAccessibilityManager.extension = {\n name: \"accessibility\",\n type: [\n ExtensionType.RendererPlugin,\n ExtensionType.CanvasRendererPlugin\n ]\n};\nextensions.add(AccessibilityManager);\n\nexport { AccessibilityManager };\n//# sourceMappingURL=AccessibilityManager.mjs.map\n","import { autoDetectRenderer, extensions, ExtensionType } from '@pixi/core';\nimport { Container } from '@pixi/display';\n\nconst _Application = class {\n constructor(options) {\n this.stage = new Container();\n options = Object.assign({\n forceCanvas: false\n }, options);\n this.renderer = autoDetectRenderer(options);\n _Application._plugins.forEach((plugin) => {\n plugin.init.call(this, options);\n });\n }\n render() {\n this.renderer.render(this.stage);\n }\n get view() {\n return this.renderer.view;\n }\n get screen() {\n return this.renderer.screen;\n }\n destroy(removeView, stageOptions) {\n const plugins = _Application._plugins.slice(0);\n plugins.reverse();\n plugins.forEach((plugin) => {\n plugin.destroy.call(this);\n });\n this.stage.destroy(stageOptions);\n this.stage = null;\n this.renderer.destroy(removeView);\n this.renderer = null;\n }\n};\nlet Application = _Application;\nApplication._plugins = [];\nextensions.handleByList(ExtensionType.Application, Application._plugins);\n\nexport { Application };\n//# sourceMappingURL=Application.mjs.map\n","import { ExtensionType, extensions } from '@pixi/core';\n\nclass ResizePlugin {\n static init(options) {\n Object.defineProperty(this, \"resizeTo\", {\n set(dom) {\n globalThis.removeEventListener(\"resize\", this.queueResize);\n this._resizeTo = dom;\n if (dom) {\n globalThis.addEventListener(\"resize\", this.queueResize);\n this.resize();\n }\n },\n get() {\n return this._resizeTo;\n }\n });\n this.queueResize = () => {\n if (!this._resizeTo) {\n return;\n }\n this.cancelResize();\n this._resizeId = requestAnimationFrame(() => this.resize());\n };\n this.cancelResize = () => {\n if (this._resizeId) {\n cancelAnimationFrame(this._resizeId);\n this._resizeId = null;\n }\n };\n this.resize = () => {\n if (!this._resizeTo) {\n return;\n }\n this.cancelResize();\n let width;\n let height;\n if (this._resizeTo === globalThis.window) {\n width = globalThis.innerWidth;\n height = globalThis.innerHeight;\n } else {\n const { clientWidth, clientHeight } = this._resizeTo;\n width = clientWidth;\n height = clientHeight;\n }\n this.renderer.resize(width, height);\n this.render();\n };\n this._resizeId = null;\n this._resizeTo = null;\n this.resizeTo = options.resizeTo || null;\n }\n static destroy() {\n globalThis.removeEventListener(\"resize\", this.queueResize);\n this.cancelResize();\n this.cancelResize = null;\n this.queueResize = null;\n this.resizeTo = null;\n this.resize = null;\n }\n}\nResizePlugin.extension = ExtensionType.Application;\nextensions.add(ResizePlugin);\n\nexport { ResizePlugin };\n//# sourceMappingURL=ResizePlugin.mjs.map\n","class BackgroundLoader {\n constructor(loader, verbose = false) {\n this._loader = loader;\n this._assetList = [];\n this._isLoading = false;\n this._maxConcurrent = 1;\n this.verbose = verbose;\n }\n add(assetUrls) {\n assetUrls.forEach((a) => {\n this._assetList.push(a);\n });\n if (this.verbose)\n console.log(\"[BackgroundLoader] assets: \", this._assetList);\n if (this._isActive && !this._isLoading) {\n this._next();\n }\n }\n async _next() {\n if (this._assetList.length && this._isActive) {\n this._isLoading = true;\n const toLoad = [];\n const toLoadAmount = Math.min(this._assetList.length, this._maxConcurrent);\n for (let i = 0; i < toLoadAmount; i++) {\n toLoad.push(this._assetList.pop());\n }\n await this._loader.load(toLoad);\n this._isLoading = false;\n this._next();\n }\n }\n get active() {\n return this._isActive;\n }\n set active(value) {\n if (this._isActive === value)\n return;\n this._isActive = value;\n if (value && !this._isLoading) {\n this._next();\n }\n }\n}\n\nexport { BackgroundLoader };\n//# sourceMappingURL=BackgroundLoader.mjs.map\n","const convertToList = (input, transform) => {\n if (!Array.isArray(input)) {\n input = [input];\n }\n if (!transform) {\n return input;\n }\n return input.map((item) => {\n if (typeof item === \"string\") {\n return transform(item);\n }\n return item;\n });\n};\n\nexport { convertToList };\n//# sourceMappingURL=convertToList.mjs.map\n","function processX(base, ids, depth, result, tags) {\n const id = ids[depth];\n for (let i = 0; i < id.length; i++) {\n const value = id[i];\n if (depth < ids.length - 1) {\n processX(base.replace(result[depth], value), ids, depth + 1, result, tags);\n } else {\n tags.push(base.replace(result[depth], value));\n }\n }\n}\nfunction createStringVariations(string) {\n const regex = /\\{(.*?)\\}/g;\n const result = string.match(regex);\n const tags = [];\n if (result) {\n const ids = [];\n result.forEach((vars) => {\n const split = vars.substring(1, vars.length - 1).split(\",\");\n ids.push(split);\n });\n processX(string, ids, 0, result, tags);\n } else {\n tags.push(string);\n }\n return tags;\n}\n\nexport { createStringVariations };\n//# sourceMappingURL=createStringVariations.mjs.map\n","const isSingleItem = (item) => !Array.isArray(item);\n\nexport { isSingleItem };\n//# sourceMappingURL=isSingleItem.mjs.map\n","import { Texture, BaseTexture } from '@pixi/core';\nimport '../utils/index.mjs';\nimport { convertToList } from '../utils/convertToList.mjs';\n\nclass CacheClass {\n constructor() {\n this._parsers = [];\n this._cache = /* @__PURE__ */ new Map();\n this._cacheMap = /* @__PURE__ */ new Map();\n }\n reset() {\n this._cacheMap.clear();\n this._cache.clear();\n }\n has(key) {\n return this._cache.has(key);\n }\n get(key) {\n const result = this._cache.get(key);\n if (!result) {\n }\n return result;\n }\n set(key, value) {\n const keys = convertToList(key);\n let cacheableAssets;\n for (let i = 0; i < this.parsers.length; i++) {\n const parser = this.parsers[i];\n if (parser.test(value)) {\n cacheableAssets = parser.getCacheableAssets(keys, value);\n break;\n }\n }\n if (!cacheableAssets) {\n cacheableAssets = {};\n keys.forEach((key2) => {\n cacheableAssets[key2] = value;\n });\n }\n const cacheKeys = Object.keys(cacheableAssets);\n const cachedAssets = {\n cacheKeys,\n keys\n };\n keys.forEach((key2) => {\n this._cacheMap.set(key2, cachedAssets);\n });\n cacheKeys.forEach((key2) => {\n if (this._cache.has(key2) && this._cache.get(key2) !== value) {\n }\n this._cache.set(key2, cacheableAssets[key2]);\n });\n if (value instanceof Texture) {\n const texture = value;\n keys.forEach((key2) => {\n if (texture.baseTexture !== Texture.EMPTY.baseTexture) {\n BaseTexture.addToCache(texture.baseTexture, key2);\n }\n Texture.addToCache(texture, key2);\n });\n }\n }\n remove(key) {\n this._cacheMap.get(key);\n if (!this._cacheMap.has(key)) {\n return;\n }\n const cacheMap = this._cacheMap.get(key);\n const cacheKeys = cacheMap.cacheKeys;\n cacheKeys.forEach((key2) => {\n this._cache.delete(key2);\n });\n cacheMap.keys.forEach((key2) => {\n this._cacheMap.delete(key2);\n });\n }\n get parsers() {\n return this._parsers;\n }\n}\nconst Cache = new CacheClass();\n\nexport { Cache };\n//# sourceMappingURL=Cache.mjs.map\n","import { utils } from '@pixi/core';\nimport '../utils/index.mjs';\nimport { isSingleItem } from '../utils/isSingleItem.mjs';\nimport { convertToList } from '../utils/convertToList.mjs';\n\nclass Loader {\n constructor() {\n this._parsers = [];\n this.promiseCache = {};\n }\n reset() {\n this.promiseCache = {};\n }\n _getLoadPromiseAndParser(url, data) {\n const result = {\n promise: null,\n parser: null\n };\n result.promise = (async () => {\n let asset = null;\n for (let i = 0; i < this.parsers.length; i++) {\n const parser = this.parsers[i];\n if (parser.load && parser.test?.(url, data, this)) {\n asset = await parser.load(url, data, this);\n result.parser = parser;\n break;\n }\n }\n if (!result.parser) {\n return null;\n }\n for (let i = 0; i < this.parsers.length; i++) {\n const parser = this.parsers[i];\n if (parser.parse) {\n if (parser.parse && await parser.testParse?.(asset, data, this)) {\n asset = await parser.parse(asset, data, this) || asset;\n result.parser = parser;\n }\n }\n }\n return asset;\n })();\n return result;\n }\n async load(assetsToLoadIn, onProgress) {\n let count = 0;\n const assets = {};\n const singleAsset = isSingleItem(assetsToLoadIn);\n const assetsToLoad = convertToList(assetsToLoadIn, (item) => ({\n src: item\n }));\n const total = assetsToLoad.length;\n const promises = assetsToLoad.map(async (asset) => {\n const url = utils.path.toAbsolute(asset.src);\n if (!assets[asset.src]) {\n try {\n if (!this.promiseCache[url]) {\n this.promiseCache[url] = this._getLoadPromiseAndParser(url, asset);\n }\n assets[asset.src] = await this.promiseCache[url].promise;\n if (onProgress)\n onProgress(++count / total);\n } catch (e) {\n delete this.promiseCache[url];\n delete assets[asset.src];\n throw new Error(`[Loader.load] Failed to load ${url}.\n${e}`);\n }\n }\n });\n await Promise.all(promises);\n return singleAsset ? assets[assetsToLoad[0].src] : assets;\n }\n async unload(assetsToUnloadIn) {\n const assetsToUnload = convertToList(assetsToUnloadIn, (item) => ({\n src: item\n }));\n const promises = assetsToUnload.map(async (asset) => {\n const url = utils.path.toAbsolute(asset.src);\n const loadPromise = this.promiseCache[url];\n if (loadPromise) {\n const loadedAsset = await loadPromise.promise;\n loadPromise.parser?.unload?.(loadedAsset, asset, this);\n delete this.promiseCache[url];\n }\n });\n await Promise.all(promises);\n }\n get parsers() {\n return this._parsers;\n }\n}\n\nexport { Loader };\n//# sourceMappingURL=Loader.mjs.map\n","import { utils } from '@pixi/core';\nimport { convertToList } from '../utils/convertToList.mjs';\nimport { createStringVariations } from '../utils/createStringVariations.mjs';\nimport { isSingleItem } from '../utils/isSingleItem.mjs';\n\nclass Resolver {\n constructor() {\n this._assetMap = {};\n this._preferredOrder = [];\n this._parsers = [];\n this._resolverHash = {};\n this._bundles = {};\n }\n prefer(...preferOrders) {\n preferOrders.forEach((prefer) => {\n this._preferredOrder.push(prefer);\n if (!prefer.priority) {\n prefer.priority = Object.keys(prefer.params);\n }\n });\n this._resolverHash = {};\n }\n set basePath(basePath) {\n this._basePath = basePath;\n }\n get basePath() {\n return this._basePath;\n }\n set rootPath(rootPath) {\n this._rootPath = rootPath;\n }\n get rootPath() {\n return this._rootPath;\n }\n get parsers() {\n return this._parsers;\n }\n reset() {\n this._preferredOrder = [];\n this._resolverHash = {};\n this._assetMap = {};\n this._rootPath = null;\n this._basePath = null;\n this._manifest = null;\n }\n addManifest(manifest) {\n if (this._manifest) {\n }\n this._manifest = manifest;\n manifest.bundles.forEach((bundle) => {\n this.addBundle(bundle.name, bundle.assets);\n });\n }\n addBundle(bundleId, assets) {\n const assetNames = [];\n if (Array.isArray(assets)) {\n assets.forEach((asset) => {\n if (typeof asset.name === \"string\") {\n assetNames.push(asset.name);\n } else {\n assetNames.push(...asset.name);\n }\n this.add(asset.name, asset.srcs);\n });\n } else {\n Object.keys(assets).forEach((key) => {\n assetNames.push(key);\n this.add(key, assets[key]);\n });\n }\n this._bundles[bundleId] = assetNames;\n }\n add(keysIn, assetsIn, data) {\n const keys = convertToList(keysIn);\n keys.forEach((key) => {\n if (this._assetMap[key]) {\n }\n });\n if (!Array.isArray(assetsIn)) {\n if (typeof assetsIn === \"string\") {\n assetsIn = createStringVariations(assetsIn);\n } else {\n assetsIn = [assetsIn];\n }\n }\n const assetMap = assetsIn.map((asset) => {\n let formattedAsset = asset;\n if (typeof asset === \"string\") {\n let parsed = false;\n for (let i = 0; i < this._parsers.length; i++) {\n const parser = this._parsers[i];\n if (parser.test(asset)) {\n formattedAsset = parser.parse(asset);\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n formattedAsset = {\n src: asset\n };\n }\n }\n if (!formattedAsset.format) {\n formattedAsset.format = formattedAsset.src.split(\".\").pop();\n }\n if (!formattedAsset.alias) {\n formattedAsset.alias = keys;\n }\n if (this._basePath || this._rootPath) {\n formattedAsset.src = utils.path.toAbsolute(formattedAsset.src, this._basePath, this._rootPath);\n }\n formattedAsset.data = formattedAsset.data ?? data;\n return formattedAsset;\n });\n keys.forEach((key) => {\n this._assetMap[key] = assetMap;\n });\n }\n resolveBundle(bundleIds) {\n const singleAsset = isSingleItem(bundleIds);\n bundleIds = convertToList(bundleIds);\n const out = {};\n bundleIds.forEach((bundleId) => {\n const assetNames = this._bundles[bundleId];\n if (assetNames) {\n out[bundleId] = this.resolve(assetNames);\n }\n });\n return singleAsset ? out[bundleIds[0]] : out;\n }\n resolveUrl(key) {\n const result = this.resolve(key);\n if (typeof key !== \"string\") {\n const out = {};\n for (const i in result) {\n out[i] = result[i].src;\n }\n return out;\n }\n return result.src;\n }\n resolve(keys) {\n const singleAsset = isSingleItem(keys);\n keys = convertToList(keys);\n const result = {};\n keys.forEach((key) => {\n if (!this._resolverHash[key]) {\n if (this._assetMap[key]) {\n let assets = this._assetMap[key];\n const preferredOrder = this._getPreferredOrder(assets);\n const bestAsset = assets[0];\n preferredOrder?.priority.forEach((priorityKey) => {\n preferredOrder.params[priorityKey].forEach((value) => {\n const filteredAssets = assets.filter((asset) => {\n if (asset[priorityKey]) {\n return asset[priorityKey] === value;\n }\n return false;\n });\n if (filteredAssets.length) {\n assets = filteredAssets;\n }\n });\n });\n this._resolverHash[key] = assets[0] ?? bestAsset;\n } else {\n let src = key;\n if (this._basePath || this._rootPath) {\n src = utils.path.toAbsolute(src, this._basePath, this._rootPath);\n }\n this._resolverHash[key] = {\n src\n };\n }\n }\n result[key] = this._resolverHash[key];\n });\n return singleAsset ? result[keys[0]] : result;\n }\n _getPreferredOrder(assets) {\n for (let i = 0; i < assets.length; i++) {\n const asset = assets[0];\n const preferred = this._preferredOrder.find((preference) => preference.params.format.includes(asset.format));\n if (preferred) {\n return preferred;\n }\n }\n return this._preferredOrder[0];\n }\n}\n\nexport { Resolver };\n//# sourceMappingURL=Resolver.mjs.map\n","import { extensions, ExtensionType } from '@pixi/core';\nimport { BackgroundLoader } from './BackgroundLoader.mjs';\nimport { Cache } from './cache/Cache.mjs';\nimport { Loader } from './loader/Loader.mjs';\nimport { Resolver } from './resolver/Resolver.mjs';\nimport { convertToList } from './utils/convertToList.mjs';\nimport { isSingleItem } from './utils/isSingleItem.mjs';\n\nclass AssetsClass {\n constructor() {\n this._detections = [];\n this._initialized = false;\n this.resolver = new Resolver();\n this.loader = new Loader();\n this.cache = Cache;\n this._backgroundLoader = new BackgroundLoader(this.loader);\n this._backgroundLoader.active = true;\n this.reset();\n }\n async init(options = {}) {\n if (this._initialized) {\n return;\n }\n this._initialized = true;\n if (options.basePath) {\n this.resolver.basePath = options.basePath;\n }\n if (options.manifest) {\n let manifest = options.manifest;\n if (typeof manifest === \"string\") {\n manifest = await this.load(manifest);\n }\n this.resolver.addManifest(manifest);\n }\n const resolutionPref = options.texturePreference?.resolution ?? 1;\n const resolution = typeof resolutionPref === \"number\" ? [resolutionPref] : resolutionPref;\n let formats = [];\n if (options.texturePreference?.format) {\n const formatPref = options.texturePreference?.format;\n formats = typeof formatPref === \"string\" ? [formatPref] : formatPref;\n for (const detection of this._detections) {\n if (!await detection.test()) {\n formats = await detection.remove(formats);\n }\n }\n } else {\n for (const detection of this._detections) {\n if (await detection.test()) {\n formats = await detection.add(formats);\n }\n }\n }\n this.resolver.prefer({\n params: {\n format: formats,\n resolution\n }\n });\n }\n add(keysIn, assetsIn, data) {\n this.resolver.add(keysIn, assetsIn, data);\n }\n async load(urls, onProgress) {\n if (!this._initialized) {\n await this.init();\n }\n const singleAsset = isSingleItem(urls);\n const urlArray = convertToList(urls).map((url) => {\n if (typeof url !== \"string\") {\n this.resolver.add(url.src, url);\n return url.src;\n }\n return url;\n });\n const resolveResults = this.resolver.resolve(urlArray);\n const out = await this._mapLoadToResolve(resolveResults, onProgress);\n return singleAsset ? out[urlArray[0]] : out;\n }\n addBundle(bundleId, assets) {\n this.resolver.addBundle(bundleId, assets);\n }\n async loadBundle(bundleIds, onProgress) {\n if (!this._initialized) {\n await this.init();\n }\n let singleAsset = false;\n if (typeof bundleIds === \"string\") {\n singleAsset = true;\n bundleIds = [bundleIds];\n }\n const resolveResults = this.resolver.resolveBundle(bundleIds);\n const out = {};\n const keys = Object.keys(resolveResults);\n let count = 0;\n let total = 0;\n const _onProgress = () => {\n onProgress?.(++count / total);\n };\n const promises = keys.map((bundleId) => {\n const resolveResult = resolveResults[bundleId];\n total += Object.keys(resolveResult).length;\n return this._mapLoadToResolve(resolveResult, _onProgress).then((resolveResult2) => {\n out[bundleId] = resolveResult2;\n });\n });\n await Promise.all(promises);\n return singleAsset ? out[bundleIds[0]] : out;\n }\n async backgroundLoad(urls) {\n if (!this._initialized) {\n await this.init();\n }\n if (typeof urls === \"string\") {\n urls = [urls];\n }\n const resolveResults = this.resolver.resolve(urls);\n this._backgroundLoader.add(Object.values(resolveResults));\n }\n async backgroundLoadBundle(bundleIds) {\n if (!this._initialized) {\n await this.init();\n }\n if (typeof bundleIds === \"string\") {\n bundleIds = [bundleIds];\n }\n const resolveResults = this.resolver.resolveBundle(bundleIds);\n Object.values(resolveResults).forEach((resolveResult) => {\n this._backgroundLoader.add(Object.values(resolveResult));\n });\n }\n reset() {\n this.resolver.reset();\n this.loader.reset();\n this.cache.reset();\n this._initialized = false;\n }\n get(keys) {\n if (typeof keys === \"string\") {\n return Cache.get(keys);\n }\n const assets = {};\n for (let i = 0; i < keys.length; i++) {\n assets[i] = Cache.get(keys[i]);\n }\n return assets;\n }\n async _mapLoadToResolve(resolveResults, onProgress) {\n const resolveArray = Object.values(resolveResults);\n const resolveKeys = Object.keys(resolveResults);\n this._backgroundLoader.active = false;\n const loadedAssets = await this.loader.load(resolveArray, onProgress);\n this._backgroundLoader.active = true;\n const out = {};\n resolveArray.forEach((resolveResult, i) => {\n const asset = loadedAssets[resolveResult.src];\n const keys = [resolveResult.src];\n if (resolveResult.alias) {\n keys.push(...resolveResult.alias);\n }\n out[resolveKeys[i]] = asset;\n Cache.set(keys, asset);\n });\n return out;\n }\n async unload(urls) {\n if (!this._initialized) {\n await this.init();\n }\n const urlArray = convertToList(urls).map((url) => typeof url !== \"string\" ? url.src : url);\n const resolveResults = this.resolver.resolve(urlArray);\n await this._unloadFromResolved(resolveResults);\n }\n async unloadBundle(bundleIds) {\n if (!this._initialized) {\n await this.init();\n }\n bundleIds = convertToList(bundleIds);\n const resolveResults = this.resolver.resolveBundle(bundleIds);\n const promises = Object.keys(resolveResults).map((bundleId) => this._unloadFromResolved(resolveResults[bundleId]));\n await Promise.all(promises);\n }\n async _unloadFromResolved(resolveResult) {\n const resolveArray = Object.values(resolveResult);\n resolveArray.forEach((resolveResult2) => {\n Cache.remove(resolveResult2.src);\n });\n await this.loader.unload(resolveArray);\n }\n get detections() {\n return this._detections;\n }\n}\nconst Assets = new AssetsClass();\nextensions.handleByList(ExtensionType.LoadParser, Assets.loader.parsers).handleByList(ExtensionType.ResolveParser, Assets.resolver.parsers).handleByList(ExtensionType.CacheParser, Assets.cache.parsers).handleByList(ExtensionType.DetectionParser, Assets.detections);\n\nexport { Assets, AssetsClass };\n//# sourceMappingURL=Assets.mjs.map\n","import { ExtensionType, extensions } from '@pixi/core';\n\nconst assetKeyMap = {\n loader: ExtensionType.LoadParser,\n resolver: ExtensionType.ResolveParser,\n cache: ExtensionType.CacheParser,\n detection: ExtensionType.DetectionParser\n};\nextensions.handle(ExtensionType.Asset, (extension) => {\n const ref = extension.ref;\n Object.entries(assetKeyMap).filter(([key]) => !!ref[key]).forEach(([key, type]) => extensions.add(Object.assign(ref[key], { extension: ref[key].extension ?? type })));\n}, (extension) => {\n const ref = extension.ref;\n Object.keys(assetKeyMap).filter((key) => !!ref[key]).forEach((key) => extensions.remove(ref[key]));\n});\n//# sourceMappingURL=AssetExtension.mjs.map\n","import { ExtensionType, Texture, extensions } from '@pixi/core';\n\nconst cacheTextureArray = {\n extension: ExtensionType.CacheParser,\n test: (asset) => Array.isArray(asset) && asset.every((t) => t instanceof Texture),\n getCacheableAssets: (keys, asset) => {\n const out = {};\n keys.forEach((key) => {\n asset.forEach((item, i) => {\n out[key + (i === 0 ? \"\" : i + 1)] = item;\n });\n });\n return out;\n }\n};\nextensions.add(cacheTextureArray);\n\nexport { cacheTextureArray };\n//# sourceMappingURL=cacheTextureArray.mjs.map\n","var LoaderParserPriority = /* @__PURE__ */ ((LoaderParserPriority2) => {\n LoaderParserPriority2[LoaderParserPriority2[\"Low\"] = 0] = \"Low\";\n LoaderParserPriority2[LoaderParserPriority2[\"Normal\"] = 1] = \"Normal\";\n LoaderParserPriority2[LoaderParserPriority2[\"High\"] = 2] = \"High\";\n return LoaderParserPriority2;\n})(LoaderParserPriority || {});\n\nexport { LoaderParserPriority };\n//# sourceMappingURL=LoaderParser.mjs.map\n","import { ExtensionType, utils, settings, extensions } from '@pixi/core';\nimport { LoaderParserPriority } from './LoaderParser.mjs';\n\nconst loadJson = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low\n },\n test(url) {\n return utils.path.extname(url).includes(\".json\");\n },\n async load(url) {\n const response = await settings.ADAPTER.fetch(url);\n const json = await response.json();\n return json;\n }\n};\nextensions.add(loadJson);\n\nexport { loadJson };\n//# sourceMappingURL=loadJson.mjs.map\n","import { ExtensionType, utils, settings, extensions } from '@pixi/core';\nimport { LoaderParserPriority } from './LoaderParser.mjs';\n\nconst loadTxt = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low\n },\n test(url) {\n return utils.path.extname(url).includes(\".txt\");\n },\n async load(url) {\n const response = await settings.ADAPTER.fetch(url);\n const txt = await response.text();\n return txt;\n }\n};\nextensions.add(loadTxt);\n\nexport { loadTxt };\n//# sourceMappingURL=loadTxt.mjs.map\n","import { utils, ExtensionType, settings, extensions } from '@pixi/core';\nimport { LoaderParserPriority } from './LoaderParser.mjs';\n\nconst validWeights = [\n \"normal\",\n \"bold\",\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\"\n];\nconst validFonts = [\"woff\", \"woff2\", \"ttf\", \"otf\"];\nfunction getFontFamilyName(url) {\n const ext = utils.path.extname(url);\n const name = utils.path.basename(url, ext);\n const nameWithSpaces = name.replace(/(-|_)/g, \" \");\n const nameTitleCase = nameWithSpaces.toLowerCase().split(\" \").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(\" \");\n return nameTitleCase;\n}\nconst loadWebFont = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low\n },\n test(url) {\n const tempURL = url.split(\"?\")[0];\n const extension = tempURL.split(\".\").pop();\n return validFonts.includes(extension);\n },\n async load(url, options) {\n if (!globalThis.navigator.onLine) {\n throw new Error(\"[loadWebFont] Cannot load font - navigator is offline\");\n }\n const fonts = settings.ADAPTER.getFontFaceSet();\n if (fonts) {\n const fontFaces = [];\n const name = options.data?.family ?? getFontFamilyName(url);\n const weights = options.data?.weights?.filter((weight) => validWeights.includes(weight)) ?? [\"normal\"];\n const data = options.data ?? {};\n for (let i = 0; i < weights.length; i++) {\n const weight = weights[i];\n const font = new FontFace(name, `url(${url})`, {\n ...data,\n weight\n });\n await font.load();\n fonts.add(font);\n fontFaces.push(font);\n }\n return fontFaces.length === 1 ? fontFaces[0] : fontFaces;\n }\n return null;\n },\n unload(font) {\n (Array.isArray(font) ? font : [font]).forEach((t) => settings.ADAPTER.getFontFaceSet().delete(t));\n }\n};\nextensions.add(loadWebFont);\n\nexport { getFontFamilyName, loadWebFont };\n//# sourceMappingURL=loadWebFont.mjs.map\n","let UUID = 0;\nlet MAX_WORKERS;\nconst WHITE_PNG = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=\";\nconst checkImageBitmapCode = {\n id: \"checkImageBitmap\",\n code: `\n async function checkImageBitmap()\n {\n try\n {\n if (typeof createImageBitmap !== 'function') return false;\n\n const response = await fetch('${WHITE_PNG}');\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n\n return imageBitmap.width === 1 && imageBitmap.height === 1;\n }\n catch (e)\n {\n return false;\n }\n }\n checkImageBitmap().then((result) => { self.postMessage(result); });\n `\n};\nconst workerCode = {\n id: \"loadImageBitmap\",\n code: `\n async function loadImageBitmap(url)\n {\n const response = await fetch(url);\n\n if (!response.ok)\n {\n throw new Error(\\`[WorkerManager.loadImageBitmap] Failed to fetch \\${url}: \\`\n + \\`\\${response.status} \\${response.statusText}\\`);\n }\n\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n\n return imageBitmap;\n }\n self.onmessage = async (event) =>\n {\n try\n {\n const imageBitmap = await loadImageBitmap(event.data.data[0]);\n\n self.postMessage({\n data: imageBitmap,\n uuid: event.data.uuid,\n id: event.data.id,\n }, [imageBitmap]);\n }\n catch(e)\n {\n self.postMessage({\n error: e,\n uuid: event.data.uuid,\n id: event.data.id,\n });\n }\n };`\n};\nlet workerURL;\nclass WorkerManagerClass {\n constructor() {\n this._initialized = false;\n this._createdWorkers = 0;\n this.workerPool = [];\n this.queue = [];\n this.resolveHash = {};\n }\n isImageBitmapSupported() {\n if (this._isImageBitmapSupported !== void 0)\n return this._isImageBitmapSupported;\n this._isImageBitmapSupported = new Promise((resolve) => {\n const workerURL2 = URL.createObjectURL(new Blob([checkImageBitmapCode.code], { type: \"application/javascript\" }));\n const worker = new Worker(workerURL2);\n worker.addEventListener(\"message\", (event) => {\n worker.terminate();\n URL.revokeObjectURL(workerURL2);\n resolve(event.data);\n });\n });\n return this._isImageBitmapSupported;\n }\n loadImageBitmap(src) {\n return this._run(\"loadImageBitmap\", [src]);\n }\n async _initWorkers() {\n if (this._initialized)\n return;\n this._initialized = true;\n }\n getWorker() {\n if (MAX_WORKERS === void 0) {\n MAX_WORKERS = navigator.hardwareConcurrency || 4;\n }\n let worker = this.workerPool.pop();\n if (!worker && this._createdWorkers < MAX_WORKERS) {\n if (!workerURL) {\n workerURL = URL.createObjectURL(new Blob([workerCode.code], { type: \"application/javascript\" }));\n }\n this._createdWorkers++;\n worker = new Worker(workerURL);\n worker.addEventListener(\"message\", (event) => {\n this.complete(event.data);\n this.returnWorker(event.target);\n this.next();\n });\n }\n return worker;\n }\n returnWorker(worker) {\n this.workerPool.push(worker);\n }\n complete(data) {\n if (data.error !== void 0) {\n this.resolveHash[data.uuid].reject(data.error);\n } else {\n this.resolveHash[data.uuid].resolve(data.data);\n }\n this.resolveHash[data.uuid] = null;\n }\n async _run(id, args) {\n await this._initWorkers();\n const promise = new Promise((resolve, reject) => {\n this.queue.push({ id, arguments: args, resolve, reject });\n });\n this.next();\n return promise;\n }\n next() {\n if (!this.queue.length)\n return;\n const worker = this.getWorker();\n if (!worker) {\n return;\n }\n const toDo = this.queue.pop();\n const id = toDo.id;\n this.resolveHash[UUID] = { resolve: toDo.resolve, reject: toDo.reject };\n worker.postMessage({\n data: toDo.arguments,\n uuid: UUID++,\n id\n });\n }\n}\nconst WorkerManager = new WorkerManagerClass();\n\nexport { WorkerManager };\n//# sourceMappingURL=WorkerManager.mjs.map\n","import { utils } from '@pixi/core';\n\nfunction checkExtension(url, extension) {\n const tempURL = url.split(\"?\")[0];\n const ext = utils.path.extname(tempURL).toLowerCase();\n if (Array.isArray(extension)) {\n return extension.includes(ext.toLowerCase());\n }\n return ext.toLowerCase() === extension;\n}\n\nexport { checkExtension };\n//# sourceMappingURL=checkExtension.mjs.map\n","import { Texture } from '@pixi/core';\n\nfunction createTexture(base, loader, url) {\n const texture = new Texture(base);\n texture.baseTexture.on(\"dispose\", () => {\n delete loader.promiseCache[url];\n });\n return texture;\n}\n\nexport { createTexture };\n//# sourceMappingURL=createTexture.mjs.map\n","import { settings, ExtensionType, BaseTexture, utils, extensions } from '@pixi/core';\nimport { LoaderParserPriority } from '../LoaderParser.mjs';\nimport { WorkerManager } from '../WorkerManager.mjs';\nimport { checkExtension } from './utils/checkExtension.mjs';\nimport { createTexture } from './utils/createTexture.mjs';\n\nconst validImages = [\".jpg\", \".png\", \".jpeg\", \".avif\", \".webp\"];\nasync function loadImageBitmap(url) {\n const response = await settings.ADAPTER.fetch(url);\n if (!response.ok) {\n throw new Error(`[loadImageBitmap] Failed to fetch ${url}: ${response.status} ${response.statusText}`);\n }\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n return imageBitmap;\n}\nconst loadTextures = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n config: {\n preferWorkers: true\n },\n test(url) {\n let isValidBase64Suffix = false;\n for (let i = 0; i < validImages.length; i++) {\n if (url.startsWith(`data:image/${validImages[i].slice(1)}`)) {\n isValidBase64Suffix = true;\n break;\n }\n }\n return isValidBase64Suffix || checkExtension(url, validImages);\n },\n async load(url, asset, loader) {\n let src = null;\n if (globalThis.createImageBitmap) {\n if (this.config.preferWorkers && await WorkerManager.isImageBitmapSupported()) {\n src = await WorkerManager.loadImageBitmap(url);\n } else {\n src = await loadImageBitmap(url);\n }\n } else {\n src = await new Promise((resolve) => {\n src = new Image();\n src.crossOrigin = \"anonymous\";\n src.src = url;\n if (src.complete) {\n resolve(src);\n } else {\n src.onload = () => {\n resolve(src);\n };\n }\n });\n }\n const base = new BaseTexture(src, {\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data\n });\n base.resource.src = url;\n return createTexture(base, loader, url);\n },\n unload(texture) {\n texture.destroy(true);\n }\n};\nextensions.add(loadTextures);\n\nexport { loadImageBitmap, loadTextures };\n//# sourceMappingURL=loadTexture.mjs.map\n","import { ExtensionType, utils, SVGResource, BaseTexture, settings } from '@pixi/core';\nimport { LoaderParserPriority } from '../LoaderParser.mjs';\nimport { loadTextures } from './loadTexture.mjs';\nimport { createTexture } from './utils/createTexture.mjs';\n\nconst loadSVG = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n test(url) {\n return utils.path.extname(url).includes(\".svg\");\n },\n async testParse(data) {\n return SVGResource.test(data);\n },\n async parse(asset, data, loader) {\n const src = new SVGResource(asset, data?.data?.resourceOptions);\n const base = new BaseTexture(src, {\n resolution: utils.getResolutionOfUrl(asset),\n ...data?.data\n });\n base.resource.src = asset;\n const texture = createTexture(base, loader, asset);\n if (!data?.data?.resourceOptions?.autoLoad) {\n await src.load();\n }\n return texture;\n },\n async load(url, _options) {\n const response = await settings.ADAPTER.fetch(url);\n return response.text();\n },\n unload: loadTextures.unload\n};\n\nexport { loadSVG };\n//# sourceMappingURL=loadSVG.mjs.map\n","import { ExtensionType, settings, extensions } from '@pixi/core';\nimport '../../loader/index.mjs';\nimport { loadTextures } from '../../loader/parsers/textures/loadTexture.mjs';\n\nconst resolveTextureUrl = {\n extension: ExtensionType.ResolveParser,\n test: loadTextures.test,\n parse: (value) => ({\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: value.split(\".\").pop(),\n src: value\n })\n};\nextensions.add(resolveTextureUrl);\n\nexport { resolveTextureUrl };\n//# sourceMappingURL=resolveTextureUrl.mjs.map\n","import { ExtensionType, settings, extensions } from '@pixi/core';\n\nconst detectAvif = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 1\n },\n test: async () => {\n if (!globalThis.createImageBitmap)\n return false;\n const avifData = \"data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=\";\n const blob = await settings.ADAPTER.fetch(avifData).then((r) => r.blob());\n return createImageBitmap(blob).then(() => true, () => false);\n },\n add: async (formats) => [...formats, \"avif\"],\n remove: async (formats) => formats.filter((f) => f !== \"avif\")\n};\nextensions.add(detectAvif);\n\nexport { detectAvif };\n//# sourceMappingURL=detectAvif.mjs.map\n","import { ExtensionType, settings, extensions } from '@pixi/core';\n\nconst detectWebp = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 0\n },\n test: async () => {\n if (!globalThis.createImageBitmap)\n return false;\n const webpData = \"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=\";\n const blob = await settings.ADAPTER.fetch(webpData).then((r) => r.blob());\n return createImageBitmap(blob).then(() => true, () => false);\n },\n add: async (formats) => [...formats, \"webp\"],\n remove: async (formats) => formats.filter((f) => f !== \"webp\")\n};\nextensions.add(detectWebp);\n\nexport { detectWebp };\n//# sourceMappingURL=detectWebp.mjs.map\n","import { ExtensionType, extensions } from '@pixi/core';\n\nconst imageFormats = [\"png\", \"jpg\", \"jpeg\"];\nconst detectDefaults = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: -1\n },\n test: () => Promise.resolve(true),\n add: async (formats) => [...formats, ...imageFormats],\n remove: async (formats) => formats.filter((f) => !imageFormats.includes(f))\n};\nextensions.add(detectDefaults);\n\nexport { detectDefaults };\n//# sourceMappingURL=detectDefaults.mjs.map\n","var INTERNAL_FORMATS = /* @__PURE__ */ ((INTERNAL_FORMATS2) => {\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_S3TC_DXT1_EXT\"] = 33776] = \"COMPRESSED_RGB_S3TC_DXT1_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_S3TC_DXT1_EXT\"] = 33777] = \"COMPRESSED_RGBA_S3TC_DXT1_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_S3TC_DXT3_EXT\"] = 33778] = \"COMPRESSED_RGBA_S3TC_DXT3_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_S3TC_DXT5_EXT\"] = 33779] = \"COMPRESSED_RGBA_S3TC_DXT5_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT\"] = 35917] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT\"] = 35918] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\"] = 35919] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB_S3TC_DXT1_EXT\"] = 35916] = \"COMPRESSED_SRGB_S3TC_DXT1_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_R11_EAC\"] = 37488] = \"COMPRESSED_R11_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SIGNED_R11_EAC\"] = 37489] = \"COMPRESSED_SIGNED_R11_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RG11_EAC\"] = 37490] = \"COMPRESSED_RG11_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SIGNED_RG11_EAC\"] = 37491] = \"COMPRESSED_SIGNED_RG11_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB8_ETC2\"] = 37492] = \"COMPRESSED_RGB8_ETC2\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA8_ETC2_EAC\"] = 37496] = \"COMPRESSED_RGBA8_ETC2_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB8_ETC2\"] = 37493] = \"COMPRESSED_SRGB8_ETC2\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\"] = 37497] = \"COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\"] = 37494] = \"COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\"] = 37495] = \"COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_PVRTC_4BPPV1_IMG\"] = 35840] = \"COMPRESSED_RGB_PVRTC_4BPPV1_IMG\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\"] = 35842] = \"COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_PVRTC_2BPPV1_IMG\"] = 35841] = \"COMPRESSED_RGB_PVRTC_2BPPV1_IMG\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_PVRTC_2BPPV1_IMG\"] = 35843] = \"COMPRESSED_RGBA_PVRTC_2BPPV1_IMG\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_ETC1_WEBGL\"] = 36196] = \"COMPRESSED_RGB_ETC1_WEBGL\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_ATC_WEBGL\"] = 35986] = \"COMPRESSED_RGB_ATC_WEBGL\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL\"] = 35986] = \"COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\"] = 34798] = \"COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_ASTC_4x4_KHR\"] = 37808] = \"COMPRESSED_RGBA_ASTC_4x4_KHR\";\n return INTERNAL_FORMATS2;\n})(INTERNAL_FORMATS || {});\nconst INTERNAL_FORMAT_TO_BYTES_PER_PIXEL = {\n [33776 /* COMPRESSED_RGB_S3TC_DXT1_EXT */]: 0.5,\n [33777 /* COMPRESSED_RGBA_S3TC_DXT1_EXT */]: 0.5,\n [33778 /* COMPRESSED_RGBA_S3TC_DXT3_EXT */]: 1,\n [33779 /* COMPRESSED_RGBA_S3TC_DXT5_EXT */]: 1,\n [35916 /* COMPRESSED_SRGB_S3TC_DXT1_EXT */]: 0.5,\n [35917 /* COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT */]: 0.5,\n [35918 /* COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT */]: 1,\n [35919 /* COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT */]: 1,\n [37488 /* COMPRESSED_R11_EAC */]: 0.5,\n [37489 /* COMPRESSED_SIGNED_R11_EAC */]: 0.5,\n [37490 /* COMPRESSED_RG11_EAC */]: 1,\n [37491 /* COMPRESSED_SIGNED_RG11_EAC */]: 1,\n [37492 /* COMPRESSED_RGB8_ETC2 */]: 0.5,\n [37496 /* COMPRESSED_RGBA8_ETC2_EAC */]: 1,\n [37493 /* COMPRESSED_SRGB8_ETC2 */]: 0.5,\n [37497 /* COMPRESSED_SRGB8_ALPHA8_ETC2_EAC */]: 1,\n [37494 /* COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 */]: 0.5,\n [37495 /* COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 */]: 0.5,\n [35840 /* COMPRESSED_RGB_PVRTC_4BPPV1_IMG */]: 0.5,\n [35842 /* COMPRESSED_RGBA_PVRTC_4BPPV1_IMG */]: 0.5,\n [35841 /* COMPRESSED_RGB_PVRTC_2BPPV1_IMG */]: 0.25,\n [35843 /* COMPRESSED_RGBA_PVRTC_2BPPV1_IMG */]: 0.25,\n [36196 /* COMPRESSED_RGB_ETC1_WEBGL */]: 0.5,\n [35986 /* COMPRESSED_RGB_ATC_WEBGL */]: 0.5,\n [35986 /* COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL */]: 1,\n [34798 /* COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL */]: 1,\n [37808 /* COMPRESSED_RGBA_ASTC_4x4_KHR */]: 1\n};\n\nexport { INTERNAL_FORMATS, INTERNAL_FORMAT_TO_BYTES_PER_PIXEL };\n//# sourceMappingURL=const.mjs.map\n","import { BufferResource, ViewableBuffer } from '@pixi/core';\n\nclass BlobResource extends BufferResource {\n constructor(source, options = { width: 1, height: 1, autoLoad: true }) {\n let origin;\n let data;\n if (typeof source === \"string\") {\n origin = source;\n data = new Uint8Array();\n } else {\n origin = null;\n data = source;\n }\n super(data, options);\n this.origin = origin;\n this.buffer = data ? new ViewableBuffer(data) : null;\n if (this.origin && options.autoLoad !== false) {\n this.load();\n }\n if (data?.length) {\n this.loaded = true;\n this.onBlobLoaded(this.buffer.rawBinaryData);\n }\n }\n onBlobLoaded(_data) {\n }\n async load() {\n const response = await fetch(this.origin);\n const blob = await response.blob();\n const arrayBuffer = await blob.arrayBuffer();\n this.data = new Uint32Array(arrayBuffer);\n this.buffer = new ViewableBuffer(arrayBuffer);\n this.loaded = true;\n this.onBlobLoaded(arrayBuffer);\n this.update();\n return this;\n }\n}\n\nexport { BlobResource };\n//# sourceMappingURL=BlobResource.mjs.map\n","import { BlobResource } from './BlobResource.mjs';\nimport { INTERNAL_FORMAT_TO_BYTES_PER_PIXEL } from '../const.mjs';\n\nclass CompressedTextureResource extends BlobResource {\n constructor(source, options) {\n super(source, options);\n this.format = options.format;\n this.levels = options.levels || 1;\n this._width = options.width;\n this._height = options.height;\n this._extension = CompressedTextureResource._formatToExtension(this.format);\n if (options.levelBuffers || this.buffer) {\n this._levelBuffers = options.levelBuffers || CompressedTextureResource._createLevelBuffers(source instanceof Uint8Array ? source : this.buffer.uint8View, this.format, this.levels, 4, 4, this.width, this.height);\n }\n }\n upload(renderer, _texture, _glTexture) {\n const gl = renderer.gl;\n const extension = renderer.context.extensions[this._extension];\n if (!extension) {\n throw new Error(`${this._extension} textures are not supported on the current machine`);\n }\n if (!this._levelBuffers) {\n return false;\n }\n for (let i = 0, j = this.levels; i < j; i++) {\n const { levelID, levelWidth, levelHeight, levelBuffer } = this._levelBuffers[i];\n gl.compressedTexImage2D(gl.TEXTURE_2D, levelID, this.format, levelWidth, levelHeight, 0, levelBuffer);\n }\n return true;\n }\n onBlobLoaded() {\n this._levelBuffers = CompressedTextureResource._createLevelBuffers(this.buffer.uint8View, this.format, this.levels, 4, 4, this.width, this.height);\n }\n static _formatToExtension(format) {\n if (format >= 33776 && format <= 33779) {\n return \"s3tc\";\n } else if (format >= 37488 && format <= 37497) {\n return \"etc\";\n } else if (format >= 35840 && format <= 35843) {\n return \"pvrtc\";\n } else if (format >= 36196) {\n return \"etc1\";\n } else if (format >= 35986 && format <= 34798) {\n return \"atc\";\n }\n throw new Error(\"Invalid (compressed) texture format given!\");\n }\n static _createLevelBuffers(buffer, format, levels, blockWidth, blockHeight, imageWidth, imageHeight) {\n const buffers = new Array(levels);\n let offset = buffer.byteOffset;\n let levelWidth = imageWidth;\n let levelHeight = imageHeight;\n let alignedLevelWidth = levelWidth + blockWidth - 1 & ~(blockWidth - 1);\n let alignedLevelHeight = levelHeight + blockHeight - 1 & ~(blockHeight - 1);\n let levelSize = alignedLevelWidth * alignedLevelHeight * INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[format];\n for (let i = 0; i < levels; i++) {\n buffers[i] = {\n levelID: i,\n levelWidth: levels > 1 ? levelWidth : alignedLevelWidth,\n levelHeight: levels > 1 ? levelHeight : alignedLevelHeight,\n levelBuffer: new Uint8Array(buffer.buffer, offset, levelSize)\n };\n offset += levelSize;\n levelWidth = levelWidth >> 1 || 1;\n levelHeight = levelHeight >> 1 || 1;\n alignedLevelWidth = levelWidth + blockWidth - 1 & ~(blockWidth - 1);\n alignedLevelHeight = levelHeight + blockHeight - 1 & ~(blockHeight - 1);\n levelSize = alignedLevelWidth * alignedLevelHeight * INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[format];\n }\n return buffers;\n }\n}\n\nexport { CompressedTextureResource };\n//# sourceMappingURL=CompressedTextureResource.mjs.map\n","import { ExtensionType, settings, extensions as extensions$1 } from '@pixi/core';\n\nlet storedGl;\nlet extensions;\nfunction getCompressedTextureExtensions() {\n extensions = {\n s3tc: storedGl.getExtension(\"WEBGL_compressed_texture_s3tc\"),\n s3tc_sRGB: storedGl.getExtension(\"WEBGL_compressed_texture_s3tc_srgb\"),\n etc: storedGl.getExtension(\"WEBGL_compressed_texture_etc\"),\n etc1: storedGl.getExtension(\"WEBGL_compressed_texture_etc1\"),\n pvrtc: storedGl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || storedGl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\"),\n atc: storedGl.getExtension(\"WEBGL_compressed_texture_atc\"),\n astc: storedGl.getExtension(\"WEBGL_compressed_texture_astc\")\n };\n}\nconst detectCompressedTextures = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 2\n },\n test: async () => {\n const canvas = settings.ADAPTER.createCanvas();\n const gl = canvas.getContext(\"webgl\");\n if (!gl) {\n return false;\n }\n storedGl = gl;\n return true;\n },\n add: async (formats) => {\n if (!extensions)\n getCompressedTextureExtensions();\n const textureFormats = [];\n for (const extensionName in extensions) {\n const extension = extensions[extensionName];\n if (!extension) {\n continue;\n }\n textureFormats.push(extensionName);\n }\n return [...textureFormats, ...formats];\n },\n remove: async (formats) => {\n if (!extensions)\n getCompressedTextureExtensions();\n return formats.filter((f) => !(f in extensions));\n }\n};\nextensions$1.add(detectCompressedTextures);\n\nexport { detectCompressedTextures };\n//# sourceMappingURL=detectCompressedTextures.mjs.map\n","import '../resources/index.mjs';\nimport { INTERNAL_FORMATS, INTERNAL_FORMAT_TO_BYTES_PER_PIXEL } from '../const.mjs';\nimport { CompressedTextureResource } from '../resources/CompressedTextureResource.mjs';\n\nconst DDS_MAGIC_SIZE = 4;\nconst DDS_HEADER_SIZE = 124;\nconst DDS_HEADER_PF_SIZE = 32;\nconst DDS_HEADER_DX10_SIZE = 20;\nconst DDS_MAGIC = 542327876;\nconst DDS_FIELDS = {\n SIZE: 1,\n FLAGS: 2,\n HEIGHT: 3,\n WIDTH: 4,\n MIPMAP_COUNT: 7,\n PIXEL_FORMAT: 19\n};\nconst DDS_PF_FIELDS = {\n SIZE: 0,\n FLAGS: 1,\n FOURCC: 2,\n RGB_BITCOUNT: 3,\n R_BIT_MASK: 4,\n G_BIT_MASK: 5,\n B_BIT_MASK: 6,\n A_BIT_MASK: 7\n};\nconst DDS_DX10_FIELDS = {\n DXGI_FORMAT: 0,\n RESOURCE_DIMENSION: 1,\n MISC_FLAG: 2,\n ARRAY_SIZE: 3,\n MISC_FLAGS2: 4\n};\nvar DXGI_FORMAT = /* @__PURE__ */ ((DXGI_FORMAT2) => {\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_UNKNOWN\"] = 0] = \"DXGI_FORMAT_UNKNOWN\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32A32_TYPELESS\"] = 1] = \"DXGI_FORMAT_R32G32B32A32_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32A32_FLOAT\"] = 2] = \"DXGI_FORMAT_R32G32B32A32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32A32_UINT\"] = 3] = \"DXGI_FORMAT_R32G32B32A32_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32A32_SINT\"] = 4] = \"DXGI_FORMAT_R32G32B32A32_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32_TYPELESS\"] = 5] = \"DXGI_FORMAT_R32G32B32_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32_FLOAT\"] = 6] = \"DXGI_FORMAT_R32G32B32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32_UINT\"] = 7] = \"DXGI_FORMAT_R32G32B32_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32_SINT\"] = 8] = \"DXGI_FORMAT_R32G32B32_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_TYPELESS\"] = 9] = \"DXGI_FORMAT_R16G16B16A16_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_FLOAT\"] = 10] = \"DXGI_FORMAT_R16G16B16A16_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_UNORM\"] = 11] = \"DXGI_FORMAT_R16G16B16A16_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_UINT\"] = 12] = \"DXGI_FORMAT_R16G16B16A16_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_SNORM\"] = 13] = \"DXGI_FORMAT_R16G16B16A16_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_SINT\"] = 14] = \"DXGI_FORMAT_R16G16B16A16_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32_TYPELESS\"] = 15] = \"DXGI_FORMAT_R32G32_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32_FLOAT\"] = 16] = \"DXGI_FORMAT_R32G32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32_UINT\"] = 17] = \"DXGI_FORMAT_R32G32_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32_SINT\"] = 18] = \"DXGI_FORMAT_R32G32_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G8X24_TYPELESS\"] = 19] = \"DXGI_FORMAT_R32G8X24_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_D32_FLOAT_S8X24_UINT\"] = 20] = \"DXGI_FORMAT_D32_FLOAT_S8X24_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS\"] = 21] = \"DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_X32_TYPELESS_G8X24_UINT\"] = 22] = \"DXGI_FORMAT_X32_TYPELESS_G8X24_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R10G10B10A2_TYPELESS\"] = 23] = \"DXGI_FORMAT_R10G10B10A2_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R10G10B10A2_UNORM\"] = 24] = \"DXGI_FORMAT_R10G10B10A2_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R10G10B10A2_UINT\"] = 25] = \"DXGI_FORMAT_R10G10B10A2_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R11G11B10_FLOAT\"] = 26] = \"DXGI_FORMAT_R11G11B10_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_TYPELESS\"] = 27] = \"DXGI_FORMAT_R8G8B8A8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_UNORM\"] = 28] = \"DXGI_FORMAT_R8G8B8A8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_UNORM_SRGB\"] = 29] = \"DXGI_FORMAT_R8G8B8A8_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_UINT\"] = 30] = \"DXGI_FORMAT_R8G8B8A8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_SNORM\"] = 31] = \"DXGI_FORMAT_R8G8B8A8_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_SINT\"] = 32] = \"DXGI_FORMAT_R8G8B8A8_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_TYPELESS\"] = 33] = \"DXGI_FORMAT_R16G16_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_FLOAT\"] = 34] = \"DXGI_FORMAT_R16G16_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_UNORM\"] = 35] = \"DXGI_FORMAT_R16G16_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_UINT\"] = 36] = \"DXGI_FORMAT_R16G16_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_SNORM\"] = 37] = \"DXGI_FORMAT_R16G16_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_SINT\"] = 38] = \"DXGI_FORMAT_R16G16_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_TYPELESS\"] = 39] = \"DXGI_FORMAT_R32_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_D32_FLOAT\"] = 40] = \"DXGI_FORMAT_D32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_FLOAT\"] = 41] = \"DXGI_FORMAT_R32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_UINT\"] = 42] = \"DXGI_FORMAT_R32_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_SINT\"] = 43] = \"DXGI_FORMAT_R32_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R24G8_TYPELESS\"] = 44] = \"DXGI_FORMAT_R24G8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_D24_UNORM_S8_UINT\"] = 45] = \"DXGI_FORMAT_D24_UNORM_S8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R24_UNORM_X8_TYPELESS\"] = 46] = \"DXGI_FORMAT_R24_UNORM_X8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_X24_TYPELESS_G8_UINT\"] = 47] = \"DXGI_FORMAT_X24_TYPELESS_G8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_TYPELESS\"] = 48] = \"DXGI_FORMAT_R8G8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_UNORM\"] = 49] = \"DXGI_FORMAT_R8G8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_UINT\"] = 50] = \"DXGI_FORMAT_R8G8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_SNORM\"] = 51] = \"DXGI_FORMAT_R8G8_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_SINT\"] = 52] = \"DXGI_FORMAT_R8G8_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_TYPELESS\"] = 53] = \"DXGI_FORMAT_R16_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_FLOAT\"] = 54] = \"DXGI_FORMAT_R16_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_D16_UNORM\"] = 55] = \"DXGI_FORMAT_D16_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_UNORM\"] = 56] = \"DXGI_FORMAT_R16_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_UINT\"] = 57] = \"DXGI_FORMAT_R16_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_SNORM\"] = 58] = \"DXGI_FORMAT_R16_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_SINT\"] = 59] = \"DXGI_FORMAT_R16_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_TYPELESS\"] = 60] = \"DXGI_FORMAT_R8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_UNORM\"] = 61] = \"DXGI_FORMAT_R8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_UINT\"] = 62] = \"DXGI_FORMAT_R8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_SNORM\"] = 63] = \"DXGI_FORMAT_R8_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_SINT\"] = 64] = \"DXGI_FORMAT_R8_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_A8_UNORM\"] = 65] = \"DXGI_FORMAT_A8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R1_UNORM\"] = 66] = \"DXGI_FORMAT_R1_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R9G9B9E5_SHAREDEXP\"] = 67] = \"DXGI_FORMAT_R9G9B9E5_SHAREDEXP\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_B8G8_UNORM\"] = 68] = \"DXGI_FORMAT_R8G8_B8G8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_G8R8_G8B8_UNORM\"] = 69] = \"DXGI_FORMAT_G8R8_G8B8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC1_TYPELESS\"] = 70] = \"DXGI_FORMAT_BC1_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC1_UNORM\"] = 71] = \"DXGI_FORMAT_BC1_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC1_UNORM_SRGB\"] = 72] = \"DXGI_FORMAT_BC1_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC2_TYPELESS\"] = 73] = \"DXGI_FORMAT_BC2_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC2_UNORM\"] = 74] = \"DXGI_FORMAT_BC2_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC2_UNORM_SRGB\"] = 75] = \"DXGI_FORMAT_BC2_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC3_TYPELESS\"] = 76] = \"DXGI_FORMAT_BC3_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC3_UNORM\"] = 77] = \"DXGI_FORMAT_BC3_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC3_UNORM_SRGB\"] = 78] = \"DXGI_FORMAT_BC3_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC4_TYPELESS\"] = 79] = \"DXGI_FORMAT_BC4_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC4_UNORM\"] = 80] = \"DXGI_FORMAT_BC4_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC4_SNORM\"] = 81] = \"DXGI_FORMAT_BC4_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC5_TYPELESS\"] = 82] = \"DXGI_FORMAT_BC5_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC5_UNORM\"] = 83] = \"DXGI_FORMAT_BC5_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC5_SNORM\"] = 84] = \"DXGI_FORMAT_BC5_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B5G6R5_UNORM\"] = 85] = \"DXGI_FORMAT_B5G6R5_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B5G5R5A1_UNORM\"] = 86] = \"DXGI_FORMAT_B5G5R5A1_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8A8_UNORM\"] = 87] = \"DXGI_FORMAT_B8G8R8A8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8X8_UNORM\"] = 88] = \"DXGI_FORMAT_B8G8R8X8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM\"] = 89] = \"DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8A8_TYPELESS\"] = 90] = \"DXGI_FORMAT_B8G8R8A8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8A8_UNORM_SRGB\"] = 91] = \"DXGI_FORMAT_B8G8R8A8_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8X8_TYPELESS\"] = 92] = \"DXGI_FORMAT_B8G8R8X8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8X8_UNORM_SRGB\"] = 93] = \"DXGI_FORMAT_B8G8R8X8_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC6H_TYPELESS\"] = 94] = \"DXGI_FORMAT_BC6H_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC6H_UF16\"] = 95] = \"DXGI_FORMAT_BC6H_UF16\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC6H_SF16\"] = 96] = \"DXGI_FORMAT_BC6H_SF16\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC7_TYPELESS\"] = 97] = \"DXGI_FORMAT_BC7_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC7_UNORM\"] = 98] = \"DXGI_FORMAT_BC7_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC7_UNORM_SRGB\"] = 99] = \"DXGI_FORMAT_BC7_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_AYUV\"] = 100] = \"DXGI_FORMAT_AYUV\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_Y410\"] = 101] = \"DXGI_FORMAT_Y410\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_Y416\"] = 102] = \"DXGI_FORMAT_Y416\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_NV12\"] = 103] = \"DXGI_FORMAT_NV12\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_P010\"] = 104] = \"DXGI_FORMAT_P010\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_P016\"] = 105] = \"DXGI_FORMAT_P016\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_420_OPAQUE\"] = 106] = \"DXGI_FORMAT_420_OPAQUE\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_YUY2\"] = 107] = \"DXGI_FORMAT_YUY2\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_Y210\"] = 108] = \"DXGI_FORMAT_Y210\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_Y216\"] = 109] = \"DXGI_FORMAT_Y216\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_NV11\"] = 110] = \"DXGI_FORMAT_NV11\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_AI44\"] = 111] = \"DXGI_FORMAT_AI44\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_IA44\"] = 112] = \"DXGI_FORMAT_IA44\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_P8\"] = 113] = \"DXGI_FORMAT_P8\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_A8P8\"] = 114] = \"DXGI_FORMAT_A8P8\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B4G4R4A4_UNORM\"] = 115] = \"DXGI_FORMAT_B4G4R4A4_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_P208\"] = 116] = \"DXGI_FORMAT_P208\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_V208\"] = 117] = \"DXGI_FORMAT_V208\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_V408\"] = 118] = \"DXGI_FORMAT_V408\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE\"] = 119] = \"DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE\"] = 120] = \"DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_FORCE_UINT\"] = 121] = \"DXGI_FORMAT_FORCE_UINT\";\n return DXGI_FORMAT2;\n})(DXGI_FORMAT || {});\nvar D3D10_RESOURCE_DIMENSION = /* @__PURE__ */ ((D3D10_RESOURCE_DIMENSION2) => {\n D3D10_RESOURCE_DIMENSION2[D3D10_RESOURCE_DIMENSION2[\"DDS_DIMENSION_TEXTURE1D\"] = 2] = \"DDS_DIMENSION_TEXTURE1D\";\n D3D10_RESOURCE_DIMENSION2[D3D10_RESOURCE_DIMENSION2[\"DDS_DIMENSION_TEXTURE2D\"] = 3] = \"DDS_DIMENSION_TEXTURE2D\";\n D3D10_RESOURCE_DIMENSION2[D3D10_RESOURCE_DIMENSION2[\"DDS_DIMENSION_TEXTURE3D\"] = 6] = \"DDS_DIMENSION_TEXTURE3D\";\n return D3D10_RESOURCE_DIMENSION2;\n})(D3D10_RESOURCE_DIMENSION || {});\nconst PF_FLAGS = 1;\nconst DDPF_ALPHA = 2;\nconst DDPF_FOURCC = 4;\nconst DDPF_RGB = 64;\nconst DDPF_YUV = 512;\nconst DDPF_LUMINANCE = 131072;\nconst FOURCC_DXT1 = 827611204;\nconst FOURCC_DXT3 = 861165636;\nconst FOURCC_DXT5 = 894720068;\nconst FOURCC_DX10 = 808540228;\nconst DDS_RESOURCE_MISC_TEXTURECUBE = 4;\nconst FOURCC_TO_FORMAT = {\n [FOURCC_DXT1]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n [FOURCC_DXT3]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n [FOURCC_DXT5]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT\n};\nconst DXGI_TO_FORMAT = {\n [70 /* DXGI_FORMAT_BC1_TYPELESS */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n [71 /* DXGI_FORMAT_BC1_UNORM */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n [73 /* DXGI_FORMAT_BC2_TYPELESS */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n [74 /* DXGI_FORMAT_BC2_UNORM */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n [76 /* DXGI_FORMAT_BC3_TYPELESS */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n [77 /* DXGI_FORMAT_BC3_UNORM */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n [72 /* DXGI_FORMAT_BC1_UNORM_SRGB */]: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,\n [75 /* DXGI_FORMAT_BC2_UNORM_SRGB */]: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,\n [78 /* DXGI_FORMAT_BC3_UNORM_SRGB */]: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\n};\nfunction parseDDS(arrayBuffer) {\n const data = new Uint32Array(arrayBuffer);\n const magicWord = data[0];\n if (magicWord !== DDS_MAGIC) {\n throw new Error(\"Invalid DDS file magic word\");\n }\n const header = new Uint32Array(arrayBuffer, 0, DDS_HEADER_SIZE / Uint32Array.BYTES_PER_ELEMENT);\n const height = header[DDS_FIELDS.HEIGHT];\n const width = header[DDS_FIELDS.WIDTH];\n const mipmapCount = header[DDS_FIELDS.MIPMAP_COUNT];\n const pixelFormat = new Uint32Array(arrayBuffer, DDS_FIELDS.PIXEL_FORMAT * Uint32Array.BYTES_PER_ELEMENT, DDS_HEADER_PF_SIZE / Uint32Array.BYTES_PER_ELEMENT);\n const formatFlags = pixelFormat[PF_FLAGS];\n if (formatFlags & DDPF_FOURCC) {\n const fourCC = pixelFormat[DDS_PF_FIELDS.FOURCC];\n if (fourCC !== FOURCC_DX10) {\n const internalFormat2 = FOURCC_TO_FORMAT[fourCC];\n const dataOffset2 = DDS_MAGIC_SIZE + DDS_HEADER_SIZE;\n const texData = new Uint8Array(arrayBuffer, dataOffset2);\n const resource = new CompressedTextureResource(texData, {\n format: internalFormat2,\n width,\n height,\n levels: mipmapCount\n });\n return [resource];\n }\n const dx10Offset = DDS_MAGIC_SIZE + DDS_HEADER_SIZE;\n const dx10Header = new Uint32Array(data.buffer, dx10Offset, DDS_HEADER_DX10_SIZE / Uint32Array.BYTES_PER_ELEMENT);\n const dxgiFormat = dx10Header[DDS_DX10_FIELDS.DXGI_FORMAT];\n const resourceDimension = dx10Header[DDS_DX10_FIELDS.RESOURCE_DIMENSION];\n const miscFlag = dx10Header[DDS_DX10_FIELDS.MISC_FLAG];\n const arraySize = dx10Header[DDS_DX10_FIELDS.ARRAY_SIZE];\n const internalFormat = DXGI_TO_FORMAT[dxgiFormat];\n if (internalFormat === void 0) {\n throw new Error(`DDSParser cannot parse texture data with DXGI format ${dxgiFormat}`);\n }\n if (miscFlag === DDS_RESOURCE_MISC_TEXTURECUBE) {\n throw new Error(\"DDSParser does not support cubemap textures\");\n }\n if (resourceDimension === 6 /* DDS_DIMENSION_TEXTURE3D */) {\n throw new Error(\"DDSParser does not supported 3D texture data\");\n }\n const imageBuffers = new Array();\n const dataOffset = DDS_MAGIC_SIZE + DDS_HEADER_SIZE + DDS_HEADER_DX10_SIZE;\n if (arraySize === 1) {\n imageBuffers.push(new Uint8Array(arrayBuffer, dataOffset));\n } else {\n const pixelSize = INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[internalFormat];\n let imageSize = 0;\n let levelWidth = width;\n let levelHeight = height;\n for (let i = 0; i < mipmapCount; i++) {\n const alignedLevelWidth = Math.max(1, levelWidth + 3 & ~3);\n const alignedLevelHeight = Math.max(1, levelHeight + 3 & ~3);\n const levelSize = alignedLevelWidth * alignedLevelHeight * pixelSize;\n imageSize += levelSize;\n levelWidth = levelWidth >>> 1;\n levelHeight = levelHeight >>> 1;\n }\n let imageOffset = dataOffset;\n for (let i = 0; i < arraySize; i++) {\n imageBuffers.push(new Uint8Array(arrayBuffer, imageOffset, imageSize));\n imageOffset += imageSize;\n }\n }\n return imageBuffers.map((buffer) => new CompressedTextureResource(buffer, {\n format: internalFormat,\n width,\n height,\n levels: mipmapCount\n }));\n }\n if (formatFlags & DDPF_RGB) {\n throw new Error(\"DDSParser does not support uncompressed texture data.\");\n }\n if (formatFlags & DDPF_YUV) {\n throw new Error(\"DDSParser does not supported YUV uncompressed texture data.\");\n }\n if (formatFlags & DDPF_LUMINANCE) {\n throw new Error(\"DDSParser does not support single-channel (lumninance) texture data!\");\n }\n if (formatFlags & DDPF_ALPHA) {\n throw new Error(\"DDSParser does not support single-channel (alpha) texture data!\");\n }\n throw new Error(\"DDSParser failed to load a texture file due to an unknown reason!\");\n}\n\nexport { parseDDS };\n//# sourceMappingURL=parseDDS.mjs.map\n","import { TYPES, FORMATS, BufferResource } from '@pixi/core';\nimport { INTERNAL_FORMAT_TO_BYTES_PER_PIXEL } from '../const.mjs';\nimport '../resources/index.mjs';\nimport { CompressedTextureResource } from '../resources/CompressedTextureResource.mjs';\n\nconst FILE_IDENTIFIER = [171, 75, 84, 88, 32, 49, 49, 187, 13, 10, 26, 10];\nconst ENDIANNESS = 67305985;\nconst KTX_FIELDS = {\n FILE_IDENTIFIER: 0,\n ENDIANNESS: 12,\n GL_TYPE: 16,\n GL_TYPE_SIZE: 20,\n GL_FORMAT: 24,\n GL_INTERNAL_FORMAT: 28,\n GL_BASE_INTERNAL_FORMAT: 32,\n PIXEL_WIDTH: 36,\n PIXEL_HEIGHT: 40,\n PIXEL_DEPTH: 44,\n NUMBER_OF_ARRAY_ELEMENTS: 48,\n NUMBER_OF_FACES: 52,\n NUMBER_OF_MIPMAP_LEVELS: 56,\n BYTES_OF_KEY_VALUE_DATA: 60\n};\nconst FILE_HEADER_SIZE = 64;\nconst TYPES_TO_BYTES_PER_COMPONENT = {\n [TYPES.UNSIGNED_BYTE]: 1,\n [TYPES.UNSIGNED_SHORT]: 2,\n [TYPES.INT]: 4,\n [TYPES.UNSIGNED_INT]: 4,\n [TYPES.FLOAT]: 4,\n [TYPES.HALF_FLOAT]: 8\n};\nconst FORMATS_TO_COMPONENTS = {\n [FORMATS.RGBA]: 4,\n [FORMATS.RGB]: 3,\n [FORMATS.RG]: 2,\n [FORMATS.RED]: 1,\n [FORMATS.LUMINANCE]: 1,\n [FORMATS.LUMINANCE_ALPHA]: 2,\n [FORMATS.ALPHA]: 1\n};\nconst TYPES_TO_BYTES_PER_PIXEL = {\n [TYPES.UNSIGNED_SHORT_4_4_4_4]: 2,\n [TYPES.UNSIGNED_SHORT_5_5_5_1]: 2,\n [TYPES.UNSIGNED_SHORT_5_6_5]: 2\n};\nfunction parseKTX(url, arrayBuffer, loadKeyValueData = false) {\n const dataView = new DataView(arrayBuffer);\n if (!validate(url, dataView)) {\n return null;\n }\n const littleEndian = dataView.getUint32(KTX_FIELDS.ENDIANNESS, true) === ENDIANNESS;\n const glType = dataView.getUint32(KTX_FIELDS.GL_TYPE, littleEndian);\n const glFormat = dataView.getUint32(KTX_FIELDS.GL_FORMAT, littleEndian);\n const glInternalFormat = dataView.getUint32(KTX_FIELDS.GL_INTERNAL_FORMAT, littleEndian);\n const pixelWidth = dataView.getUint32(KTX_FIELDS.PIXEL_WIDTH, littleEndian);\n const pixelHeight = dataView.getUint32(KTX_FIELDS.PIXEL_HEIGHT, littleEndian) || 1;\n const pixelDepth = dataView.getUint32(KTX_FIELDS.PIXEL_DEPTH, littleEndian) || 1;\n const numberOfArrayElements = dataView.getUint32(KTX_FIELDS.NUMBER_OF_ARRAY_ELEMENTS, littleEndian) || 1;\n const numberOfFaces = dataView.getUint32(KTX_FIELDS.NUMBER_OF_FACES, littleEndian);\n const numberOfMipmapLevels = dataView.getUint32(KTX_FIELDS.NUMBER_OF_MIPMAP_LEVELS, littleEndian);\n const bytesOfKeyValueData = dataView.getUint32(KTX_FIELDS.BYTES_OF_KEY_VALUE_DATA, littleEndian);\n if (pixelHeight === 0 || pixelDepth !== 1) {\n throw new Error(\"Only 2D textures are supported\");\n }\n if (numberOfFaces !== 1) {\n throw new Error(\"CubeTextures are not supported by KTXLoader yet!\");\n }\n if (numberOfArrayElements !== 1) {\n throw new Error(\"WebGL does not support array textures\");\n }\n const blockWidth = 4;\n const blockHeight = 4;\n const alignedWidth = pixelWidth + 3 & ~3;\n const alignedHeight = pixelHeight + 3 & ~3;\n const imageBuffers = new Array(numberOfArrayElements);\n let imagePixels = pixelWidth * pixelHeight;\n if (glType === 0) {\n imagePixels = alignedWidth * alignedHeight;\n }\n let imagePixelByteSize;\n if (glType !== 0) {\n if (TYPES_TO_BYTES_PER_COMPONENT[glType]) {\n imagePixelByteSize = TYPES_TO_BYTES_PER_COMPONENT[glType] * FORMATS_TO_COMPONENTS[glFormat];\n } else {\n imagePixelByteSize = TYPES_TO_BYTES_PER_PIXEL[glType];\n }\n } else {\n imagePixelByteSize = INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[glInternalFormat];\n }\n if (imagePixelByteSize === void 0) {\n throw new Error(\"Unable to resolve the pixel format stored in the *.ktx file!\");\n }\n const kvData = loadKeyValueData ? parseKvData(dataView, bytesOfKeyValueData, littleEndian) : null;\n const imageByteSize = imagePixels * imagePixelByteSize;\n let mipByteSize = imageByteSize;\n let mipWidth = pixelWidth;\n let mipHeight = pixelHeight;\n let alignedMipWidth = alignedWidth;\n let alignedMipHeight = alignedHeight;\n let imageOffset = FILE_HEADER_SIZE + bytesOfKeyValueData;\n for (let mipmapLevel = 0; mipmapLevel < numberOfMipmapLevels; mipmapLevel++) {\n const imageSize = dataView.getUint32(imageOffset, littleEndian);\n let elementOffset = imageOffset + 4;\n for (let arrayElement = 0; arrayElement < numberOfArrayElements; arrayElement++) {\n let mips = imageBuffers[arrayElement];\n if (!mips) {\n mips = imageBuffers[arrayElement] = new Array(numberOfMipmapLevels);\n }\n mips[mipmapLevel] = {\n levelID: mipmapLevel,\n levelWidth: numberOfMipmapLevels > 1 || glType !== 0 ? mipWidth : alignedMipWidth,\n levelHeight: numberOfMipmapLevels > 1 || glType !== 0 ? mipHeight : alignedMipHeight,\n levelBuffer: new Uint8Array(arrayBuffer, elementOffset, mipByteSize)\n };\n elementOffset += mipByteSize;\n }\n imageOffset += imageSize + 4;\n imageOffset = imageOffset % 4 !== 0 ? imageOffset + 4 - imageOffset % 4 : imageOffset;\n mipWidth = mipWidth >> 1 || 1;\n mipHeight = mipHeight >> 1 || 1;\n alignedMipWidth = mipWidth + blockWidth - 1 & ~(blockWidth - 1);\n alignedMipHeight = mipHeight + blockHeight - 1 & ~(blockHeight - 1);\n mipByteSize = alignedMipWidth * alignedMipHeight * imagePixelByteSize;\n }\n if (glType !== 0) {\n return {\n uncompressed: imageBuffers.map((levelBuffers) => {\n let buffer = levelBuffers[0].levelBuffer;\n let convertToInt = false;\n if (glType === TYPES.FLOAT) {\n buffer = new Float32Array(levelBuffers[0].levelBuffer.buffer, levelBuffers[0].levelBuffer.byteOffset, levelBuffers[0].levelBuffer.byteLength / 4);\n } else if (glType === TYPES.UNSIGNED_INT) {\n convertToInt = true;\n buffer = new Uint32Array(levelBuffers[0].levelBuffer.buffer, levelBuffers[0].levelBuffer.byteOffset, levelBuffers[0].levelBuffer.byteLength / 4);\n } else if (glType === TYPES.INT) {\n convertToInt = true;\n buffer = new Int32Array(levelBuffers[0].levelBuffer.buffer, levelBuffers[0].levelBuffer.byteOffset, levelBuffers[0].levelBuffer.byteLength / 4);\n }\n return {\n resource: new BufferResource(buffer, {\n width: levelBuffers[0].levelWidth,\n height: levelBuffers[0].levelHeight\n }),\n type: glType,\n format: convertToInt ? convertFormatToInteger(glFormat) : glFormat\n };\n }),\n kvData\n };\n }\n return {\n compressed: imageBuffers.map((levelBuffers) => new CompressedTextureResource(null, {\n format: glInternalFormat,\n width: pixelWidth,\n height: pixelHeight,\n levels: numberOfMipmapLevels,\n levelBuffers\n })),\n kvData\n };\n}\nfunction validate(url, dataView) {\n for (let i = 0; i < FILE_IDENTIFIER.length; i++) {\n if (dataView.getUint8(i) !== FILE_IDENTIFIER[i]) {\n return false;\n }\n }\n return true;\n}\nfunction convertFormatToInteger(format) {\n switch (format) {\n case FORMATS.RGBA:\n return FORMATS.RGBA_INTEGER;\n case FORMATS.RGB:\n return FORMATS.RGB_INTEGER;\n case FORMATS.RG:\n return FORMATS.RG_INTEGER;\n case FORMATS.RED:\n return FORMATS.RED_INTEGER;\n default:\n return format;\n }\n}\nfunction parseKvData(dataView, bytesOfKeyValueData, littleEndian) {\n const kvData = /* @__PURE__ */ new Map();\n let bytesIntoKeyValueData = 0;\n while (bytesIntoKeyValueData < bytesOfKeyValueData) {\n const keyAndValueByteSize = dataView.getUint32(FILE_HEADER_SIZE + bytesIntoKeyValueData, littleEndian);\n const keyAndValueByteOffset = FILE_HEADER_SIZE + bytesIntoKeyValueData + 4;\n const valuePadding = 3 - (keyAndValueByteSize + 3) % 4;\n if (keyAndValueByteSize === 0 || keyAndValueByteSize > bytesOfKeyValueData - bytesIntoKeyValueData) {\n console.error(\"KTXLoader: keyAndValueByteSize out of bounds\");\n break;\n }\n let keyNulByte = 0;\n for (; keyNulByte < keyAndValueByteSize; keyNulByte++) {\n if (dataView.getUint8(keyAndValueByteOffset + keyNulByte) === 0) {\n break;\n }\n }\n if (keyNulByte === -1) {\n console.error(\"KTXLoader: Failed to find null byte terminating kvData key\");\n break;\n }\n const key = new TextDecoder().decode(new Uint8Array(dataView.buffer, keyAndValueByteOffset, keyNulByte));\n const value = new DataView(dataView.buffer, keyAndValueByteOffset + keyNulByte + 1, keyAndValueByteSize - keyNulByte - 1);\n kvData.set(key, value);\n bytesIntoKeyValueData += 4 + keyAndValueByteSize + valuePadding;\n }\n return kvData;\n}\n\nexport { FORMATS_TO_COMPONENTS, TYPES_TO_BYTES_PER_COMPONENT, TYPES_TO_BYTES_PER_PIXEL, parseKTX };\n//# sourceMappingURL=parseKTX.mjs.map\n","import { ExtensionType, settings, BaseTexture, MIPMAP_MODES, ALPHA_MODES, utils, extensions } from '@pixi/core';\nimport { LoaderParserPriority, checkExtension, createTexture } from '@pixi/assets';\nimport '../parsers/index.mjs';\nimport { parseDDS } from '../parsers/parseDDS.mjs';\n\nconst loadDDS = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n test(url) {\n return checkExtension(url, \".dds\");\n },\n async load(url, asset, loader) {\n const response = await settings.ADAPTER.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n const resources = parseDDS(arrayBuffer);\n const textures = resources.map((resource) => {\n const base = new BaseTexture(resource, {\n mipmap: MIPMAP_MODES.OFF,\n alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data\n });\n return createTexture(base, loader, url);\n });\n return textures.length === 1 ? textures[0] : textures;\n },\n unload(texture) {\n if (Array.isArray(texture)) {\n texture.forEach((t) => t.destroy(true));\n } else {\n texture.destroy(true);\n }\n }\n};\nextensions.add(loadDDS);\n\nexport { loadDDS };\n//# sourceMappingURL=loadDDS.mjs.map\n","import { ExtensionType, settings, MIPMAP_MODES, ALPHA_MODES, utils, BaseTexture, extensions } from '@pixi/core';\nimport { LoaderParserPriority, checkExtension, createTexture } from '@pixi/assets';\nimport '../parsers/index.mjs';\nimport { parseKTX } from '../parsers/parseKTX.mjs';\n\nconst loadKTX = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n test(url) {\n return checkExtension(url, \".ktx\");\n },\n async load(url, asset, loader) {\n const response = await settings.ADAPTER.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n const { compressed, uncompressed, kvData } = parseKTX(url, arrayBuffer);\n const resources = compressed ?? uncompressed;\n const options = {\n mipmap: MIPMAP_MODES.OFF,\n alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data\n };\n const textures = resources.map((resource) => {\n if (resources === uncompressed) {\n Object.assign(options, {\n type: resource.type,\n format: resource.format\n });\n }\n const base = new BaseTexture(resource, options);\n base.ktxKeyValueData = kvData;\n return createTexture(base, loader, url);\n });\n return textures.length === 1 ? textures[0] : textures;\n },\n unload(texture) {\n if (Array.isArray(texture)) {\n texture.forEach((t) => t.destroy(true));\n } else {\n texture.destroy(true);\n }\n }\n};\nextensions.add(loadKTX);\n\nexport { loadKTX };\n//# sourceMappingURL=loadKTX.mjs.map\n","import { ExtensionType, settings, extensions } from '@pixi/core';\n\nconst resolveCompressedTextureUrl = {\n extension: ExtensionType.ResolveParser,\n test: (value) => {\n const temp = value.split(\"?\")[0];\n const extension = temp.split(\".\").pop();\n return [\"basis\", \"ktx\", \"dds\"].includes(extension);\n },\n parse: (value) => {\n const temp = value.split(\"?\")[0];\n const extension = temp.split(\".\").pop();\n if (extension === \"ktx\") {\n const extensions2 = [\n \".s3tc.ktx\",\n \".s3tc_sRGB.ktx\",\n \".etc.ktx\",\n \".etc1.ktx\",\n \".pvrt.ktx\",\n \".atc.ktx\",\n \".astc.ktx\"\n ];\n if (extensions2.some((ext) => value.endsWith(ext))) {\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: extensions2.find((ext) => value.endsWith(ext)),\n src: value\n };\n }\n }\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: value.split(\".\").pop(),\n src: value\n };\n }\n};\nextensions.add(resolveCompressedTextureUrl);\n\nexport { resolveCompressedTextureUrl };\n//# sourceMappingURL=resolveCompressedTextureUrl.mjs.map\n","import { Rectangle, RenderTexture, utils, ExtensionType, extensions } from '@pixi/core';\n\nconst TEMP_RECT = new Rectangle();\nconst BYTES_PER_PIXEL = 4;\nconst _Extract = class {\n constructor(renderer) {\n this.renderer = renderer;\n }\n async image(target, format, quality) {\n const image = new Image();\n image.src = await this.base64(target, format, quality);\n return image;\n }\n async base64(target, format, quality) {\n const canvas = this.canvas(target);\n if (canvas.toDataURL !== void 0) {\n return canvas.toDataURL(format, quality);\n }\n if (canvas.convertToBlob !== void 0) {\n const blob = await canvas.convertToBlob({ type: format, quality });\n return await new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n }\n throw new Error(\"Extract.base64() requires ICanvas.toDataURL or ICanvas.convertToBlob to be implemented\");\n }\n canvas(target, frame) {\n const renderer = this.renderer;\n let resolution;\n let flipY = false;\n let renderTexture;\n let generated = false;\n if (target) {\n if (target instanceof RenderTexture) {\n renderTexture = target;\n } else {\n renderTexture = this.renderer.generateTexture(target);\n generated = true;\n }\n }\n if (renderTexture) {\n resolution = renderTexture.baseTexture.resolution;\n frame = frame ?? renderTexture.frame;\n flipY = false;\n renderer.renderTexture.bind(renderTexture);\n } else {\n resolution = renderer.resolution;\n if (!frame) {\n frame = TEMP_RECT;\n frame.width = renderer.width;\n frame.height = renderer.height;\n }\n flipY = true;\n renderer.renderTexture.bind(null);\n }\n const width = Math.round(frame.width * resolution);\n const height = Math.round(frame.height * resolution);\n let canvasBuffer = new utils.CanvasRenderTarget(width, height, 1);\n const webglPixels = new Uint8Array(BYTES_PER_PIXEL * width * height);\n const gl = renderer.gl;\n gl.readPixels(Math.round(frame.x * resolution), Math.round(frame.y * resolution), width, height, gl.RGBA, gl.UNSIGNED_BYTE, webglPixels);\n const canvasData = canvasBuffer.context.getImageData(0, 0, width, height);\n _Extract.arrayPostDivide(webglPixels, canvasData.data);\n canvasBuffer.context.putImageData(canvasData, 0, 0);\n if (flipY) {\n const target2 = new utils.CanvasRenderTarget(canvasBuffer.width, canvasBuffer.height, 1);\n target2.context.scale(1, -1);\n target2.context.drawImage(canvasBuffer.canvas, 0, -height);\n canvasBuffer.destroy();\n canvasBuffer = target2;\n }\n if (generated) {\n renderTexture.destroy(true);\n }\n return canvasBuffer.canvas;\n }\n pixels(target, frame) {\n const renderer = this.renderer;\n let resolution;\n let renderTexture;\n let generated = false;\n if (target) {\n if (target instanceof RenderTexture) {\n renderTexture = target;\n } else {\n renderTexture = this.renderer.generateTexture(target);\n generated = true;\n }\n }\n if (renderTexture) {\n resolution = renderTexture.baseTexture.resolution;\n frame = frame ?? renderTexture.frame;\n renderer.renderTexture.bind(renderTexture);\n } else {\n resolution = renderer.resolution;\n if (!frame) {\n frame = TEMP_RECT;\n frame.width = renderer.width;\n frame.height = renderer.height;\n }\n renderer.renderTexture.bind(null);\n }\n const width = Math.round(frame.width * resolution);\n const height = Math.round(frame.height * resolution);\n const webglPixels = new Uint8Array(BYTES_PER_PIXEL * width * height);\n const gl = renderer.gl;\n gl.readPixels(Math.round(frame.x * resolution), Math.round(frame.y * resolution), width, height, gl.RGBA, gl.UNSIGNED_BYTE, webglPixels);\n if (generated) {\n renderTexture.destroy(true);\n }\n _Extract.arrayPostDivide(webglPixels, webglPixels);\n return webglPixels;\n }\n destroy() {\n this.renderer = null;\n }\n static arrayPostDivide(pixels, out) {\n for (let i = 0; i < pixels.length; i += 4) {\n const alpha = out[i + 3] = pixels[i + 3];\n if (alpha !== 0) {\n out[i] = Math.round(Math.min(pixels[i] * 255 / alpha, 255));\n out[i + 1] = Math.round(Math.min(pixels[i + 1] * 255 / alpha, 255));\n out[i + 2] = Math.round(Math.min(pixels[i + 2] * 255 / alpha, 255));\n } else {\n out[i] = pixels[i];\n out[i + 1] = pixels[i + 1];\n out[i + 2] = pixels[i + 2];\n }\n }\n }\n};\nlet Extract = _Extract;\nExtract.extension = {\n name: \"extract\",\n type: ExtensionType.RendererSystem\n};\nextensions.add(Extract);\n\nexport { Extract };\n//# sourceMappingURL=Extract.mjs.map\n","var LINE_JOIN = /* @__PURE__ */ ((LINE_JOIN2) => {\n LINE_JOIN2[\"MITER\"] = \"miter\";\n LINE_JOIN2[\"BEVEL\"] = \"bevel\";\n LINE_JOIN2[\"ROUND\"] = \"round\";\n return LINE_JOIN2;\n})(LINE_JOIN || {});\nvar LINE_CAP = /* @__PURE__ */ ((LINE_CAP2) => {\n LINE_CAP2[\"BUTT\"] = \"butt\";\n LINE_CAP2[\"ROUND\"] = \"round\";\n LINE_CAP2[\"SQUARE\"] = \"square\";\n return LINE_CAP2;\n})(LINE_CAP || {});\nconst GRAPHICS_CURVES = {\n adaptive: true,\n maxLength: 10,\n minSegments: 8,\n maxSegments: 2048,\n epsilon: 1e-4,\n _segmentsCount(length, defaultSegments = 20) {\n if (!this.adaptive || !length || isNaN(length)) {\n return defaultSegments;\n }\n let result = Math.ceil(length / this.maxLength);\n if (result < this.minSegments) {\n result = this.minSegments;\n } else if (result > this.maxSegments) {\n result = this.maxSegments;\n }\n return result;\n }\n};\n\nexport { GRAPHICS_CURVES, LINE_CAP, LINE_JOIN };\n//# sourceMappingURL=const.mjs.map\n","import { Texture } from '@pixi/core';\n\nclass FillStyle {\n constructor() {\n this.color = 16777215;\n this.alpha = 1;\n this.texture = Texture.WHITE;\n this.matrix = null;\n this.visible = false;\n this.reset();\n }\n clone() {\n const obj = new FillStyle();\n obj.color = this.color;\n obj.alpha = this.alpha;\n obj.texture = this.texture;\n obj.matrix = this.matrix;\n obj.visible = this.visible;\n return obj;\n }\n reset() {\n this.color = 16777215;\n this.alpha = 1;\n this.texture = Texture.WHITE;\n this.matrix = null;\n this.visible = false;\n }\n destroy() {\n this.texture = null;\n this.matrix = null;\n }\n}\n\nexport { FillStyle };\n//# sourceMappingURL=FillStyle.mjs.map\n","import { utils } from '@pixi/core';\n\nfunction fixOrientation(points, hole = false) {\n const m = points.length;\n if (m < 6) {\n return;\n }\n let area = 0;\n for (let i = 0, x1 = points[m - 2], y1 = points[m - 1]; i < m; i += 2) {\n const x2 = points[i];\n const y2 = points[i + 1];\n area += (x2 - x1) * (y2 + y1);\n x1 = x2;\n y1 = y2;\n }\n if (!hole && area > 0 || hole && area <= 0) {\n const n = m / 2;\n for (let i = n + n % 2; i < m; i += 2) {\n const i1 = m - i - 2;\n const i2 = m - i - 1;\n const i3 = i;\n const i4 = i + 1;\n [points[i1], points[i3]] = [points[i3], points[i1]];\n [points[i2], points[i4]] = [points[i4], points[i2]];\n }\n }\n}\nconst buildPoly = {\n build(graphicsData) {\n graphicsData.points = graphicsData.shape.points.slice();\n },\n triangulate(graphicsData, graphicsGeometry) {\n let points = graphicsData.points;\n const holes = graphicsData.holes;\n const verts = graphicsGeometry.points;\n const indices = graphicsGeometry.indices;\n if (points.length >= 6) {\n fixOrientation(points, false);\n const holeArray = [];\n for (let i = 0; i < holes.length; i++) {\n const hole = holes[i];\n fixOrientation(hole.points, true);\n holeArray.push(points.length / 2);\n points = points.concat(hole.points);\n }\n const triangles = utils.earcut(points, holeArray, 2);\n if (!triangles) {\n return;\n }\n const vertPos = verts.length / 2;\n for (let i = 0; i < triangles.length; i += 3) {\n indices.push(triangles[i] + vertPos);\n indices.push(triangles[i + 1] + vertPos);\n indices.push(triangles[i + 2] + vertPos);\n }\n for (let i = 0; i < points.length; i++) {\n verts.push(points[i]);\n }\n }\n }\n};\n\nexport { buildPoly };\n//# sourceMappingURL=buildPoly.mjs.map\n","import { SHAPES } from '@pixi/core';\n\nconst buildCircle = {\n build(graphicsData) {\n const points = graphicsData.points;\n let x;\n let y;\n let dx;\n let dy;\n let rx;\n let ry;\n if (graphicsData.type === SHAPES.CIRC) {\n const circle = graphicsData.shape;\n x = circle.x;\n y = circle.y;\n rx = ry = circle.radius;\n dx = dy = 0;\n } else if (graphicsData.type === SHAPES.ELIP) {\n const ellipse = graphicsData.shape;\n x = ellipse.x;\n y = ellipse.y;\n rx = ellipse.width;\n ry = ellipse.height;\n dx = dy = 0;\n } else {\n const roundedRect = graphicsData.shape;\n const halfWidth = roundedRect.width / 2;\n const halfHeight = roundedRect.height / 2;\n x = roundedRect.x + halfWidth;\n y = roundedRect.y + halfHeight;\n rx = ry = Math.max(0, Math.min(roundedRect.radius, Math.min(halfWidth, halfHeight)));\n dx = halfWidth - rx;\n dy = halfHeight - ry;\n }\n if (!(rx >= 0 && ry >= 0 && dx >= 0 && dy >= 0)) {\n points.length = 0;\n return;\n }\n const n = Math.ceil(2.3 * Math.sqrt(rx + ry));\n const m = n * 8 + (dx ? 4 : 0) + (dy ? 4 : 0);\n points.length = m;\n if (m === 0) {\n return;\n }\n if (n === 0) {\n points.length = 8;\n points[0] = points[6] = x + dx;\n points[1] = points[3] = y + dy;\n points[2] = points[4] = x - dx;\n points[5] = points[7] = y - dy;\n return;\n }\n let j1 = 0;\n let j2 = n * 4 + (dx ? 2 : 0) + 2;\n let j3 = j2;\n let j4 = m;\n {\n const x0 = dx + rx;\n const y0 = dy;\n const x1 = x + x0;\n const x2 = x - x0;\n const y1 = y + y0;\n points[j1++] = x1;\n points[j1++] = y1;\n points[--j2] = y1;\n points[--j2] = x2;\n if (dy) {\n const y2 = y - y0;\n points[j3++] = x2;\n points[j3++] = y2;\n points[--j4] = y2;\n points[--j4] = x1;\n }\n }\n for (let i = 1; i < n; i++) {\n const a = Math.PI / 2 * (i / n);\n const x0 = dx + Math.cos(a) * rx;\n const y0 = dy + Math.sin(a) * ry;\n const x1 = x + x0;\n const x2 = x - x0;\n const y1 = y + y0;\n const y2 = y - y0;\n points[j1++] = x1;\n points[j1++] = y1;\n points[--j2] = y1;\n points[--j2] = x2;\n points[j3++] = x2;\n points[j3++] = y2;\n points[--j4] = y2;\n points[--j4] = x1;\n }\n {\n const x0 = dx;\n const y0 = dy + ry;\n const x1 = x + x0;\n const x2 = x - x0;\n const y1 = y + y0;\n const y2 = y - y0;\n points[j1++] = x1;\n points[j1++] = y1;\n points[--j4] = y2;\n points[--j4] = x1;\n if (dx) {\n points[j1++] = x2;\n points[j1++] = y1;\n points[--j4] = y2;\n points[--j4] = x2;\n }\n }\n },\n triangulate(graphicsData, graphicsGeometry) {\n const points = graphicsData.points;\n const verts = graphicsGeometry.points;\n const indices = graphicsGeometry.indices;\n if (points.length === 0) {\n return;\n }\n let vertPos = verts.length / 2;\n const center = vertPos;\n let x;\n let y;\n if (graphicsData.type !== SHAPES.RREC) {\n const circle = graphicsData.shape;\n x = circle.x;\n y = circle.y;\n } else {\n const roundedRect = graphicsData.shape;\n x = roundedRect.x + roundedRect.width / 2;\n y = roundedRect.y + roundedRect.height / 2;\n }\n const matrix = graphicsData.matrix;\n verts.push(graphicsData.matrix ? matrix.a * x + matrix.c * y + matrix.tx : x, graphicsData.matrix ? matrix.b * x + matrix.d * y + matrix.ty : y);\n vertPos++;\n verts.push(points[0], points[1]);\n for (let i = 2; i < points.length; i += 2) {\n verts.push(points[i], points[i + 1]);\n indices.push(vertPos++, center, vertPos);\n }\n indices.push(center + 1, center, vertPos);\n }\n};\n\nexport { buildCircle };\n//# sourceMappingURL=buildCircle.mjs.map\n","const buildRectangle = {\n build(graphicsData) {\n const rectData = graphicsData.shape;\n const x = rectData.x;\n const y = rectData.y;\n const width = rectData.width;\n const height = rectData.height;\n const points = graphicsData.points;\n points.length = 0;\n if (!(width >= 0 && height >= 0)) {\n return;\n }\n points.push(x, y, x + width, y, x + width, y + height, x, y + height);\n },\n triangulate(graphicsData, graphicsGeometry) {\n const points = graphicsData.points;\n const verts = graphicsGeometry.points;\n if (points.length === 0) {\n return;\n }\n const vertPos = verts.length / 2;\n verts.push(points[0], points[1], points[2], points[3], points[6], points[7], points[4], points[5]);\n graphicsGeometry.indices.push(vertPos, vertPos + 1, vertPos + 2, vertPos + 1, vertPos + 2, vertPos + 3);\n }\n};\n\nexport { buildRectangle };\n//# sourceMappingURL=buildRectangle.mjs.map\n","import { buildCircle } from './buildCircle.mjs';\n\nconst buildRoundedRectangle = {\n build(graphicsData) {\n buildCircle.build(graphicsData);\n },\n triangulate(graphicsData, graphicsGeometry) {\n buildCircle.triangulate(graphicsData, graphicsGeometry);\n }\n};\n\nexport { buildRoundedRectangle };\n//# sourceMappingURL=buildRoundedRectangle.mjs.map\n","import { Point, SHAPES } from '@pixi/core';\nimport { LINE_CAP, LINE_JOIN, GRAPHICS_CURVES } from '../const.mjs';\n\nfunction square(x, y, nx, ny, innerWeight, outerWeight, clockwise, verts) {\n const ix = x - nx * innerWeight;\n const iy = y - ny * innerWeight;\n const ox = x + nx * outerWeight;\n const oy = y + ny * outerWeight;\n let exx;\n let eyy;\n if (clockwise) {\n exx = ny;\n eyy = -nx;\n } else {\n exx = -ny;\n eyy = nx;\n }\n const eix = ix + exx;\n const eiy = iy + eyy;\n const eox = ox + exx;\n const eoy = oy + eyy;\n verts.push(eix, eiy);\n verts.push(eox, eoy);\n return 2;\n}\nfunction round(cx, cy, sx, sy, ex, ey, verts, clockwise) {\n const cx2p0x = sx - cx;\n const cy2p0y = sy - cy;\n let angle0 = Math.atan2(cx2p0x, cy2p0y);\n let angle1 = Math.atan2(ex - cx, ey - cy);\n if (clockwise && angle0 < angle1) {\n angle0 += Math.PI * 2;\n } else if (!clockwise && angle0 > angle1) {\n angle1 += Math.PI * 2;\n }\n let startAngle = angle0;\n const angleDiff = angle1 - angle0;\n const absAngleDiff = Math.abs(angleDiff);\n const radius = Math.sqrt(cx2p0x * cx2p0x + cy2p0y * cy2p0y);\n const segCount = (15 * absAngleDiff * Math.sqrt(radius) / Math.PI >> 0) + 1;\n const angleInc = angleDiff / segCount;\n startAngle += angleInc;\n if (clockwise) {\n verts.push(cx, cy);\n verts.push(sx, sy);\n for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) {\n verts.push(cx, cy);\n verts.push(cx + Math.sin(angle) * radius, cy + Math.cos(angle) * radius);\n }\n verts.push(cx, cy);\n verts.push(ex, ey);\n } else {\n verts.push(sx, sy);\n verts.push(cx, cy);\n for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) {\n verts.push(cx + Math.sin(angle) * radius, cy + Math.cos(angle) * radius);\n verts.push(cx, cy);\n }\n verts.push(ex, ey);\n verts.push(cx, cy);\n }\n return segCount * 2;\n}\nfunction buildNonNativeLine(graphicsData, graphicsGeometry) {\n const shape = graphicsData.shape;\n let points = graphicsData.points || shape.points.slice();\n const eps = graphicsGeometry.closePointEps;\n if (points.length === 0) {\n return;\n }\n const style = graphicsData.lineStyle;\n const firstPoint = new Point(points[0], points[1]);\n const lastPoint = new Point(points[points.length - 2], points[points.length - 1]);\n const closedShape = shape.type !== SHAPES.POLY || shape.closeStroke;\n const closedPath = Math.abs(firstPoint.x - lastPoint.x) < eps && Math.abs(firstPoint.y - lastPoint.y) < eps;\n if (closedShape) {\n points = points.slice();\n if (closedPath) {\n points.pop();\n points.pop();\n lastPoint.set(points[points.length - 2], points[points.length - 1]);\n }\n const midPointX = (firstPoint.x + lastPoint.x) * 0.5;\n const midPointY = (lastPoint.y + firstPoint.y) * 0.5;\n points.unshift(midPointX, midPointY);\n points.push(midPointX, midPointY);\n }\n const verts = graphicsGeometry.points;\n const length = points.length / 2;\n let indexCount = points.length;\n const indexStart = verts.length / 2;\n const width = style.width / 2;\n const widthSquared = width * width;\n const miterLimitSquared = style.miterLimit * style.miterLimit;\n let x0 = points[0];\n let y0 = points[1];\n let x1 = points[2];\n let y1 = points[3];\n let x2 = 0;\n let y2 = 0;\n let perpx = -(y0 - y1);\n let perpy = x0 - x1;\n let perp1x = 0;\n let perp1y = 0;\n let dist = Math.sqrt(perpx * perpx + perpy * perpy);\n perpx /= dist;\n perpy /= dist;\n perpx *= width;\n perpy *= width;\n const ratio = style.alignment;\n const innerWeight = (1 - ratio) * 2;\n const outerWeight = ratio * 2;\n if (!closedShape) {\n if (style.cap === LINE_CAP.ROUND) {\n indexCount += round(x0 - perpx * (innerWeight - outerWeight) * 0.5, y0 - perpy * (innerWeight - outerWeight) * 0.5, x0 - perpx * innerWeight, y0 - perpy * innerWeight, x0 + perpx * outerWeight, y0 + perpy * outerWeight, verts, true) + 2;\n } else if (style.cap === LINE_CAP.SQUARE) {\n indexCount += square(x0, y0, perpx, perpy, innerWeight, outerWeight, true, verts);\n }\n }\n verts.push(x0 - perpx * innerWeight, y0 - perpy * innerWeight);\n verts.push(x0 + perpx * outerWeight, y0 + perpy * outerWeight);\n for (let i = 1; i < length - 1; ++i) {\n x0 = points[(i - 1) * 2];\n y0 = points[(i - 1) * 2 + 1];\n x1 = points[i * 2];\n y1 = points[i * 2 + 1];\n x2 = points[(i + 1) * 2];\n y2 = points[(i + 1) * 2 + 1];\n perpx = -(y0 - y1);\n perpy = x0 - x1;\n dist = Math.sqrt(perpx * perpx + perpy * perpy);\n perpx /= dist;\n perpy /= dist;\n perpx *= width;\n perpy *= width;\n perp1x = -(y1 - y2);\n perp1y = x1 - x2;\n dist = Math.sqrt(perp1x * perp1x + perp1y * perp1y);\n perp1x /= dist;\n perp1y /= dist;\n perp1x *= width;\n perp1y *= width;\n const dx0 = x1 - x0;\n const dy0 = y0 - y1;\n const dx1 = x1 - x2;\n const dy1 = y2 - y1;\n const dot = dx0 * dx1 + dy0 * dy1;\n const cross = dy0 * dx1 - dy1 * dx0;\n const clockwise = cross < 0;\n if (Math.abs(cross) < 1e-3 * Math.abs(dot)) {\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight);\n verts.push(x1 + perpx * outerWeight, y1 + perpy * outerWeight);\n if (dot >= 0) {\n if (style.join === LINE_JOIN.ROUND) {\n indexCount += round(x1, y1, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, verts, false) + 4;\n } else {\n indexCount += 2;\n }\n verts.push(x1 - perp1x * outerWeight, y1 - perp1y * outerWeight);\n verts.push(x1 + perp1x * innerWeight, y1 + perp1y * innerWeight);\n }\n continue;\n }\n const c1 = (-perpx + x0) * (-perpy + y1) - (-perpx + x1) * (-perpy + y0);\n const c2 = (-perp1x + x2) * (-perp1y + y1) - (-perp1x + x1) * (-perp1y + y2);\n const px = (dx0 * c2 - dx1 * c1) / cross;\n const py = (dy1 * c1 - dy0 * c2) / cross;\n const pdist = (px - x1) * (px - x1) + (py - y1) * (py - y1);\n const imx = x1 + (px - x1) * innerWeight;\n const imy = y1 + (py - y1) * innerWeight;\n const omx = x1 - (px - x1) * outerWeight;\n const omy = y1 - (py - y1) * outerWeight;\n const smallerInsideSegmentSq = Math.min(dx0 * dx0 + dy0 * dy0, dx1 * dx1 + dy1 * dy1);\n const insideWeight = clockwise ? innerWeight : outerWeight;\n const smallerInsideDiagonalSq = smallerInsideSegmentSq + insideWeight * insideWeight * widthSquared;\n const insideMiterOk = pdist <= smallerInsideDiagonalSq;\n if (insideMiterOk) {\n if (style.join === LINE_JOIN.BEVEL || pdist / widthSquared > miterLimitSquared) {\n if (clockwise) {\n verts.push(imx, imy);\n verts.push(x1 + perpx * outerWeight, y1 + perpy * outerWeight);\n verts.push(imx, imy);\n verts.push(x1 + perp1x * outerWeight, y1 + perp1y * outerWeight);\n } else {\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight);\n verts.push(omx, omy);\n verts.push(x1 - perp1x * innerWeight, y1 - perp1y * innerWeight);\n verts.push(omx, omy);\n }\n indexCount += 2;\n } else if (style.join === LINE_JOIN.ROUND) {\n if (clockwise) {\n verts.push(imx, imy);\n verts.push(x1 + perpx * outerWeight, y1 + perpy * outerWeight);\n indexCount += round(x1, y1, x1 + perpx * outerWeight, y1 + perpy * outerWeight, x1 + perp1x * outerWeight, y1 + perp1y * outerWeight, verts, true) + 4;\n verts.push(imx, imy);\n verts.push(x1 + perp1x * outerWeight, y1 + perp1y * outerWeight);\n } else {\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight);\n verts.push(omx, omy);\n indexCount += round(x1, y1, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, verts, false) + 4;\n verts.push(x1 - perp1x * innerWeight, y1 - perp1y * innerWeight);\n verts.push(omx, omy);\n }\n } else {\n verts.push(imx, imy);\n verts.push(omx, omy);\n }\n } else {\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight);\n verts.push(x1 + perpx * outerWeight, y1 + perpy * outerWeight);\n if (style.join === LINE_JOIN.ROUND) {\n if (clockwise) {\n indexCount += round(x1, y1, x1 + perpx * outerWeight, y1 + perpy * outerWeight, x1 + perp1x * outerWeight, y1 + perp1y * outerWeight, verts, true) + 2;\n } else {\n indexCount += round(x1, y1, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, verts, false) + 2;\n }\n } else if (style.join === LINE_JOIN.MITER && pdist / widthSquared <= miterLimitSquared) {\n if (clockwise) {\n verts.push(omx, omy);\n verts.push(omx, omy);\n } else {\n verts.push(imx, imy);\n verts.push(imx, imy);\n }\n indexCount += 2;\n }\n verts.push(x1 - perp1x * innerWeight, y1 - perp1y * innerWeight);\n verts.push(x1 + perp1x * outerWeight, y1 + perp1y * outerWeight);\n indexCount += 2;\n }\n }\n x0 = points[(length - 2) * 2];\n y0 = points[(length - 2) * 2 + 1];\n x1 = points[(length - 1) * 2];\n y1 = points[(length - 1) * 2 + 1];\n perpx = -(y0 - y1);\n perpy = x0 - x1;\n dist = Math.sqrt(perpx * perpx + perpy * perpy);\n perpx /= dist;\n perpy /= dist;\n perpx *= width;\n perpy *= width;\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight);\n verts.push(x1 + perpx * outerWeight, y1 + perpy * outerWeight);\n if (!closedShape) {\n if (style.cap === LINE_CAP.ROUND) {\n indexCount += round(x1 - perpx * (innerWeight - outerWeight) * 0.5, y1 - perpy * (innerWeight - outerWeight) * 0.5, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 + perpx * outerWeight, y1 + perpy * outerWeight, verts, false) + 2;\n } else if (style.cap === LINE_CAP.SQUARE) {\n indexCount += square(x1, y1, perpx, perpy, innerWeight, outerWeight, false, verts);\n }\n }\n const indices = graphicsGeometry.indices;\n const eps2 = GRAPHICS_CURVES.epsilon * GRAPHICS_CURVES.epsilon;\n for (let i = indexStart; i < indexCount + indexStart - 2; ++i) {\n x0 = verts[i * 2];\n y0 = verts[i * 2 + 1];\n x1 = verts[(i + 1) * 2];\n y1 = verts[(i + 1) * 2 + 1];\n x2 = verts[(i + 2) * 2];\n y2 = verts[(i + 2) * 2 + 1];\n if (Math.abs(x0 * (y1 - y2) + x1 * (y2 - y0) + x2 * (y0 - y1)) < eps2) {\n continue;\n }\n indices.push(i, i + 1, i + 2);\n }\n}\nfunction buildNativeLine(graphicsData, graphicsGeometry) {\n let i = 0;\n const shape = graphicsData.shape;\n const points = graphicsData.points || shape.points;\n const closedShape = shape.type !== SHAPES.POLY || shape.closeStroke;\n if (points.length === 0)\n return;\n const verts = graphicsGeometry.points;\n const indices = graphicsGeometry.indices;\n const length = points.length / 2;\n const startIndex = verts.length / 2;\n let currentIndex = startIndex;\n verts.push(points[0], points[1]);\n for (i = 1; i < length; i++) {\n verts.push(points[i * 2], points[i * 2 + 1]);\n indices.push(currentIndex, currentIndex + 1);\n currentIndex++;\n }\n if (closedShape) {\n indices.push(currentIndex, startIndex);\n }\n}\nfunction buildLine(graphicsData, graphicsGeometry) {\n if (graphicsData.lineStyle.native) {\n buildNativeLine(graphicsData, graphicsGeometry);\n } else {\n buildNonNativeLine(graphicsData, graphicsGeometry);\n }\n}\n\nexport { buildLine };\n//# sourceMappingURL=buildLine.mjs.map\n","import { GRAPHICS_CURVES } from '../const.mjs';\nimport { PI_2 } from '@pixi/core';\n\nclass ArcUtils {\n static curveTo(x1, y1, x2, y2, radius, points) {\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n const a1 = fromY - y1;\n const b1 = fromX - x1;\n const a2 = y2 - y1;\n const b2 = x2 - x1;\n const mm = Math.abs(a1 * b2 - b1 * a2);\n if (mm < 1e-8 || radius === 0) {\n if (points[points.length - 2] !== x1 || points[points.length - 1] !== y1) {\n points.push(x1, y1);\n }\n return null;\n }\n const dd = a1 * a1 + b1 * b1;\n const cc = a2 * a2 + b2 * b2;\n const tt = a1 * a2 + b1 * b2;\n const k1 = radius * Math.sqrt(dd) / mm;\n const k2 = radius * Math.sqrt(cc) / mm;\n const j1 = k1 * tt / dd;\n const j2 = k2 * tt / cc;\n const cx = k1 * b2 + k2 * b1;\n const cy = k1 * a2 + k2 * a1;\n const px = b1 * (k2 + j1);\n const py = a1 * (k2 + j1);\n const qx = b2 * (k1 + j2);\n const qy = a2 * (k1 + j2);\n const startAngle = Math.atan2(py - cy, px - cx);\n const endAngle = Math.atan2(qy - cy, qx - cx);\n return {\n cx: cx + x1,\n cy: cy + y1,\n radius,\n startAngle,\n endAngle,\n anticlockwise: b1 * a2 > b2 * a1\n };\n }\n static arc(_startX, _startY, cx, cy, radius, startAngle, endAngle, _anticlockwise, points) {\n const sweep = endAngle - startAngle;\n const n = GRAPHICS_CURVES._segmentsCount(Math.abs(sweep) * radius, Math.ceil(Math.abs(sweep) / PI_2) * 40);\n const theta = sweep / (n * 2);\n const theta2 = theta * 2;\n const cTheta = Math.cos(theta);\n const sTheta = Math.sin(theta);\n const segMinus = n - 1;\n const remainder = segMinus % 1 / segMinus;\n for (let i = 0; i <= segMinus; ++i) {\n const real = i + remainder * i;\n const angle = theta + startAngle + theta2 * real;\n const c = Math.cos(angle);\n const s = -Math.sin(angle);\n points.push((cTheta * c + sTheta * s) * radius + cx, (cTheta * -s + sTheta * c) * radius + cy);\n }\n }\n}\n\nexport { ArcUtils };\n//# sourceMappingURL=ArcUtils.mjs.map\n","import { GRAPHICS_CURVES } from '../const.mjs';\n\nclass BezierUtils {\n static curveLength(fromX, fromY, cpX, cpY, cpX2, cpY2, toX, toY) {\n const n = 10;\n let result = 0;\n let t = 0;\n let t2 = 0;\n let t3 = 0;\n let nt = 0;\n let nt2 = 0;\n let nt3 = 0;\n let x = 0;\n let y = 0;\n let dx = 0;\n let dy = 0;\n let prevX = fromX;\n let prevY = fromY;\n for (let i = 1; i <= n; ++i) {\n t = i / n;\n t2 = t * t;\n t3 = t2 * t;\n nt = 1 - t;\n nt2 = nt * nt;\n nt3 = nt2 * nt;\n x = nt3 * fromX + 3 * nt2 * t * cpX + 3 * nt * t2 * cpX2 + t3 * toX;\n y = nt3 * fromY + 3 * nt2 * t * cpY + 3 * nt * t2 * cpY2 + t3 * toY;\n dx = prevX - x;\n dy = prevY - y;\n prevX = x;\n prevY = y;\n result += Math.sqrt(dx * dx + dy * dy);\n }\n return result;\n }\n static curveTo(cpX, cpY, cpX2, cpY2, toX, toY, points) {\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n points.length -= 2;\n const n = GRAPHICS_CURVES._segmentsCount(BezierUtils.curveLength(fromX, fromY, cpX, cpY, cpX2, cpY2, toX, toY));\n let dt = 0;\n let dt2 = 0;\n let dt3 = 0;\n let t2 = 0;\n let t3 = 0;\n points.push(fromX, fromY);\n for (let i = 1, j = 0; i <= n; ++i) {\n j = i / n;\n dt = 1 - j;\n dt2 = dt * dt;\n dt3 = dt2 * dt;\n t2 = j * j;\n t3 = t2 * j;\n points.push(dt3 * fromX + 3 * dt2 * j * cpX + 3 * dt * t2 * cpX2 + t3 * toX, dt3 * fromY + 3 * dt2 * j * cpY + 3 * dt * t2 * cpY2 + t3 * toY);\n }\n }\n}\n\nexport { BezierUtils };\n//# sourceMappingURL=BezierUtils.mjs.map\n","import { GRAPHICS_CURVES } from '../const.mjs';\n\nclass QuadraticUtils {\n static curveLength(fromX, fromY, cpX, cpY, toX, toY) {\n const ax = fromX - 2 * cpX + toX;\n const ay = fromY - 2 * cpY + toY;\n const bx = 2 * cpX - 2 * fromX;\n const by = 2 * cpY - 2 * fromY;\n const a = 4 * (ax * ax + ay * ay);\n const b = 4 * (ax * bx + ay * by);\n const c = bx * bx + by * by;\n const s = 2 * Math.sqrt(a + b + c);\n const a2 = Math.sqrt(a);\n const a32 = 2 * a * a2;\n const c2 = 2 * Math.sqrt(c);\n const ba = b / a2;\n return (a32 * s + a2 * b * (s - c2) + (4 * c * a - b * b) * Math.log((2 * a2 + ba + s) / (ba + c2))) / (4 * a32);\n }\n static curveTo(cpX, cpY, toX, toY, points) {\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n const n = GRAPHICS_CURVES._segmentsCount(QuadraticUtils.curveLength(fromX, fromY, cpX, cpY, toX, toY));\n let xa = 0;\n let ya = 0;\n for (let i = 1; i <= n; ++i) {\n const j = i / n;\n xa = fromX + (cpX - fromX) * j;\n ya = fromY + (cpY - fromY) * j;\n points.push(xa + (cpX + (toX - cpX) * j - xa) * j, ya + (cpY + (toY - cpY) * j - ya) * j);\n }\n }\n}\n\nexport { QuadraticUtils };\n//# sourceMappingURL=QuadraticUtils.mjs.map\n","class BatchPart {\n constructor() {\n this.reset();\n }\n begin(style, startIndex, attribStart) {\n this.reset();\n this.style = style;\n this.start = startIndex;\n this.attribStart = attribStart;\n }\n end(endIndex, endAttrib) {\n this.attribSize = endAttrib - this.attribStart;\n this.size = endIndex - this.start;\n }\n reset() {\n this.style = null;\n this.size = 0;\n this.start = 0;\n this.attribStart = 0;\n this.attribSize = 0;\n }\n}\n\nexport { BatchPart };\n//# sourceMappingURL=BatchPart.mjs.map\n","import { buildPoly } from './buildPoly.mjs';\nexport { buildPoly } from './buildPoly.mjs';\nimport { buildCircle } from './buildCircle.mjs';\nexport { buildCircle } from './buildCircle.mjs';\nimport { buildRectangle } from './buildRectangle.mjs';\nexport { buildRectangle } from './buildRectangle.mjs';\nimport { buildRoundedRectangle } from './buildRoundedRectangle.mjs';\nexport { buildRoundedRectangle } from './buildRoundedRectangle.mjs';\nexport { buildLine } from './buildLine.mjs';\nexport { ArcUtils } from './ArcUtils.mjs';\nexport { BezierUtils } from './BezierUtils.mjs';\nexport { QuadraticUtils } from './QuadraticUtils.mjs';\nexport { BatchPart } from './BatchPart.mjs';\nimport { SHAPES } from '@pixi/core';\n\nconst FILL_COMMANDS = {\n [SHAPES.POLY]: buildPoly,\n [SHAPES.CIRC]: buildCircle,\n [SHAPES.ELIP]: buildCircle,\n [SHAPES.RECT]: buildRectangle,\n [SHAPES.RREC]: buildRoundedRectangle\n};\nconst BATCH_POOL = [];\nconst DRAW_CALL_POOL = [];\n\nexport { BATCH_POOL, DRAW_CALL_POOL, FILL_COMMANDS };\n//# sourceMappingURL=index.mjs.map\n","class GraphicsData {\n constructor(shape, fillStyle = null, lineStyle = null, matrix = null) {\n this.points = [];\n this.holes = [];\n this.shape = shape;\n this.lineStyle = lineStyle;\n this.fillStyle = fillStyle;\n this.matrix = matrix;\n this.type = shape.type;\n }\n clone() {\n return new GraphicsData(this.shape, this.fillStyle, this.lineStyle, this.matrix);\n }\n destroy() {\n this.shape = null;\n this.holes.length = 0;\n this.holes = null;\n this.points.length = 0;\n this.points = null;\n this.lineStyle = null;\n this.fillStyle = null;\n }\n}\n\nexport { GraphicsData };\n//# sourceMappingURL=GraphicsData.mjs.map\n","import { DRAW_CALL_POOL, BATCH_POOL, FILL_COMMANDS } from './utils/index.mjs';\nimport { Point, BatchGeometry, WRAP_MODES, BaseTexture, BatchDrawCall, BatchTextureArray, DRAW_MODES, utils } from '@pixi/core';\nimport { GraphicsData } from './GraphicsData.mjs';\nimport { Bounds } from '@pixi/display';\nimport { BatchPart } from './utils/BatchPart.mjs';\nimport { buildPoly } from './utils/buildPoly.mjs';\nimport { buildLine } from './utils/buildLine.mjs';\n\nconst tmpPoint = new Point();\nconst _GraphicsGeometry = class extends BatchGeometry {\n constructor() {\n super();\n this.closePointEps = 1e-4;\n this.boundsPadding = 0;\n this.uvsFloat32 = null;\n this.indicesUint16 = null;\n this.batchable = false;\n this.points = [];\n this.colors = [];\n this.uvs = [];\n this.indices = [];\n this.textureIds = [];\n this.graphicsData = [];\n this.drawCalls = [];\n this.batchDirty = -1;\n this.batches = [];\n this.dirty = 0;\n this.cacheDirty = -1;\n this.clearDirty = 0;\n this.shapeIndex = 0;\n this._bounds = new Bounds();\n this.boundsDirty = -1;\n }\n get bounds() {\n this.updateBatches();\n if (this.boundsDirty !== this.dirty) {\n this.boundsDirty = this.dirty;\n this.calculateBounds();\n }\n return this._bounds;\n }\n invalidate() {\n this.boundsDirty = -1;\n this.dirty++;\n this.batchDirty++;\n this.shapeIndex = 0;\n this.points.length = 0;\n this.colors.length = 0;\n this.uvs.length = 0;\n this.indices.length = 0;\n this.textureIds.length = 0;\n for (let i = 0; i < this.drawCalls.length; i++) {\n this.drawCalls[i].texArray.clear();\n DRAW_CALL_POOL.push(this.drawCalls[i]);\n }\n this.drawCalls.length = 0;\n for (let i = 0; i < this.batches.length; i++) {\n const batchPart = this.batches[i];\n batchPart.reset();\n BATCH_POOL.push(batchPart);\n }\n this.batches.length = 0;\n }\n clear() {\n if (this.graphicsData.length > 0) {\n this.invalidate();\n this.clearDirty++;\n this.graphicsData.length = 0;\n }\n return this;\n }\n drawShape(shape, fillStyle = null, lineStyle = null, matrix = null) {\n const data = new GraphicsData(shape, fillStyle, lineStyle, matrix);\n this.graphicsData.push(data);\n this.dirty++;\n return this;\n }\n drawHole(shape, matrix = null) {\n if (!this.graphicsData.length) {\n return null;\n }\n const data = new GraphicsData(shape, null, null, matrix);\n const lastShape = this.graphicsData[this.graphicsData.length - 1];\n data.lineStyle = lastShape.lineStyle;\n lastShape.holes.push(data);\n this.dirty++;\n return this;\n }\n destroy() {\n super.destroy();\n for (let i = 0; i < this.graphicsData.length; ++i) {\n this.graphicsData[i].destroy();\n }\n this.points.length = 0;\n this.points = null;\n this.colors.length = 0;\n this.colors = null;\n this.uvs.length = 0;\n this.uvs = null;\n this.indices.length = 0;\n this.indices = null;\n this.indexBuffer.destroy();\n this.indexBuffer = null;\n this.graphicsData.length = 0;\n this.graphicsData = null;\n this.drawCalls.length = 0;\n this.drawCalls = null;\n this.batches.length = 0;\n this.batches = null;\n this._bounds = null;\n }\n containsPoint(point) {\n const graphicsData = this.graphicsData;\n for (let i = 0; i < graphicsData.length; ++i) {\n const data = graphicsData[i];\n if (!data.fillStyle.visible) {\n continue;\n }\n if (data.shape) {\n if (data.matrix) {\n data.matrix.applyInverse(point, tmpPoint);\n } else {\n tmpPoint.copyFrom(point);\n }\n if (data.shape.contains(tmpPoint.x, tmpPoint.y)) {\n let hitHole = false;\n if (data.holes) {\n for (let i2 = 0; i2 < data.holes.length; i2++) {\n const hole = data.holes[i2];\n if (hole.shape.contains(tmpPoint.x, tmpPoint.y)) {\n hitHole = true;\n break;\n }\n }\n }\n if (!hitHole) {\n return true;\n }\n }\n }\n }\n return false;\n }\n updateBatches() {\n if (!this.graphicsData.length) {\n this.batchable = true;\n return;\n }\n if (!this.validateBatching()) {\n return;\n }\n this.cacheDirty = this.dirty;\n const uvs = this.uvs;\n const graphicsData = this.graphicsData;\n let batchPart = null;\n let currentStyle = null;\n if (this.batches.length > 0) {\n batchPart = this.batches[this.batches.length - 1];\n currentStyle = batchPart.style;\n }\n for (let i = this.shapeIndex; i < graphicsData.length; i++) {\n this.shapeIndex++;\n const data = graphicsData[i];\n const fillStyle = data.fillStyle;\n const lineStyle = data.lineStyle;\n const command = FILL_COMMANDS[data.type];\n command.build(data);\n if (data.matrix) {\n this.transformPoints(data.points, data.matrix);\n }\n if (fillStyle.visible || lineStyle.visible) {\n this.processHoles(data.holes);\n }\n for (let j = 0; j < 2; j++) {\n const style = j === 0 ? fillStyle : lineStyle;\n if (!style.visible)\n continue;\n const nextTexture = style.texture.baseTexture;\n const index2 = this.indices.length;\n const attribIndex = this.points.length / 2;\n nextTexture.wrapMode = WRAP_MODES.REPEAT;\n if (j === 0) {\n this.processFill(data);\n } else {\n this.processLine(data);\n }\n const size = this.points.length / 2 - attribIndex;\n if (size === 0)\n continue;\n if (batchPart && !this._compareStyles(currentStyle, style)) {\n batchPart.end(index2, attribIndex);\n batchPart = null;\n }\n if (!batchPart) {\n batchPart = BATCH_POOL.pop() || new BatchPart();\n batchPart.begin(style, index2, attribIndex);\n this.batches.push(batchPart);\n currentStyle = style;\n }\n this.addUvs(this.points, uvs, style.texture, attribIndex, size, style.matrix);\n }\n }\n const index = this.indices.length;\n const attrib = this.points.length / 2;\n if (batchPart) {\n batchPart.end(index, attrib);\n }\n if (this.batches.length === 0) {\n this.batchable = true;\n return;\n }\n const need32 = attrib > 65535;\n if (this.indicesUint16 && this.indices.length === this.indicesUint16.length && need32 === this.indicesUint16.BYTES_PER_ELEMENT > 2) {\n this.indicesUint16.set(this.indices);\n } else {\n this.indicesUint16 = need32 ? new Uint32Array(this.indices) : new Uint16Array(this.indices);\n }\n this.batchable = this.isBatchable();\n if (this.batchable) {\n this.packBatches();\n } else {\n this.buildDrawCalls();\n }\n }\n _compareStyles(styleA, styleB) {\n if (!styleA || !styleB) {\n return false;\n }\n if (styleA.texture.baseTexture !== styleB.texture.baseTexture) {\n return false;\n }\n if (styleA.color + styleA.alpha !== styleB.color + styleB.alpha) {\n return false;\n }\n if (!!styleA.native !== !!styleB.native) {\n return false;\n }\n return true;\n }\n validateBatching() {\n if (this.dirty === this.cacheDirty || !this.graphicsData.length) {\n return false;\n }\n for (let i = 0, l = this.graphicsData.length; i < l; i++) {\n const data = this.graphicsData[i];\n const fill = data.fillStyle;\n const line = data.lineStyle;\n if (fill && !fill.texture.baseTexture.valid)\n return false;\n if (line && !line.texture.baseTexture.valid)\n return false;\n }\n return true;\n }\n packBatches() {\n this.batchDirty++;\n this.uvsFloat32 = new Float32Array(this.uvs);\n const batches = this.batches;\n for (let i = 0, l = batches.length; i < l; i++) {\n const batch = batches[i];\n for (let j = 0; j < batch.size; j++) {\n const index = batch.start + j;\n this.indicesUint16[index] = this.indicesUint16[index] - batch.attribStart;\n }\n }\n }\n isBatchable() {\n if (this.points.length > 65535 * 2) {\n return false;\n }\n const batches = this.batches;\n for (let i = 0; i < batches.length; i++) {\n if (batches[i].style.native) {\n return false;\n }\n }\n return this.points.length < _GraphicsGeometry.BATCHABLE_SIZE * 2;\n }\n buildDrawCalls() {\n let TICK = ++BaseTexture._globalBatch;\n for (let i = 0; i < this.drawCalls.length; i++) {\n this.drawCalls[i].texArray.clear();\n DRAW_CALL_POOL.push(this.drawCalls[i]);\n }\n this.drawCalls.length = 0;\n const colors = this.colors;\n const textureIds = this.textureIds;\n let currentGroup = DRAW_CALL_POOL.pop();\n if (!currentGroup) {\n currentGroup = new BatchDrawCall();\n currentGroup.texArray = new BatchTextureArray();\n }\n currentGroup.texArray.count = 0;\n currentGroup.start = 0;\n currentGroup.size = 0;\n currentGroup.type = DRAW_MODES.TRIANGLES;\n let textureCount = 0;\n let currentTexture = null;\n let textureId = 0;\n let native = false;\n let drawMode = DRAW_MODES.TRIANGLES;\n let index = 0;\n this.drawCalls.push(currentGroup);\n for (let i = 0; i < this.batches.length; i++) {\n const data = this.batches[i];\n const MAX_TEXTURES = 8;\n const style = data.style;\n const nextTexture = style.texture.baseTexture;\n if (native !== !!style.native) {\n native = !!style.native;\n drawMode = native ? DRAW_MODES.LINES : DRAW_MODES.TRIANGLES;\n currentTexture = null;\n textureCount = MAX_TEXTURES;\n TICK++;\n }\n if (currentTexture !== nextTexture) {\n currentTexture = nextTexture;\n if (nextTexture._batchEnabled !== TICK) {\n if (textureCount === MAX_TEXTURES) {\n TICK++;\n textureCount = 0;\n if (currentGroup.size > 0) {\n currentGroup = DRAW_CALL_POOL.pop();\n if (!currentGroup) {\n currentGroup = new BatchDrawCall();\n currentGroup.texArray = new BatchTextureArray();\n }\n this.drawCalls.push(currentGroup);\n }\n currentGroup.start = index;\n currentGroup.size = 0;\n currentGroup.texArray.count = 0;\n currentGroup.type = drawMode;\n }\n nextTexture.touched = 1;\n nextTexture._batchEnabled = TICK;\n nextTexture._batchLocation = textureCount;\n nextTexture.wrapMode = WRAP_MODES.REPEAT;\n currentGroup.texArray.elements[currentGroup.texArray.count++] = nextTexture;\n textureCount++;\n }\n }\n currentGroup.size += data.size;\n index += data.size;\n textureId = nextTexture._batchLocation;\n this.addColors(colors, style.color, style.alpha, data.attribSize, data.attribStart);\n this.addTextureIds(textureIds, textureId, data.attribSize, data.attribStart);\n }\n BaseTexture._globalBatch = TICK;\n this.packAttributes();\n }\n packAttributes() {\n const verts = this.points;\n const uvs = this.uvs;\n const colors = this.colors;\n const textureIds = this.textureIds;\n const glPoints = new ArrayBuffer(verts.length * 3 * 4);\n const f32 = new Float32Array(glPoints);\n const u32 = new Uint32Array(glPoints);\n let p = 0;\n for (let i = 0; i < verts.length / 2; i++) {\n f32[p++] = verts[i * 2];\n f32[p++] = verts[i * 2 + 1];\n f32[p++] = uvs[i * 2];\n f32[p++] = uvs[i * 2 + 1];\n u32[p++] = colors[i];\n f32[p++] = textureIds[i];\n }\n this._buffer.update(glPoints);\n this._indexBuffer.update(this.indicesUint16);\n }\n processFill(data) {\n if (data.holes.length) {\n buildPoly.triangulate(data, this);\n } else {\n const command = FILL_COMMANDS[data.type];\n command.triangulate(data, this);\n }\n }\n processLine(data) {\n buildLine(data, this);\n for (let i = 0; i < data.holes.length; i++) {\n buildLine(data.holes[i], this);\n }\n }\n processHoles(holes) {\n for (let i = 0; i < holes.length; i++) {\n const hole = holes[i];\n const command = FILL_COMMANDS[hole.type];\n command.build(hole);\n if (hole.matrix) {\n this.transformPoints(hole.points, hole.matrix);\n }\n }\n }\n calculateBounds() {\n const bounds = this._bounds;\n bounds.clear();\n bounds.addVertexData(this.points, 0, this.points.length);\n bounds.pad(this.boundsPadding, this.boundsPadding);\n }\n transformPoints(points, matrix) {\n for (let i = 0; i < points.length / 2; i++) {\n const x = points[i * 2];\n const y = points[i * 2 + 1];\n points[i * 2] = matrix.a * x + matrix.c * y + matrix.tx;\n points[i * 2 + 1] = matrix.b * x + matrix.d * y + matrix.ty;\n }\n }\n addColors(colors, color, alpha, size, offset = 0) {\n const rgb = (color >> 16) + (color & 65280) + ((color & 255) << 16);\n const rgba = utils.premultiplyTint(rgb, alpha);\n colors.length = Math.max(colors.length, offset + size);\n for (let i = 0; i < size; i++) {\n colors[offset + i] = rgba;\n }\n }\n addTextureIds(textureIds, id, size, offset = 0) {\n textureIds.length = Math.max(textureIds.length, offset + size);\n for (let i = 0; i < size; i++) {\n textureIds[offset + i] = id;\n }\n }\n addUvs(verts, uvs, texture, start, size, matrix = null) {\n let index = 0;\n const uvsStart = uvs.length;\n const frame = texture.frame;\n while (index < size) {\n let x = verts[(start + index) * 2];\n let y = verts[(start + index) * 2 + 1];\n if (matrix) {\n const nx = matrix.a * x + matrix.c * y + matrix.tx;\n y = matrix.b * x + matrix.d * y + matrix.ty;\n x = nx;\n }\n index++;\n uvs.push(x / frame.width, y / frame.height);\n }\n const baseTexture = texture.baseTexture;\n if (frame.width < baseTexture.width || frame.height < baseTexture.height) {\n this.adjustUvs(uvs, texture, uvsStart, size);\n }\n }\n adjustUvs(uvs, texture, start, size) {\n const baseTexture = texture.baseTexture;\n const eps = 1e-6;\n const finish = start + size * 2;\n const frame = texture.frame;\n const scaleX = frame.width / baseTexture.width;\n const scaleY = frame.height / baseTexture.height;\n let offsetX = frame.x / frame.width;\n let offsetY = frame.y / frame.height;\n let minX = Math.floor(uvs[start] + eps);\n let minY = Math.floor(uvs[start + 1] + eps);\n for (let i = start + 2; i < finish; i += 2) {\n minX = Math.min(minX, Math.floor(uvs[i] + eps));\n minY = Math.min(minY, Math.floor(uvs[i + 1] + eps));\n }\n offsetX -= minX;\n offsetY -= minY;\n for (let i = start; i < finish; i += 2) {\n uvs[i] = (uvs[i] + offsetX) * scaleX;\n uvs[i + 1] = (uvs[i + 1] + offsetY) * scaleY;\n }\n }\n};\nlet GraphicsGeometry = _GraphicsGeometry;\nGraphicsGeometry.BATCHABLE_SIZE = 100;\n\nexport { GraphicsGeometry };\n//# sourceMappingURL=GraphicsGeometry.mjs.map\n","import { FillStyle } from './FillStyle.mjs';\nimport { LINE_CAP, LINE_JOIN } from '../const.mjs';\n\nclass LineStyle extends FillStyle {\n constructor() {\n super(...arguments);\n this.width = 0;\n this.alignment = 0.5;\n this.native = false;\n this.cap = LINE_CAP.BUTT;\n this.join = LINE_JOIN.MITER;\n this.miterLimit = 10;\n }\n clone() {\n const obj = new LineStyle();\n obj.color = this.color;\n obj.alpha = this.alpha;\n obj.texture = this.texture;\n obj.matrix = this.matrix;\n obj.visible = this.visible;\n obj.width = this.width;\n obj.alignment = this.alignment;\n obj.native = this.native;\n obj.cap = this.cap;\n obj.join = this.join;\n obj.miterLimit = this.miterLimit;\n return obj;\n }\n reset() {\n super.reset();\n this.color = 0;\n this.alignment = 0.5;\n this.width = 0;\n this.native = false;\n }\n}\n\nexport { LineStyle };\n//# sourceMappingURL=LineStyle.mjs.map\n","import { State, BLEND_MODES, Texture, Polygon, PI_2, Rectangle, RoundedRectangle, Circle, Ellipse, SHAPES, utils, Matrix, UniformGroup, Shader, Point } from '@pixi/core';\nimport './utils/index.mjs';\nimport { GraphicsGeometry } from './GraphicsGeometry.mjs';\nimport { FillStyle } from './styles/FillStyle.mjs';\nimport { LineStyle } from './styles/LineStyle.mjs';\nimport { Container } from '@pixi/display';\nimport { LINE_CAP, LINE_JOIN } from './const.mjs';\nimport { QuadraticUtils } from './utils/QuadraticUtils.mjs';\nimport { BezierUtils } from './utils/BezierUtils.mjs';\nimport { ArcUtils } from './utils/ArcUtils.mjs';\n\nconst temp = new Float32Array(3);\nconst DEFAULT_SHADERS = {};\nconst _Graphics = class extends Container {\n constructor(geometry = null) {\n super();\n this.shader = null;\n this.pluginName = \"batch\";\n this.currentPath = null;\n this.batches = [];\n this.batchTint = -1;\n this.batchDirty = -1;\n this.vertexData = null;\n this._fillStyle = new FillStyle();\n this._lineStyle = new LineStyle();\n this._matrix = null;\n this._holeMode = false;\n this.state = State.for2d();\n this._geometry = geometry || new GraphicsGeometry();\n this._geometry.refCount++;\n this._transformID = -1;\n this.tint = 16777215;\n this.blendMode = BLEND_MODES.NORMAL;\n }\n get geometry() {\n return this._geometry;\n }\n clone() {\n this.finishPoly();\n return new _Graphics(this._geometry);\n }\n set blendMode(value) {\n this.state.blendMode = value;\n }\n get blendMode() {\n return this.state.blendMode;\n }\n get tint() {\n return this._tint;\n }\n set tint(value) {\n this._tint = value;\n }\n get fill() {\n return this._fillStyle;\n }\n get line() {\n return this._lineStyle;\n }\n lineStyle(options = null, color = 0, alpha = 1, alignment = 0.5, native = false) {\n if (typeof options === \"number\") {\n options = { width: options, color, alpha, alignment, native };\n }\n return this.lineTextureStyle(options);\n }\n lineTextureStyle(options) {\n options = Object.assign({\n width: 0,\n texture: Texture.WHITE,\n color: options?.texture ? 16777215 : 0,\n alpha: 1,\n matrix: null,\n alignment: 0.5,\n native: false,\n cap: LINE_CAP.BUTT,\n join: LINE_JOIN.MITER,\n miterLimit: 10\n }, options);\n if (this.currentPath) {\n this.startPoly();\n }\n const visible = options.width > 0 && options.alpha > 0;\n if (!visible) {\n this._lineStyle.reset();\n } else {\n if (options.matrix) {\n options.matrix = options.matrix.clone();\n options.matrix.invert();\n }\n Object.assign(this._lineStyle, { visible }, options);\n }\n return this;\n }\n startPoly() {\n if (this.currentPath) {\n const points = this.currentPath.points;\n const len = this.currentPath.points.length;\n if (len > 2) {\n this.drawShape(this.currentPath);\n this.currentPath = new Polygon();\n this.currentPath.closeStroke = false;\n this.currentPath.points.push(points[len - 2], points[len - 1]);\n }\n } else {\n this.currentPath = new Polygon();\n this.currentPath.closeStroke = false;\n }\n }\n finishPoly() {\n if (this.currentPath) {\n if (this.currentPath.points.length > 2) {\n this.drawShape(this.currentPath);\n this.currentPath = null;\n } else {\n this.currentPath.points.length = 0;\n }\n }\n }\n moveTo(x, y) {\n this.startPoly();\n this.currentPath.points[0] = x;\n this.currentPath.points[1] = y;\n return this;\n }\n lineTo(x, y) {\n if (!this.currentPath) {\n this.moveTo(0, 0);\n }\n const points = this.currentPath.points;\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n if (fromX !== x || fromY !== y) {\n points.push(x, y);\n }\n return this;\n }\n _initCurve(x = 0, y = 0) {\n if (this.currentPath) {\n if (this.currentPath.points.length === 0) {\n this.currentPath.points = [x, y];\n }\n } else {\n this.moveTo(x, y);\n }\n }\n quadraticCurveTo(cpX, cpY, toX, toY) {\n this._initCurve();\n const points = this.currentPath.points;\n if (points.length === 0) {\n this.moveTo(0, 0);\n }\n QuadraticUtils.curveTo(cpX, cpY, toX, toY, points);\n return this;\n }\n bezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY) {\n this._initCurve();\n BezierUtils.curveTo(cpX, cpY, cpX2, cpY2, toX, toY, this.currentPath.points);\n return this;\n }\n arcTo(x1, y1, x2, y2, radius) {\n this._initCurve(x1, y1);\n const points = this.currentPath.points;\n const result = ArcUtils.curveTo(x1, y1, x2, y2, radius, points);\n if (result) {\n const { cx, cy, radius: radius2, startAngle, endAngle, anticlockwise } = result;\n this.arc(cx, cy, radius2, startAngle, endAngle, anticlockwise);\n }\n return this;\n }\n arc(cx, cy, radius, startAngle, endAngle, anticlockwise = false) {\n if (startAngle === endAngle) {\n return this;\n }\n if (!anticlockwise && endAngle <= startAngle) {\n endAngle += PI_2;\n } else if (anticlockwise && startAngle <= endAngle) {\n startAngle += PI_2;\n }\n const sweep = endAngle - startAngle;\n if (sweep === 0) {\n return this;\n }\n const startX = cx + Math.cos(startAngle) * radius;\n const startY = cy + Math.sin(startAngle) * radius;\n const eps = this._geometry.closePointEps;\n let points = this.currentPath ? this.currentPath.points : null;\n if (points) {\n const xDiff = Math.abs(points[points.length - 2] - startX);\n const yDiff = Math.abs(points[points.length - 1] - startY);\n if (xDiff < eps && yDiff < eps) {\n } else {\n points.push(startX, startY);\n }\n } else {\n this.moveTo(startX, startY);\n points = this.currentPath.points;\n }\n ArcUtils.arc(startX, startY, cx, cy, radius, startAngle, endAngle, anticlockwise, points);\n return this;\n }\n beginFill(color = 0, alpha = 1) {\n return this.beginTextureFill({ texture: Texture.WHITE, color, alpha });\n }\n beginTextureFill(options) {\n options = Object.assign({\n texture: Texture.WHITE,\n color: 16777215,\n alpha: 1,\n matrix: null\n }, options);\n if (this.currentPath) {\n this.startPoly();\n }\n const visible = options.alpha > 0;\n if (!visible) {\n this._fillStyle.reset();\n } else {\n if (options.matrix) {\n options.matrix = options.matrix.clone();\n options.matrix.invert();\n }\n Object.assign(this._fillStyle, { visible }, options);\n }\n return this;\n }\n endFill() {\n this.finishPoly();\n this._fillStyle.reset();\n return this;\n }\n drawRect(x, y, width, height) {\n return this.drawShape(new Rectangle(x, y, width, height));\n }\n drawRoundedRect(x, y, width, height, radius) {\n return this.drawShape(new RoundedRectangle(x, y, width, height, radius));\n }\n drawCircle(x, y, radius) {\n return this.drawShape(new Circle(x, y, radius));\n }\n drawEllipse(x, y, width, height) {\n return this.drawShape(new Ellipse(x, y, width, height));\n }\n drawPolygon(...path) {\n let points;\n let closeStroke = true;\n const poly = path[0];\n if (poly.points) {\n closeStroke = poly.closeStroke;\n points = poly.points;\n } else if (Array.isArray(path[0])) {\n points = path[0];\n } else {\n points = path;\n }\n const shape = new Polygon(points);\n shape.closeStroke = closeStroke;\n this.drawShape(shape);\n return this;\n }\n drawShape(shape) {\n if (!this._holeMode) {\n this._geometry.drawShape(shape, this._fillStyle.clone(), this._lineStyle.clone(), this._matrix);\n } else {\n this._geometry.drawHole(shape, this._matrix);\n }\n return this;\n }\n clear() {\n this._geometry.clear();\n this._lineStyle.reset();\n this._fillStyle.reset();\n this._boundsID++;\n this._matrix = null;\n this._holeMode = false;\n this.currentPath = null;\n return this;\n }\n isFastRect() {\n const data = this._geometry.graphicsData;\n return data.length === 1 && data[0].shape.type === SHAPES.RECT && !data[0].matrix && !data[0].holes.length && !(data[0].lineStyle.visible && data[0].lineStyle.width);\n }\n _render(renderer) {\n this.finishPoly();\n const geometry = this._geometry;\n geometry.updateBatches();\n if (geometry.batchable) {\n if (this.batchDirty !== geometry.batchDirty) {\n this._populateBatches();\n }\n this._renderBatched(renderer);\n } else {\n renderer.batch.flush();\n this._renderDirect(renderer);\n }\n }\n _populateBatches() {\n const geometry = this._geometry;\n const blendMode = this.blendMode;\n const len = geometry.batches.length;\n this.batchTint = -1;\n this._transformID = -1;\n this.batchDirty = geometry.batchDirty;\n this.batches.length = len;\n this.vertexData = new Float32Array(geometry.points);\n for (let i = 0; i < len; i++) {\n const gI = geometry.batches[i];\n const color = gI.style.color;\n const vertexData = new Float32Array(this.vertexData.buffer, gI.attribStart * 4 * 2, gI.attribSize * 2);\n const uvs = new Float32Array(geometry.uvsFloat32.buffer, gI.attribStart * 4 * 2, gI.attribSize * 2);\n const indices = new Uint16Array(geometry.indicesUint16.buffer, gI.start * 2, gI.size);\n const batch = {\n vertexData,\n blendMode,\n indices,\n uvs,\n _batchRGB: utils.hex2rgb(color),\n _tintRGB: color,\n _texture: gI.style.texture,\n alpha: gI.style.alpha,\n worldAlpha: 1\n };\n this.batches[i] = batch;\n }\n }\n _renderBatched(renderer) {\n if (!this.batches.length) {\n return;\n }\n renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]);\n this.calculateVertices();\n this.calculateTints();\n for (let i = 0, l = this.batches.length; i < l; i++) {\n const batch = this.batches[i];\n batch.worldAlpha = this.worldAlpha * batch.alpha;\n renderer.plugins[this.pluginName].render(batch);\n }\n }\n _renderDirect(renderer) {\n const shader = this._resolveDirectShader(renderer);\n const geometry = this._geometry;\n const tint = this.tint;\n const worldAlpha = this.worldAlpha;\n const uniforms = shader.uniforms;\n const drawCalls = geometry.drawCalls;\n uniforms.translationMatrix = this.transform.worldTransform;\n uniforms.tint[0] = (tint >> 16 & 255) / 255 * worldAlpha;\n uniforms.tint[1] = (tint >> 8 & 255) / 255 * worldAlpha;\n uniforms.tint[2] = (tint & 255) / 255 * worldAlpha;\n uniforms.tint[3] = worldAlpha;\n renderer.shader.bind(shader);\n renderer.geometry.bind(geometry, shader);\n renderer.state.set(this.state);\n for (let i = 0, l = drawCalls.length; i < l; i++) {\n this._renderDrawCallDirect(renderer, geometry.drawCalls[i]);\n }\n }\n _renderDrawCallDirect(renderer, drawCall) {\n const { texArray, type, size, start } = drawCall;\n const groupTextureCount = texArray.count;\n for (let j = 0; j < groupTextureCount; j++) {\n renderer.texture.bind(texArray.elements[j], j);\n }\n renderer.geometry.draw(type, size, start);\n }\n _resolveDirectShader(renderer) {\n let shader = this.shader;\n const pluginName = this.pluginName;\n if (!shader) {\n if (!DEFAULT_SHADERS[pluginName]) {\n const { MAX_TEXTURES } = renderer.plugins[pluginName];\n const sampleValues = new Int32Array(MAX_TEXTURES);\n for (let i = 0; i < MAX_TEXTURES; i++) {\n sampleValues[i] = i;\n }\n const uniforms = {\n tint: new Float32Array([1, 1, 1, 1]),\n translationMatrix: new Matrix(),\n default: UniformGroup.from({ uSamplers: sampleValues }, true)\n };\n const program = renderer.plugins[pluginName]._shader.program;\n DEFAULT_SHADERS[pluginName] = new Shader(program, uniforms);\n }\n shader = DEFAULT_SHADERS[pluginName];\n }\n return shader;\n }\n _calculateBounds() {\n this.finishPoly();\n const geometry = this._geometry;\n if (!geometry.graphicsData.length) {\n return;\n }\n const { minX, minY, maxX, maxY } = geometry.bounds;\n this._bounds.addFrame(this.transform, minX, minY, maxX, maxY);\n }\n containsPoint(point) {\n this.worldTransform.applyInverse(point, _Graphics._TEMP_POINT);\n return this._geometry.containsPoint(_Graphics._TEMP_POINT);\n }\n calculateTints() {\n if (this.batchTint !== this.tint) {\n this.batchTint = this.tint;\n const tintRGB = utils.hex2rgb(this.tint, temp);\n for (let i = 0; i < this.batches.length; i++) {\n const batch = this.batches[i];\n const batchTint = batch._batchRGB;\n const r = tintRGB[0] * batchTint[0] * 255;\n const g = tintRGB[1] * batchTint[1] * 255;\n const b = tintRGB[2] * batchTint[2] * 255;\n const color = (r << 16) + (g << 8) + (b | 0);\n batch._tintRGB = (color >> 16) + (color & 65280) + ((color & 255) << 16);\n }\n }\n }\n calculateVertices() {\n const wtID = this.transform._worldID;\n if (this._transformID === wtID) {\n return;\n }\n this._transformID = wtID;\n const wt = this.transform.worldTransform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const data = this._geometry.points;\n const vertexData = this.vertexData;\n let count = 0;\n for (let i = 0; i < data.length; i += 2) {\n const x = data[i];\n const y = data[i + 1];\n vertexData[count++] = a * x + c * y + tx;\n vertexData[count++] = d * y + b * x + ty;\n }\n }\n closePath() {\n const currentPath = this.currentPath;\n if (currentPath) {\n currentPath.closeStroke = true;\n this.finishPoly();\n }\n return this;\n }\n setMatrix(matrix) {\n this._matrix = matrix;\n return this;\n }\n beginHole() {\n this.finishPoly();\n this._holeMode = true;\n return this;\n }\n endHole() {\n this.finishPoly();\n this._holeMode = false;\n return this;\n }\n destroy(options) {\n this._geometry.refCount--;\n if (this._geometry.refCount === 0) {\n this._geometry.dispose();\n }\n this._matrix = null;\n this.currentPath = null;\n this._lineStyle.destroy();\n this._lineStyle = null;\n this._fillStyle.destroy();\n this._fillStyle = null;\n this._geometry = null;\n this.shader = null;\n this.vertexData = null;\n this.batches.length = 0;\n this.batches = null;\n super.destroy(options);\n }\n};\nlet Graphics = _Graphics;\nGraphics._TEMP_POINT = new Point();\n\nexport { Graphics };\n//# sourceMappingURL=Graphics.mjs.map\n","export { GRAPHICS_CURVES, LINE_CAP, LINE_JOIN } from './const.mjs';\nexport { FillStyle } from './styles/FillStyle.mjs';\nexport { Graphics } from './Graphics.mjs';\nexport { GraphicsData } from './GraphicsData.mjs';\nexport { GraphicsGeometry } from './GraphicsGeometry.mjs';\nexport { LineStyle } from './styles/LineStyle.mjs';\nimport { FILL_COMMANDS, BATCH_POOL, DRAW_CALL_POOL } from './utils/index.mjs';\nimport { buildPoly } from './utils/buildPoly.mjs';\nimport { buildCircle } from './utils/buildCircle.mjs';\nimport { buildRectangle } from './utils/buildRectangle.mjs';\nimport { buildRoundedRectangle } from './utils/buildRoundedRectangle.mjs';\nimport { buildLine } from './utils/buildLine.mjs';\nimport { ArcUtils } from './utils/ArcUtils.mjs';\nimport { BezierUtils } from './utils/BezierUtils.mjs';\nimport { QuadraticUtils } from './utils/QuadraticUtils.mjs';\nimport { BatchPart } from './utils/BatchPart.mjs';\n\nconst graphicsUtils = {\n buildPoly,\n buildCircle,\n buildRectangle,\n buildRoundedRectangle,\n buildLine,\n ArcUtils,\n BezierUtils,\n QuadraticUtils,\n BatchPart,\n FILL_COMMANDS,\n BATCH_POOL,\n DRAW_CALL_POOL\n};\n\nexport { graphicsUtils };\n//# sourceMappingURL=index.mjs.map\n","class MeshBatchUvs {\n constructor(uvBuffer, uvMatrix) {\n this.uvBuffer = uvBuffer;\n this.uvMatrix = uvMatrix;\n this.data = null;\n this._bufferUpdateId = -1;\n this._textureUpdateId = -1;\n this._updateID = 0;\n }\n update(forceUpdate) {\n if (!forceUpdate && this._bufferUpdateId === this.uvBuffer._updateID && this._textureUpdateId === this.uvMatrix._updateID) {\n return;\n }\n this._bufferUpdateId = this.uvBuffer._updateID;\n this._textureUpdateId = this.uvMatrix._updateID;\n const data = this.uvBuffer.data;\n if (!this.data || this.data.length !== data.length) {\n this.data = new Float32Array(data.length);\n }\n this.uvMatrix.multiplyUvs(data, this.data);\n this._updateID++;\n }\n}\n\nexport { MeshBatchUvs };\n//# sourceMappingURL=MeshBatchUvs.mjs.map\n","import { Point, Polygon, State, settings, DRAW_MODES } from '@pixi/core';\nimport { Container } from '@pixi/display';\nimport { MeshBatchUvs } from './MeshBatchUvs.mjs';\n\nconst tempPoint = new Point();\nconst tempPolygon = new Polygon();\nconst _Mesh = class extends Container {\n constructor(geometry, shader, state, drawMode = DRAW_MODES.TRIANGLES) {\n super();\n this.geometry = geometry;\n this.shader = shader;\n this.state = state || State.for2d();\n this.drawMode = drawMode;\n this.start = 0;\n this.size = 0;\n this.uvs = null;\n this.indices = null;\n this.vertexData = new Float32Array(1);\n this.vertexDirty = -1;\n this._transformID = -1;\n this._roundPixels = settings.ROUND_PIXELS;\n this.batchUvs = null;\n }\n get geometry() {\n return this._geometry;\n }\n set geometry(value) {\n if (this._geometry === value) {\n return;\n }\n if (this._geometry) {\n this._geometry.refCount--;\n if (this._geometry.refCount === 0) {\n this._geometry.dispose();\n }\n }\n this._geometry = value;\n if (this._geometry) {\n this._geometry.refCount++;\n }\n this.vertexDirty = -1;\n }\n get uvBuffer() {\n return this.geometry.buffers[1];\n }\n get verticesBuffer() {\n return this.geometry.buffers[0];\n }\n set material(value) {\n this.shader = value;\n }\n get material() {\n return this.shader;\n }\n set blendMode(value) {\n this.state.blendMode = value;\n }\n get blendMode() {\n return this.state.blendMode;\n }\n set roundPixels(value) {\n if (this._roundPixels !== value) {\n this._transformID = -1;\n }\n this._roundPixels = value;\n }\n get roundPixels() {\n return this._roundPixels;\n }\n get tint() {\n return \"tint\" in this.shader ? this.shader.tint : null;\n }\n set tint(value) {\n this.shader.tint = value;\n }\n get texture() {\n return \"texture\" in this.shader ? this.shader.texture : null;\n }\n set texture(value) {\n this.shader.texture = value;\n }\n _render(renderer) {\n const vertices = this.geometry.buffers[0].data;\n const shader = this.shader;\n if (shader.batchable && this.drawMode === DRAW_MODES.TRIANGLES && vertices.length < _Mesh.BATCHABLE_SIZE * 2) {\n this._renderToBatch(renderer);\n } else {\n this._renderDefault(renderer);\n }\n }\n _renderDefault(renderer) {\n const shader = this.shader;\n shader.alpha = this.worldAlpha;\n if (shader.update) {\n shader.update();\n }\n renderer.batch.flush();\n shader.uniforms.translationMatrix = this.transform.worldTransform.toArray(true);\n renderer.shader.bind(shader);\n renderer.state.set(this.state);\n renderer.geometry.bind(this.geometry, shader);\n renderer.geometry.draw(this.drawMode, this.size, this.start, this.geometry.instanceCount);\n }\n _renderToBatch(renderer) {\n const geometry = this.geometry;\n const shader = this.shader;\n if (shader.uvMatrix) {\n shader.uvMatrix.update();\n this.calculateUvs();\n }\n this.calculateVertices();\n this.indices = geometry.indexBuffer.data;\n this._tintRGB = shader._tintRGB;\n this._texture = shader.texture;\n const pluginName = this.material.pluginName;\n renderer.batch.setObjectRenderer(renderer.plugins[pluginName]);\n renderer.plugins[pluginName].render(this);\n }\n calculateVertices() {\n const geometry = this.geometry;\n const verticesBuffer = geometry.buffers[0];\n const vertices = verticesBuffer.data;\n const vertexDirtyId = verticesBuffer._updateID;\n if (vertexDirtyId === this.vertexDirty && this._transformID === this.transform._worldID) {\n return;\n }\n this._transformID = this.transform._worldID;\n if (this.vertexData.length !== vertices.length) {\n this.vertexData = new Float32Array(vertices.length);\n }\n const wt = this.transform.worldTransform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const vertexData = this.vertexData;\n for (let i = 0; i < vertexData.length / 2; i++) {\n const x = vertices[i * 2];\n const y = vertices[i * 2 + 1];\n vertexData[i * 2] = a * x + c * y + tx;\n vertexData[i * 2 + 1] = b * x + d * y + ty;\n }\n if (this._roundPixels) {\n const resolution = settings.RESOLUTION;\n for (let i = 0; i < vertexData.length; ++i) {\n vertexData[i] = Math.round((vertexData[i] * resolution | 0) / resolution);\n }\n }\n this.vertexDirty = vertexDirtyId;\n }\n calculateUvs() {\n const geomUvs = this.geometry.buffers[1];\n const shader = this.shader;\n if (!shader.uvMatrix.isSimple) {\n if (!this.batchUvs) {\n this.batchUvs = new MeshBatchUvs(geomUvs, shader.uvMatrix);\n }\n this.batchUvs.update();\n this.uvs = this.batchUvs.data;\n } else {\n this.uvs = geomUvs.data;\n }\n }\n _calculateBounds() {\n this.calculateVertices();\n this._bounds.addVertexData(this.vertexData, 0, this.vertexData.length);\n }\n containsPoint(point) {\n if (!this.getBounds().contains(point.x, point.y)) {\n return false;\n }\n this.worldTransform.applyInverse(point, tempPoint);\n const vertices = this.geometry.getBuffer(\"aVertexPosition\").data;\n const points = tempPolygon.points;\n const indices = this.geometry.getIndex().data;\n const len = indices.length;\n const step = this.drawMode === 4 ? 3 : 1;\n for (let i = 0; i + 2 < len; i += step) {\n const ind0 = indices[i] * 2;\n const ind1 = indices[i + 1] * 2;\n const ind2 = indices[i + 2] * 2;\n points[0] = vertices[ind0];\n points[1] = vertices[ind0 + 1];\n points[2] = vertices[ind1];\n points[3] = vertices[ind1 + 1];\n points[4] = vertices[ind2];\n points[5] = vertices[ind2 + 1];\n if (tempPolygon.contains(tempPoint.x, tempPoint.y)) {\n return true;\n }\n }\n return false;\n }\n destroy(options) {\n super.destroy(options);\n if (this._cachedTexture) {\n this._cachedTexture.destroy();\n this._cachedTexture = null;\n }\n this.geometry = null;\n this.shader = null;\n this.state = null;\n this.uvs = null;\n this.indices = null;\n this.vertexData = null;\n }\n};\nlet Mesh = _Mesh;\nMesh.BATCHABLE_SIZE = 100;\n\nexport { Mesh };\n//# sourceMappingURL=Mesh.mjs.map\n","var fragment = \"varying vec2 vTextureCoord;\\nuniform vec4 uColor;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=mesh.mjs.map\n","var vertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 translationMatrix;\\nuniform mat3 uTextureMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=mesh2.mjs.map\n","import { Shader, Matrix, Program, TextureMatrix, utils } from '@pixi/core';\nimport fragment from './shader/mesh.mjs';\nimport vertex from './shader/mesh2.mjs';\n\nclass MeshMaterial extends Shader {\n constructor(uSampler, options) {\n const uniforms = {\n uSampler,\n alpha: 1,\n uTextureMatrix: Matrix.IDENTITY,\n uColor: new Float32Array([1, 1, 1, 1])\n };\n options = Object.assign({\n tint: 16777215,\n alpha: 1,\n pluginName: \"batch\"\n }, options);\n if (options.uniforms) {\n Object.assign(uniforms, options.uniforms);\n }\n super(options.program || Program.from(vertex, fragment), uniforms);\n this._colorDirty = false;\n this.uvMatrix = new TextureMatrix(uSampler);\n this.batchable = options.program === void 0;\n this.pluginName = options.pluginName;\n this.tint = options.tint;\n this.alpha = options.alpha;\n }\n get texture() {\n return this.uniforms.uSampler;\n }\n set texture(value) {\n if (this.uniforms.uSampler !== value) {\n if (!this.uniforms.uSampler.baseTexture.alphaMode !== !value.baseTexture.alphaMode) {\n this._colorDirty = true;\n }\n this.uniforms.uSampler = value;\n this.uvMatrix.texture = value;\n }\n }\n set alpha(value) {\n if (value === this._alpha)\n return;\n this._alpha = value;\n this._colorDirty = true;\n }\n get alpha() {\n return this._alpha;\n }\n set tint(value) {\n if (value === this._tint)\n return;\n this._tint = value;\n this._tintRGB = (value >> 16) + (value & 65280) + ((value & 255) << 16);\n this._colorDirty = true;\n }\n get tint() {\n return this._tint;\n }\n update() {\n if (this._colorDirty) {\n this._colorDirty = false;\n const baseTexture = this.texture.baseTexture;\n utils.premultiplyTintToRgba(this._tint, this._alpha, this.uniforms.uColor, baseTexture.alphaMode);\n }\n if (this.uvMatrix.update()) {\n this.uniforms.uTextureMatrix = this.uvMatrix.mapCoord;\n }\n }\n}\n\nexport { MeshMaterial };\n//# sourceMappingURL=MeshMaterial.mjs.map\n","import { Geometry, Buffer, TYPES } from '@pixi/core';\n\nclass MeshGeometry extends Geometry {\n constructor(vertices, uvs, index) {\n super();\n const verticesBuffer = new Buffer(vertices);\n const uvsBuffer = new Buffer(uvs, true);\n const indexBuffer = new Buffer(index, true, true);\n this.addAttribute(\"aVertexPosition\", verticesBuffer, 2, false, TYPES.FLOAT).addAttribute(\"aTextureCoord\", uvsBuffer, 2, false, TYPES.FLOAT).addIndex(indexBuffer);\n this._updateId = -1;\n }\n get vertexDirtyId() {\n return this.buffers[0]._updateID;\n }\n}\n\nexport { MeshGeometry };\n//# sourceMappingURL=MeshGeometry.mjs.map\n","import { MeshGeometry } from '@pixi/mesh';\n\nclass PlaneGeometry extends MeshGeometry {\n constructor(width = 100, height = 100, segWidth = 10, segHeight = 10) {\n super();\n this.segWidth = segWidth;\n this.segHeight = segHeight;\n this.width = width;\n this.height = height;\n this.build();\n }\n build() {\n const total = this.segWidth * this.segHeight;\n const verts = [];\n const uvs = [];\n const indices = [];\n const segmentsX = this.segWidth - 1;\n const segmentsY = this.segHeight - 1;\n const sizeX = this.width / segmentsX;\n const sizeY = this.height / segmentsY;\n for (let i = 0; i < total; i++) {\n const x = i % this.segWidth;\n const y = i / this.segWidth | 0;\n verts.push(x * sizeX, y * sizeY);\n uvs.push(x / segmentsX, y / segmentsY);\n }\n const totalSub = segmentsX * segmentsY;\n for (let i = 0; i < totalSub; i++) {\n const xpos = i % segmentsX;\n const ypos = i / segmentsX | 0;\n const value = ypos * this.segWidth + xpos;\n const value2 = ypos * this.segWidth + xpos + 1;\n const value3 = (ypos + 1) * this.segWidth + xpos;\n const value4 = (ypos + 1) * this.segWidth + xpos + 1;\n indices.push(value, value2, value3, value2, value4, value3);\n }\n this.buffers[0].data = new Float32Array(verts);\n this.buffers[1].data = new Float32Array(uvs);\n this.indexBuffer.data = new Uint16Array(indices);\n this.buffers[0].update();\n this.buffers[1].update();\n this.indexBuffer.update();\n }\n}\n\nexport { PlaneGeometry };\n//# sourceMappingURL=PlaneGeometry.mjs.map\n","import { MeshGeometry } from '@pixi/mesh';\n\nclass RopeGeometry extends MeshGeometry {\n constructor(width = 200, points, textureScale = 0) {\n super(new Float32Array(points.length * 4), new Float32Array(points.length * 4), new Uint16Array((points.length - 1) * 6));\n this.points = points;\n this._width = width;\n this.textureScale = textureScale;\n this.build();\n }\n get width() {\n return this._width;\n }\n build() {\n const points = this.points;\n if (!points)\n return;\n const vertexBuffer = this.getBuffer(\"aVertexPosition\");\n const uvBuffer = this.getBuffer(\"aTextureCoord\");\n const indexBuffer = this.getIndex();\n if (points.length < 1) {\n return;\n }\n if (vertexBuffer.data.length / 4 !== points.length) {\n vertexBuffer.data = new Float32Array(points.length * 4);\n uvBuffer.data = new Float32Array(points.length * 4);\n indexBuffer.data = new Uint16Array((points.length - 1) * 6);\n }\n const uvs = uvBuffer.data;\n const indices = indexBuffer.data;\n uvs[0] = 0;\n uvs[1] = 0;\n uvs[2] = 0;\n uvs[3] = 1;\n let amount = 0;\n let prev = points[0];\n const textureWidth = this._width * this.textureScale;\n const total = points.length;\n for (let i = 0; i < total; i++) {\n const index = i * 4;\n if (this.textureScale > 0) {\n const dx = prev.x - points[i].x;\n const dy = prev.y - points[i].y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n prev = points[i];\n amount += distance / textureWidth;\n } else {\n amount = i / (total - 1);\n }\n uvs[index] = amount;\n uvs[index + 1] = 0;\n uvs[index + 2] = amount;\n uvs[index + 3] = 1;\n }\n let indexCount = 0;\n for (let i = 0; i < total - 1; i++) {\n const index = i * 2;\n indices[indexCount++] = index;\n indices[indexCount++] = index + 1;\n indices[indexCount++] = index + 2;\n indices[indexCount++] = index + 2;\n indices[indexCount++] = index + 1;\n indices[indexCount++] = index + 3;\n }\n uvBuffer.update();\n indexBuffer.update();\n this.updateVertices();\n }\n updateVertices() {\n const points = this.points;\n if (points.length < 1) {\n return;\n }\n let lastPoint = points[0];\n let nextPoint;\n let perpX = 0;\n let perpY = 0;\n const vertices = this.buffers[0].data;\n const total = points.length;\n for (let i = 0; i < total; i++) {\n const point = points[i];\n const index = i * 4;\n if (i < points.length - 1) {\n nextPoint = points[i + 1];\n } else {\n nextPoint = point;\n }\n perpY = -(nextPoint.x - lastPoint.x);\n perpX = nextPoint.y - lastPoint.y;\n let ratio = (1 - i / (total - 1)) * 10;\n if (ratio > 1) {\n ratio = 1;\n }\n const perpLength = Math.sqrt(perpX * perpX + perpY * perpY);\n const num = this.textureScale > 0 ? this.textureScale * this._width / 2 : this._width / 2;\n perpX /= perpLength;\n perpY /= perpLength;\n perpX *= num;\n perpY *= num;\n vertices[index] = point.x + perpX;\n vertices[index + 1] = point.y + perpY;\n vertices[index + 2] = point.x - perpX;\n vertices[index + 3] = point.y - perpY;\n lastPoint = point;\n }\n this.buffers[0].update();\n }\n update() {\n if (this.textureScale > 0) {\n this.build();\n } else {\n this.updateVertices();\n }\n }\n}\n\nexport { RopeGeometry };\n//# sourceMappingURL=RopeGeometry.mjs.map\n","import { Mesh, MeshMaterial } from '@pixi/mesh';\nimport { WRAP_MODES } from '@pixi/core';\nimport { RopeGeometry } from './geometry/RopeGeometry.mjs';\n\nclass SimpleRope extends Mesh {\n constructor(texture, points, textureScale = 0) {\n const ropeGeometry = new RopeGeometry(texture.height, points, textureScale);\n const meshMaterial = new MeshMaterial(texture);\n if (textureScale > 0) {\n texture.baseTexture.wrapMode = WRAP_MODES.REPEAT;\n }\n super(ropeGeometry, meshMaterial);\n this.autoUpdate = true;\n }\n _render(renderer) {\n const geometry = this.geometry;\n if (this.autoUpdate || geometry._width !== this.shader.texture.height) {\n geometry._width = this.shader.texture.height;\n geometry.update();\n }\n super._render(renderer);\n }\n}\n\nexport { SimpleRope };\n//# sourceMappingURL=SimpleRope.mjs.map\n","import { Texture } from '@pixi/core';\nimport { Mesh, MeshMaterial } from '@pixi/mesh';\nimport { PlaneGeometry } from './geometry/PlaneGeometry.mjs';\n\nclass SimplePlane extends Mesh {\n constructor(texture, verticesX, verticesY) {\n const planeGeometry = new PlaneGeometry(texture.width, texture.height, verticesX, verticesY);\n const meshMaterial = new MeshMaterial(Texture.WHITE);\n super(planeGeometry, meshMaterial);\n this.texture = texture;\n this.autoResize = true;\n }\n textureUpdated() {\n this._textureID = this.shader.texture._updateID;\n const geometry = this.geometry;\n const { width, height } = this.shader.texture;\n if (this.autoResize && (geometry.width !== width || geometry.height !== height)) {\n geometry.width = this.shader.texture.width;\n geometry.height = this.shader.texture.height;\n geometry.build();\n }\n }\n set texture(value) {\n if (this.shader.texture === value) {\n return;\n }\n this.shader.texture = value;\n this._textureID = -1;\n if (value.baseTexture.valid) {\n this.textureUpdated();\n } else {\n value.once(\"update\", this.textureUpdated, this);\n }\n }\n get texture() {\n return this.shader.texture;\n }\n _render(renderer) {\n if (this._textureID !== this.shader.texture._updateID) {\n this.textureUpdated();\n }\n super._render(renderer);\n }\n destroy(options) {\n this.shader.texture.off(\"update\", this.textureUpdated, this);\n super.destroy(options);\n }\n}\n\nexport { SimplePlane };\n//# sourceMappingURL=SimplePlane.mjs.map\n","import { Mesh, MeshGeometry, MeshMaterial } from '@pixi/mesh';\nimport { Texture } from '@pixi/core';\n\nclass SimpleMesh extends Mesh {\n constructor(texture = Texture.EMPTY, vertices, uvs, indices, drawMode) {\n const geometry = new MeshGeometry(vertices, uvs, indices);\n geometry.getBuffer(\"aVertexPosition\").static = false;\n const meshMaterial = new MeshMaterial(texture);\n super(geometry, meshMaterial, null, drawMode);\n this.autoUpdate = true;\n }\n get vertices() {\n return this.geometry.getBuffer(\"aVertexPosition\").data;\n }\n set vertices(value) {\n this.geometry.getBuffer(\"aVertexPosition\").data = value;\n }\n _render(renderer) {\n if (this.autoUpdate) {\n this.geometry.getBuffer(\"aVertexPosition\").update();\n }\n super._render(renderer);\n }\n}\n\nexport { SimpleMesh };\n//# sourceMappingURL=SimpleMesh.mjs.map\n","import { Texture } from '@pixi/core';\nimport { SimplePlane } from './SimplePlane.mjs';\n\nconst DEFAULT_BORDER_SIZE = 10;\nclass NineSlicePlane extends SimplePlane {\n constructor(texture, leftWidth = DEFAULT_BORDER_SIZE, topHeight = DEFAULT_BORDER_SIZE, rightWidth = DEFAULT_BORDER_SIZE, bottomHeight = DEFAULT_BORDER_SIZE) {\n super(Texture.WHITE, 4, 4);\n this._origWidth = texture.orig.width;\n this._origHeight = texture.orig.height;\n this._width = this._origWidth;\n this._height = this._origHeight;\n this._leftWidth = leftWidth;\n this._rightWidth = rightWidth;\n this._topHeight = topHeight;\n this._bottomHeight = bottomHeight;\n this.texture = texture;\n }\n textureUpdated() {\n this._textureID = this.shader.texture._updateID;\n this._refresh();\n }\n get vertices() {\n return this.geometry.getBuffer(\"aVertexPosition\").data;\n }\n set vertices(value) {\n this.geometry.getBuffer(\"aVertexPosition\").data = value;\n }\n updateHorizontalVertices() {\n const vertices = this.vertices;\n const scale = this._getMinScale();\n vertices[9] = vertices[11] = vertices[13] = vertices[15] = this._topHeight * scale;\n vertices[17] = vertices[19] = vertices[21] = vertices[23] = this._height - this._bottomHeight * scale;\n vertices[25] = vertices[27] = vertices[29] = vertices[31] = this._height;\n }\n updateVerticalVertices() {\n const vertices = this.vertices;\n const scale = this._getMinScale();\n vertices[2] = vertices[10] = vertices[18] = vertices[26] = this._leftWidth * scale;\n vertices[4] = vertices[12] = vertices[20] = vertices[28] = this._width - this._rightWidth * scale;\n vertices[6] = vertices[14] = vertices[22] = vertices[30] = this._width;\n }\n _getMinScale() {\n const w = this._leftWidth + this._rightWidth;\n const scaleW = this._width > w ? 1 : this._width / w;\n const h = this._topHeight + this._bottomHeight;\n const scaleH = this._height > h ? 1 : this._height / h;\n const scale = Math.min(scaleW, scaleH);\n return scale;\n }\n get width() {\n return this._width;\n }\n set width(value) {\n this._width = value;\n this._refresh();\n }\n get height() {\n return this._height;\n }\n set height(value) {\n this._height = value;\n this._refresh();\n }\n get leftWidth() {\n return this._leftWidth;\n }\n set leftWidth(value) {\n this._leftWidth = value;\n this._refresh();\n }\n get rightWidth() {\n return this._rightWidth;\n }\n set rightWidth(value) {\n this._rightWidth = value;\n this._refresh();\n }\n get topHeight() {\n return this._topHeight;\n }\n set topHeight(value) {\n this._topHeight = value;\n this._refresh();\n }\n get bottomHeight() {\n return this._bottomHeight;\n }\n set bottomHeight(value) {\n this._bottomHeight = value;\n this._refresh();\n }\n _refresh() {\n const texture = this.texture;\n const uvs = this.geometry.buffers[1].data;\n this._origWidth = texture.orig.width;\n this._origHeight = texture.orig.height;\n const _uvw = 1 / this._origWidth;\n const _uvh = 1 / this._origHeight;\n uvs[0] = uvs[8] = uvs[16] = uvs[24] = 0;\n uvs[1] = uvs[3] = uvs[5] = uvs[7] = 0;\n uvs[6] = uvs[14] = uvs[22] = uvs[30] = 1;\n uvs[25] = uvs[27] = uvs[29] = uvs[31] = 1;\n uvs[2] = uvs[10] = uvs[18] = uvs[26] = _uvw * this._leftWidth;\n uvs[4] = uvs[12] = uvs[20] = uvs[28] = 1 - _uvw * this._rightWidth;\n uvs[9] = uvs[11] = uvs[13] = uvs[15] = _uvh * this._topHeight;\n uvs[17] = uvs[19] = uvs[21] = uvs[23] = 1 - _uvh * this._bottomHeight;\n this.updateHorizontalVertices();\n this.updateVerticalVertices();\n this.geometry.buffers[0].update();\n this.geometry.buffers[1].update();\n }\n}\n\nexport { NineSlicePlane };\n//# sourceMappingURL=NineSlicePlane.mjs.map\n","import { BLEND_MODES, utils } from '@pixi/core';\nimport { Container } from '@pixi/display';\n\nclass ParticleContainer extends Container {\n constructor(maxSize = 1500, properties, batchSize = 16384, autoResize = false) {\n super();\n const maxBatchSize = 16384;\n if (batchSize > maxBatchSize) {\n batchSize = maxBatchSize;\n }\n this._properties = [false, true, false, false, false];\n this._maxSize = maxSize;\n this._batchSize = batchSize;\n this._buffers = null;\n this._bufferUpdateIDs = [];\n this._updateID = 0;\n this.interactiveChildren = false;\n this.blendMode = BLEND_MODES.NORMAL;\n this.autoResize = autoResize;\n this.roundPixels = true;\n this.baseTexture = null;\n this.setProperties(properties);\n this._tint = 0;\n this.tintRgb = new Float32Array(4);\n this.tint = 16777215;\n }\n setProperties(properties) {\n if (properties) {\n this._properties[0] = \"vertices\" in properties || \"scale\" in properties ? !!properties.vertices || !!properties.scale : this._properties[0];\n this._properties[1] = \"position\" in properties ? !!properties.position : this._properties[1];\n this._properties[2] = \"rotation\" in properties ? !!properties.rotation : this._properties[2];\n this._properties[3] = \"uvs\" in properties ? !!properties.uvs : this._properties[3];\n this._properties[4] = \"tint\" in properties || \"alpha\" in properties ? !!properties.tint || !!properties.alpha : this._properties[4];\n }\n }\n updateTransform() {\n this.displayObjectUpdateTransform();\n }\n get tint() {\n return this._tint;\n }\n set tint(value) {\n this._tint = value;\n utils.hex2rgb(value, this.tintRgb);\n }\n render(renderer) {\n if (!this.visible || this.worldAlpha <= 0 || !this.children.length || !this.renderable) {\n return;\n }\n if (!this.baseTexture) {\n this.baseTexture = this.children[0]._texture.baseTexture;\n if (!this.baseTexture.valid) {\n this.baseTexture.once(\"update\", () => this.onChildrenChange(0));\n }\n }\n renderer.batch.setObjectRenderer(renderer.plugins.particle);\n renderer.plugins.particle.render(this);\n }\n onChildrenChange(smallestChildIndex) {\n const bufferIndex = Math.floor(smallestChildIndex / this._batchSize);\n while (this._bufferUpdateIDs.length < bufferIndex) {\n this._bufferUpdateIDs.push(0);\n }\n this._bufferUpdateIDs[bufferIndex] = ++this._updateID;\n }\n dispose() {\n if (this._buffers) {\n for (let i = 0; i < this._buffers.length; ++i) {\n this._buffers[i].destroy();\n }\n this._buffers = null;\n }\n }\n destroy(options) {\n super.destroy(options);\n this.dispose();\n this._properties = null;\n this._buffers = null;\n this._bufferUpdateIDs = null;\n }\n}\n\nexport { ParticleContainer };\n//# sourceMappingURL=ParticleContainer.mjs.map\n","import { Geometry, TYPES, Buffer, utils } from '@pixi/core';\n\nclass ParticleBuffer {\n constructor(properties, dynamicPropertyFlags, size) {\n this.geometry = new Geometry();\n this.indexBuffer = null;\n this.size = size;\n this.dynamicProperties = [];\n this.staticProperties = [];\n for (let i = 0; i < properties.length; ++i) {\n let property = properties[i];\n property = {\n attributeName: property.attributeName,\n size: property.size,\n uploadFunction: property.uploadFunction,\n type: property.type || TYPES.FLOAT,\n offset: property.offset\n };\n if (dynamicPropertyFlags[i]) {\n this.dynamicProperties.push(property);\n } else {\n this.staticProperties.push(property);\n }\n }\n this.staticStride = 0;\n this.staticBuffer = null;\n this.staticData = null;\n this.staticDataUint32 = null;\n this.dynamicStride = 0;\n this.dynamicBuffer = null;\n this.dynamicData = null;\n this.dynamicDataUint32 = null;\n this._updateID = 0;\n this.initBuffers();\n }\n initBuffers() {\n const geometry = this.geometry;\n let dynamicOffset = 0;\n this.indexBuffer = new Buffer(utils.createIndicesForQuads(this.size), true, true);\n geometry.addIndex(this.indexBuffer);\n this.dynamicStride = 0;\n for (let i = 0; i < this.dynamicProperties.length; ++i) {\n const property = this.dynamicProperties[i];\n property.offset = dynamicOffset;\n dynamicOffset += property.size;\n this.dynamicStride += property.size;\n }\n const dynBuffer = new ArrayBuffer(this.size * this.dynamicStride * 4 * 4);\n this.dynamicData = new Float32Array(dynBuffer);\n this.dynamicDataUint32 = new Uint32Array(dynBuffer);\n this.dynamicBuffer = new Buffer(this.dynamicData, false, false);\n let staticOffset = 0;\n this.staticStride = 0;\n for (let i = 0; i < this.staticProperties.length; ++i) {\n const property = this.staticProperties[i];\n property.offset = staticOffset;\n staticOffset += property.size;\n this.staticStride += property.size;\n }\n const statBuffer = new ArrayBuffer(this.size * this.staticStride * 4 * 4);\n this.staticData = new Float32Array(statBuffer);\n this.staticDataUint32 = new Uint32Array(statBuffer);\n this.staticBuffer = new Buffer(this.staticData, true, false);\n for (let i = 0; i < this.dynamicProperties.length; ++i) {\n const property = this.dynamicProperties[i];\n geometry.addAttribute(property.attributeName, this.dynamicBuffer, 0, property.type === TYPES.UNSIGNED_BYTE, property.type, this.dynamicStride * 4, property.offset * 4);\n }\n for (let i = 0; i < this.staticProperties.length; ++i) {\n const property = this.staticProperties[i];\n geometry.addAttribute(property.attributeName, this.staticBuffer, 0, property.type === TYPES.UNSIGNED_BYTE, property.type, this.staticStride * 4, property.offset * 4);\n }\n }\n uploadDynamic(children, startIndex, amount) {\n for (let i = 0; i < this.dynamicProperties.length; i++) {\n const property = this.dynamicProperties[i];\n property.uploadFunction(children, startIndex, amount, property.type === TYPES.UNSIGNED_BYTE ? this.dynamicDataUint32 : this.dynamicData, this.dynamicStride, property.offset);\n }\n this.dynamicBuffer._updateID++;\n }\n uploadStatic(children, startIndex, amount) {\n for (let i = 0; i < this.staticProperties.length; i++) {\n const property = this.staticProperties[i];\n property.uploadFunction(children, startIndex, amount, property.type === TYPES.UNSIGNED_BYTE ? this.staticDataUint32 : this.staticData, this.staticStride, property.offset);\n }\n this.staticBuffer._updateID++;\n }\n destroy() {\n this.indexBuffer = null;\n this.dynamicProperties = null;\n this.dynamicBuffer = null;\n this.dynamicData = null;\n this.dynamicDataUint32 = null;\n this.staticProperties = null;\n this.staticBuffer = null;\n this.staticData = null;\n this.staticDataUint32 = null;\n this.geometry.destroy();\n }\n}\n\nexport { ParticleBuffer };\n//# sourceMappingURL=ParticleBuffer.mjs.map\n","var fragment = \"varying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void){\\n vec4 color = texture2D(uSampler, vTextureCoord) * vColor;\\n gl_FragColor = color;\\n}\";\n\nexport { fragment as default };\n//# sourceMappingURL=particles.mjs.map\n","var vertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nattribute vec2 aPositionCoord;\\nattribute float aRotation;\\n\\nuniform mat3 translationMatrix;\\nuniform vec4 uColor;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nvoid main(void){\\n float x = (aVertexPosition.x) * cos(aRotation) - (aVertexPosition.y) * sin(aRotation);\\n float y = (aVertexPosition.x) * sin(aRotation) + (aVertexPosition.y) * cos(aRotation);\\n\\n vec2 v = vec2(x, y);\\n v = v + aPositionCoord;\\n\\n gl_Position = vec4((translationMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = aTextureCoord;\\n vColor = aColor * uColor;\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=particles2.mjs.map\n","import { ObjectRenderer, Matrix, TYPES, Shader, State, utils, ExtensionType, extensions } from '@pixi/core';\nimport { ParticleBuffer } from './ParticleBuffer.mjs';\nimport fragment from './particles.mjs';\nimport vertex from './particles2.mjs';\n\nclass ParticleRenderer extends ObjectRenderer {\n constructor(renderer) {\n super(renderer);\n this.shader = null;\n this.properties = null;\n this.tempMatrix = new Matrix();\n this.properties = [\n {\n attributeName: \"aVertexPosition\",\n size: 2,\n uploadFunction: this.uploadVertices,\n offset: 0\n },\n {\n attributeName: \"aPositionCoord\",\n size: 2,\n uploadFunction: this.uploadPosition,\n offset: 0\n },\n {\n attributeName: \"aRotation\",\n size: 1,\n uploadFunction: this.uploadRotation,\n offset: 0\n },\n {\n attributeName: \"aTextureCoord\",\n size: 2,\n uploadFunction: this.uploadUvs,\n offset: 0\n },\n {\n attributeName: \"aColor\",\n size: 1,\n type: TYPES.UNSIGNED_BYTE,\n uploadFunction: this.uploadTint,\n offset: 0\n }\n ];\n this.shader = Shader.from(vertex, fragment, {});\n this.state = State.for2d();\n }\n render(container) {\n const children = container.children;\n const maxSize = container._maxSize;\n const batchSize = container._batchSize;\n const renderer = this.renderer;\n let totalChildren = children.length;\n if (totalChildren === 0) {\n return;\n } else if (totalChildren > maxSize && !container.autoResize) {\n totalChildren = maxSize;\n }\n let buffers = container._buffers;\n if (!buffers) {\n buffers = container._buffers = this.generateBuffers(container);\n }\n const baseTexture = children[0]._texture.baseTexture;\n const premultiplied = baseTexture.alphaMode > 0;\n this.state.blendMode = utils.correctBlendMode(container.blendMode, premultiplied);\n renderer.state.set(this.state);\n const gl = renderer.gl;\n const m = container.worldTransform.copyTo(this.tempMatrix);\n m.prepend(renderer.globalUniforms.uniforms.projectionMatrix);\n this.shader.uniforms.translationMatrix = m.toArray(true);\n this.shader.uniforms.uColor = utils.premultiplyRgba(container.tintRgb, container.worldAlpha, this.shader.uniforms.uColor, premultiplied);\n this.shader.uniforms.uSampler = baseTexture;\n this.renderer.shader.bind(this.shader);\n let updateStatic = false;\n for (let i = 0, j = 0; i < totalChildren; i += batchSize, j += 1) {\n let amount = totalChildren - i;\n if (amount > batchSize) {\n amount = batchSize;\n }\n if (j >= buffers.length) {\n buffers.push(this._generateOneMoreBuffer(container));\n }\n const buffer = buffers[j];\n buffer.uploadDynamic(children, i, amount);\n const bid = container._bufferUpdateIDs[j] || 0;\n updateStatic = updateStatic || buffer._updateID < bid;\n if (updateStatic) {\n buffer._updateID = container._updateID;\n buffer.uploadStatic(children, i, amount);\n }\n renderer.geometry.bind(buffer.geometry);\n gl.drawElements(gl.TRIANGLES, amount * 6, gl.UNSIGNED_SHORT, 0);\n }\n }\n generateBuffers(container) {\n const buffers = [];\n const size = container._maxSize;\n const batchSize = container._batchSize;\n const dynamicPropertyFlags = container._properties;\n for (let i = 0; i < size; i += batchSize) {\n buffers.push(new ParticleBuffer(this.properties, dynamicPropertyFlags, batchSize));\n }\n return buffers;\n }\n _generateOneMoreBuffer(container) {\n const batchSize = container._batchSize;\n const dynamicPropertyFlags = container._properties;\n return new ParticleBuffer(this.properties, dynamicPropertyFlags, batchSize);\n }\n uploadVertices(children, startIndex, amount, array, stride, offset) {\n let w0 = 0;\n let w1 = 0;\n let h0 = 0;\n let h1 = 0;\n for (let i = 0; i < amount; ++i) {\n const sprite = children[startIndex + i];\n const texture = sprite._texture;\n const sx = sprite.scale.x;\n const sy = sprite.scale.y;\n const trim = texture.trim;\n const orig = texture.orig;\n if (trim) {\n w1 = trim.x - sprite.anchor.x * orig.width;\n w0 = w1 + trim.width;\n h1 = trim.y - sprite.anchor.y * orig.height;\n h0 = h1 + trim.height;\n } else {\n w0 = orig.width * (1 - sprite.anchor.x);\n w1 = orig.width * -sprite.anchor.x;\n h0 = orig.height * (1 - sprite.anchor.y);\n h1 = orig.height * -sprite.anchor.y;\n }\n array[offset] = w1 * sx;\n array[offset + 1] = h1 * sy;\n array[offset + stride] = w0 * sx;\n array[offset + stride + 1] = h1 * sy;\n array[offset + stride * 2] = w0 * sx;\n array[offset + stride * 2 + 1] = h0 * sy;\n array[offset + stride * 3] = w1 * sx;\n array[offset + stride * 3 + 1] = h0 * sy;\n offset += stride * 4;\n }\n }\n uploadPosition(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; i++) {\n const spritePosition = children[startIndex + i].position;\n array[offset] = spritePosition.x;\n array[offset + 1] = spritePosition.y;\n array[offset + stride] = spritePosition.x;\n array[offset + stride + 1] = spritePosition.y;\n array[offset + stride * 2] = spritePosition.x;\n array[offset + stride * 2 + 1] = spritePosition.y;\n array[offset + stride * 3] = spritePosition.x;\n array[offset + stride * 3 + 1] = spritePosition.y;\n offset += stride * 4;\n }\n }\n uploadRotation(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; i++) {\n const spriteRotation = children[startIndex + i].rotation;\n array[offset] = spriteRotation;\n array[offset + stride] = spriteRotation;\n array[offset + stride * 2] = spriteRotation;\n array[offset + stride * 3] = spriteRotation;\n offset += stride * 4;\n }\n }\n uploadUvs(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; ++i) {\n const textureUvs = children[startIndex + i]._texture._uvs;\n if (textureUvs) {\n array[offset] = textureUvs.x0;\n array[offset + 1] = textureUvs.y0;\n array[offset + stride] = textureUvs.x1;\n array[offset + stride + 1] = textureUvs.y1;\n array[offset + stride * 2] = textureUvs.x2;\n array[offset + stride * 2 + 1] = textureUvs.y2;\n array[offset + stride * 3] = textureUvs.x3;\n array[offset + stride * 3 + 1] = textureUvs.y3;\n offset += stride * 4;\n } else {\n array[offset] = 0;\n array[offset + 1] = 0;\n array[offset + stride] = 0;\n array[offset + stride + 1] = 0;\n array[offset + stride * 2] = 0;\n array[offset + stride * 2 + 1] = 0;\n array[offset + stride * 3] = 0;\n array[offset + stride * 3 + 1] = 0;\n offset += stride * 4;\n }\n }\n }\n uploadTint(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; ++i) {\n const sprite = children[startIndex + i];\n const premultiplied = sprite._texture.baseTexture.alphaMode > 0;\n const alpha = sprite.alpha;\n const argb = alpha < 1 && premultiplied ? utils.premultiplyTint(sprite._tintRGB, alpha) : sprite._tintRGB + (alpha * 255 << 24);\n array[offset] = argb;\n array[offset + stride] = argb;\n array[offset + stride * 2] = argb;\n array[offset + stride * 3] = argb;\n offset += stride * 4;\n }\n }\n destroy() {\n super.destroy();\n if (this.shader) {\n this.shader.destroy();\n this.shader = null;\n }\n this.tempMatrix = null;\n }\n}\nParticleRenderer.extension = {\n name: \"particle\",\n type: ExtensionType.RendererPlugin\n};\nextensions.add(ParticleRenderer);\n\nexport { ParticleRenderer };\n//# sourceMappingURL=ParticleRenderer.mjs.map\n","import { settings } from '@pixi/core';\nexport { settings } from '@pixi/core';\n\nsettings.UPLOADS_PER_FRAME = 4;\n//# sourceMappingURL=settings.mjs.map\n","var TEXT_GRADIENT = /* @__PURE__ */ ((TEXT_GRADIENT2) => {\n TEXT_GRADIENT2[TEXT_GRADIENT2[\"LINEAR_VERTICAL\"] = 0] = \"LINEAR_VERTICAL\";\n TEXT_GRADIENT2[TEXT_GRADIENT2[\"LINEAR_HORIZONTAL\"] = 1] = \"LINEAR_HORIZONTAL\";\n return TEXT_GRADIENT2;\n})(TEXT_GRADIENT || {});\n\nexport { TEXT_GRADIENT };\n//# sourceMappingURL=const.mjs.map\n","import { TEXT_GRADIENT } from './const.mjs';\nimport { utils } from '@pixi/core';\n\nconst defaultStyle = {\n align: \"left\",\n breakWords: false,\n dropShadow: false,\n dropShadowAlpha: 1,\n dropShadowAngle: Math.PI / 6,\n dropShadowBlur: 0,\n dropShadowColor: \"black\",\n dropShadowDistance: 5,\n fill: \"black\",\n fillGradientType: TEXT_GRADIENT.LINEAR_VERTICAL,\n fillGradientStops: [],\n fontFamily: \"Arial\",\n fontSize: 26,\n fontStyle: \"normal\",\n fontVariant: \"normal\",\n fontWeight: \"normal\",\n letterSpacing: 0,\n lineHeight: 0,\n lineJoin: \"miter\",\n miterLimit: 10,\n padding: 0,\n stroke: \"black\",\n strokeThickness: 0,\n textBaseline: \"alphabetic\",\n trim: false,\n whiteSpace: \"pre\",\n wordWrap: false,\n wordWrapWidth: 100,\n leading: 0\n};\nconst genericFontFamilies = [\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\"\n];\nclass TextStyle {\n constructor(style) {\n this.styleID = 0;\n this.reset();\n deepCopyProperties(this, style, style);\n }\n clone() {\n const clonedProperties = {};\n deepCopyProperties(clonedProperties, this, defaultStyle);\n return new TextStyle(clonedProperties);\n }\n reset() {\n deepCopyProperties(this, defaultStyle, defaultStyle);\n }\n get align() {\n return this._align;\n }\n set align(align) {\n if (this._align !== align) {\n this._align = align;\n this.styleID++;\n }\n }\n get breakWords() {\n return this._breakWords;\n }\n set breakWords(breakWords) {\n if (this._breakWords !== breakWords) {\n this._breakWords = breakWords;\n this.styleID++;\n }\n }\n get dropShadow() {\n return this._dropShadow;\n }\n set dropShadow(dropShadow) {\n if (this._dropShadow !== dropShadow) {\n this._dropShadow = dropShadow;\n this.styleID++;\n }\n }\n get dropShadowAlpha() {\n return this._dropShadowAlpha;\n }\n set dropShadowAlpha(dropShadowAlpha) {\n if (this._dropShadowAlpha !== dropShadowAlpha) {\n this._dropShadowAlpha = dropShadowAlpha;\n this.styleID++;\n }\n }\n get dropShadowAngle() {\n return this._dropShadowAngle;\n }\n set dropShadowAngle(dropShadowAngle) {\n if (this._dropShadowAngle !== dropShadowAngle) {\n this._dropShadowAngle = dropShadowAngle;\n this.styleID++;\n }\n }\n get dropShadowBlur() {\n return this._dropShadowBlur;\n }\n set dropShadowBlur(dropShadowBlur) {\n if (this._dropShadowBlur !== dropShadowBlur) {\n this._dropShadowBlur = dropShadowBlur;\n this.styleID++;\n }\n }\n get dropShadowColor() {\n return this._dropShadowColor;\n }\n set dropShadowColor(dropShadowColor) {\n const outputColor = getColor(dropShadowColor);\n if (this._dropShadowColor !== outputColor) {\n this._dropShadowColor = outputColor;\n this.styleID++;\n }\n }\n get dropShadowDistance() {\n return this._dropShadowDistance;\n }\n set dropShadowDistance(dropShadowDistance) {\n if (this._dropShadowDistance !== dropShadowDistance) {\n this._dropShadowDistance = dropShadowDistance;\n this.styleID++;\n }\n }\n get fill() {\n return this._fill;\n }\n set fill(fill) {\n const outputColor = getColor(fill);\n if (this._fill !== outputColor) {\n this._fill = outputColor;\n this.styleID++;\n }\n }\n get fillGradientType() {\n return this._fillGradientType;\n }\n set fillGradientType(fillGradientType) {\n if (this._fillGradientType !== fillGradientType) {\n this._fillGradientType = fillGradientType;\n this.styleID++;\n }\n }\n get fillGradientStops() {\n return this._fillGradientStops;\n }\n set fillGradientStops(fillGradientStops) {\n if (!areArraysEqual(this._fillGradientStops, fillGradientStops)) {\n this._fillGradientStops = fillGradientStops;\n this.styleID++;\n }\n }\n get fontFamily() {\n return this._fontFamily;\n }\n set fontFamily(fontFamily) {\n if (this.fontFamily !== fontFamily) {\n this._fontFamily = fontFamily;\n this.styleID++;\n }\n }\n get fontSize() {\n return this._fontSize;\n }\n set fontSize(fontSize) {\n if (this._fontSize !== fontSize) {\n this._fontSize = fontSize;\n this.styleID++;\n }\n }\n get fontStyle() {\n return this._fontStyle;\n }\n set fontStyle(fontStyle) {\n if (this._fontStyle !== fontStyle) {\n this._fontStyle = fontStyle;\n this.styleID++;\n }\n }\n get fontVariant() {\n return this._fontVariant;\n }\n set fontVariant(fontVariant) {\n if (this._fontVariant !== fontVariant) {\n this._fontVariant = fontVariant;\n this.styleID++;\n }\n }\n get fontWeight() {\n return this._fontWeight;\n }\n set fontWeight(fontWeight) {\n if (this._fontWeight !== fontWeight) {\n this._fontWeight = fontWeight;\n this.styleID++;\n }\n }\n get letterSpacing() {\n return this._letterSpacing;\n }\n set letterSpacing(letterSpacing) {\n if (this._letterSpacing !== letterSpacing) {\n this._letterSpacing = letterSpacing;\n this.styleID++;\n }\n }\n get lineHeight() {\n return this._lineHeight;\n }\n set lineHeight(lineHeight) {\n if (this._lineHeight !== lineHeight) {\n this._lineHeight = lineHeight;\n this.styleID++;\n }\n }\n get leading() {\n return this._leading;\n }\n set leading(leading) {\n if (this._leading !== leading) {\n this._leading = leading;\n this.styleID++;\n }\n }\n get lineJoin() {\n return this._lineJoin;\n }\n set lineJoin(lineJoin) {\n if (this._lineJoin !== lineJoin) {\n this._lineJoin = lineJoin;\n this.styleID++;\n }\n }\n get miterLimit() {\n return this._miterLimit;\n }\n set miterLimit(miterLimit) {\n if (this._miterLimit !== miterLimit) {\n this._miterLimit = miterLimit;\n this.styleID++;\n }\n }\n get padding() {\n return this._padding;\n }\n set padding(padding) {\n if (this._padding !== padding) {\n this._padding = padding;\n this.styleID++;\n }\n }\n get stroke() {\n return this._stroke;\n }\n set stroke(stroke) {\n const outputColor = getColor(stroke);\n if (this._stroke !== outputColor) {\n this._stroke = outputColor;\n this.styleID++;\n }\n }\n get strokeThickness() {\n return this._strokeThickness;\n }\n set strokeThickness(strokeThickness) {\n if (this._strokeThickness !== strokeThickness) {\n this._strokeThickness = strokeThickness;\n this.styleID++;\n }\n }\n get textBaseline() {\n return this._textBaseline;\n }\n set textBaseline(textBaseline) {\n if (this._textBaseline !== textBaseline) {\n this._textBaseline = textBaseline;\n this.styleID++;\n }\n }\n get trim() {\n return this._trim;\n }\n set trim(trim) {\n if (this._trim !== trim) {\n this._trim = trim;\n this.styleID++;\n }\n }\n get whiteSpace() {\n return this._whiteSpace;\n }\n set whiteSpace(whiteSpace) {\n if (this._whiteSpace !== whiteSpace) {\n this._whiteSpace = whiteSpace;\n this.styleID++;\n }\n }\n get wordWrap() {\n return this._wordWrap;\n }\n set wordWrap(wordWrap) {\n if (this._wordWrap !== wordWrap) {\n this._wordWrap = wordWrap;\n this.styleID++;\n }\n }\n get wordWrapWidth() {\n return this._wordWrapWidth;\n }\n set wordWrapWidth(wordWrapWidth) {\n if (this._wordWrapWidth !== wordWrapWidth) {\n this._wordWrapWidth = wordWrapWidth;\n this.styleID++;\n }\n }\n toFontString() {\n const fontSizeString = typeof this.fontSize === \"number\" ? `${this.fontSize}px` : this.fontSize;\n let fontFamilies = this.fontFamily;\n if (!Array.isArray(this.fontFamily)) {\n fontFamilies = this.fontFamily.split(\",\");\n }\n for (let i = fontFamilies.length - 1; i >= 0; i--) {\n let fontFamily = fontFamilies[i].trim();\n if (!/([\\\"\\'])[^\\'\\\"]+\\1/.test(fontFamily) && !genericFontFamilies.includes(fontFamily)) {\n fontFamily = `\"${fontFamily}\"`;\n }\n fontFamilies[i] = fontFamily;\n }\n return `${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${fontSizeString} ${fontFamilies.join(\",\")}`;\n }\n}\nfunction getSingleColor(color) {\n if (typeof color === \"number\") {\n return utils.hex2string(color);\n } else if (typeof color === \"string\") {\n if (color.startsWith(\"0x\")) {\n color = color.replace(\"0x\", \"#\");\n }\n }\n return color;\n}\nfunction getColor(color) {\n if (!Array.isArray(color)) {\n return getSingleColor(color);\n } else {\n for (let i = 0; i < color.length; ++i) {\n color[i] = getSingleColor(color[i]);\n }\n return color;\n }\n}\nfunction areArraysEqual(array1, array2) {\n if (!Array.isArray(array1) || !Array.isArray(array2)) {\n return false;\n }\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction deepCopyProperties(target, source, propertyObj) {\n for (const prop in propertyObj) {\n if (Array.isArray(source[prop])) {\n target[prop] = source[prop].slice();\n } else {\n target[prop] = source[prop];\n }\n }\n}\n\nexport { TextStyle };\n//# sourceMappingURL=TextStyle.mjs.map\n","import { settings } from '@pixi/core';\n\nconst contextSettings = {\n willReadFrequently: true\n};\nclass TextMetrics {\n constructor(text, style, width, height, lines, lineWidths, lineHeight, maxLineWidth, fontProperties) {\n this.text = text;\n this.style = style;\n this.width = width;\n this.height = height;\n this.lines = lines;\n this.lineWidths = lineWidths;\n this.lineHeight = lineHeight;\n this.maxLineWidth = maxLineWidth;\n this.fontProperties = fontProperties;\n }\n static measureText(text, style, wordWrap, canvas = TextMetrics._canvas) {\n wordWrap = wordWrap === void 0 || wordWrap === null ? style.wordWrap : wordWrap;\n const font = style.toFontString();\n const fontProperties = TextMetrics.measureFont(font);\n if (fontProperties.fontSize === 0) {\n fontProperties.fontSize = style.fontSize;\n fontProperties.ascent = style.fontSize;\n }\n const context = canvas.getContext(\"2d\", contextSettings);\n context.font = font;\n const outputText = wordWrap ? TextMetrics.wordWrap(text, style, canvas) : text;\n const lines = outputText.split(/(?:\\r\\n|\\r|\\n)/);\n const lineWidths = new Array(lines.length);\n let maxLineWidth = 0;\n for (let i = 0; i < lines.length; i++) {\n const lineWidth = context.measureText(lines[i]).width + (lines[i].length - 1) * style.letterSpacing;\n lineWidths[i] = lineWidth;\n maxLineWidth = Math.max(maxLineWidth, lineWidth);\n }\n let width = maxLineWidth + style.strokeThickness;\n if (style.dropShadow) {\n width += style.dropShadowDistance;\n }\n const lineHeight = style.lineHeight || fontProperties.fontSize + style.strokeThickness;\n let height = Math.max(lineHeight, fontProperties.fontSize + style.strokeThickness) + (lines.length - 1) * (lineHeight + style.leading);\n if (style.dropShadow) {\n height += style.dropShadowDistance;\n }\n return new TextMetrics(text, style, width, height, lines, lineWidths, lineHeight + style.leading, maxLineWidth, fontProperties);\n }\n static wordWrap(text, style, canvas = TextMetrics._canvas) {\n const context = canvas.getContext(\"2d\", contextSettings);\n let width = 0;\n let line = \"\";\n let lines = \"\";\n const cache = /* @__PURE__ */ Object.create(null);\n const { letterSpacing, whiteSpace } = style;\n const collapseSpaces = TextMetrics.collapseSpaces(whiteSpace);\n const collapseNewlines = TextMetrics.collapseNewlines(whiteSpace);\n let canPrependSpaces = !collapseSpaces;\n const wordWrapWidth = style.wordWrapWidth + letterSpacing;\n const tokens = TextMetrics.tokenize(text);\n for (let i = 0; i < tokens.length; i++) {\n let token = tokens[i];\n if (TextMetrics.isNewline(token)) {\n if (!collapseNewlines) {\n lines += TextMetrics.addLine(line);\n canPrependSpaces = !collapseSpaces;\n line = \"\";\n width = 0;\n continue;\n }\n token = \" \";\n }\n if (collapseSpaces) {\n const currIsBreakingSpace = TextMetrics.isBreakingSpace(token);\n const lastIsBreakingSpace = TextMetrics.isBreakingSpace(line[line.length - 1]);\n if (currIsBreakingSpace && lastIsBreakingSpace) {\n continue;\n }\n }\n const tokenWidth = TextMetrics.getFromCache(token, letterSpacing, cache, context);\n if (tokenWidth > wordWrapWidth) {\n if (line !== \"\") {\n lines += TextMetrics.addLine(line);\n line = \"\";\n width = 0;\n }\n if (TextMetrics.canBreakWords(token, style.breakWords)) {\n const characters = TextMetrics.wordWrapSplit(token);\n for (let j = 0; j < characters.length; j++) {\n let char = characters[j];\n let k = 1;\n while (characters[j + k]) {\n const nextChar = characters[j + k];\n const lastChar = char[char.length - 1];\n if (!TextMetrics.canBreakChars(lastChar, nextChar, token, j, style.breakWords)) {\n char += nextChar;\n } else {\n break;\n }\n k++;\n }\n j += char.length - 1;\n const characterWidth = TextMetrics.getFromCache(char, letterSpacing, cache, context);\n if (characterWidth + width > wordWrapWidth) {\n lines += TextMetrics.addLine(line);\n canPrependSpaces = false;\n line = \"\";\n width = 0;\n }\n line += char;\n width += characterWidth;\n }\n } else {\n if (line.length > 0) {\n lines += TextMetrics.addLine(line);\n line = \"\";\n width = 0;\n }\n const isLastToken = i === tokens.length - 1;\n lines += TextMetrics.addLine(token, !isLastToken);\n canPrependSpaces = false;\n line = \"\";\n width = 0;\n }\n } else {\n if (tokenWidth + width > wordWrapWidth) {\n canPrependSpaces = false;\n lines += TextMetrics.addLine(line);\n line = \"\";\n width = 0;\n }\n if (line.length > 0 || !TextMetrics.isBreakingSpace(token) || canPrependSpaces) {\n line += token;\n width += tokenWidth;\n }\n }\n }\n lines += TextMetrics.addLine(line, false);\n return lines;\n }\n static addLine(line, newLine = true) {\n line = TextMetrics.trimRight(line);\n line = newLine ? `${line}\n` : line;\n return line;\n }\n static getFromCache(key, letterSpacing, cache, context) {\n let width = cache[key];\n if (typeof width !== \"number\") {\n const spacing = key.length * letterSpacing;\n width = context.measureText(key).width + spacing;\n cache[key] = width;\n }\n return width;\n }\n static collapseSpaces(whiteSpace) {\n return whiteSpace === \"normal\" || whiteSpace === \"pre-line\";\n }\n static collapseNewlines(whiteSpace) {\n return whiteSpace === \"normal\";\n }\n static trimRight(text) {\n if (typeof text !== \"string\") {\n return \"\";\n }\n for (let i = text.length - 1; i >= 0; i--) {\n const char = text[i];\n if (!TextMetrics.isBreakingSpace(char)) {\n break;\n }\n text = text.slice(0, -1);\n }\n return text;\n }\n static isNewline(char) {\n if (typeof char !== \"string\") {\n return false;\n }\n return TextMetrics._newlines.includes(char.charCodeAt(0));\n }\n static isBreakingSpace(char, _nextChar) {\n if (typeof char !== \"string\") {\n return false;\n }\n return TextMetrics._breakingSpaces.includes(char.charCodeAt(0));\n }\n static tokenize(text) {\n const tokens = [];\n let token = \"\";\n if (typeof text !== \"string\") {\n return tokens;\n }\n for (let i = 0; i < text.length; i++) {\n const char = text[i];\n const nextChar = text[i + 1];\n if (TextMetrics.isBreakingSpace(char, nextChar) || TextMetrics.isNewline(char)) {\n if (token !== \"\") {\n tokens.push(token);\n token = \"\";\n }\n tokens.push(char);\n continue;\n }\n token += char;\n }\n if (token !== \"\") {\n tokens.push(token);\n }\n return tokens;\n }\n static canBreakWords(_token, breakWords) {\n return breakWords;\n }\n static canBreakChars(_char, _nextChar, _token, _index, _breakWords) {\n return true;\n }\n static wordWrapSplit(token) {\n return token.split(\"\");\n }\n static measureFont(font) {\n if (TextMetrics._fonts[font]) {\n return TextMetrics._fonts[font];\n }\n const properties = {\n ascent: 0,\n descent: 0,\n fontSize: 0\n };\n const canvas = TextMetrics._canvas;\n const context = TextMetrics._context;\n context.font = font;\n const metricsString = TextMetrics.METRICS_STRING + TextMetrics.BASELINE_SYMBOL;\n const width = Math.ceil(context.measureText(metricsString).width);\n let baseline = Math.ceil(context.measureText(TextMetrics.BASELINE_SYMBOL).width);\n const height = Math.ceil(TextMetrics.HEIGHT_MULTIPLIER * baseline);\n baseline = baseline * TextMetrics.BASELINE_MULTIPLIER | 0;\n canvas.width = width;\n canvas.height = height;\n context.fillStyle = \"#f00\";\n context.fillRect(0, 0, width, height);\n context.font = font;\n context.textBaseline = \"alphabetic\";\n context.fillStyle = \"#000\";\n context.fillText(metricsString, 0, baseline);\n const imagedata = context.getImageData(0, 0, width, height).data;\n const pixels = imagedata.length;\n const line = width * 4;\n let i = 0;\n let idx = 0;\n let stop = false;\n for (i = 0; i < baseline; ++i) {\n for (let j = 0; j < line; j += 4) {\n if (imagedata[idx + j] !== 255) {\n stop = true;\n break;\n }\n }\n if (!stop) {\n idx += line;\n } else {\n break;\n }\n }\n properties.ascent = baseline - i;\n idx = pixels - line;\n stop = false;\n for (i = height; i > baseline; --i) {\n for (let j = 0; j < line; j += 4) {\n if (imagedata[idx + j] !== 255) {\n stop = true;\n break;\n }\n }\n if (!stop) {\n idx -= line;\n } else {\n break;\n }\n }\n properties.descent = i - baseline;\n properties.fontSize = properties.ascent + properties.descent;\n TextMetrics._fonts[font] = properties;\n return properties;\n }\n static clearMetrics(font = \"\") {\n if (font) {\n delete TextMetrics._fonts[font];\n } else {\n TextMetrics._fonts = {};\n }\n }\n static get _canvas() {\n if (!TextMetrics.__canvas) {\n let canvas;\n try {\n const c = new OffscreenCanvas(0, 0);\n const context = c.getContext(\"2d\", contextSettings);\n if (context?.measureText) {\n TextMetrics.__canvas = c;\n return c;\n }\n canvas = settings.ADAPTER.createCanvas();\n } catch (ex) {\n canvas = settings.ADAPTER.createCanvas();\n }\n canvas.width = canvas.height = 10;\n TextMetrics.__canvas = canvas;\n }\n return TextMetrics.__canvas;\n }\n static get _context() {\n if (!TextMetrics.__context) {\n TextMetrics.__context = TextMetrics._canvas.getContext(\"2d\", contextSettings);\n }\n return TextMetrics.__context;\n }\n}\nTextMetrics._fonts = {};\nTextMetrics.METRICS_STRING = \"|\\xC9q\\xC5\";\nTextMetrics.BASELINE_SYMBOL = \"M\";\nTextMetrics.BASELINE_MULTIPLIER = 1.4;\nTextMetrics.HEIGHT_MULTIPLIER = 2;\nTextMetrics._newlines = [\n 10,\n 13\n];\nTextMetrics._breakingSpaces = [\n 9,\n 32,\n 8192,\n 8193,\n 8194,\n 8195,\n 8196,\n 8197,\n 8198,\n 8200,\n 8201,\n 8202,\n 8287,\n 12288\n];\n\nexport { TextMetrics };\n//# sourceMappingURL=TextMetrics.mjs.map\n","import { Sprite } from '@pixi/sprite';\nimport { settings, Texture, Rectangle, utils } from '@pixi/core';\nimport { TEXT_GRADIENT } from './const.mjs';\nimport { TextStyle } from './TextStyle.mjs';\nimport { TextMetrics } from './TextMetrics.mjs';\n\nconst defaultDestroyOptions = {\n texture: true,\n children: false,\n baseTexture: true\n};\nconst _Text = class extends Sprite {\n constructor(text, style, canvas) {\n let ownCanvas = false;\n if (!canvas) {\n canvas = settings.ADAPTER.createCanvas();\n ownCanvas = true;\n }\n canvas.width = 3;\n canvas.height = 3;\n const texture = Texture.from(canvas);\n texture.orig = new Rectangle();\n texture.trim = new Rectangle();\n super(texture);\n this._ownCanvas = ownCanvas;\n this.canvas = canvas;\n this.context = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n this._resolution = settings.RESOLUTION;\n this._autoResolution = true;\n this._text = null;\n this._style = null;\n this._styleListener = null;\n this._font = \"\";\n this.text = text;\n this.style = style;\n this.localStyleID = -1;\n }\n updateText(respectDirty) {\n const style = this._style;\n if (this.localStyleID !== style.styleID) {\n this.dirty = true;\n this.localStyleID = style.styleID;\n }\n if (!this.dirty && respectDirty) {\n return;\n }\n this._font = this._style.toFontString();\n const context = this.context;\n const measured = TextMetrics.measureText(this._text || \" \", this._style, this._style.wordWrap, this.canvas);\n const width = measured.width;\n const height = measured.height;\n const lines = measured.lines;\n const lineHeight = measured.lineHeight;\n const lineWidths = measured.lineWidths;\n const maxLineWidth = measured.maxLineWidth;\n const fontProperties = measured.fontProperties;\n this.canvas.width = Math.ceil(Math.ceil(Math.max(1, width) + style.padding * 2) * this._resolution);\n this.canvas.height = Math.ceil(Math.ceil(Math.max(1, height) + style.padding * 2) * this._resolution);\n context.scale(this._resolution, this._resolution);\n context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n context.font = this._font;\n context.lineWidth = style.strokeThickness;\n context.textBaseline = style.textBaseline;\n context.lineJoin = style.lineJoin;\n context.miterLimit = style.miterLimit;\n let linePositionX;\n let linePositionY;\n const passesCount = style.dropShadow ? 2 : 1;\n for (let i = 0; i < passesCount; ++i) {\n const isShadowPass = style.dropShadow && i === 0;\n const dsOffsetText = isShadowPass ? Math.ceil(Math.max(1, height) + style.padding * 2) : 0;\n const dsOffsetShadow = dsOffsetText * this._resolution;\n if (isShadowPass) {\n context.fillStyle = \"black\";\n context.strokeStyle = \"black\";\n const dropShadowColor = style.dropShadowColor;\n const rgb = utils.hex2rgb(typeof dropShadowColor === \"number\" ? dropShadowColor : utils.string2hex(dropShadowColor));\n const dropShadowBlur = style.dropShadowBlur * this._resolution;\n const dropShadowDistance = style.dropShadowDistance * this._resolution;\n context.shadowColor = `rgba(${rgb[0] * 255},${rgb[1] * 255},${rgb[2] * 255},${style.dropShadowAlpha})`;\n context.shadowBlur = dropShadowBlur;\n context.shadowOffsetX = Math.cos(style.dropShadowAngle) * dropShadowDistance;\n context.shadowOffsetY = Math.sin(style.dropShadowAngle) * dropShadowDistance + dsOffsetShadow;\n } else {\n context.fillStyle = this._generateFillStyle(style, lines, measured);\n context.strokeStyle = style.stroke;\n context.shadowColor = \"black\";\n context.shadowBlur = 0;\n context.shadowOffsetX = 0;\n context.shadowOffsetY = 0;\n }\n let linePositionYShift = (lineHeight - fontProperties.fontSize) / 2;\n if (lineHeight - fontProperties.fontSize < 0) {\n linePositionYShift = 0;\n }\n for (let i2 = 0; i2 < lines.length; i2++) {\n linePositionX = style.strokeThickness / 2;\n linePositionY = style.strokeThickness / 2 + i2 * lineHeight + fontProperties.ascent + linePositionYShift;\n if (style.align === \"right\") {\n linePositionX += maxLineWidth - lineWidths[i2];\n } else if (style.align === \"center\") {\n linePositionX += (maxLineWidth - lineWidths[i2]) / 2;\n }\n if (style.stroke && style.strokeThickness) {\n this.drawLetterSpacing(lines[i2], linePositionX + style.padding, linePositionY + style.padding - dsOffsetText, true);\n }\n if (style.fill) {\n this.drawLetterSpacing(lines[i2], linePositionX + style.padding, linePositionY + style.padding - dsOffsetText);\n }\n }\n }\n this.updateTexture();\n }\n drawLetterSpacing(text, x, y, isStroke = false) {\n const style = this._style;\n const letterSpacing = style.letterSpacing;\n const supportLetterSpacing = _Text.experimentalLetterSpacing && (\"letterSpacing\" in CanvasRenderingContext2D.prototype || \"textLetterSpacing\" in CanvasRenderingContext2D.prototype);\n if (letterSpacing === 0 || supportLetterSpacing) {\n if (supportLetterSpacing) {\n this.context.letterSpacing = letterSpacing;\n this.context.textLetterSpacing = letterSpacing;\n }\n if (isStroke) {\n this.context.strokeText(text, x, y);\n } else {\n this.context.fillText(text, x, y);\n }\n return;\n }\n let currentPosition = x;\n const stringArray = Array.from ? Array.from(text) : text.split(\"\");\n let previousWidth = this.context.measureText(text).width;\n let currentWidth = 0;\n for (let i = 0; i < stringArray.length; ++i) {\n const currentChar = stringArray[i];\n if (isStroke) {\n this.context.strokeText(currentChar, currentPosition, y);\n } else {\n this.context.fillText(currentChar, currentPosition, y);\n }\n let textStr = \"\";\n for (let j = i + 1; j < stringArray.length; ++j) {\n textStr += stringArray[j];\n }\n currentWidth = this.context.measureText(textStr).width;\n currentPosition += previousWidth - currentWidth + letterSpacing;\n previousWidth = currentWidth;\n }\n }\n updateTexture() {\n const canvas = this.canvas;\n if (this._style.trim) {\n const trimmed = utils.trimCanvas(canvas);\n if (trimmed.data) {\n canvas.width = trimmed.width;\n canvas.height = trimmed.height;\n this.context.putImageData(trimmed.data, 0, 0);\n }\n }\n const texture = this._texture;\n const style = this._style;\n const padding = style.trim ? 0 : style.padding;\n const baseTexture = texture.baseTexture;\n texture.trim.width = texture._frame.width = canvas.width / this._resolution;\n texture.trim.height = texture._frame.height = canvas.height / this._resolution;\n texture.trim.x = -padding;\n texture.trim.y = -padding;\n texture.orig.width = texture._frame.width - padding * 2;\n texture.orig.height = texture._frame.height - padding * 2;\n this._onTextureUpdate();\n baseTexture.setRealSize(canvas.width, canvas.height, this._resolution);\n texture.updateUvs();\n this.dirty = false;\n }\n _render(renderer) {\n if (this._autoResolution && this._resolution !== renderer.resolution) {\n this._resolution = renderer.resolution;\n this.dirty = true;\n }\n this.updateText(true);\n super._render(renderer);\n }\n updateTransform() {\n this.updateText(true);\n super.updateTransform();\n }\n getBounds(skipUpdate, rect) {\n this.updateText(true);\n if (this._textureID === -1) {\n skipUpdate = false;\n }\n return super.getBounds(skipUpdate, rect);\n }\n getLocalBounds(rect) {\n this.updateText(true);\n return super.getLocalBounds.call(this, rect);\n }\n _calculateBounds() {\n this.calculateVertices();\n this._bounds.addQuad(this.vertexData);\n }\n _generateFillStyle(style, lines, metrics) {\n const fillStyle = style.fill;\n if (!Array.isArray(fillStyle)) {\n return fillStyle;\n } else if (fillStyle.length === 1) {\n return fillStyle[0];\n }\n let gradient;\n const dropShadowCorrection = style.dropShadow ? style.dropShadowDistance : 0;\n const padding = style.padding || 0;\n const width = this.canvas.width / this._resolution - dropShadowCorrection - padding * 2;\n const height = this.canvas.height / this._resolution - dropShadowCorrection - padding * 2;\n const fill = fillStyle.slice();\n const fillGradientStops = style.fillGradientStops.slice();\n if (!fillGradientStops.length) {\n const lengthPlus1 = fill.length + 1;\n for (let i = 1; i < lengthPlus1; ++i) {\n fillGradientStops.push(i / lengthPlus1);\n }\n }\n fill.unshift(fillStyle[0]);\n fillGradientStops.unshift(0);\n fill.push(fillStyle[fillStyle.length - 1]);\n fillGradientStops.push(1);\n if (style.fillGradientType === TEXT_GRADIENT.LINEAR_VERTICAL) {\n gradient = this.context.createLinearGradient(width / 2, padding, width / 2, height + padding);\n const textHeight = metrics.fontProperties.fontSize + style.strokeThickness;\n for (let i = 0; i < lines.length; i++) {\n const lastLineBottom = metrics.lineHeight * (i - 1) + textHeight;\n const thisLineTop = metrics.lineHeight * i;\n let thisLineGradientStart = thisLineTop;\n if (i > 0 && lastLineBottom > thisLineTop) {\n thisLineGradientStart = (thisLineTop + lastLineBottom) / 2;\n }\n const thisLineBottom = thisLineTop + textHeight;\n const nextLineTop = metrics.lineHeight * (i + 1);\n let thisLineGradientEnd = thisLineBottom;\n if (i + 1 < lines.length && nextLineTop < thisLineBottom) {\n thisLineGradientEnd = (thisLineBottom + nextLineTop) / 2;\n }\n const gradStopLineHeight = (thisLineGradientEnd - thisLineGradientStart) / height;\n for (let j = 0; j < fill.length; j++) {\n let lineStop = 0;\n if (typeof fillGradientStops[j] === \"number\") {\n lineStop = fillGradientStops[j];\n } else {\n lineStop = j / fill.length;\n }\n let globalStop = Math.min(1, Math.max(0, thisLineGradientStart / height + lineStop * gradStopLineHeight));\n globalStop = Number(globalStop.toFixed(5));\n gradient.addColorStop(globalStop, fill[j]);\n }\n }\n } else {\n gradient = this.context.createLinearGradient(padding, height / 2, width + padding, height / 2);\n const totalIterations = fill.length + 1;\n let currentIteration = 1;\n for (let i = 0; i < fill.length; i++) {\n let stop;\n if (typeof fillGradientStops[i] === \"number\") {\n stop = fillGradientStops[i];\n } else {\n stop = currentIteration / totalIterations;\n }\n gradient.addColorStop(stop, fill[i]);\n currentIteration++;\n }\n }\n return gradient;\n }\n destroy(options) {\n if (typeof options === \"boolean\") {\n options = { children: options };\n }\n options = Object.assign({}, defaultDestroyOptions, options);\n super.destroy(options);\n if (this._ownCanvas) {\n this.canvas.height = this.canvas.width = 0;\n }\n this.context = null;\n this.canvas = null;\n this._style = null;\n }\n get width() {\n this.updateText(true);\n return Math.abs(this.scale.x) * this._texture.orig.width;\n }\n set width(value) {\n this.updateText(true);\n const s = utils.sign(this.scale.x) || 1;\n this.scale.x = s * value / this._texture.orig.width;\n this._width = value;\n }\n get height() {\n this.updateText(true);\n return Math.abs(this.scale.y) * this._texture.orig.height;\n }\n set height(value) {\n this.updateText(true);\n const s = utils.sign(this.scale.y) || 1;\n this.scale.y = s * value / this._texture.orig.height;\n this._height = value;\n }\n get style() {\n return this._style;\n }\n set style(style) {\n style = style || {};\n if (style instanceof TextStyle) {\n this._style = style;\n } else {\n this._style = new TextStyle(style);\n }\n this.localStyleID = -1;\n this.dirty = true;\n }\n get text() {\n return this._text;\n }\n set text(text) {\n text = String(text === null || text === void 0 ? \"\" : text);\n if (this._text === text) {\n return;\n }\n this._text = text;\n this.dirty = true;\n }\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._autoResolution = false;\n if (this._resolution === value) {\n return;\n }\n this._resolution = value;\n this.dirty = true;\n }\n};\nlet Text = _Text;\nText.experimentalLetterSpacing = false;\n\nexport { Text };\n//# sourceMappingURL=Text.mjs.map\n","class CountLimiter {\n constructor(maxItemsPerFrame) {\n this.maxItemsPerFrame = maxItemsPerFrame;\n this.itemsLeft = 0;\n }\n beginFrame() {\n this.itemsLeft = this.maxItemsPerFrame;\n }\n allowedToUpload() {\n return this.itemsLeft-- > 0;\n }\n}\n\nexport { CountLimiter };\n//# sourceMappingURL=CountLimiter.mjs.map\n","import { Texture, BaseTexture, settings, Ticker, UPDATE_PRIORITY } from '@pixi/core';\nimport { Container } from '@pixi/display';\nimport { Text, TextStyle, TextMetrics } from '@pixi/text';\nimport { CountLimiter } from './CountLimiter.mjs';\n\nfunction findMultipleBaseTextures(item, queue) {\n let result = false;\n if (item?._textures?.length) {\n for (let i = 0; i < item._textures.length; i++) {\n if (item._textures[i] instanceof Texture) {\n const baseTexture = item._textures[i].baseTexture;\n if (!queue.includes(baseTexture)) {\n queue.push(baseTexture);\n result = true;\n }\n }\n }\n }\n return result;\n}\nfunction findBaseTexture(item, queue) {\n if (item.baseTexture instanceof BaseTexture) {\n const texture = item.baseTexture;\n if (!queue.includes(texture)) {\n queue.push(texture);\n }\n return true;\n }\n return false;\n}\nfunction findTexture(item, queue) {\n if (item._texture && item._texture instanceof Texture) {\n const texture = item._texture.baseTexture;\n if (!queue.includes(texture)) {\n queue.push(texture);\n }\n return true;\n }\n return false;\n}\nfunction drawText(_helper, item) {\n if (item instanceof Text) {\n item.updateText(true);\n return true;\n }\n return false;\n}\nfunction calculateTextStyle(_helper, item) {\n if (item instanceof TextStyle) {\n const font = item.toFontString();\n TextMetrics.measureFont(font);\n return true;\n }\n return false;\n}\nfunction findText(item, queue) {\n if (item instanceof Text) {\n if (!queue.includes(item.style)) {\n queue.push(item.style);\n }\n if (!queue.includes(item)) {\n queue.push(item);\n }\n const texture = item._texture.baseTexture;\n if (!queue.includes(texture)) {\n queue.push(texture);\n }\n return true;\n }\n return false;\n}\nfunction findTextStyle(item, queue) {\n if (item instanceof TextStyle) {\n if (!queue.includes(item)) {\n queue.push(item);\n }\n return true;\n }\n return false;\n}\nclass BasePrepare {\n constructor(renderer) {\n this.limiter = new CountLimiter(settings.UPLOADS_PER_FRAME);\n this.renderer = renderer;\n this.uploadHookHelper = null;\n this.queue = [];\n this.addHooks = [];\n this.uploadHooks = [];\n this.completes = [];\n this.ticking = false;\n this.delayedTick = () => {\n if (!this.queue) {\n return;\n }\n this.prepareItems();\n };\n this.registerFindHook(findText);\n this.registerFindHook(findTextStyle);\n this.registerFindHook(findMultipleBaseTextures);\n this.registerFindHook(findBaseTexture);\n this.registerFindHook(findTexture);\n this.registerUploadHook(drawText);\n this.registerUploadHook(calculateTextStyle);\n }\n upload(item) {\n return new Promise((resolve) => {\n if (item) {\n this.add(item);\n }\n if (this.queue.length) {\n this.completes.push(resolve);\n if (!this.ticking) {\n this.ticking = true;\n Ticker.system.addOnce(this.tick, this, UPDATE_PRIORITY.UTILITY);\n }\n } else {\n resolve();\n }\n });\n }\n tick() {\n setTimeout(this.delayedTick, 0);\n }\n prepareItems() {\n this.limiter.beginFrame();\n while (this.queue.length && this.limiter.allowedToUpload()) {\n const item = this.queue[0];\n let uploaded = false;\n if (item && !item._destroyed) {\n for (let i = 0, len = this.uploadHooks.length; i < len; i++) {\n if (this.uploadHooks[i](this.uploadHookHelper, item)) {\n this.queue.shift();\n uploaded = true;\n break;\n }\n }\n }\n if (!uploaded) {\n this.queue.shift();\n }\n }\n if (!this.queue.length) {\n this.ticking = false;\n const completes = this.completes.slice(0);\n this.completes.length = 0;\n for (let i = 0, len = completes.length; i < len; i++) {\n completes[i]();\n }\n } else {\n Ticker.system.addOnce(this.tick, this, UPDATE_PRIORITY.UTILITY);\n }\n }\n registerFindHook(addHook) {\n if (addHook) {\n this.addHooks.push(addHook);\n }\n return this;\n }\n registerUploadHook(uploadHook) {\n if (uploadHook) {\n this.uploadHooks.push(uploadHook);\n }\n return this;\n }\n add(item) {\n for (let i = 0, len = this.addHooks.length; i < len; i++) {\n if (this.addHooks[i](item, this.queue)) {\n break;\n }\n }\n if (item instanceof Container) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n this.add(item.children[i]);\n }\n }\n return this;\n }\n destroy() {\n if (this.ticking) {\n Ticker.system.remove(this.tick, this);\n }\n this.ticking = false;\n this.addHooks = null;\n this.uploadHooks = null;\n this.renderer = null;\n this.completes = null;\n this.queue = null;\n this.limiter = null;\n this.uploadHookHelper = null;\n }\n}\n\nexport { BasePrepare };\n//# sourceMappingURL=BasePrepare.mjs.map\n","import { BaseTexture, ExtensionType, extensions } from '@pixi/core';\nimport { Graphics } from '@pixi/graphics';\nimport { BasePrepare } from './BasePrepare.mjs';\n\nfunction uploadBaseTextures(renderer, item) {\n if (item instanceof BaseTexture) {\n if (!item._glTextures[renderer.CONTEXT_UID]) {\n renderer.texture.bind(item);\n }\n return true;\n }\n return false;\n}\nfunction uploadGraphics(renderer, item) {\n if (!(item instanceof Graphics)) {\n return false;\n }\n const { geometry } = item;\n item.finishPoly();\n geometry.updateBatches();\n const { batches } = geometry;\n for (let i = 0; i < batches.length; i++) {\n const { texture } = batches[i].style;\n if (texture) {\n uploadBaseTextures(renderer, texture.baseTexture);\n }\n }\n if (!geometry.batchable) {\n renderer.geometry.bind(geometry, item._resolveDirectShader(renderer));\n }\n return true;\n}\nfunction findGraphics(item, queue) {\n if (item instanceof Graphics) {\n queue.push(item);\n return true;\n }\n return false;\n}\nclass Prepare extends BasePrepare {\n constructor(renderer) {\n super(renderer);\n this.uploadHookHelper = this.renderer;\n this.registerFindHook(findGraphics);\n this.registerUploadHook(uploadBaseTextures);\n this.registerUploadHook(uploadGraphics);\n }\n}\nPrepare.extension = {\n name: \"prepare\",\n type: ExtensionType.RendererSystem\n};\nextensions.add(Prepare);\n\nexport { Prepare };\n//# sourceMappingURL=Prepare.mjs.map\n","class TimeLimiter {\n constructor(maxMilliseconds) {\n this.maxMilliseconds = maxMilliseconds;\n this.frameStart = 0;\n }\n beginFrame() {\n this.frameStart = Date.now();\n }\n allowedToUpload() {\n return Date.now() - this.frameStart < this.maxMilliseconds;\n }\n}\n\nexport { TimeLimiter };\n//# sourceMappingURL=TimeLimiter.mjs.map\n","import { Texture, BaseTexture, utils, Rectangle } from '@pixi/core';\n\nconst _Spritesheet = class {\n constructor(texture, data, resolutionFilename = null) {\n this.linkedSheets = [];\n this._texture = texture instanceof Texture ? texture : null;\n this.baseTexture = texture instanceof BaseTexture ? texture : this._texture.baseTexture;\n this.textures = {};\n this.animations = {};\n this.data = data;\n const resource = this.baseTexture.resource;\n this.resolution = this._updateResolution(resolutionFilename || (resource ? resource.url : null));\n this._frames = this.data.frames;\n this._frameKeys = Object.keys(this._frames);\n this._batchIndex = 0;\n this._callback = null;\n }\n _updateResolution(resolutionFilename = null) {\n const { scale } = this.data.meta;\n let resolution = utils.getResolutionOfUrl(resolutionFilename, null);\n if (resolution === null) {\n resolution = parseFloat(scale ?? \"1\");\n }\n if (resolution !== 1) {\n this.baseTexture.setResolution(resolution);\n }\n return resolution;\n }\n parse() {\n return new Promise((resolve) => {\n this._callback = resolve;\n this._batchIndex = 0;\n if (this._frameKeys.length <= _Spritesheet.BATCH_SIZE) {\n this._processFrames(0);\n this._processAnimations();\n this._parseComplete();\n } else {\n this._nextBatch();\n }\n });\n }\n _processFrames(initialFrameIndex) {\n let frameIndex = initialFrameIndex;\n const maxFrames = _Spritesheet.BATCH_SIZE;\n while (frameIndex - initialFrameIndex < maxFrames && frameIndex < this._frameKeys.length) {\n const i = this._frameKeys[frameIndex];\n const data = this._frames[i];\n const rect = data.frame;\n if (rect) {\n let frame = null;\n let trim = null;\n const sourceSize = data.trimmed !== false && data.sourceSize ? data.sourceSize : data.frame;\n const orig = new Rectangle(0, 0, Math.floor(sourceSize.w) / this.resolution, Math.floor(sourceSize.h) / this.resolution);\n if (data.rotated) {\n frame = 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);\n } else {\n frame = 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);\n }\n if (data.trimmed !== false && data.spriteSourceSize) {\n 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);\n }\n this.textures[i] = new Texture(this.baseTexture, frame, orig, trim, data.rotated ? 2 : 0, data.anchor);\n Texture.addToCache(this.textures[i], i);\n }\n frameIndex++;\n }\n }\n _processAnimations() {\n const animations = this.data.animations || {};\n for (const animName in animations) {\n this.animations[animName] = [];\n for (let i = 0; i < animations[animName].length; i++) {\n const frameName = animations[animName][i];\n this.animations[animName].push(this.textures[frameName]);\n }\n }\n }\n _parseComplete() {\n const callback = this._callback;\n this._callback = null;\n this._batchIndex = 0;\n callback.call(this, this.textures);\n }\n _nextBatch() {\n this._processFrames(this._batchIndex * _Spritesheet.BATCH_SIZE);\n this._batchIndex++;\n setTimeout(() => {\n if (this._batchIndex * _Spritesheet.BATCH_SIZE < this._frameKeys.length) {\n this._nextBatch();\n } else {\n this._processAnimations();\n this._parseComplete();\n }\n }, 0);\n }\n destroy(destroyBase = false) {\n for (const i in this.textures) {\n this.textures[i].destroy();\n }\n this._frames = null;\n this._frameKeys = null;\n this.data = null;\n this.textures = null;\n if (destroyBase) {\n this._texture?.destroy();\n this.baseTexture.destroy();\n }\n this._texture = null;\n this.baseTexture = null;\n this.linkedSheets = [];\n }\n};\nlet Spritesheet = _Spritesheet;\nSpritesheet.BATCH_SIZE = 1e3;\n\nexport { Spritesheet };\n//# sourceMappingURL=Spritesheet.mjs.map\n","import { utils, ExtensionType, settings, extensions } from '@pixi/core';\nimport { LoaderParserPriority } from '@pixi/assets';\nimport { Spritesheet } from './Spritesheet.mjs';\n\nconst validImages = [\"jpg\", \"png\", \"jpeg\", \"avif\", \"webp\"];\nfunction getCacheableAssets(keys, asset, ignoreMultiPack) {\n const out = {};\n keys.forEach((key) => {\n out[key] = asset;\n });\n Object.keys(asset.textures).forEach((key) => {\n out[key] = asset.textures[key];\n });\n if (!ignoreMultiPack) {\n const basePath = utils.path.dirname(keys[0]);\n asset.linkedSheets.forEach((item, i) => {\n const out2 = getCacheableAssets([`${basePath}/${asset.data.meta.related_multi_packs[i]}`], item, true);\n Object.assign(out, out2);\n });\n }\n return out;\n}\nconst spritesheetAsset = {\n extension: ExtensionType.Asset,\n cache: {\n test: (asset) => asset instanceof Spritesheet,\n getCacheableAssets: (keys, asset) => getCacheableAssets(keys, asset, false)\n },\n resolver: {\n test: (value) => {\n const tempURL = value.split(\"?\")[0];\n const split = tempURL.split(\".\");\n const extension = split.pop();\n const format = split.pop();\n return extension === \"json\" && validImages.includes(format);\n },\n parse: (value) => {\n const split = value.split(\".\");\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: split[split.length - 2],\n src: value\n };\n }\n },\n loader: {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal\n },\n async testParse(asset, options) {\n return utils.path.extname(options.src).includes(\".json\") && !!asset.frames;\n },\n async parse(asset, options, loader) {\n let basePath = utils.path.dirname(options.src);\n if (basePath && basePath.lastIndexOf(\"/\") !== basePath.length - 1) {\n basePath += \"/\";\n }\n const imagePath = basePath + asset.meta.image;\n const assets = await loader.load([imagePath]);\n const texture = assets[imagePath];\n const spritesheet = new Spritesheet(texture.baseTexture, asset, options.src);\n await spritesheet.parse();\n const multiPacks = asset?.meta?.related_multi_packs;\n if (Array.isArray(multiPacks)) {\n const promises = [];\n for (const item of multiPacks) {\n if (typeof item !== \"string\") {\n continue;\n }\n const itemUrl = basePath + item;\n if (options.data?.ignoreMultiPack) {\n continue;\n }\n promises.push(loader.load({\n src: itemUrl,\n data: {\n ignoreMultiPack: true\n }\n }));\n }\n const res = await Promise.all(promises);\n spritesheet.linkedSheets = res;\n res.forEach((item) => {\n item.linkedSheets = [spritesheet].concat(spritesheet.linkedSheets.filter((sp) => sp !== item));\n });\n }\n return spritesheet;\n },\n unload(spritesheet) {\n spritesheet.destroy(true);\n }\n }\n};\nextensions.add(spritesheetAsset);\n\nexport { spritesheetAsset };\n//# sourceMappingURL=spritesheetAsset.mjs.map\n","import { Sprite } from '@pixi/sprite';\nimport { Texture, Ticker, UPDATE_PRIORITY } from '@pixi/core';\n\nclass AnimatedSprite extends Sprite {\n constructor(textures, autoUpdate = true) {\n super(textures[0] instanceof Texture ? textures[0] : textures[0].texture);\n this._textures = null;\n this._durations = null;\n this._autoUpdate = autoUpdate;\n this._isConnectedToTicker = false;\n this.animationSpeed = 1;\n this.loop = true;\n this.updateAnchor = false;\n this.onComplete = null;\n this.onFrameChange = null;\n this.onLoop = null;\n this._currentTime = 0;\n this._playing = false;\n this._previousFrame = null;\n this.textures = textures;\n }\n stop() {\n if (!this._playing) {\n return;\n }\n this._playing = false;\n if (this._autoUpdate && this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n }\n play() {\n if (this._playing) {\n return;\n }\n this._playing = true;\n if (this._autoUpdate && !this._isConnectedToTicker) {\n Ticker.shared.add(this.update, this, UPDATE_PRIORITY.HIGH);\n this._isConnectedToTicker = true;\n }\n }\n gotoAndStop(frameNumber) {\n this.stop();\n this.currentFrame = frameNumber;\n }\n gotoAndPlay(frameNumber) {\n this.currentFrame = frameNumber;\n this.play();\n }\n update(deltaTime) {\n if (!this._playing) {\n return;\n }\n const elapsed = this.animationSpeed * deltaTime;\n const previousFrame = this.currentFrame;\n if (this._durations !== null) {\n let lag = this._currentTime % 1 * this._durations[this.currentFrame];\n lag += elapsed / 60 * 1e3;\n while (lag < 0) {\n this._currentTime--;\n lag += this._durations[this.currentFrame];\n }\n const sign = Math.sign(this.animationSpeed * deltaTime);\n this._currentTime = Math.floor(this._currentTime);\n while (lag >= this._durations[this.currentFrame]) {\n lag -= this._durations[this.currentFrame] * sign;\n this._currentTime += sign;\n }\n this._currentTime += lag / this._durations[this.currentFrame];\n } else {\n this._currentTime += elapsed;\n }\n if (this._currentTime < 0 && !this.loop) {\n this.gotoAndStop(0);\n if (this.onComplete) {\n this.onComplete();\n }\n } else if (this._currentTime >= this._textures.length && !this.loop) {\n this.gotoAndStop(this._textures.length - 1);\n if (this.onComplete) {\n this.onComplete();\n }\n } else if (previousFrame !== this.currentFrame) {\n if (this.loop && this.onLoop) {\n if (this.animationSpeed > 0 && this.currentFrame < previousFrame) {\n this.onLoop();\n } else if (this.animationSpeed < 0 && this.currentFrame > previousFrame) {\n this.onLoop();\n }\n }\n this.updateTexture();\n }\n }\n updateTexture() {\n const currentFrame = this.currentFrame;\n if (this._previousFrame === currentFrame) {\n return;\n }\n this._previousFrame = currentFrame;\n this._texture = this._textures[currentFrame];\n this._textureID = -1;\n this._textureTrimmedID = -1;\n this._cachedTint = 16777215;\n this.uvs = this._texture._uvs.uvsFloat32;\n if (this.updateAnchor) {\n this._anchor.copyFrom(this._texture.defaultAnchor);\n }\n if (this.onFrameChange) {\n this.onFrameChange(this.currentFrame);\n }\n }\n destroy(options) {\n this.stop();\n super.destroy(options);\n this.onComplete = null;\n this.onFrameChange = null;\n this.onLoop = null;\n }\n static fromFrames(frames) {\n const textures = [];\n for (let i = 0; i < frames.length; ++i) {\n textures.push(Texture.from(frames[i]));\n }\n return new AnimatedSprite(textures);\n }\n static fromImages(images) {\n const textures = [];\n for (let i = 0; i < images.length; ++i) {\n textures.push(Texture.from(images[i]));\n }\n return new AnimatedSprite(textures);\n }\n get totalFrames() {\n return this._textures.length;\n }\n get textures() {\n return this._textures;\n }\n set textures(value) {\n if (value[0] instanceof Texture) {\n this._textures = value;\n this._durations = null;\n } else {\n this._textures = [];\n this._durations = [];\n for (let i = 0; i < value.length; i++) {\n this._textures.push(value[i].texture);\n this._durations.push(value[i].time);\n }\n }\n this._previousFrame = null;\n this.gotoAndStop(0);\n this.updateTexture();\n }\n get currentFrame() {\n let currentFrame = Math.floor(this._currentTime) % this._textures.length;\n if (currentFrame < 0) {\n currentFrame += this._textures.length;\n }\n return currentFrame;\n }\n set currentFrame(value) {\n if (value < 0 || value > this.totalFrames - 1) {\n throw new Error(`[AnimatedSprite]: Invalid frame index value ${value}, expected to be between 0 and totalFrames ${this.totalFrames}.`);\n }\n const previousFrame = this.currentFrame;\n this._currentTime = value;\n if (previousFrame !== this.currentFrame) {\n this.updateTexture();\n }\n }\n get playing() {\n return this._playing;\n }\n get autoUpdate() {\n return this._autoUpdate;\n }\n set autoUpdate(value) {\n if (value !== this._autoUpdate) {\n this._autoUpdate = value;\n if (!this._autoUpdate && this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n } else if (this._autoUpdate && !this._isConnectedToTicker && this._playing) {\n Ticker.shared.add(this.update, this);\n this._isConnectedToTicker = true;\n }\n }\n }\n}\n\nexport { AnimatedSprite };\n//# sourceMappingURL=AnimatedSprite.mjs.map\n","import { Point, Transform, TextureMatrix, Rectangle, Texture } from '@pixi/core';\nimport { Sprite } from '@pixi/sprite';\n\nconst tempPoint = new Point();\nclass TilingSprite extends Sprite {\n constructor(texture, width = 100, height = 100) {\n super(texture);\n this.tileTransform = new Transform();\n this._width = width;\n this._height = height;\n this.uvMatrix = this.texture.uvMatrix || new TextureMatrix(texture);\n this.pluginName = \"tilingSprite\";\n this.uvRespectAnchor = false;\n }\n get clampMargin() {\n return this.uvMatrix.clampMargin;\n }\n set clampMargin(value) {\n this.uvMatrix.clampMargin = value;\n this.uvMatrix.update(true);\n }\n get tileScale() {\n return this.tileTransform.scale;\n }\n set tileScale(value) {\n this.tileTransform.scale.copyFrom(value);\n }\n get tilePosition() {\n return this.tileTransform.position;\n }\n set tilePosition(value) {\n this.tileTransform.position.copyFrom(value);\n }\n _onTextureUpdate() {\n if (this.uvMatrix) {\n this.uvMatrix.texture = this._texture;\n }\n this._cachedTint = 16777215;\n }\n _render(renderer) {\n const texture = this._texture;\n if (!texture || !texture.valid) {\n return;\n }\n this.tileTransform.updateLocalTransform();\n this.uvMatrix.update();\n renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]);\n renderer.plugins[this.pluginName].render(this);\n }\n _calculateBounds() {\n const minX = this._width * -this._anchor._x;\n const minY = this._height * -this._anchor._y;\n const maxX = this._width * (1 - this._anchor._x);\n const maxY = this._height * (1 - this._anchor._y);\n this._bounds.addFrame(this.transform, minX, minY, maxX, maxY);\n }\n getLocalBounds(rect) {\n if (this.children.length === 0) {\n this._bounds.minX = this._width * -this._anchor._x;\n this._bounds.minY = this._height * -this._anchor._y;\n this._bounds.maxX = this._width * (1 - this._anchor._x);\n this._bounds.maxY = this._height * (1 - this._anchor._y);\n if (!rect) {\n if (!this._localBoundsRect) {\n this._localBoundsRect = new Rectangle();\n }\n rect = this._localBoundsRect;\n }\n return this._bounds.getRectangle(rect);\n }\n return super.getLocalBounds.call(this, rect);\n }\n containsPoint(point) {\n this.worldTransform.applyInverse(point, tempPoint);\n const width = this._width;\n const height = this._height;\n const x1 = -width * this.anchor._x;\n if (tempPoint.x >= x1 && tempPoint.x < x1 + width) {\n const y1 = -height * this.anchor._y;\n if (tempPoint.y >= y1 && tempPoint.y < y1 + height) {\n return true;\n }\n }\n return false;\n }\n destroy(options) {\n super.destroy(options);\n this.tileTransform = null;\n this.uvMatrix = null;\n }\n static from(source, options) {\n const texture = source instanceof Texture ? source : Texture.from(source, options);\n return new TilingSprite(texture, options.width, options.height);\n }\n get width() {\n return this._width;\n }\n set width(value) {\n this._width = value;\n }\n get height() {\n return this._height;\n }\n set height(value) {\n this._height = value;\n }\n}\n\nexport { TilingSprite };\n//# sourceMappingURL=TilingSprite.mjs.map\n","var fragmentSimpleSrc = \"#version 100\\n#define SHADER_NAME Tiling-Sprite-Simple-100\\n\\nprecision lowp float;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform vec4 uColor;\\n\\nvoid main(void)\\n{\\n vec4 texSample = texture2D(uSampler, vTextureCoord);\\n gl_FragColor = texSample * uColor;\\n}\\n\";\n\nexport { fragmentSimpleSrc as default };\n//# sourceMappingURL=sprite-tiling-simple.mjs.map\n","var gl1VertexSrc = \"#version 100\\n#define SHADER_NAME Tiling-Sprite-100\\n\\nprecision lowp float;\\n\\nattribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 translationMatrix;\\nuniform mat3 uTransform;\\n\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\\n}\\n\";\n\nexport { gl1VertexSrc as default };\n//# sourceMappingURL=sprite-tiling-fallback.mjs.map\n","var gl1FragmentSrc = \"#version 100\\n#ifdef GL_EXT_shader_texture_lod\\n #extension GL_EXT_shader_texture_lod : enable\\n#endif\\n#define SHADER_NAME Tiling-Sprite-100\\n\\nprecision lowp float;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform vec4 uColor;\\nuniform mat3 uMapCoord;\\nuniform vec4 uClampFrame;\\nuniform vec2 uClampOffset;\\n\\nvoid main(void)\\n{\\n vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);\\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\\n vec2 unclamped = coord;\\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\\n\\n #ifdef GL_EXT_shader_texture_lod\\n vec4 texSample = unclamped == coord\\n ? texture2D(uSampler, coord) \\n : texture2DLodEXT(uSampler, coord, 0);\\n #else\\n vec4 texSample = texture2D(uSampler, coord);\\n #endif\\n\\n gl_FragColor = texSample * uColor;\\n}\\n\";\n\nexport { gl1FragmentSrc as default };\n//# sourceMappingURL=sprite-tiling-fallback2.mjs.map\n","var gl2VertexSrc = \"#version 300 es\\n#define SHADER_NAME Tiling-Sprite-300\\n\\nprecision lowp float;\\n\\nin vec2 aVertexPosition;\\nin vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 translationMatrix;\\nuniform mat3 uTransform;\\n\\nout vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\\n}\\n\";\n\nexport { gl2VertexSrc as default };\n//# sourceMappingURL=sprite-tiling.mjs.map\n","var gl2FragmentSrc = \"#version 300 es\\n#define SHADER_NAME Tiling-Sprite-100\\n\\nprecision lowp float;\\n\\nin vec2 vTextureCoord;\\n\\nout vec4 fragmentColor;\\n\\nuniform sampler2D uSampler;\\nuniform vec4 uColor;\\nuniform mat3 uMapCoord;\\nuniform vec4 uClampFrame;\\nuniform vec2 uClampOffset;\\n\\nvoid main(void)\\n{\\n vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);\\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\\n vec2 unclamped = coord;\\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\\n\\n vec4 texSample = texture(uSampler, coord, unclamped == coord ? 0.0f : -32.0f);// lod-bias very negative to force lod 0\\n\\n fragmentColor = texSample * uColor;\\n}\\n\";\n\nexport { gl2FragmentSrc as default };\n//# sourceMappingURL=sprite-tiling2.mjs.map\n","import { Matrix, ObjectRenderer, QuadUv, State, Shader, WRAP_MODES, utils, ExtensionType, extensions } from '@pixi/core';\nimport fragmentSimpleSrc from './sprite-tiling-simple.mjs';\nimport gl1VertexSrc from './sprite-tiling-fallback.mjs';\nimport gl1FragmentSrc from './sprite-tiling-fallback2.mjs';\nimport gl2VertexSrc from './sprite-tiling.mjs';\nimport gl2FragmentSrc from './sprite-tiling2.mjs';\n\nconst tempMat = new Matrix();\nclass TilingSpriteRenderer extends ObjectRenderer {\n constructor(renderer) {\n super(renderer);\n renderer.runners.contextChange.add(this);\n this.quad = new QuadUv();\n this.state = State.for2d();\n }\n contextChange() {\n const renderer = this.renderer;\n const uniforms = { globals: renderer.globalUniforms };\n this.simpleShader = Shader.from(gl1VertexSrc, fragmentSimpleSrc, uniforms);\n this.shader = renderer.context.webGLVersion > 1 ? Shader.from(gl2VertexSrc, gl2FragmentSrc, uniforms) : Shader.from(gl1VertexSrc, gl1FragmentSrc, uniforms);\n }\n render(ts) {\n const renderer = this.renderer;\n const quad = this.quad;\n let vertices = quad.vertices;\n vertices[0] = vertices[6] = ts._width * -ts.anchor.x;\n vertices[1] = vertices[3] = ts._height * -ts.anchor.y;\n vertices[2] = vertices[4] = ts._width * (1 - ts.anchor.x);\n vertices[5] = vertices[7] = ts._height * (1 - ts.anchor.y);\n const anchorX = ts.uvRespectAnchor ? ts.anchor.x : 0;\n const anchorY = ts.uvRespectAnchor ? ts.anchor.y : 0;\n vertices = quad.uvs;\n vertices[0] = vertices[6] = -anchorX;\n vertices[1] = vertices[3] = -anchorY;\n vertices[2] = vertices[4] = 1 - anchorX;\n vertices[5] = vertices[7] = 1 - anchorY;\n quad.invalidate();\n const tex = ts._texture;\n const baseTex = tex.baseTexture;\n const premultiplied = baseTex.alphaMode > 0;\n const lt = ts.tileTransform.localTransform;\n const uv = ts.uvMatrix;\n let isSimple = baseTex.isPowerOfTwo && tex.frame.width === baseTex.width && tex.frame.height === baseTex.height;\n if (isSimple) {\n if (!baseTex._glTextures[renderer.CONTEXT_UID]) {\n if (baseTex.wrapMode === WRAP_MODES.CLAMP) {\n baseTex.wrapMode = WRAP_MODES.REPEAT;\n }\n } else {\n isSimple = baseTex.wrapMode !== WRAP_MODES.CLAMP;\n }\n }\n const shader = isSimple ? this.simpleShader : this.shader;\n const w = tex.width;\n const h = tex.height;\n const W = ts._width;\n const H = ts._height;\n tempMat.set(lt.a * w / W, lt.b * w / H, lt.c * h / W, lt.d * h / H, lt.tx / W, lt.ty / H);\n tempMat.invert();\n if (isSimple) {\n tempMat.prepend(uv.mapCoord);\n } else {\n shader.uniforms.uMapCoord = uv.mapCoord.toArray(true);\n shader.uniforms.uClampFrame = uv.uClampFrame;\n shader.uniforms.uClampOffset = uv.uClampOffset;\n }\n shader.uniforms.uTransform = tempMat.toArray(true);\n shader.uniforms.uColor = utils.premultiplyTintToRgba(ts.tint, ts.worldAlpha, shader.uniforms.uColor, premultiplied);\n shader.uniforms.translationMatrix = ts.transform.worldTransform.toArray(true);\n shader.uniforms.uSampler = tex;\n renderer.shader.bind(shader);\n renderer.geometry.bind(quad);\n this.state.blendMode = utils.correctBlendMode(ts.blendMode, premultiplied);\n renderer.state.set(this.state);\n renderer.geometry.draw(this.renderer.gl.TRIANGLES, 6, 0);\n }\n}\nTilingSpriteRenderer.extension = {\n name: \"tilingSprite\",\n type: ExtensionType.RendererPlugin\n};\nextensions.add(TilingSpriteRenderer);\n\nexport { TilingSpriteRenderer };\n//# sourceMappingURL=TilingSpriteRenderer.mjs.map\n","class BitmapFontData {\n constructor() {\n this.info = [];\n this.common = [];\n this.page = [];\n this.char = [];\n this.kerning = [];\n this.distanceField = [];\n }\n}\n\nexport { BitmapFontData };\n//# sourceMappingURL=BitmapFontData.mjs.map\n","import { BitmapFontData } from '../BitmapFontData.mjs';\n\nclass TextFormat {\n static test(data) {\n return typeof data === \"string\" && data.startsWith(\"info face=\");\n }\n static parse(txt) {\n const items = txt.match(/^[a-z]+\\s+.+$/gm);\n const rawData = {\n info: [],\n common: [],\n page: [],\n char: [],\n chars: [],\n kerning: [],\n kernings: [],\n distanceField: []\n };\n for (const i in items) {\n const name = items[i].match(/^[a-z]+/gm)[0];\n const attributeList = items[i].match(/[a-zA-Z]+=([^\\s\"']+|\"([^\"]*)\")/gm);\n const itemData = {};\n for (const i2 in attributeList) {\n const split = attributeList[i2].split(\"=\");\n const key = split[0];\n const strValue = split[1].replace(/\"/gm, \"\");\n const floatValue = parseFloat(strValue);\n const value = isNaN(floatValue) ? strValue : floatValue;\n itemData[key] = value;\n }\n rawData[name].push(itemData);\n }\n const font = new BitmapFontData();\n rawData.info.forEach((info) => font.info.push({\n face: info.face,\n size: parseInt(info.size, 10)\n }));\n rawData.common.forEach((common) => font.common.push({\n lineHeight: parseInt(common.lineHeight, 10)\n }));\n rawData.page.forEach((page) => font.page.push({\n id: parseInt(page.id, 10),\n file: page.file\n }));\n rawData.char.forEach((char) => font.char.push({\n id: parseInt(char.id, 10),\n page: parseInt(char.page, 10),\n x: parseInt(char.x, 10),\n y: parseInt(char.y, 10),\n width: parseInt(char.width, 10),\n height: parseInt(char.height, 10),\n xoffset: parseInt(char.xoffset, 10),\n yoffset: parseInt(char.yoffset, 10),\n xadvance: parseInt(char.xadvance, 10)\n }));\n rawData.kerning.forEach((kerning) => font.kerning.push({\n first: parseInt(kerning.first, 10),\n second: parseInt(kerning.second, 10),\n amount: parseInt(kerning.amount, 10)\n }));\n rawData.distanceField.forEach((df) => font.distanceField.push({\n distanceRange: parseInt(df.distanceRange, 10),\n fieldType: df.fieldType\n }));\n return font;\n }\n}\n\nexport { TextFormat };\n//# sourceMappingURL=TextFormat.mjs.map\n","import { BitmapFontData } from '../BitmapFontData.mjs';\n\nclass XMLFormat {\n static test(data) {\n return data instanceof XMLDocument && data.getElementsByTagName(\"page\").length && data.getElementsByTagName(\"info\")[0].getAttribute(\"face\") !== null;\n }\n static parse(xml) {\n const data = new BitmapFontData();\n const info = xml.getElementsByTagName(\"info\");\n const common = xml.getElementsByTagName(\"common\");\n const page = xml.getElementsByTagName(\"page\");\n const char = xml.getElementsByTagName(\"char\");\n const kerning = xml.getElementsByTagName(\"kerning\");\n const distanceField = xml.getElementsByTagName(\"distanceField\");\n for (let i = 0; i < info.length; i++) {\n data.info.push({\n face: info[i].getAttribute(\"face\"),\n size: parseInt(info[i].getAttribute(\"size\"), 10)\n });\n }\n for (let i = 0; i < common.length; i++) {\n data.common.push({\n lineHeight: parseInt(common[i].getAttribute(\"lineHeight\"), 10)\n });\n }\n for (let i = 0; i < page.length; i++) {\n data.page.push({\n id: parseInt(page[i].getAttribute(\"id\"), 10) || 0,\n file: page[i].getAttribute(\"file\")\n });\n }\n for (let i = 0; i < char.length; i++) {\n const letter = char[i];\n data.char.push({\n id: parseInt(letter.getAttribute(\"id\"), 10),\n page: parseInt(letter.getAttribute(\"page\"), 10) || 0,\n x: parseInt(letter.getAttribute(\"x\"), 10),\n y: parseInt(letter.getAttribute(\"y\"), 10),\n width: parseInt(letter.getAttribute(\"width\"), 10),\n height: parseInt(letter.getAttribute(\"height\"), 10),\n xoffset: parseInt(letter.getAttribute(\"xoffset\"), 10),\n yoffset: parseInt(letter.getAttribute(\"yoffset\"), 10),\n xadvance: parseInt(letter.getAttribute(\"xadvance\"), 10)\n });\n }\n for (let i = 0; i < kerning.length; i++) {\n data.kerning.push({\n first: parseInt(kerning[i].getAttribute(\"first\"), 10),\n second: parseInt(kerning[i].getAttribute(\"second\"), 10),\n amount: parseInt(kerning[i].getAttribute(\"amount\"), 10)\n });\n }\n for (let i = 0; i < distanceField.length; i++) {\n data.distanceField.push({\n fieldType: distanceField[i].getAttribute(\"fieldType\"),\n distanceRange: parseInt(distanceField[i].getAttribute(\"distanceRange\"), 10)\n });\n }\n return data;\n }\n}\n\nexport { XMLFormat };\n//# sourceMappingURL=XMLFormat.mjs.map\n","import { XMLFormat } from './XMLFormat.mjs';\n\nclass XMLStringFormat {\n static test(data) {\n if (typeof data === \"string\" && data.includes(\"\")) {\n const xml = new globalThis.DOMParser().parseFromString(data, \"text/xml\");\n return XMLFormat.test(xml);\n }\n return false;\n }\n static parse(xmlTxt) {\n const xml = new globalThis.DOMParser().parseFromString(xmlTxt, \"text/xml\");\n return XMLFormat.parse(xml);\n }\n}\n\nexport { XMLStringFormat };\n//# sourceMappingURL=XMLStringFormat.mjs.map\n","import { TextFormat } from './TextFormat.mjs';\nexport { TextFormat } from './TextFormat.mjs';\nimport { XMLFormat } from './XMLFormat.mjs';\nexport { XMLFormat } from './XMLFormat.mjs';\nimport { XMLStringFormat } from './XMLStringFormat.mjs';\nexport { XMLStringFormat } from './XMLStringFormat.mjs';\n\nconst formats = [\n TextFormat,\n XMLFormat,\n XMLStringFormat\n];\nfunction autoDetectFormat(data) {\n for (let i = 0; i < formats.length; i++) {\n if (formats[i].test(data)) {\n return formats[i];\n }\n }\n return null;\n}\n\nexport { autoDetectFormat };\n//# sourceMappingURL=index.mjs.map\n","import { TEXT_GRADIENT } from '@pixi/text';\n\nfunction generateFillStyle(canvas, context, style, resolution, lines, metrics) {\n const fillStyle = style.fill;\n if (!Array.isArray(fillStyle)) {\n return fillStyle;\n } else if (fillStyle.length === 1) {\n return fillStyle[0];\n }\n let gradient;\n const dropShadowCorrection = style.dropShadow ? style.dropShadowDistance : 0;\n const padding = style.padding || 0;\n const width = canvas.width / resolution - dropShadowCorrection - padding * 2;\n const height = canvas.height / resolution - dropShadowCorrection - padding * 2;\n const fill = fillStyle.slice();\n const fillGradientStops = style.fillGradientStops.slice();\n if (!fillGradientStops.length) {\n const lengthPlus1 = fill.length + 1;\n for (let i = 1; i < lengthPlus1; ++i) {\n fillGradientStops.push(i / lengthPlus1);\n }\n }\n fill.unshift(fillStyle[0]);\n fillGradientStops.unshift(0);\n fill.push(fillStyle[fillStyle.length - 1]);\n fillGradientStops.push(1);\n if (style.fillGradientType === TEXT_GRADIENT.LINEAR_VERTICAL) {\n gradient = context.createLinearGradient(width / 2, padding, width / 2, height + padding);\n let lastIterationStop = 0;\n const textHeight = metrics.fontProperties.fontSize + style.strokeThickness;\n const gradStopLineHeight = textHeight / height;\n for (let i = 0; i < lines.length; i++) {\n const thisLineTop = metrics.lineHeight * i;\n for (let j = 0; j < fill.length; j++) {\n let lineStop = 0;\n if (typeof fillGradientStops[j] === \"number\") {\n lineStop = fillGradientStops[j];\n } else {\n lineStop = j / fill.length;\n }\n const globalStop = thisLineTop / height + lineStop * gradStopLineHeight;\n let clampedStop = Math.max(lastIterationStop, globalStop);\n clampedStop = Math.min(clampedStop, 1);\n gradient.addColorStop(clampedStop, fill[j]);\n lastIterationStop = clampedStop;\n }\n }\n } else {\n gradient = context.createLinearGradient(padding, height / 2, width + padding, height / 2);\n const totalIterations = fill.length + 1;\n let currentIteration = 1;\n for (let i = 0; i < fill.length; i++) {\n let stop;\n if (typeof fillGradientStops[i] === \"number\") {\n stop = fillGradientStops[i];\n } else {\n stop = currentIteration / totalIterations;\n }\n gradient.addColorStop(stop, fill[i]);\n currentIteration++;\n }\n }\n return gradient;\n}\n\nexport { generateFillStyle };\n//# sourceMappingURL=generateFillStyle.mjs.map\n","import { generateFillStyle } from './generateFillStyle.mjs';\nimport { utils } from '@pixi/core';\n\nfunction drawGlyph(canvas, context, metrics, x, y, resolution, style) {\n const char = metrics.text;\n const fontProperties = metrics.fontProperties;\n context.translate(x, y);\n context.scale(resolution, resolution);\n const tx = style.strokeThickness / 2;\n const ty = -(style.strokeThickness / 2);\n context.font = style.toFontString();\n context.lineWidth = style.strokeThickness;\n context.textBaseline = style.textBaseline;\n context.lineJoin = style.lineJoin;\n context.miterLimit = style.miterLimit;\n context.fillStyle = generateFillStyle(canvas, context, style, resolution, [char], metrics);\n context.strokeStyle = style.stroke;\n if (style.dropShadow) {\n const dropShadowColor = style.dropShadowColor;\n const rgb = utils.hex2rgb(typeof dropShadowColor === \"number\" ? dropShadowColor : utils.string2hex(dropShadowColor));\n const dropShadowBlur = style.dropShadowBlur * resolution;\n const dropShadowDistance = style.dropShadowDistance * resolution;\n context.shadowColor = `rgba(${rgb[0] * 255},${rgb[1] * 255},${rgb[2] * 255},${style.dropShadowAlpha})`;\n context.shadowBlur = dropShadowBlur;\n context.shadowOffsetX = Math.cos(style.dropShadowAngle) * dropShadowDistance;\n context.shadowOffsetY = Math.sin(style.dropShadowAngle) * dropShadowDistance;\n } else {\n context.shadowColor = \"black\";\n context.shadowBlur = 0;\n context.shadowOffsetX = 0;\n context.shadowOffsetY = 0;\n }\n if (style.stroke && style.strokeThickness) {\n context.strokeText(char, tx, ty + metrics.lineHeight - fontProperties.descent);\n }\n if (style.fill) {\n context.fillText(char, tx, ty + metrics.lineHeight - fontProperties.descent);\n }\n context.setTransform(1, 0, 0, 1, 0, 0);\n context.fillStyle = \"rgba(0, 0, 0, 0)\";\n}\n\nexport { drawGlyph };\n//# sourceMappingURL=drawGlyph.mjs.map\n","function splitTextToCharacters(text) {\n return Array.from ? Array.from(text) : text.split(\"\");\n}\n\nexport { splitTextToCharacters };\n//# sourceMappingURL=splitTextToCharacters.mjs.map\n","import { splitTextToCharacters } from './splitTextToCharacters.mjs';\n\nfunction resolveCharacters(chars) {\n if (typeof chars === \"string\") {\n chars = [chars];\n }\n const result = [];\n for (let i = 0, j = chars.length; i < j; i++) {\n const item = chars[i];\n if (Array.isArray(item)) {\n if (item.length !== 2) {\n throw new Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${item.length}.`);\n }\n const startCode = item[0].charCodeAt(0);\n const endCode = item[1].charCodeAt(0);\n if (endCode < startCode) {\n throw new Error(\"[BitmapFont]: Invalid character range.\");\n }\n for (let i2 = startCode, j2 = endCode; i2 <= j2; i2++) {\n result.push(String.fromCharCode(i2));\n }\n } else {\n result.push(...splitTextToCharacters(item));\n }\n }\n if (result.length === 0) {\n throw new Error(\"[BitmapFont]: Empty set when resolving characters.\");\n }\n return result;\n}\n\nexport { resolveCharacters };\n//# sourceMappingURL=resolveCharacters.mjs.map\n","function extractCharCode(str) {\n return str.codePointAt ? str.codePointAt(0) : str.charCodeAt(0);\n}\n\nexport { extractCharCode };\n//# sourceMappingURL=extractCharCode.mjs.map\n","import { utils, ALPHA_MODES, MIPMAP_MODES, Rectangle, Texture, settings, BaseTexture } from '@pixi/core';\nimport { TextStyle, TextMetrics } from '@pixi/text';\nimport { autoDetectFormat } from './formats/index.mjs';\nimport { BitmapFontData } from './BitmapFontData.mjs';\nimport './utils/index.mjs';\nimport { resolveCharacters } from './utils/resolveCharacters.mjs';\nimport { drawGlyph } from './utils/drawGlyph.mjs';\nimport { extractCharCode } from './utils/extractCharCode.mjs';\n\nconst _BitmapFont = class {\n constructor(data, textures, ownsTextures) {\n const [info] = data.info;\n const [common] = data.common;\n const [page] = data.page;\n const [distanceField] = data.distanceField;\n const res = utils.getResolutionOfUrl(page.file);\n const pageTextures = {};\n this._ownsTextures = ownsTextures;\n this.font = info.face;\n this.size = info.size;\n this.lineHeight = common.lineHeight / res;\n this.chars = {};\n this.pageTextures = pageTextures;\n for (let i = 0; i < data.page.length; i++) {\n const { id, file } = data.page[i];\n pageTextures[id] = textures instanceof Array ? textures[i] : textures[file];\n if (distanceField?.fieldType && distanceField.fieldType !== \"none\") {\n pageTextures[id].baseTexture.alphaMode = ALPHA_MODES.NO_PREMULTIPLIED_ALPHA;\n pageTextures[id].baseTexture.mipmap = MIPMAP_MODES.OFF;\n }\n }\n for (let i = 0; i < data.char.length; i++) {\n const { id, page: page2 } = data.char[i];\n let { x, y, width, height, xoffset, yoffset, xadvance } = data.char[i];\n x /= res;\n y /= res;\n width /= res;\n height /= res;\n xoffset /= res;\n yoffset /= res;\n xadvance /= res;\n const rect = new Rectangle(x + pageTextures[page2].frame.x / res, y + pageTextures[page2].frame.y / res, width, height);\n this.chars[id] = {\n xOffset: xoffset,\n yOffset: yoffset,\n xAdvance: xadvance,\n kerning: {},\n texture: new Texture(pageTextures[page2].baseTexture, rect),\n page: page2\n };\n }\n for (let i = 0; i < data.kerning.length; i++) {\n let { first, second, amount } = data.kerning[i];\n first /= res;\n second /= res;\n amount /= res;\n if (this.chars[second]) {\n this.chars[second].kerning[first] = amount;\n }\n }\n this.distanceFieldRange = distanceField?.distanceRange;\n this.distanceFieldType = distanceField?.fieldType?.toLowerCase() ?? \"none\";\n }\n destroy() {\n for (const id in this.chars) {\n this.chars[id].texture.destroy();\n this.chars[id].texture = null;\n }\n for (const id in this.pageTextures) {\n if (this._ownsTextures) {\n this.pageTextures[id].destroy(true);\n }\n this.pageTextures[id] = null;\n }\n this.chars = null;\n this.pageTextures = null;\n }\n static install(data, textures, ownsTextures) {\n let fontData;\n if (data instanceof BitmapFontData) {\n fontData = data;\n } else {\n const format = autoDetectFormat(data);\n if (!format) {\n throw new Error(\"Unrecognized data format for font.\");\n }\n fontData = format.parse(data);\n }\n if (textures instanceof Texture) {\n textures = [textures];\n }\n const font = new _BitmapFont(fontData, textures, ownsTextures);\n _BitmapFont.available[font.font] = font;\n return font;\n }\n static uninstall(name) {\n const font = _BitmapFont.available[name];\n if (!font) {\n throw new Error(`No font found named '${name}'`);\n }\n font.destroy();\n delete _BitmapFont.available[name];\n }\n static from(name, textStyle, options) {\n if (!name) {\n throw new Error(\"[BitmapFont] Property `name` is required.\");\n }\n const {\n chars,\n padding,\n resolution,\n textureWidth,\n textureHeight,\n ...baseOptions\n } = Object.assign({}, _BitmapFont.defaultOptions, options);\n const charsList = resolveCharacters(chars);\n const style = textStyle instanceof TextStyle ? textStyle : new TextStyle(textStyle);\n const lineWidth = textureWidth;\n const fontData = new BitmapFontData();\n fontData.info[0] = {\n face: style.fontFamily,\n size: style.fontSize\n };\n fontData.common[0] = {\n lineHeight: style.fontSize\n };\n let positionX = 0;\n let positionY = 0;\n let canvas;\n let context;\n let baseTexture;\n let maxCharHeight = 0;\n const baseTextures = [];\n const textures = [];\n for (let i = 0; i < charsList.length; i++) {\n if (!canvas) {\n canvas = settings.ADAPTER.createCanvas();\n canvas.width = textureWidth;\n canvas.height = textureHeight;\n context = canvas.getContext(\"2d\");\n baseTexture = new BaseTexture(canvas, { resolution, ...baseOptions });\n baseTextures.push(baseTexture);\n textures.push(new Texture(baseTexture));\n fontData.page.push({\n id: textures.length - 1,\n file: \"\"\n });\n }\n const character = charsList[i];\n const metrics = TextMetrics.measureText(character, style, false, canvas);\n const width = metrics.width;\n const height = Math.ceil(metrics.height);\n const textureGlyphWidth = Math.ceil((style.fontStyle === \"italic\" ? 2 : 1) * width);\n if (positionY >= textureHeight - height * resolution) {\n if (positionY === 0) {\n throw new Error(`[BitmapFont] textureHeight ${textureHeight}px is too small (fontFamily: '${style.fontFamily}', fontSize: ${style.fontSize}px, char: '${character}')`);\n }\n --i;\n canvas = null;\n context = null;\n baseTexture = null;\n positionY = 0;\n positionX = 0;\n maxCharHeight = 0;\n continue;\n }\n maxCharHeight = Math.max(height + metrics.fontProperties.descent, maxCharHeight);\n if (textureGlyphWidth * resolution + positionX >= lineWidth) {\n if (positionX === 0) {\n throw new Error(`[BitmapFont] textureWidth ${textureWidth}px is too small (fontFamily: '${style.fontFamily}', fontSize: ${style.fontSize}px, char: '${character}')`);\n }\n --i;\n positionY += maxCharHeight * resolution;\n positionY = Math.ceil(positionY);\n positionX = 0;\n maxCharHeight = 0;\n continue;\n }\n drawGlyph(canvas, context, metrics, positionX, positionY, resolution, style);\n const id = extractCharCode(metrics.text);\n fontData.char.push({\n id,\n page: textures.length - 1,\n x: positionX / resolution,\n y: positionY / resolution,\n width: textureGlyphWidth,\n height,\n xoffset: 0,\n yoffset: 0,\n xadvance: Math.ceil(width - (style.dropShadow ? style.dropShadowDistance : 0) - (style.stroke ? style.strokeThickness : 0))\n });\n positionX += (textureGlyphWidth + 2 * padding) * resolution;\n positionX = Math.ceil(positionX);\n }\n for (let i = 0, len = charsList.length; i < len; i++) {\n const first = charsList[i];\n for (let j = 0; j < len; j++) {\n const second = charsList[j];\n const c1 = context.measureText(first).width;\n const c2 = context.measureText(second).width;\n const total = context.measureText(first + second).width;\n const amount = total - (c1 + c2);\n if (amount) {\n fontData.kerning.push({\n first: extractCharCode(first),\n second: extractCharCode(second),\n amount\n });\n }\n }\n }\n const font = new _BitmapFont(fontData, textures, true);\n if (_BitmapFont.available[name] !== void 0) {\n _BitmapFont.uninstall(name);\n }\n _BitmapFont.available[name] = font;\n return font;\n }\n};\nlet BitmapFont = _BitmapFont;\nBitmapFont.ALPHA = [[\"a\", \"z\"], [\"A\", \"Z\"], \" \"];\nBitmapFont.NUMERIC = [[\"0\", \"9\"]];\nBitmapFont.ALPHANUMERIC = [[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \" \"];\nBitmapFont.ASCII = [[\" \", \"~\"]];\nBitmapFont.defaultOptions = {\n resolution: 1,\n textureWidth: 512,\n textureHeight: 512,\n padding: 4,\n chars: _BitmapFont.ALPHANUMERIC\n};\nBitmapFont.available = {};\n\nexport { BitmapFont };\n//# sourceMappingURL=BitmapFont.mjs.map\n","var msdfFrag = \"// Pixi texture info\\r\\nvarying vec2 vTextureCoord;\\r\\nuniform sampler2D uSampler;\\r\\n\\r\\n// Tint\\r\\nuniform vec4 uColor;\\r\\n\\r\\n// on 2D applications fwidth is screenScale / glyphAtlasScale * distanceFieldRange\\r\\nuniform float uFWidth;\\r\\n\\r\\nvoid main(void) {\\r\\n\\r\\n // To stack MSDF and SDF we need a non-pre-multiplied-alpha texture.\\r\\n vec4 texColor = texture2D(uSampler, vTextureCoord);\\r\\n\\r\\n // MSDF\\r\\n float median = texColor.r + texColor.g + texColor.b -\\r\\n min(texColor.r, min(texColor.g, texColor.b)) -\\r\\n max(texColor.r, max(texColor.g, texColor.b));\\r\\n // SDF\\r\\n median = min(median, texColor.a);\\r\\n\\r\\n float screenPxDistance = uFWidth * (median - 0.5);\\r\\n float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\\r\\n if (median < 0.01) {\\r\\n alpha = 0.0;\\r\\n } else if (median > 0.99) {\\r\\n alpha = 1.0;\\r\\n }\\r\\n\\r\\n // NPM Textures, NPM outputs\\r\\n gl_FragColor = vec4(uColor.rgb, uColor.a * alpha);\\r\\n\\r\\n}\\r\\n\";\n\nexport { msdfFrag as default };\n//# sourceMappingURL=msdf.mjs.map\n","var msdfVert = \"// Mesh material default fragment\\r\\nattribute vec2 aVertexPosition;\\r\\nattribute vec2 aTextureCoord;\\r\\n\\r\\nuniform mat3 projectionMatrix;\\r\\nuniform mat3 translationMatrix;\\r\\nuniform mat3 uTextureMatrix;\\r\\n\\r\\nvarying vec2 vTextureCoord;\\r\\n\\r\\nvoid main(void)\\r\\n{\\r\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\r\\n\\r\\n vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\\r\\n}\\r\\n\";\n\nexport { msdfVert as default };\n//# sourceMappingURL=msdf2.mjs.map\n","import { MeshGeometry, MeshMaterial, Mesh } from '@pixi/mesh';\nimport { BitmapFont } from './BitmapFont.mjs';\nimport './utils/index.mjs';\nimport msdfFrag from './shader/msdf.mjs';\nimport msdfVert from './shader/msdf2.mjs';\nimport { ObservablePoint, settings, Point, Texture, utils, BLEND_MODES, Program } from '@pixi/core';\nimport { Container } from '@pixi/display';\nimport { splitTextToCharacters } from './utils/splitTextToCharacters.mjs';\nimport { extractCharCode } from './utils/extractCharCode.mjs';\n\nconst pageMeshDataDefaultPageMeshData = [];\nconst pageMeshDataMSDFPageMeshData = [];\nconst charRenderDataPool = [];\nconst _BitmapText = class extends Container {\n constructor(text, style = {}) {\n super();\n this._tint = 16777215;\n const { align, tint, maxWidth, letterSpacing, fontName, fontSize } = Object.assign({}, _BitmapText.styleDefaults, style);\n if (!BitmapFont.available[fontName]) {\n throw new Error(`Missing BitmapFont \"${fontName}\"`);\n }\n this._activePagesMeshData = [];\n this._textWidth = 0;\n this._textHeight = 0;\n this._align = align;\n this._tint = tint;\n this._font = void 0;\n this._fontName = fontName;\n this._fontSize = fontSize;\n this.text = text;\n this._maxWidth = maxWidth;\n this._maxLineHeight = 0;\n this._letterSpacing = letterSpacing;\n this._anchor = new ObservablePoint(() => {\n this.dirty = true;\n }, this, 0, 0);\n this._roundPixels = settings.ROUND_PIXELS;\n this.dirty = true;\n this._resolution = settings.RESOLUTION;\n this._autoResolution = true;\n this._textureCache = {};\n }\n updateText() {\n const data = BitmapFont.available[this._fontName];\n const fontSize = this.fontSize;\n const scale = fontSize / data.size;\n const pos = new Point();\n const chars = [];\n const lineWidths = [];\n const lineSpaces = [];\n const text = this._text.replace(/(?:\\r\\n|\\r)/g, \"\\n\") || \" \";\n const charsInput = splitTextToCharacters(text);\n const maxWidth = this._maxWidth * data.size / fontSize;\n const pageMeshDataPool = data.distanceFieldType === \"none\" ? pageMeshDataDefaultPageMeshData : pageMeshDataMSDFPageMeshData;\n let prevCharCode = null;\n let lastLineWidth = 0;\n let maxLineWidth = 0;\n let line = 0;\n let lastBreakPos = -1;\n let lastBreakWidth = 0;\n let spacesRemoved = 0;\n let maxLineHeight = 0;\n let spaceCount = 0;\n for (let i = 0; i < charsInput.length; i++) {\n const char = charsInput[i];\n const charCode = extractCharCode(char);\n if (/(?:\\s)/.test(char)) {\n lastBreakPos = i;\n lastBreakWidth = lastLineWidth;\n spaceCount++;\n }\n if (char === \"\\r\" || char === \"\\n\") {\n lineWidths.push(lastLineWidth);\n lineSpaces.push(-1);\n maxLineWidth = Math.max(maxLineWidth, lastLineWidth);\n ++line;\n ++spacesRemoved;\n pos.x = 0;\n pos.y += data.lineHeight;\n prevCharCode = null;\n spaceCount = 0;\n continue;\n }\n const charData = data.chars[charCode];\n if (!charData) {\n continue;\n }\n if (prevCharCode && charData.kerning[prevCharCode]) {\n pos.x += charData.kerning[prevCharCode];\n }\n const charRenderData = charRenderDataPool.pop() || {\n texture: Texture.EMPTY,\n line: 0,\n charCode: 0,\n prevSpaces: 0,\n position: new Point()\n };\n charRenderData.texture = charData.texture;\n charRenderData.line = line;\n charRenderData.charCode = charCode;\n charRenderData.position.x = pos.x + charData.xOffset + this._letterSpacing / 2;\n charRenderData.position.y = pos.y + charData.yOffset;\n charRenderData.prevSpaces = spaceCount;\n chars.push(charRenderData);\n lastLineWidth = charRenderData.position.x + Math.max(charData.xAdvance - charData.xOffset, charData.texture.orig.width);\n pos.x += charData.xAdvance + this._letterSpacing;\n maxLineHeight = Math.max(maxLineHeight, charData.yOffset + charData.texture.height);\n prevCharCode = charCode;\n if (lastBreakPos !== -1 && maxWidth > 0 && pos.x > maxWidth) {\n ++spacesRemoved;\n utils.removeItems(chars, 1 + lastBreakPos - spacesRemoved, 1 + i - lastBreakPos);\n i = lastBreakPos;\n lastBreakPos = -1;\n lineWidths.push(lastBreakWidth);\n lineSpaces.push(chars.length > 0 ? chars[chars.length - 1].prevSpaces : 0);\n maxLineWidth = Math.max(maxLineWidth, lastBreakWidth);\n line++;\n pos.x = 0;\n pos.y += data.lineHeight;\n prevCharCode = null;\n spaceCount = 0;\n }\n }\n const lastChar = charsInput[charsInput.length - 1];\n if (lastChar !== \"\\r\" && lastChar !== \"\\n\") {\n if (/(?:\\s)/.test(lastChar)) {\n lastLineWidth = lastBreakWidth;\n }\n lineWidths.push(lastLineWidth);\n maxLineWidth = Math.max(maxLineWidth, lastLineWidth);\n lineSpaces.push(-1);\n }\n const lineAlignOffsets = [];\n for (let i = 0; i <= line; i++) {\n let alignOffset = 0;\n if (this._align === \"right\") {\n alignOffset = maxLineWidth - lineWidths[i];\n } else if (this._align === \"center\") {\n alignOffset = (maxLineWidth - lineWidths[i]) / 2;\n } else if (this._align === \"justify\") {\n alignOffset = lineSpaces[i] < 0 ? 0 : (maxLineWidth - lineWidths[i]) / lineSpaces[i];\n }\n lineAlignOffsets.push(alignOffset);\n }\n const lenChars = chars.length;\n const pagesMeshData = {};\n const newPagesMeshData = [];\n const activePagesMeshData = this._activePagesMeshData;\n pageMeshDataPool.push(...activePagesMeshData);\n for (let i = 0; i < lenChars; i++) {\n const texture = chars[i].texture;\n const baseTextureUid = texture.baseTexture.uid;\n if (!pagesMeshData[baseTextureUid]) {\n let pageMeshData = pageMeshDataPool.pop();\n if (!pageMeshData) {\n const geometry = new MeshGeometry();\n let material;\n let meshBlendMode;\n if (data.distanceFieldType === \"none\") {\n material = new MeshMaterial(Texture.EMPTY);\n meshBlendMode = BLEND_MODES.NORMAL;\n } else {\n material = new MeshMaterial(Texture.EMPTY, { program: Program.from(msdfVert, msdfFrag), uniforms: { uFWidth: 0 } });\n meshBlendMode = BLEND_MODES.NORMAL_NPM;\n }\n const mesh = new Mesh(geometry, material);\n mesh.blendMode = meshBlendMode;\n pageMeshData = {\n index: 0,\n indexCount: 0,\n vertexCount: 0,\n uvsCount: 0,\n total: 0,\n mesh,\n vertices: null,\n uvs: null,\n indices: null\n };\n }\n pageMeshData.index = 0;\n pageMeshData.indexCount = 0;\n pageMeshData.vertexCount = 0;\n pageMeshData.uvsCount = 0;\n pageMeshData.total = 0;\n const { _textureCache } = this;\n _textureCache[baseTextureUid] = _textureCache[baseTextureUid] || new Texture(texture.baseTexture);\n pageMeshData.mesh.texture = _textureCache[baseTextureUid];\n pageMeshData.mesh.tint = this._tint;\n newPagesMeshData.push(pageMeshData);\n pagesMeshData[baseTextureUid] = pageMeshData;\n }\n pagesMeshData[baseTextureUid].total++;\n }\n for (let i = 0; i < activePagesMeshData.length; i++) {\n if (!newPagesMeshData.includes(activePagesMeshData[i])) {\n this.removeChild(activePagesMeshData[i].mesh);\n }\n }\n for (let i = 0; i < newPagesMeshData.length; i++) {\n if (newPagesMeshData[i].mesh.parent !== this) {\n this.addChild(newPagesMeshData[i].mesh);\n }\n }\n this._activePagesMeshData = newPagesMeshData;\n for (const i in pagesMeshData) {\n const pageMeshData = pagesMeshData[i];\n const total = pageMeshData.total;\n if (!(pageMeshData.indices?.length > 6 * total) || pageMeshData.vertices.length < Mesh.BATCHABLE_SIZE * 2) {\n pageMeshData.vertices = new Float32Array(4 * 2 * total);\n pageMeshData.uvs = new Float32Array(4 * 2 * total);\n pageMeshData.indices = new Uint16Array(6 * total);\n } else {\n const total2 = pageMeshData.total;\n const vertices = pageMeshData.vertices;\n for (let i2 = total2 * 4 * 2; i2 < vertices.length; i2++) {\n vertices[i2] = 0;\n }\n }\n pageMeshData.mesh.size = 6 * total;\n }\n for (let i = 0; i < lenChars; i++) {\n const char = chars[i];\n let offset = char.position.x + lineAlignOffsets[char.line] * (this._align === \"justify\" ? char.prevSpaces : 1);\n if (this._roundPixels) {\n offset = Math.round(offset);\n }\n const xPos = offset * scale;\n const yPos = char.position.y * scale;\n const texture = char.texture;\n const pageMesh = pagesMeshData[texture.baseTexture.uid];\n const textureFrame = texture.frame;\n const textureUvs = texture._uvs;\n const index = pageMesh.index++;\n pageMesh.indices[index * 6 + 0] = 0 + index * 4;\n pageMesh.indices[index * 6 + 1] = 1 + index * 4;\n pageMesh.indices[index * 6 + 2] = 2 + index * 4;\n pageMesh.indices[index * 6 + 3] = 0 + index * 4;\n pageMesh.indices[index * 6 + 4] = 2 + index * 4;\n pageMesh.indices[index * 6 + 5] = 3 + index * 4;\n pageMesh.vertices[index * 8 + 0] = xPos;\n pageMesh.vertices[index * 8 + 1] = yPos;\n pageMesh.vertices[index * 8 + 2] = xPos + textureFrame.width * scale;\n pageMesh.vertices[index * 8 + 3] = yPos;\n pageMesh.vertices[index * 8 + 4] = xPos + textureFrame.width * scale;\n pageMesh.vertices[index * 8 + 5] = yPos + textureFrame.height * scale;\n pageMesh.vertices[index * 8 + 6] = xPos;\n pageMesh.vertices[index * 8 + 7] = yPos + textureFrame.height * scale;\n pageMesh.uvs[index * 8 + 0] = textureUvs.x0;\n pageMesh.uvs[index * 8 + 1] = textureUvs.y0;\n pageMesh.uvs[index * 8 + 2] = textureUvs.x1;\n pageMesh.uvs[index * 8 + 3] = textureUvs.y1;\n pageMesh.uvs[index * 8 + 4] = textureUvs.x2;\n pageMesh.uvs[index * 8 + 5] = textureUvs.y2;\n pageMesh.uvs[index * 8 + 6] = textureUvs.x3;\n pageMesh.uvs[index * 8 + 7] = textureUvs.y3;\n }\n this._textWidth = maxLineWidth * scale;\n this._textHeight = (pos.y + data.lineHeight) * scale;\n for (const i in pagesMeshData) {\n const pageMeshData = pagesMeshData[i];\n if (this.anchor.x !== 0 || this.anchor.y !== 0) {\n let vertexCount = 0;\n const anchorOffsetX = this._textWidth * this.anchor.x;\n const anchorOffsetY = this._textHeight * this.anchor.y;\n for (let i2 = 0; i2 < pageMeshData.total; i2++) {\n pageMeshData.vertices[vertexCount++] -= anchorOffsetX;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetY;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetX;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetY;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetX;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetY;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetX;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetY;\n }\n }\n this._maxLineHeight = maxLineHeight * scale;\n const vertexBuffer = pageMeshData.mesh.geometry.getBuffer(\"aVertexPosition\");\n const textureBuffer = pageMeshData.mesh.geometry.getBuffer(\"aTextureCoord\");\n const indexBuffer = pageMeshData.mesh.geometry.getIndex();\n vertexBuffer.data = pageMeshData.vertices;\n textureBuffer.data = pageMeshData.uvs;\n indexBuffer.data = pageMeshData.indices;\n vertexBuffer.update();\n textureBuffer.update();\n indexBuffer.update();\n }\n for (let i = 0; i < chars.length; i++) {\n charRenderDataPool.push(chars[i]);\n }\n this._font = data;\n this.dirty = false;\n }\n updateTransform() {\n this.validate();\n this.containerUpdateTransform();\n }\n _render(renderer) {\n if (this._autoResolution && this._resolution !== renderer.resolution) {\n this._resolution = renderer.resolution;\n this.dirty = true;\n }\n const { distanceFieldRange, distanceFieldType, size } = BitmapFont.available[this._fontName];\n if (distanceFieldType !== \"none\") {\n const { a, b, c, d } = this.worldTransform;\n const dx = Math.sqrt(a * a + b * b);\n const dy = Math.sqrt(c * c + d * d);\n const worldScale = (Math.abs(dx) + Math.abs(dy)) / 2;\n const fontScale = this.fontSize / size;\n const resolution = renderer._view.resolution;\n for (const mesh of this._activePagesMeshData) {\n mesh.mesh.shader.uniforms.uFWidth = worldScale * distanceFieldRange * fontScale * resolution;\n }\n }\n super._render(renderer);\n }\n getLocalBounds() {\n this.validate();\n return super.getLocalBounds();\n }\n validate() {\n const font = BitmapFont.available[this._fontName];\n if (!font) {\n throw new Error(`Missing BitmapFont \"${this._fontName}\"`);\n }\n if (this._font !== font) {\n this.dirty = true;\n }\n if (this.dirty) {\n this.updateText();\n }\n }\n get tint() {\n return this._tint;\n }\n set tint(value) {\n if (this._tint === value)\n return;\n this._tint = value;\n for (let i = 0; i < this._activePagesMeshData.length; i++) {\n this._activePagesMeshData[i].mesh.tint = value;\n }\n }\n get align() {\n return this._align;\n }\n set align(value) {\n if (this._align !== value) {\n this._align = value;\n this.dirty = true;\n }\n }\n get fontName() {\n return this._fontName;\n }\n set fontName(value) {\n if (!BitmapFont.available[value]) {\n throw new Error(`Missing BitmapFont \"${value}\"`);\n }\n if (this._fontName !== value) {\n this._fontName = value;\n this.dirty = true;\n }\n }\n get fontSize() {\n return this._fontSize ?? BitmapFont.available[this._fontName].size;\n }\n set fontSize(value) {\n if (this._fontSize !== value) {\n this._fontSize = value;\n this.dirty = true;\n }\n }\n get anchor() {\n return this._anchor;\n }\n set anchor(value) {\n if (typeof value === \"number\") {\n this._anchor.set(value);\n } else {\n this._anchor.copyFrom(value);\n }\n }\n get text() {\n return this._text;\n }\n set text(text) {\n text = String(text === null || text === void 0 ? \"\" : text);\n if (this._text === text) {\n return;\n }\n this._text = text;\n this.dirty = true;\n }\n get maxWidth() {\n return this._maxWidth;\n }\n set maxWidth(value) {\n if (this._maxWidth === value) {\n return;\n }\n this._maxWidth = value;\n this.dirty = true;\n }\n get maxLineHeight() {\n this.validate();\n return this._maxLineHeight;\n }\n get textWidth() {\n this.validate();\n return this._textWidth;\n }\n get letterSpacing() {\n return this._letterSpacing;\n }\n set letterSpacing(value) {\n if (this._letterSpacing !== value) {\n this._letterSpacing = value;\n this.dirty = true;\n }\n }\n get roundPixels() {\n return this._roundPixels;\n }\n set roundPixels(value) {\n if (value !== this._roundPixels) {\n this._roundPixels = value;\n this.dirty = true;\n }\n }\n get textHeight() {\n this.validate();\n return this._textHeight;\n }\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._autoResolution = false;\n if (this._resolution === value) {\n return;\n }\n this._resolution = value;\n this.dirty = true;\n }\n destroy(options) {\n const { _textureCache } = this;\n const data = BitmapFont.available[this._fontName];\n const pageMeshDataPool = data.distanceFieldType === \"none\" ? pageMeshDataDefaultPageMeshData : pageMeshDataMSDFPageMeshData;\n pageMeshDataPool.push(...this._activePagesMeshData);\n for (const pageMeshData of this._activePagesMeshData) {\n this.removeChild(pageMeshData.mesh);\n }\n this._activePagesMeshData = [];\n pageMeshDataPool.filter((page) => _textureCache[page.mesh.texture.baseTexture.uid]).forEach((page) => {\n page.mesh.texture = Texture.EMPTY;\n });\n for (const id in _textureCache) {\n const texture = _textureCache[id];\n texture.destroy();\n delete _textureCache[id];\n }\n this._font = null;\n this._textureCache = null;\n super.destroy(options);\n }\n};\nlet BitmapText = _BitmapText;\nBitmapText.styleDefaults = {\n align: \"left\",\n tint: 16777215,\n maxWidth: 0,\n letterSpacing: 0\n};\n\nexport { BitmapText };\n//# sourceMappingURL=BitmapText.mjs.map\n","import { ExtensionType, utils, settings, extensions } from '@pixi/core';\nimport { LoaderParserPriority } from '@pixi/assets';\nimport { BitmapFont } from './BitmapFont.mjs';\nimport './formats/index.mjs';\nimport { TextFormat } from './formats/TextFormat.mjs';\nimport { XMLStringFormat } from './formats/XMLStringFormat.mjs';\n\nconst validExtensions = [\".xml\", \".fnt\"];\nconst loadBitmapFont = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal\n },\n test(url) {\n return validExtensions.includes(utils.path.extname(url));\n },\n async testParse(data) {\n return TextFormat.test(data) || XMLStringFormat.test(data);\n },\n async parse(asset, data, loader) {\n const fontData = TextFormat.test(asset) ? TextFormat.parse(asset) : XMLStringFormat.parse(asset);\n const { src } = data;\n const { page: pages } = fontData;\n const textureUrls = [];\n for (let i = 0; i < pages.length; ++i) {\n const pageFile = pages[i].file;\n const imagePath = utils.path.join(utils.path.dirname(src), pageFile);\n textureUrls.push(imagePath);\n }\n const loadedTextures = await loader.load(textureUrls);\n const textures = textureUrls.map((url) => loadedTextures[url]);\n return BitmapFont.install(fontData, textures, true);\n },\n async load(url, _options) {\n const response = await settings.ADAPTER.fetch(url);\n return response.text();\n },\n unload(bitmapFont) {\n bitmapFont.destroy();\n }\n};\nextensions.add(loadBitmapFont);\n\nexport { loadBitmapFont };\n//# sourceMappingURL=loadBitmapFont.mjs.map\n","import { AlphaFilter } from '@pixi/filter-alpha';\nimport { BlurFilter, BlurFilterPass } from '@pixi/filter-blur';\nimport { ColorMatrixFilter } from '@pixi/filter-color-matrix';\nimport { DisplacementFilter } from '@pixi/filter-displacement';\nimport { FXAAFilter } from '@pixi/filter-fxaa';\nimport { NoiseFilter } from '@pixi/filter-noise';\nimport '@pixi/mixin-cache-as-bitmap';\nimport '@pixi/mixin-get-child-by-name';\nimport '@pixi/mixin-get-global-position';\n\n/**\n * This namespace contains WebGL-only display filters that can be applied\n * to DisplayObjects using the {@link PIXI.DisplayObject#filters filters} property.\n *\n * Since PixiJS only had a handful of built-in filters, additional filters\n * can be downloaded {@link https://github.com/pixijs/pixi-filters here} from the\n * PixiJS Filters repository.\n *\n * All filters must extend {@link PIXI.Filter}.\n * @example\n * import { Application, Graphics, filters } from 'pixi.js';\n *\n * // Create a new application\n * const app = new Application();\n *\n * // Draw a green rectangle\n * const rect = new Graphics()\n * .beginFill(0x00ff00)\n * .drawRect(40, 40, 200, 200);\n *\n * // Add a blur filter\n * rect.filters = [new filters.BlurFilter()];\n *\n * // Display rectangle\n * app.stage.addChild(rect);\n * document.body.appendChild(app.view);\n * @namespace PIXI.filters\n */\nexport const filters = {\n AlphaFilter,\n BlurFilter,\n BlurFilterPass,\n ColorMatrixFilter,\n DisplacementFilter,\n FXAAFilter,\n NoiseFilter,\n};\n\n// Export ES for those importing specifically by name,\nexport * from '@pixi/accessibility';\nexport * from '@pixi/app';\nexport * from '@pixi/assets';\nexport * from '@pixi/compressed-textures';\nexport * from '@pixi/core';\nexport * from '@pixi/display';\nexport * from '@pixi/events';\nexport * from '@pixi/extract';\nexport * from '@pixi/graphics';\nexport * from '@pixi/mesh';\nexport * from '@pixi/mesh-extras';\nexport * from '@pixi/particle-container';\nexport * from '@pixi/prepare';\nexport * from '@pixi/sprite';\nexport * from '@pixi/spritesheet';\nexport * from '@pixi/sprite-animated';\nexport * from '@pixi/sprite-tiling';\nexport * from '@pixi/text';\nexport * from '@pixi/text-bitmap';\n"],"names":["isMobile","extensions","tempPoints","sign","global","define","this","require$$0","require$$1","map","interleaveTypedArrays","EventEmitter","UID","byteSizeMap","tempMatrix","fragTemplate","defaultFragment","defaultVertex","BLEND","OFFSET","CULLING","DEPTH_TEST","WINDING","DEPTH_MASK","vertex","fragment","tempMat","utils.EventEmitter","index","utils.removeItems","tempPoint","utils.sign","utils.uid","utils.isMobile","utils.path","validImages","utils.getResolutionOfUrl","utils.CanvasRenderTarget","utils.earcut","utils.premultiplyTint","utils.hex2rgb","utils.premultiplyTintToRgba","utils.createIndicesForQuads","utils.correctBlendMode","utils.premultiplyRgba","utils.hex2string","utils.string2hex","utils.trimCanvas","r","o","t","m","e","p","f"],"mappings":"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AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,IAAI,EAAE,yCAAyC;EACjD,EAAE,IAAI,EAAE,yCAAyC;EACjD,EAAE,IAAI,EAAE,yCAAyC;EACjD,EAAE,SAAS,EAAE,CAAC;AACd;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,WAAW,EAAE,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,EAAE,cAAc,EAAE,CAAC;AACnB;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACN,CAAC,CAAC;EACF,MAAM,qBAAqB,GAAG;EAC9B,EAAE,KAAK,EAAE,CAAC,0BAA0B,CAAC;EACrC,EAAE,IAAI,EAAE,CAAC,0BAA0B,CAAC;EACpC,EAAE,IAAI,EAAE,CAAC,0BAA0B,CAAC;EACpC,EAAE,IAAI,EAAE,4B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AE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC5E,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACrE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC5E,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EAClF,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GA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,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACpB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACpB,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACpB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACpB,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACpB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACpB,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,GAAG;EACH,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACtC,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EAClE,GAAG;EACH,EAAE,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACzC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;EACvB,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;EACzB,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACzB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACjC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACjC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;EAC/B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAA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"} \ No newline at end of file